Greasy Fork

网盘批量分享工具(支持蓝奏云,115网盘,123网盘,百度网盘,夸克网盘,阿里云盘,天翼网盘,迅雷网盘,中国移动网盘,UC网盘)

网盘文件批量分享,目前支持蓝奏云,115网盘,123网盘,百度网盘,夸克网盘,阿里云盘,天翼网盘,迅雷网盘,中国移动网盘,UC网盘~

// ==UserScript==
// @name         网盘批量分享工具(支持蓝奏云,115网盘,123网盘,百度网盘,夸克网盘,阿里云盘,天翼网盘,迅雷网盘,中国移动网盘,UC网盘)
// @namespace    dreamlove
// @version      3.0.1
// @author       superBiuBiu
// @description  网盘文件批量分享,目前支持蓝奏云,115网盘,123网盘,百度网盘,夸克网盘,阿里云盘,天翼网盘,迅雷网盘,中国移动网盘,UC网盘~
// @iconURL      https://www.google.com/s2/favicons?domain=dreamlove.top
// @supportURL   https://github.com/superBiuBiuMan/sharelink/
// @match        https://pan.xunlei.com/**
// @match        https://drive.uc.cn/**
// @match        https://pan.baidu.com/disk/main*
// @match        https://pan.baidu.com/disk/synchronization*
// @match        https://cloud.189.cn/**
// @match        https://pan.quark.cn/**
// @match        https://www.aliyundrive.com/**
// @match        https://www.alipan.com/**
// @match        https://yun.139.com/**
// @match        https://115.com/**
// @match        https://lanzou.com/u
// @match        https://www.lanzou.com/u
// @match        https://www.lanzou.com/account.php
// @match        https://up.woozooo.com/u
// @match        https://up.woozooo.com/mydisk.php
// @match        https://pc.woozooo.com/u
// @match        https://pc.woozooo.com/mydisk.php
// @match        https://lanzou.com/**
// @match        https://www.lanzou.com/**
// @match        https://pan.lanzou.com/**
// @require      https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.production.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.production.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.mini.min.js
// @connect      webapi.115.com
// @connect      drive-pc.quark.cn
// @connect      api-pan.xunlei.com
// @connect      api.aliyundrive.com
// @connect      pc-api.uc.cn
// @grant        GM_addStyle
// @grant        GM_xmlhttpRequest
// @grant        unsafeWindow
// @run-at       document-body
// ==/UserScript==

(e=>{if(typeof GM_addStyle=="function"){GM_addStyle(e);return}const t=document.createElement("style");t.textContent=e,document.head.append(t)})(' @charset "UTF-8";*,:before,:after{box-sizing:border-box;border-color:currentColor;border-style:solid;border-width:0}#app{width:100%;height:100%}html{box-sizing:border-box;width:100%;height:100%;line-height:1.5;-moz-tab-size:4;tab-size:4;text-size-adjust:100%}body{width:100%;height:100%;margin:0;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,\u5FAE\u8F6F\u96C5\u9ED1,Arial,sans-serif;line-height:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-collapse:collapse;border-color:inherit}button,input,optgroup,select,textarea{padding:0;margin:0;font-family:inherit;font-size:100%;line-height:inherit;color:inherit}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px}::-webkit-file-upload-button{font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{padding:0;margin:0}legend{padding:0}ol,ul,menu{padding:0;margin:0;list-style:none}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,video{max-width:100%;height:auto}[hidden]{display:none}.dark{color-scheme:dark}label{font-weight:700}*,*:before,*:after{box-sizing:inherit}a:focus,a:active{outline:none}a,a:focus,a:hover{color:inherit;text-decoration:none;cursor:pointer}div:focus{outline:none}.clearfix:after{display:block;height:0;clear:both;font-size:0;visibility:hidden;content:" "} ');

(function (React, ReactDOM__default, XLSX) {
  'use strict';

  function _interopNamespaceDefault(e) {
    const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
    if (e) {
      for (const k in e) {
        if (k !== 'default') {
          const d = Object.getOwnPropertyDescriptor(e, k);
          Object.defineProperty(n, k, d.get ? d : {
            enumerable: true,
            get: () => e[k]
          });
        }
      }
    }
    n.default = e;
    return Object.freeze(n);
  }

  const React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
  const ReactDOM__default__namespace = /*#__PURE__*/_interopNamespaceDefault(ReactDOM__default);
  const XLSX__namespace = /*#__PURE__*/_interopNamespaceDefault(XLSX);

  var __defProp = Object.defineProperty;
  var __defNormalProp = (obj, key2, value) => key2 in obj ? __defProp(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value;
  var __publicField = (obj, key2, value) => __defNormalProp(obj, typeof key2 !== "symbol" ? key2 + "" : key2, value);
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
  function getDefaultExportFromCjs(x) {
    return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
  }
  var jsxRuntime = { exports: {} };
  var reactJsxRuntime_production_min = {};
  /**
   * @license React
   * react-jsx-runtime.production.min.js
   *
   * Copyright (c) Facebook, Inc. and its affiliates.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   */
  var hasRequiredReactJsxRuntime_production_min;
  function requireReactJsxRuntime_production_min() {
    if (hasRequiredReactJsxRuntime_production_min) return reactJsxRuntime_production_min;
    hasRequiredReactJsxRuntime_production_min = 1;
    var f = React, k = Symbol.for("react.element"), l = Symbol.for("react.fragment"), m = Object.prototype.hasOwnProperty, n = f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p = { key: true, ref: true, __self: true, __source: true };
    function q(c, a, g) {
      var b, d = {}, e = null, h = null;
      void 0 !== g && (e = "" + g);
      void 0 !== a.key && (e = "" + a.key);
      void 0 !== a.ref && (h = a.ref);
      for (b in a) m.call(a, b) && !p.hasOwnProperty(b) && (d[b] = a[b]);
      if (c && c.defaultProps) for (b in a = c.defaultProps, a) void 0 === d[b] && (d[b] = a[b]);
      return { $$typeof: k, type: c, key: e, ref: h, props: d, _owner: n.current };
    }
    reactJsxRuntime_production_min.Fragment = l;
    reactJsxRuntime_production_min.jsx = q;
    reactJsxRuntime_production_min.jsxs = q;
    return reactJsxRuntime_production_min;
  }
  var hasRequiredJsxRuntime;
  function requireJsxRuntime() {
    if (hasRequiredJsxRuntime) return jsxRuntime.exports;
    hasRequiredJsxRuntime = 1;
    {
      jsxRuntime.exports = requireReactJsxRuntime_production_min();
    }
    return jsxRuntime.exports;
  }
  var jsxRuntimeExports = requireJsxRuntime();
  var client = {};
  var hasRequiredClient;
  function requireClient() {
    if (hasRequiredClient) return client;
    hasRequiredClient = 1;
    var m = ReactDOM__default;
    {
      client.createRoot = m.createRoot;
      client.hydrateRoot = m.hydrateRoot;
    }
    return client;
  }
  var clientExports = requireClient();
  const ReactDOM = /* @__PURE__ */ getDefaultExportFromCjs(clientExports);
  const BaseCloudInfo = React.createContext({
    name: "1",
    type: "2"
  });
  const useBaseCloudInfo = () => {
    return React.useContext(BaseCloudInfo);
  };
  function r(e) {
    var t, f, n = "";
    if ("string" == typeof e || "number" == typeof e) n += e;
    else if ("object" == typeof e) if (Array.isArray(e)) {
      var o = e.length;
      for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
    } else for (f in e) e[f] && (n && (n += " "), n += f);
    return n;
  }
  function clsx() {
    for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
    return n;
  }
  function resolveProps(defaultProps2, props) {
    const output = {
      ...props
    };
    for (const key2 in defaultProps2) {
      if (Object.prototype.hasOwnProperty.call(defaultProps2, key2)) {
        const propName = key2;
        if (propName === "components" || propName === "slots") {
          output[propName] = {
            ...defaultProps2[propName],
            ...output[propName]
          };
        } else if (propName === "componentsProps" || propName === "slotProps") {
          const defaultSlotProps = defaultProps2[propName];
          const slotProps = props[propName];
          if (!slotProps) {
            output[propName] = defaultSlotProps || {};
          } else if (!defaultSlotProps) {
            output[propName] = slotProps;
          } else {
            output[propName] = {
              ...slotProps
            };
            for (const slotKey in defaultSlotProps) {
              if (Object.prototype.hasOwnProperty.call(defaultSlotProps, slotKey)) {
                const slotPropName = slotKey;
                output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);
              }
            }
          }
        } else if (output[propName] === void 0) {
          output[propName] = defaultProps2[propName];
        }
      }
    }
    return output;
  }
  function composeClasses(slots, getUtilityClass, classes = void 0) {
    const output = {};
    for (const slotName in slots) {
      const slot = slots[slotName];
      let buffer = "";
      let start2 = true;
      for (let i = 0; i < slot.length; i += 1) {
        const value = slot[i];
        if (value) {
          buffer += (start2 === true ? "" : " ") + getUtilityClass(value);
          start2 = false;
          if (classes && classes[value]) {
            buffer += " " + classes[value];
          }
        }
      }
      output[slotName] = buffer;
    }
    return output;
  }
  function formatMuiErrorMessage(code, ...args) {
    const url = new URL(`https://mui.com/production-error/?code=${code}`);
    args.forEach((arg2) => url.searchParams.append("args[]", arg2));
    return `Minified MUI error #${code}; visit ${url} for the full message.`;
  }
  function clamp(val, min2 = Number.MIN_SAFE_INTEGER, max2 = Number.MAX_SAFE_INTEGER) {
    return Math.max(min2, Math.min(val, max2));
  }
  function clampWrapper(value, min2 = 0, max2 = 1) {
    return clamp(value, min2, max2);
  }
  function hexToRgb(color2) {
    color2 = color2.slice(1);
    const re = new RegExp(`.{1,${color2.length >= 6 ? 2 : 1}}`, "g");
    let colors = color2.match(re);
    if (colors && colors[0].length === 1) {
      colors = colors.map((n) => n + n);
    }
    return colors ? `rgb${colors.length === 4 ? "a" : ""}(${colors.map((n, index) => {
    return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1e3) / 1e3;
  }).join(", ")})` : "";
  }
  function decomposeColor(color2) {
    if (color2.type) {
      return color2;
    }
    if (color2.charAt(0) === "#") {
      return decomposeColor(hexToRgb(color2));
    }
    const marker = color2.indexOf("(");
    const type = color2.substring(0, marker);
    if (!["rgb", "rgba", "hsl", "hsla", "color"].includes(type)) {
      throw new Error(formatMuiErrorMessage(9, color2));
    }
    let values2 = color2.substring(marker + 1, color2.length - 1);
    let colorSpace;
    if (type === "color") {
      values2 = values2.split(" ");
      colorSpace = values2.shift();
      if (values2.length === 4 && values2[3].charAt(0) === "/") {
        values2[3] = values2[3].slice(1);
      }
      if (!["srgb", "display-p3", "a98-rgb", "prophoto-rgb", "rec-2020"].includes(colorSpace)) {
        throw new Error(formatMuiErrorMessage(10, colorSpace));
      }
    } else {
      values2 = values2.split(",");
    }
    values2 = values2.map((value) => parseFloat(value));
    return {
      type,
      values: values2,
      colorSpace
    };
  }
  const colorChannel = (color2) => {
    const decomposedColor = decomposeColor(color2);
    return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.includes("hsl") && idx !== 0 ? `${val}%` : val).join(" ");
  };
  const private_safeColorChannel = (color2, warning) => {
    try {
      return colorChannel(color2);
    } catch (error) {
      return color2;
    }
  };
  function recomposeColor(color2) {
    const {
      type,
      colorSpace
    } = color2;
    let {
      values: values2
    } = color2;
    if (type.includes("rgb")) {
      values2 = values2.map((n, i) => i < 3 ? parseInt(n, 10) : n);
    } else if (type.includes("hsl")) {
      values2[1] = `${values2[1]}%`;
      values2[2] = `${values2[2]}%`;
    }
    if (type.includes("color")) {
      values2 = `${colorSpace} ${values2.join(" ")}`;
    } else {
      values2 = `${values2.join(", ")}`;
    }
    return `${type}(${values2})`;
  }
  function hslToRgb(color2) {
    color2 = decomposeColor(color2);
    const {
      values: values2
    } = color2;
    const h = values2[0];
    const s = values2[1] / 100;
    const l = values2[2] / 100;
    const a = s * Math.min(l, 1 - l);
    const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);
    let type = "rgb";
    const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];
    if (color2.type === "hsla") {
      type += "a";
      rgb.push(values2[3]);
    }
    return recomposeColor({
      type,
      values: rgb
    });
  }
  function getLuminance(color2) {
    color2 = decomposeColor(color2);
    let rgb = color2.type === "hsl" || color2.type === "hsla" ? decomposeColor(hslToRgb(color2)).values : color2.values;
    rgb = rgb.map((val) => {
      if (color2.type !== "color") {
        val /= 255;
      }
      return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;
    });
    return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));
  }
  function getContrastRatio(foreground, background) {
    const lumA = getLuminance(foreground);
    const lumB = getLuminance(background);
    return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);
  }
  function alpha(color2, value) {
    color2 = decomposeColor(color2);
    value = clampWrapper(value);
    if (color2.type === "rgb" || color2.type === "hsl") {
      color2.type += "a";
    }
    if (color2.type === "color") {
      color2.values[3] = `/${value}`;
    } else {
      color2.values[3] = value;
    }
    return recomposeColor(color2);
  }
  function private_safeAlpha(color2, value, warning) {
    try {
      return alpha(color2, value);
    } catch (error) {
      return color2;
    }
  }
  function darken(color2, coefficient) {
    color2 = decomposeColor(color2);
    coefficient = clampWrapper(coefficient);
    if (color2.type.includes("hsl")) {
      color2.values[2] *= 1 - coefficient;
    } else if (color2.type.includes("rgb") || color2.type.includes("color")) {
      for (let i = 0; i < 3; i += 1) {
        color2.values[i] *= 1 - coefficient;
      }
    }
    return recomposeColor(color2);
  }
  function private_safeDarken(color2, coefficient, warning) {
    try {
      return darken(color2, coefficient);
    } catch (error) {
      return color2;
    }
  }
  function lighten(color2, coefficient) {
    color2 = decomposeColor(color2);
    coefficient = clampWrapper(coefficient);
    if (color2.type.includes("hsl")) {
      color2.values[2] += (100 - color2.values[2]) * coefficient;
    } else if (color2.type.includes("rgb")) {
      for (let i = 0; i < 3; i += 1) {
        color2.values[i] += (255 - color2.values[i]) * coefficient;
      }
    } else if (color2.type.includes("color")) {
      for (let i = 0; i < 3; i += 1) {
        color2.values[i] += (1 - color2.values[i]) * coefficient;
      }
    }
    return recomposeColor(color2);
  }
  function private_safeLighten(color2, coefficient, warning) {
    try {
      return lighten(color2, coefficient);
    } catch (error) {
      return color2;
    }
  }
  function emphasize(color2, coefficient = 0.15) {
    return getLuminance(color2) > 0.5 ? darken(color2, coefficient) : lighten(color2, coefficient);
  }
  function private_safeEmphasize(color2, coefficient, warning) {
    try {
      return emphasize(color2, coefficient);
    } catch (error) {
      return color2;
    }
  }
  var reactIs$1 = { exports: {} };
  var reactIs_production = {};
  /**
   * @license React
   * react-is.production.js
   *
   * Copyright (c) Meta Platforms, Inc. and affiliates.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   */
  var hasRequiredReactIs_production;
  function requireReactIs_production() {
    if (hasRequiredReactIs_production) return reactIs_production;
    hasRequiredReactIs_production = 1;
    var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler");
    var REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_VIEW_TRANSITION_TYPE = Symbol.for("react.view_transition"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
    function typeOf2(object) {
      if ("object" === typeof object && null !== object) {
        var $$typeof = object.$$typeof;
        switch ($$typeof) {
          case REACT_ELEMENT_TYPE:
            switch (object = object.type, object) {
              case REACT_FRAGMENT_TYPE:
              case REACT_PROFILER_TYPE:
              case REACT_STRICT_MODE_TYPE:
              case REACT_SUSPENSE_TYPE:
              case REACT_SUSPENSE_LIST_TYPE:
              case REACT_VIEW_TRANSITION_TYPE:
                return object;
              default:
                switch (object = object && object.$$typeof, object) {
                  case REACT_CONTEXT_TYPE:
                  case REACT_FORWARD_REF_TYPE:
                  case REACT_LAZY_TYPE:
                  case REACT_MEMO_TYPE:
                    return object;
                  case REACT_CONSUMER_TYPE:
                    return object;
                  default:
                    return $$typeof;
                }
            }
          case REACT_PORTAL_TYPE:
            return $$typeof;
        }
      }
    }
    reactIs_production.ContextConsumer = REACT_CONSUMER_TYPE;
    reactIs_production.ContextProvider = REACT_CONTEXT_TYPE;
    reactIs_production.Element = REACT_ELEMENT_TYPE;
    reactIs_production.ForwardRef = REACT_FORWARD_REF_TYPE;
    reactIs_production.Fragment = REACT_FRAGMENT_TYPE;
    reactIs_production.Lazy = REACT_LAZY_TYPE;
    reactIs_production.Memo = REACT_MEMO_TYPE;
    reactIs_production.Portal = REACT_PORTAL_TYPE;
    reactIs_production.Profiler = REACT_PROFILER_TYPE;
    reactIs_production.StrictMode = REACT_STRICT_MODE_TYPE;
    reactIs_production.Suspense = REACT_SUSPENSE_TYPE;
    reactIs_production.SuspenseList = REACT_SUSPENSE_LIST_TYPE;
    reactIs_production.isContextConsumer = function(object) {
      return typeOf2(object) === REACT_CONSUMER_TYPE;
    };
    reactIs_production.isContextProvider = function(object) {
      return typeOf2(object) === REACT_CONTEXT_TYPE;
    };
    reactIs_production.isElement = function(object) {
      return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
    };
    reactIs_production.isForwardRef = function(object) {
      return typeOf2(object) === REACT_FORWARD_REF_TYPE;
    };
    reactIs_production.isFragment = function(object) {
      return typeOf2(object) === REACT_FRAGMENT_TYPE;
    };
    reactIs_production.isLazy = function(object) {
      return typeOf2(object) === REACT_LAZY_TYPE;
    };
    reactIs_production.isMemo = function(object) {
      return typeOf2(object) === REACT_MEMO_TYPE;
    };
    reactIs_production.isPortal = function(object) {
      return typeOf2(object) === REACT_PORTAL_TYPE;
    };
    reactIs_production.isProfiler = function(object) {
      return typeOf2(object) === REACT_PROFILER_TYPE;
    };
    reactIs_production.isStrictMode = function(object) {
      return typeOf2(object) === REACT_STRICT_MODE_TYPE;
    };
    reactIs_production.isSuspense = function(object) {
      return typeOf2(object) === REACT_SUSPENSE_TYPE;
    };
    reactIs_production.isSuspenseList = function(object) {
      return typeOf2(object) === REACT_SUSPENSE_LIST_TYPE;
    };
    reactIs_production.isValidElementType = function(type) {
      return "string" === typeof type || "function" === typeof type || type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || "object" === typeof type && null !== type && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_CONSUMER_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_CLIENT_REFERENCE || void 0 !== type.getModuleId) ? true : false;
    };
    reactIs_production.typeOf = typeOf2;
    return reactIs_production;
  }
  var hasRequiredReactIs$1;
  function requireReactIs$1() {
    if (hasRequiredReactIs$1) return reactIs$1.exports;
    hasRequiredReactIs$1 = 1;
    {
      reactIs$1.exports = /* @__PURE__ */ requireReactIs_production();
    }
    return reactIs$1.exports;
  }
  var reactIsExports = /* @__PURE__ */ requireReactIs$1();
  function isPlainObject$1(item) {
    if (typeof item !== "object" || item === null) {
      return false;
    }
    const prototype = Object.getPrototypeOf(item);
    return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);
  }
  function deepClone$1(source) {
    if (/* @__PURE__ */ React__namespace.isValidElement(source) || reactIsExports.isValidElementType(source) || !isPlainObject$1(source)) {
      return source;
    }
    const output = {};
    Object.keys(source).forEach((key2) => {
      output[key2] = deepClone$1(source[key2]);
    });
    return output;
  }
  function deepmerge(target, source, options = {
    clone: true
  }) {
    const output = options.clone ? {
      ...target
    } : target;
    if (isPlainObject$1(target) && isPlainObject$1(source)) {
      Object.keys(source).forEach((key2) => {
        if (/* @__PURE__ */ React__namespace.isValidElement(source[key2]) || reactIsExports.isValidElementType(source[key2])) {
          output[key2] = source[key2];
        } else if (isPlainObject$1(source[key2]) && // Avoid prototype pollution
        Object.prototype.hasOwnProperty.call(target, key2) && isPlainObject$1(target[key2])) {
          output[key2] = deepmerge(target[key2], source[key2], options);
        } else if (options.clone) {
          output[key2] = isPlainObject$1(source[key2]) ? deepClone$1(source[key2]) : source[key2];
        } else {
          output[key2] = source[key2];
        }
      });
    }
    return output;
  }
  function capitalize(string) {
    if (typeof string !== "string") {
      throw new Error(formatMuiErrorMessage(7));
    }
    return string.charAt(0).toUpperCase() + string.slice(1);
  }
  function createChainedFunction(...funcs) {
    return funcs.reduce((acc, func) => {
      if (func == null) {
        return acc;
      }
      return function chainedFunction(...args) {
        acc.apply(this, args);
        func.apply(this, args);
      };
    }, () => {
    });
  }
  function debounce$1(func, wait = 166) {
    let timeout;
    function debounced(...args) {
      const later = () => {
        func.apply(this, args);
      };
      clearTimeout(timeout);
      timeout = setTimeout(later, wait);
    }
    debounced.clear = () => {
      clearTimeout(timeout);
    };
    return debounced;
  }
  function isMuiElement(element, muiNames) {
    var _a, _b, _c;
    return /* @__PURE__ */ React__namespace.isValidElement(element) && muiNames.indexOf(
      // For server components `muiName` is avaialble in element.type._payload.value.muiName
      // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45
      // eslint-disable-next-line no-underscore-dangle
      element.type.muiName ?? ((_c = (_b = (_a = element.type) == null ? void 0 : _a._payload) == null ? void 0 : _b.value) == null ? void 0 : _c.muiName)
    ) !== -1;
  }
  function ownerDocument(node2) {
    return node2 && node2.ownerDocument || document;
  }
  function ownerWindow(node2) {
    const doc = ownerDocument(node2);
    return doc.defaultView || window;
  }
  function setRef(ref, value) {
    if (typeof ref === "function") {
      ref(value);
    } else if (ref) {
      ref.current = value;
    }
  }
  const useEnhancedEffect = typeof window !== "undefined" ? React__namespace.useLayoutEffect : React__namespace.useEffect;
  let globalId = 0;
  function useGlobalId(idOverride) {
    const [defaultId, setDefaultId] = React__namespace.useState(idOverride);
    const id = idOverride || defaultId;
    React__namespace.useEffect(() => {
      if (defaultId == null) {
        globalId += 1;
        setDefaultId(`mui-${globalId}`);
      }
    }, [defaultId]);
    return id;
  }
  const safeReact = {
    ...React__namespace
  };
  const maybeReactUseId = safeReact.useId;
  function useId(idOverride) {
    if (maybeReactUseId !== void 0) {
      const reactId = maybeReactUseId();
      return idOverride ?? reactId;
    }
    return useGlobalId(idOverride);
  }
  function useControlled({
    controlled,
    default: defaultProp,
    name,
    state = "value"
  }) {
    const {
      current: isControlled
    } = React__namespace.useRef(controlled !== void 0);
    const [valueState, setValue] = React__namespace.useState(defaultProp);
    const value = isControlled ? controlled : valueState;
    const setValueIfUncontrolled = React__namespace.useCallback((newValue) => {
      if (!isControlled) {
        setValue(newValue);
      }
    }, []);
    return [value, setValueIfUncontrolled];
  }
  function useEventCallback(fn2) {
    const ref = React__namespace.useRef(fn2);
    useEnhancedEffect(() => {
      ref.current = fn2;
    });
    return React__namespace.useRef((...args) => (
      // @ts-expect-error hide `this`
      (0, ref.current)(...args)
    )).current;
  }
  function useForkRef(...refs) {
    const cleanupRef = React__namespace.useRef(void 0);
    const refEffect = React__namespace.useCallback((instance) => {
      const cleanups = refs.map((ref) => {
        if (ref == null) {
          return null;
        }
        if (typeof ref === "function") {
          const refCallback = ref;
          const refCleanup = refCallback(instance);
          return typeof refCleanup === "function" ? refCleanup : () => {
            refCallback(null);
          };
        }
        ref.current = instance;
        return () => {
          ref.current = null;
        };
      });
      return () => {
        cleanups.forEach((refCleanup) => refCleanup == null ? void 0 : refCleanup());
      };
    }, refs);
    return React__namespace.useMemo(() => {
      if (refs.every((ref) => ref == null)) {
        return null;
      }
      return (value) => {
        if (cleanupRef.current) {
          cleanupRef.current();
          cleanupRef.current = void 0;
        }
        if (value != null) {
          cleanupRef.current = refEffect(value);
        }
      };
    }, refs);
  }
  const UNINITIALIZED = {};
  function useLazyRef(init, initArg) {
    const ref = React__namespace.useRef(UNINITIALIZED);
    if (ref.current === UNINITIALIZED) {
      ref.current = init(initArg);
    }
    return ref;
  }
  const EMPTY = [];
  function useOnMount(fn2) {
    React__namespace.useEffect(fn2, EMPTY);
  }
  class Timeout {
    constructor() {
      __publicField(this, "currentId", null);
      __publicField(this, "clear", () => {
        if (this.currentId !== null) {
          clearTimeout(this.currentId);
          this.currentId = null;
        }
      });
      __publicField(this, "disposeEffect", () => {
        return this.clear;
      });
    }
    static create() {
      return new Timeout();
    }
    /**
     * Executes `fn` after `delay`, clearing any previously scheduled call.
     */
    start(delay, fn2) {
      this.clear();
      this.currentId = setTimeout(() => {
        this.currentId = null;
        fn2();
      }, delay);
    }
  }
  function useTimeout() {
    const timeout = useLazyRef(Timeout.create).current;
    useOnMount(timeout.disposeEffect);
    return timeout;
  }
  function isFocusVisible(element) {
    try {
      return element.matches(":focus-visible");
    } catch (error) {
    }
    return false;
  }
  function getScrollbarSize(win = window) {
    const documentWidth = win.document.documentElement.clientWidth;
    return win.innerWidth - documentWidth;
  }
  const usePreviousProps = (value) => {
    const ref = React__namespace.useRef({});
    React__namespace.useEffect(() => {
      ref.current = value;
    });
    return ref.current;
  };
  const defaultGenerator = (componentName) => componentName;
  const createClassNameGenerator = () => {
    let generate = defaultGenerator;
    return {
      configure(generator) {
        generate = generator;
      },
      generate(componentName) {
        return generate(componentName);
      },
      reset() {
        generate = defaultGenerator;
      }
    };
  };
  const ClassNameGenerator = createClassNameGenerator();
  const globalStateClasses = {
    active: "active",
    checked: "checked",
    completed: "completed",
    disabled: "disabled",
    error: "error",
    expanded: "expanded",
    focused: "focused",
    focusVisible: "focusVisible",
    open: "open",
    readOnly: "readOnly",
    required: "required",
    selected: "selected"
  };
  function generateUtilityClass(componentName, slot, globalStatePrefix = "Mui") {
    const globalStateClass = globalStateClasses[slot];
    return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;
  }
  function generateUtilityClasses(componentName, slots, globalStatePrefix = "Mui") {
    const result = {};
    slots.forEach((slot) => {
      result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);
    });
    return result;
  }
  function isHostComponent$1(element) {
    return typeof element === "string";
  }
  function appendOwnerState(elementType, otherProps, ownerState) {
    if (elementType === void 0 || isHostComponent$1(elementType)) {
      return otherProps;
    }
    return {
      ...otherProps,
      ownerState: {
        ...otherProps.ownerState,
        ...ownerState
      }
    };
  }
  function extractEventHandlers(object, excludeKeys = []) {
    if (object === void 0) {
      return {};
    }
    const result = {};
    Object.keys(object).filter((prop) => prop.match(/^on[A-Z]/) && typeof object[prop] === "function" && !excludeKeys.includes(prop)).forEach((prop) => {
      result[prop] = object[prop];
    });
    return result;
  }
  function omitEventHandlers(object) {
    if (object === void 0) {
      return {};
    }
    const result = {};
    Object.keys(object).filter((prop) => !(prop.match(/^on[A-Z]/) && typeof object[prop] === "function")).forEach((prop) => {
      result[prop] = object[prop];
    });
    return result;
  }
  function mergeSlotProps$1(parameters) {
    const {
      getSlotProps,
      additionalProps,
      externalSlotProps,
      externalForwardedProps,
      className
    } = parameters;
    if (!getSlotProps) {
      const joinedClasses2 = clsx(additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);
      const mergedStyle2 = {
        ...additionalProps == null ? void 0 : additionalProps.style,
        ...externalForwardedProps == null ? void 0 : externalForwardedProps.style,
        ...externalSlotProps == null ? void 0 : externalSlotProps.style
      };
      const props2 = {
        ...additionalProps,
        ...externalForwardedProps,
        ...externalSlotProps
      };
      if (joinedClasses2.length > 0) {
        props2.className = joinedClasses2;
      }
      if (Object.keys(mergedStyle2).length > 0) {
        props2.style = mergedStyle2;
      }
      return {
        props: props2,
        internalRef: void 0
      };
    }
    const eventHandlers = extractEventHandlers({
      ...externalForwardedProps,
      ...externalSlotProps
    });
    const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);
    const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);
    const internalSlotProps = getSlotProps(eventHandlers);
    const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);
    const mergedStyle = {
      ...internalSlotProps == null ? void 0 : internalSlotProps.style,
      ...additionalProps == null ? void 0 : additionalProps.style,
      ...externalForwardedProps == null ? void 0 : externalForwardedProps.style,
      ...externalSlotProps == null ? void 0 : externalSlotProps.style
    };
    const props = {
      ...internalSlotProps,
      ...additionalProps,
      ...otherPropsWithoutEventHandlers,
      ...componentsPropsWithoutEventHandlers
    };
    if (joinedClasses.length > 0) {
      props.className = joinedClasses;
    }
    if (Object.keys(mergedStyle).length > 0) {
      props.style = mergedStyle;
    }
    return {
      props,
      internalRef: internalSlotProps.ref
    };
  }
  function resolveComponentProps(componentProps, ownerState, slotState) {
    if (typeof componentProps === "function") {
      return componentProps(ownerState, slotState);
    }
    return componentProps;
  }
  function useSlotProps(parameters) {
    var _a;
    const {
      elementType,
      externalSlotProps,
      ownerState,
      skipResolvingSlotProps = false,
      ...other
    } = parameters;
    const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);
    const {
      props: mergedProps,
      internalRef
    } = mergeSlotProps$1({
      ...other,
      externalSlotProps: resolvedComponentsProps
    });
    const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_a = parameters.additionalProps) == null ? void 0 : _a.ref);
    const props = appendOwnerState(elementType, {
      ...mergedProps,
      ref
    }, ownerState);
    return props;
  }
  function getReactElementRef(element) {
    var _a;
    if (parseInt(React__namespace.version, 10) >= 19) {
      return ((_a = element == null ? void 0 : element.props) == null ? void 0 : _a.ref) || null;
    }
    return (element == null ? void 0 : element.ref) || null;
  }
  function merge(acc, item) {
    if (!item) {
      return acc;
    }
    return deepmerge(acc, item, {
      clone: false
      // No need to clone deep, it's way faster.
    });
  }
  function sortContainerQueries(theme, css2) {
    if (!theme.containerQueries) {
      return css2;
    }
    const sorted = Object.keys(css2).filter((key2) => key2.startsWith("@container")).sort((a, b) => {
      var _a, _b;
      const regex = /min-width:\s*([0-9.]+)/;
      return +(((_a = a.match(regex)) == null ? void 0 : _a[1]) || 0) - +(((_b = b.match(regex)) == null ? void 0 : _b[1]) || 0);
    });
    if (!sorted.length) {
      return css2;
    }
    return sorted.reduce((acc, key2) => {
      const value = css2[key2];
      delete acc[key2];
      acc[key2] = value;
      return acc;
    }, {
      ...css2
    });
  }
  function isCqShorthand(breakpointKeys, value) {
    return value === "@" || value.startsWith("@") && (breakpointKeys.some((key2) => value.startsWith(`@${key2}`)) || !!value.match(/^@\d/));
  }
  function getContainerQuery(theme, shorthand) {
    const matches = shorthand.match(/^@([^/]+)?\/?(.+)?$/);
    if (!matches) {
      return null;
    }
    const [, containerQuery, containerName] = matches;
    const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;
    return theme.containerQueries(containerName).up(value);
  }
  function cssContainerQueries(themeInput) {
    const toContainerQuery = (mediaQuery, name) => mediaQuery.replace("@media", name ? `@container ${name}` : "@container");
    function attachCq(node22, name) {
      node22.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);
      node22.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);
      node22.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);
      node22.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);
      node22.not = (...args) => {
        const result = toContainerQuery(themeInput.breakpoints.not(...args), name);
        if (result.includes("not all and")) {
          return result.replace("not all and ", "").replace("min-width:", "width<").replace("max-width:", "width>").replace("and", "or");
        }
        return result;
      };
    }
    const node2 = {};
    const containerQueries = (name) => {
      attachCq(node2, name);
      return node2;
    };
    attachCq(containerQueries);
    return {
      ...themeInput,
      containerQueries
    };
  }
  const values$1 = {
    xs: 0,
    // phone
    sm: 600,
    // tablet
    md: 900,
    // small laptop
    lg: 1200,
    // desktop
    xl: 1536
    // large screen
  };
  const defaultBreakpoints = {
    // Sorted ASC by size. That's important.
    // It can't be configured as it's used statically for propTypes.
    keys: ["xs", "sm", "md", "lg", "xl"],
    up: (key2) => `@media (min-width:${values$1[key2]}px)`
  };
  const defaultContainerQueries = {
    containerQueries: (containerName) => ({
      up: (key2) => {
        let result = typeof key2 === "number" ? key2 : values$1[key2] || key2;
        if (typeof result === "number") {
          result = `${result}px`;
        }
        return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;
      }
    })
  };
  function handleBreakpoints(props, propValue, styleFromPropValue) {
    const theme = props.theme || {};
    if (Array.isArray(propValue)) {
      const themeBreakpoints = theme.breakpoints || defaultBreakpoints;
      return propValue.reduce((acc, item, index) => {
        acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);
        return acc;
      }, {});
    }
    if (typeof propValue === "object") {
      const themeBreakpoints = theme.breakpoints || defaultBreakpoints;
      return Object.keys(propValue).reduce((acc, breakpoint) => {
        if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {
          const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);
          if (containerKey) {
            acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);
          }
        } else if (Object.keys(themeBreakpoints.values || values$1).includes(breakpoint)) {
          const mediaKey = themeBreakpoints.up(breakpoint);
          acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);
        } else {
          const cssKey = breakpoint;
          acc[cssKey] = propValue[cssKey];
        }
        return acc;
      }, {});
    }
    const output = styleFromPropValue(propValue);
    return output;
  }
  function createEmptyBreakpointObject(breakpointsInput = {}) {
    var _a;
    const breakpointsInOrder = (_a = breakpointsInput.keys) == null ? void 0 : _a.reduce((acc, key2) => {
      const breakpointStyleKey = breakpointsInput.up(key2);
      acc[breakpointStyleKey] = {};
      return acc;
    }, {});
    return breakpointsInOrder || {};
  }
  function removeUnusedBreakpoints(breakpointKeys, style2) {
    return breakpointKeys.reduce((acc, key2) => {
      const breakpointOutput = acc[key2];
      const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;
      if (isBreakpointUnused) {
        delete acc[key2];
      }
      return acc;
    }, style2);
  }
  function getPath(obj, path, checkVars = true) {
    if (!path || typeof path !== "string") {
      return null;
    }
    if (obj && obj.vars && checkVars) {
      const val = `vars.${path}`.split(".").reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);
      if (val != null) {
        return val;
      }
    }
    return path.split(".").reduce((acc, item) => {
      if (acc && acc[item] != null) {
        return acc[item];
      }
      return null;
    }, obj);
  }
  function getStyleValue$1(themeMapping, transform, propValueFinal, userValue = propValueFinal) {
    let value;
    if (typeof themeMapping === "function") {
      value = themeMapping(propValueFinal);
    } else if (Array.isArray(themeMapping)) {
      value = themeMapping[propValueFinal] || userValue;
    } else {
      value = getPath(themeMapping, propValueFinal) || userValue;
    }
    if (transform) {
      value = transform(value, userValue, themeMapping);
    }
    return value;
  }
  function style$1(options) {
    const {
      prop,
      cssProperty = options.prop,
      themeKey,
      transform
    } = options;
    const fn2 = (props) => {
      if (props[prop] == null) {
        return null;
      }
      const propValue = props[prop];
      const theme = props.theme;
      const themeMapping = getPath(theme, themeKey) || {};
      const styleFromPropValue = (propValueFinal) => {
        let value = getStyleValue$1(themeMapping, transform, propValueFinal);
        if (propValueFinal === value && typeof propValueFinal === "string") {
          value = getStyleValue$1(themeMapping, transform, `${prop}${propValueFinal === "default" ? "" : capitalize(propValueFinal)}`, propValueFinal);
        }
        if (cssProperty === false) {
          return value;
        }
        return {
          [cssProperty]: value
        };
      };
      return handleBreakpoints(props, propValue, styleFromPropValue);
    };
    fn2.propTypes = {};
    fn2.filterProps = [prop];
    return fn2;
  }
  function memoize$1(fn2) {
    const cache = {};
    return (arg2) => {
      if (cache[arg2] === void 0) {
        cache[arg2] = fn2(arg2);
      }
      return cache[arg2];
    };
  }
  const properties = {
    m: "margin",
    p: "padding"
  };
  const directions = {
    t: "Top",
    r: "Right",
    b: "Bottom",
    l: "Left",
    x: ["Left", "Right"],
    y: ["Top", "Bottom"]
  };
  const aliases = {
    marginX: "mx",
    marginY: "my",
    paddingX: "px",
    paddingY: "py"
  };
  const getCssProperties = memoize$1((prop) => {
    if (prop.length > 2) {
      if (aliases[prop]) {
        prop = aliases[prop];
      } else {
        return [prop];
      }
    }
    const [a, b] = prop.split("");
    const property = properties[a];
    const direction = directions[b] || "";
    return Array.isArray(direction) ? direction.map((dir) => property + dir) : [property + direction];
  });
  const marginKeys = ["m", "mt", "mr", "mb", "ml", "mx", "my", "margin", "marginTop", "marginRight", "marginBottom", "marginLeft", "marginX", "marginY", "marginInline", "marginInlineStart", "marginInlineEnd", "marginBlock", "marginBlockStart", "marginBlockEnd"];
  const paddingKeys = ["p", "pt", "pr", "pb", "pl", "px", "py", "padding", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "paddingX", "paddingY", "paddingInline", "paddingInlineStart", "paddingInlineEnd", "paddingBlock", "paddingBlockStart", "paddingBlockEnd"];
  [...marginKeys, ...paddingKeys];
  function createUnaryUnit(theme, themeKey, defaultValue, propName) {
    const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;
    if (typeof themeSpacing === "number" || typeof themeSpacing === "string") {
      return (val) => {
        if (typeof val === "string") {
          return val;
        }
        if (typeof themeSpacing === "string") {
          if (themeSpacing.startsWith("var(") && val === 0) {
            return 0;
          }
          if (themeSpacing.startsWith("var(") && val === 1) {
            return themeSpacing;
          }
          return `calc(${val} * ${themeSpacing})`;
        }
        return themeSpacing * val;
      };
    }
    if (Array.isArray(themeSpacing)) {
      return (val) => {
        if (typeof val === "string") {
          return val;
        }
        const abs2 = Math.abs(val);
        const transformed = themeSpacing[abs2];
        if (val >= 0) {
          return transformed;
        }
        if (typeof transformed === "number") {
          return -transformed;
        }
        if (typeof transformed === "string" && transformed.startsWith("var(")) {
          return `calc(-1 * ${transformed})`;
        }
        return `-${transformed}`;
      };
    }
    if (typeof themeSpacing === "function") {
      return themeSpacing;
    }
    return () => void 0;
  }
  function createUnarySpacing(theme) {
    return createUnaryUnit(theme, "spacing", 8);
  }
  function getValue(transformer, propValue) {
    if (typeof propValue === "string" || propValue == null) {
      return propValue;
    }
    return transformer(propValue);
  }
  function getStyleFromPropValue(cssProperties, transformer) {
    return (propValue) => cssProperties.reduce((acc, cssProperty) => {
      acc[cssProperty] = getValue(transformer, propValue);
      return acc;
    }, {});
  }
  function resolveCssProperty(props, keys, prop, transformer) {
    if (!keys.includes(prop)) {
      return null;
    }
    const cssProperties = getCssProperties(prop);
    const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);
    const propValue = props[prop];
    return handleBreakpoints(props, propValue, styleFromPropValue);
  }
  function style(props, keys) {
    const transformer = createUnarySpacing(props.theme);
    return Object.keys(props).map((prop) => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});
  }
  function margin(props) {
    return style(props, marginKeys);
  }
  margin.propTypes = {};
  margin.filterProps = marginKeys;
  function padding(props) {
    return style(props, paddingKeys);
  }
  padding.propTypes = {};
  padding.filterProps = paddingKeys;
  function compose(...styles2) {
    const handlers = styles2.reduce((acc, style2) => {
      style2.filterProps.forEach((prop) => {
        acc[prop] = style2;
      });
      return acc;
    }, {});
    const fn2 = (props) => {
      return Object.keys(props).reduce((acc, prop) => {
        if (handlers[prop]) {
          return merge(acc, handlers[prop](props));
        }
        return acc;
      }, {});
    };
    fn2.propTypes = {};
    fn2.filterProps = styles2.reduce((acc, style2) => acc.concat(style2.filterProps), []);
    return fn2;
  }
  function borderTransform(value) {
    if (typeof value !== "number") {
      return value;
    }
    return `${value}px solid`;
  }
  function createBorderStyle(prop, transform) {
    return style$1({
      prop,
      themeKey: "borders",
      transform
    });
  }
  const border = createBorderStyle("border", borderTransform);
  const borderTop = createBorderStyle("borderTop", borderTransform);
  const borderRight = createBorderStyle("borderRight", borderTransform);
  const borderBottom = createBorderStyle("borderBottom", borderTransform);
  const borderLeft = createBorderStyle("borderLeft", borderTransform);
  const borderColor = createBorderStyle("borderColor");
  const borderTopColor = createBorderStyle("borderTopColor");
  const borderRightColor = createBorderStyle("borderRightColor");
  const borderBottomColor = createBorderStyle("borderBottomColor");
  const borderLeftColor = createBorderStyle("borderLeftColor");
  const outline = createBorderStyle("outline", borderTransform);
  const outlineColor = createBorderStyle("outlineColor");
  const borderRadius = (props) => {
    if (props.borderRadius !== void 0 && props.borderRadius !== null) {
      const transformer = createUnaryUnit(props.theme, "shape.borderRadius", 4);
      const styleFromPropValue = (propValue) => ({
        borderRadius: getValue(transformer, propValue)
      });
      return handleBreakpoints(props, props.borderRadius, styleFromPropValue);
    }
    return null;
  };
  borderRadius.propTypes = {};
  borderRadius.filterProps = ["borderRadius"];
  compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);
  const gap = (props) => {
    if (props.gap !== void 0 && props.gap !== null) {
      const transformer = createUnaryUnit(props.theme, "spacing", 8);
      const styleFromPropValue = (propValue) => ({
        gap: getValue(transformer, propValue)
      });
      return handleBreakpoints(props, props.gap, styleFromPropValue);
    }
    return null;
  };
  gap.propTypes = {};
  gap.filterProps = ["gap"];
  const columnGap = (props) => {
    if (props.columnGap !== void 0 && props.columnGap !== null) {
      const transformer = createUnaryUnit(props.theme, "spacing", 8);
      const styleFromPropValue = (propValue) => ({
        columnGap: getValue(transformer, propValue)
      });
      return handleBreakpoints(props, props.columnGap, styleFromPropValue);
    }
    return null;
  };
  columnGap.propTypes = {};
  columnGap.filterProps = ["columnGap"];
  const rowGap = (props) => {
    if (props.rowGap !== void 0 && props.rowGap !== null) {
      const transformer = createUnaryUnit(props.theme, "spacing", 8);
      const styleFromPropValue = (propValue) => ({
        rowGap: getValue(transformer, propValue)
      });
      return handleBreakpoints(props, props.rowGap, styleFromPropValue);
    }
    return null;
  };
  rowGap.propTypes = {};
  rowGap.filterProps = ["rowGap"];
  const gridColumn = style$1({
    prop: "gridColumn"
  });
  const gridRow = style$1({
    prop: "gridRow"
  });
  const gridAutoFlow = style$1({
    prop: "gridAutoFlow"
  });
  const gridAutoColumns = style$1({
    prop: "gridAutoColumns"
  });
  const gridAutoRows = style$1({
    prop: "gridAutoRows"
  });
  const gridTemplateColumns = style$1({
    prop: "gridTemplateColumns"
  });
  const gridTemplateRows = style$1({
    prop: "gridTemplateRows"
  });
  const gridTemplateAreas = style$1({
    prop: "gridTemplateAreas"
  });
  const gridArea = style$1({
    prop: "gridArea"
  });
  compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);
  function paletteTransform(value, userValue) {
    if (userValue === "grey") {
      return userValue;
    }
    return value;
  }
  const color = style$1({
    prop: "color",
    themeKey: "palette",
    transform: paletteTransform
  });
  const bgcolor = style$1({
    prop: "bgcolor",
    cssProperty: "backgroundColor",
    themeKey: "palette",
    transform: paletteTransform
  });
  const backgroundColor = style$1({
    prop: "backgroundColor",
    themeKey: "palette",
    transform: paletteTransform
  });
  compose(color, bgcolor, backgroundColor);
  function sizingTransform(value) {
    return value <= 1 && value !== 0 ? `${value * 100}%` : value;
  }
  const width = style$1({
    prop: "width",
    transform: sizingTransform
  });
  const maxWidth = (props) => {
    if (props.maxWidth !== void 0 && props.maxWidth !== null) {
      const styleFromPropValue = (propValue) => {
        var _a, _b, _c, _d, _e;
        const breakpoint = ((_c = (_b = (_a = props.theme) == null ? void 0 : _a.breakpoints) == null ? void 0 : _b.values) == null ? void 0 : _c[propValue]) || values$1[propValue];
        if (!breakpoint) {
          return {
            maxWidth: sizingTransform(propValue)
          };
        }
        if (((_e = (_d = props.theme) == null ? void 0 : _d.breakpoints) == null ? void 0 : _e.unit) !== "px") {
          return {
            maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`
          };
        }
        return {
          maxWidth: breakpoint
        };
      };
      return handleBreakpoints(props, props.maxWidth, styleFromPropValue);
    }
    return null;
  };
  maxWidth.filterProps = ["maxWidth"];
  const minWidth = style$1({
    prop: "minWidth",
    transform: sizingTransform
  });
  const height = style$1({
    prop: "height",
    transform: sizingTransform
  });
  const maxHeight = style$1({
    prop: "maxHeight",
    transform: sizingTransform
  });
  const minHeight = style$1({
    prop: "minHeight",
    transform: sizingTransform
  });
  style$1({
    prop: "size",
    cssProperty: "width",
    transform: sizingTransform
  });
  style$1({
    prop: "size",
    cssProperty: "height",
    transform: sizingTransform
  });
  const boxSizing = style$1({
    prop: "boxSizing"
  });
  compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);
  const defaultSxConfig = {
    // borders
    border: {
      themeKey: "borders",
      transform: borderTransform
    },
    borderTop: {
      themeKey: "borders",
      transform: borderTransform
    },
    borderRight: {
      themeKey: "borders",
      transform: borderTransform
    },
    borderBottom: {
      themeKey: "borders",
      transform: borderTransform
    },
    borderLeft: {
      themeKey: "borders",
      transform: borderTransform
    },
    borderColor: {
      themeKey: "palette"
    },
    borderTopColor: {
      themeKey: "palette"
    },
    borderRightColor: {
      themeKey: "palette"
    },
    borderBottomColor: {
      themeKey: "palette"
    },
    borderLeftColor: {
      themeKey: "palette"
    },
    outline: {
      themeKey: "borders",
      transform: borderTransform
    },
    outlineColor: {
      themeKey: "palette"
    },
    borderRadius: {
      themeKey: "shape.borderRadius",
      style: borderRadius
    },
    // palette
    color: {
      themeKey: "palette",
      transform: paletteTransform
    },
    bgcolor: {
      themeKey: "palette",
      cssProperty: "backgroundColor",
      transform: paletteTransform
    },
    backgroundColor: {
      themeKey: "palette",
      transform: paletteTransform
    },
    // spacing
    p: {
      style: padding
    },
    pt: {
      style: padding
    },
    pr: {
      style: padding
    },
    pb: {
      style: padding
    },
    pl: {
      style: padding
    },
    px: {
      style: padding
    },
    py: {
      style: padding
    },
    padding: {
      style: padding
    },
    paddingTop: {
      style: padding
    },
    paddingRight: {
      style: padding
    },
    paddingBottom: {
      style: padding
    },
    paddingLeft: {
      style: padding
    },
    paddingX: {
      style: padding
    },
    paddingY: {
      style: padding
    },
    paddingInline: {
      style: padding
    },
    paddingInlineStart: {
      style: padding
    },
    paddingInlineEnd: {
      style: padding
    },
    paddingBlock: {
      style: padding
    },
    paddingBlockStart: {
      style: padding
    },
    paddingBlockEnd: {
      style: padding
    },
    m: {
      style: margin
    },
    mt: {
      style: margin
    },
    mr: {
      style: margin
    },
    mb: {
      style: margin
    },
    ml: {
      style: margin
    },
    mx: {
      style: margin
    },
    my: {
      style: margin
    },
    margin: {
      style: margin
    },
    marginTop: {
      style: margin
    },
    marginRight: {
      style: margin
    },
    marginBottom: {
      style: margin
    },
    marginLeft: {
      style: margin
    },
    marginX: {
      style: margin
    },
    marginY: {
      style: margin
    },
    marginInline: {
      style: margin
    },
    marginInlineStart: {
      style: margin
    },
    marginInlineEnd: {
      style: margin
    },
    marginBlock: {
      style: margin
    },
    marginBlockStart: {
      style: margin
    },
    marginBlockEnd: {
      style: margin
    },
    // display
    displayPrint: {
      cssProperty: false,
      transform: (value) => ({
        "@media print": {
          display: value
        }
      })
    },
    display: {},
    overflow: {},
    textOverflow: {},
    visibility: {},
    whiteSpace: {},
    // flexbox
    flexBasis: {},
    flexDirection: {},
    flexWrap: {},
    justifyContent: {},
    alignItems: {},
    alignContent: {},
    order: {},
    flex: {},
    flexGrow: {},
    flexShrink: {},
    alignSelf: {},
    justifyItems: {},
    justifySelf: {},
    // grid
    gap: {
      style: gap
    },
    rowGap: {
      style: rowGap
    },
    columnGap: {
      style: columnGap
    },
    gridColumn: {},
    gridRow: {},
    gridAutoFlow: {},
    gridAutoColumns: {},
    gridAutoRows: {},
    gridTemplateColumns: {},
    gridTemplateRows: {},
    gridTemplateAreas: {},
    gridArea: {},
    // positions
    position: {},
    zIndex: {
      themeKey: "zIndex"
    },
    top: {},
    right: {},
    bottom: {},
    left: {},
    // shadows
    boxShadow: {
      themeKey: "shadows"
    },
    // sizing
    width: {
      transform: sizingTransform
    },
    maxWidth: {
      style: maxWidth
    },
    minWidth: {
      transform: sizingTransform
    },
    height: {
      transform: sizingTransform
    },
    maxHeight: {
      transform: sizingTransform
    },
    minHeight: {
      transform: sizingTransform
    },
    boxSizing: {},
    // typography
    font: {
      themeKey: "font"
    },
    fontFamily: {
      themeKey: "typography"
    },
    fontSize: {
      themeKey: "typography"
    },
    fontStyle: {
      themeKey: "typography"
    },
    fontWeight: {
      themeKey: "typography"
    },
    letterSpacing: {},
    textTransform: {},
    lineHeight: {},
    textAlign: {},
    typography: {
      cssProperty: false,
      themeKey: "typography"
    }
  };
  function objectsHaveSameKeys(...objects) {
    const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);
    const union = new Set(allKeys);
    return objects.every((object) => union.size === Object.keys(object).length);
  }
  function callIfFn(maybeFn, arg2) {
    return typeof maybeFn === "function" ? maybeFn(arg2) : maybeFn;
  }
  function unstable_createStyleFunctionSx() {
    function getThemeValue(prop, val, theme, config2) {
      const props = {
        [prop]: val,
        theme
      };
      const options = config2[prop];
      if (!options) {
        return {
          [prop]: val
        };
      }
      const {
        cssProperty = prop,
        themeKey,
        transform,
        style: style2
      } = options;
      if (val == null) {
        return null;
      }
      if (themeKey === "typography" && val === "inherit") {
        return {
          [prop]: val
        };
      }
      const themeMapping = getPath(theme, themeKey) || {};
      if (style2) {
        return style2(props);
      }
      const styleFromPropValue = (propValueFinal) => {
        let value = getStyleValue$1(themeMapping, transform, propValueFinal);
        if (propValueFinal === value && typeof propValueFinal === "string") {
          value = getStyleValue$1(themeMapping, transform, `${prop}${propValueFinal === "default" ? "" : capitalize(propValueFinal)}`, propValueFinal);
        }
        if (cssProperty === false) {
          return value;
        }
        return {
          [cssProperty]: value
        };
      };
      return handleBreakpoints(props, val, styleFromPropValue);
    }
    function styleFunctionSx2(props) {
      const {
        sx,
        theme = {}
      } = props || {};
      if (!sx) {
        return null;
      }
      const config2 = theme.unstable_sxConfig ?? defaultSxConfig;
      function traverse(sxInput) {
        let sxObject = sxInput;
        if (typeof sxInput === "function") {
          sxObject = sxInput(theme);
        } else if (typeof sxInput !== "object") {
          return sxInput;
        }
        if (!sxObject) {
          return null;
        }
        const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);
        const breakpointsKeys = Object.keys(emptyBreakpoints);
        let css2 = emptyBreakpoints;
        Object.keys(sxObject).forEach((styleKey) => {
          const value = callIfFn(sxObject[styleKey], theme);
          if (value !== null && value !== void 0) {
            if (typeof value === "object") {
              if (config2[styleKey]) {
                css2 = merge(css2, getThemeValue(styleKey, value, theme, config2));
              } else {
                const breakpointsValues = handleBreakpoints({
                  theme
                }, value, (x) => ({
                  [styleKey]: x
                }));
                if (objectsHaveSameKeys(breakpointsValues, value)) {
                  css2[styleKey] = styleFunctionSx2({
                    sx: value,
                    theme
                  });
                } else {
                  css2 = merge(css2, breakpointsValues);
                }
              }
            } else {
              css2 = merge(css2, getThemeValue(styleKey, value, theme, config2));
            }
          }
        });
        return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css2));
      }
      return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);
    }
    return styleFunctionSx2;
  }
  const styleFunctionSx = unstable_createStyleFunctionSx();
  styleFunctionSx.filterProps = ["sx"];
  const splitProps = (props) => {
    var _a;
    const result = {
      systemProps: {},
      otherProps: {}
    };
    const config2 = ((_a = props == null ? void 0 : props.theme) == null ? void 0 : _a.unstable_sxConfig) ?? defaultSxConfig;
    Object.keys(props).forEach((prop) => {
      if (config2[prop]) {
        result.systemProps[prop] = props[prop];
      } else {
        result.otherProps[prop] = props[prop];
      }
    });
    return result;
  };
  function extendSxProp$1(props) {
    const {
      sx: inSx,
      ...other
    } = props;
    const {
      systemProps,
      otherProps
    } = splitProps(other);
    let finalSx;
    if (Array.isArray(inSx)) {
      finalSx = [systemProps, ...inSx];
    } else if (typeof inSx === "function") {
      finalSx = (...args) => {
        const result = inSx(...args);
        if (!isPlainObject$1(result)) {
          return systemProps;
        }
        return {
          ...systemProps,
          ...result
        };
      };
    } else {
      finalSx = {
        ...systemProps,
        ...inSx
      };
    }
    return {
      ...otherProps,
      sx: finalSx
    };
  }
  function _extends() {
    return _extends = Object.assign ? Object.assign.bind() : function(n) {
      for (var e = 1; e < arguments.length; e++) {
        var t = arguments[e];
        for (var r2 in t) ({}).hasOwnProperty.call(t, r2) && (n[r2] = t[r2]);
      }
      return n;
    }, _extends.apply(null, arguments);
  }
  function sheetForTag(tag) {
    if (tag.sheet) {
      return tag.sheet;
    }
    for (var i = 0; i < document.styleSheets.length; i++) {
      if (document.styleSheets[i].ownerNode === tag) {
        return document.styleSheets[i];
      }
    }
    return void 0;
  }
  function createStyleElement(options) {
    var tag = document.createElement("style");
    tag.setAttribute("data-emotion", options.key);
    if (options.nonce !== void 0) {
      tag.setAttribute("nonce", options.nonce);
    }
    tag.appendChild(document.createTextNode(""));
    tag.setAttribute("data-s", "");
    return tag;
  }
  var StyleSheet = /* @__PURE__ */ function() {
    function StyleSheet2(options) {
      var _this = this;
      this._insertTag = function(tag) {
        var before;
        if (_this.tags.length === 0) {
          if (_this.insertionPoint) {
            before = _this.insertionPoint.nextSibling;
          } else if (_this.prepend) {
            before = _this.container.firstChild;
          } else {
            before = _this.before;
          }
        } else {
          before = _this.tags[_this.tags.length - 1].nextSibling;
        }
        _this.container.insertBefore(tag, before);
        _this.tags.push(tag);
      };
      this.isSpeedy = options.speedy === void 0 ? true : options.speedy;
      this.tags = [];
      this.ctr = 0;
      this.nonce = options.nonce;
      this.key = options.key;
      this.container = options.container;
      this.prepend = options.prepend;
      this.insertionPoint = options.insertionPoint;
      this.before = null;
    }
    var _proto = StyleSheet2.prototype;
    _proto.hydrate = function hydrate(nodes) {
      nodes.forEach(this._insertTag);
    };
    _proto.insert = function insert(rule) {
      if (this.ctr % (this.isSpeedy ? 65e3 : 1) === 0) {
        this._insertTag(createStyleElement(this));
      }
      var tag = this.tags[this.tags.length - 1];
      if (this.isSpeedy) {
        var sheet = sheetForTag(tag);
        try {
          sheet.insertRule(rule, sheet.cssRules.length);
        } catch (e) {
        }
      } else {
        tag.appendChild(document.createTextNode(rule));
      }
      this.ctr++;
    };
    _proto.flush = function flush() {
      this.tags.forEach(function(tag) {
        var _tag$parentNode;
        return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);
      });
      this.tags = [];
      this.ctr = 0;
    };
    return StyleSheet2;
  }();
  var MS = "-ms-";
  var MOZ = "-moz-";
  var WEBKIT = "-webkit-";
  var COMMENT = "comm";
  var RULESET = "rule";
  var DECLARATION = "decl";
  var IMPORT = "@import";
  var KEYFRAMES = "@keyframes";
  var LAYER = "@layer";
  var abs = Math.abs;
  var from = String.fromCharCode;
  var assign = Object.assign;
  function hash$2(value, length2) {
    return charat(value, 0) ^ 45 ? (((length2 << 2 ^ charat(value, 0)) << 2 ^ charat(value, 1)) << 2 ^ charat(value, 2)) << 2 ^ charat(value, 3) : 0;
  }
  function trim(value) {
    return value.trim();
  }
  function match(value, pattern) {
    return (value = pattern.exec(value)) ? value[0] : value;
  }
  function replace(value, pattern, replacement) {
    return value.replace(pattern, replacement);
  }
  function indexof(value, search) {
    return value.indexOf(search);
  }
  function charat(value, index) {
    return value.charCodeAt(index) | 0;
  }
  function substr(value, begin, end2) {
    return value.slice(begin, end2);
  }
  function strlen(value) {
    return value.length;
  }
  function sizeof(value) {
    return value.length;
  }
  function append(value, array) {
    return array.push(value), value;
  }
  function combine(array, callback) {
    return array.map(callback).join("");
  }
  var line = 1;
  var column = 1;
  var length = 0;
  var position = 0;
  var character = 0;
  var characters = "";
  function node(value, root, parent, type, props, children, length2) {
    return { value, root, parent, type, props, children, line, column, length: length2, return: "" };
  }
  function copy$1(root, props) {
    return assign(node("", null, null, "", null, null, 0), root, { length: -root.length }, props);
  }
  function char() {
    return character;
  }
  function prev() {
    character = position > 0 ? charat(characters, --position) : 0;
    if (column--, character === 10)
      column = 1, line--;
    return character;
  }
  function next() {
    character = position < length ? charat(characters, position++) : 0;
    if (column++, character === 10)
      column = 1, line++;
    return character;
  }
  function peek() {
    return charat(characters, position);
  }
  function caret() {
    return position;
  }
  function slice(begin, end2) {
    return substr(characters, begin, end2);
  }
  function token(type) {
    switch (type) {
      // \0 \t \n \r \s whitespace token
      case 0:
      case 9:
      case 10:
      case 13:
      case 32:
        return 5;
      // ! + , / > @ ~ isolate token
      case 33:
      case 43:
      case 44:
      case 47:
      case 62:
      case 64:
      case 126:
      // ; { } breakpoint token
      case 59:
      case 123:
      case 125:
        return 4;
      // : accompanied token
      case 58:
        return 3;
      // " ' ( [ opening delimit token
      case 34:
      case 39:
      case 40:
      case 91:
        return 2;
      // ) ] closing delimit token
      case 41:
      case 93:
        return 1;
    }
    return 0;
  }
  function alloc(value) {
    return line = column = 1, length = strlen(characters = value), position = 0, [];
  }
  function dealloc(value) {
    return characters = "", value;
  }
  function delimit(type) {
    return trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)));
  }
  function whitespace(type) {
    while (character = peek())
      if (character < 33)
        next();
      else
        break;
    return token(type) > 2 || token(character) > 3 ? "" : " ";
  }
  function escaping(index, count2) {
    while (--count2 && next())
      if (character < 48 || character > 102 || character > 57 && character < 65 || character > 70 && character < 97)
        break;
    return slice(index, caret() + (count2 < 6 && peek() == 32 && next() == 32));
  }
  function delimiter(type) {
    while (next())
      switch (character) {
        // ] ) " '
        case type:
          return position;
        // " '
        case 34:
        case 39:
          if (type !== 34 && type !== 39)
            delimiter(character);
          break;
        // (
        case 40:
          if (type === 41)
            delimiter(type);
          break;
        // \
        case 92:
          next();
          break;
      }
    return position;
  }
  function commenter(type, index) {
    while (next())
      if (type + character === 47 + 10)
        break;
      else if (type + character === 42 + 42 && peek() === 47)
        break;
    return "/*" + slice(index, position - 1) + "*" + from(type === 47 ? type : next());
  }
  function identifier(index) {
    while (!token(peek()))
      next();
    return slice(index, position);
  }
  function compile(value) {
    return dealloc(parse("", null, null, null, [""], value = alloc(value), 0, [0], value));
  }
  function parse(value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {
    var index = 0;
    var offset2 = 0;
    var length2 = pseudo;
    var atrule = 0;
    var property = 0;
    var previous = 0;
    var variable = 1;
    var scanning = 1;
    var ampersand = 1;
    var character2 = 0;
    var type = "";
    var props = rules;
    var children = rulesets;
    var reference2 = rule;
    var characters2 = type;
    while (scanning)
      switch (previous = character2, character2 = next()) {
        // (
        case 40:
          if (previous != 108 && charat(characters2, length2 - 1) == 58) {
            if (indexof(characters2 += replace(delimit(character2), "&", "&\f"), "&\f") != -1)
              ampersand = -1;
            break;
          }
        // " ' [
        case 34:
        case 39:
        case 91:
          characters2 += delimit(character2);
          break;
        // \t \n \r \s
        case 9:
        case 10:
        case 13:
        case 32:
          characters2 += whitespace(previous);
          break;
        // \
        case 92:
          characters2 += escaping(caret() - 1, 7);
          continue;
        // /
        case 47:
          switch (peek()) {
            case 42:
            case 47:
              append(comment(commenter(next(), caret()), root, parent), declarations);
              break;
            default:
              characters2 += "/";
          }
          break;
        // {
        case 123 * variable:
          points[index++] = strlen(characters2) * ampersand;
        // } ; \0
        case 125 * variable:
        case 59:
        case 0:
          switch (character2) {
            // \0 }
            case 0:
            case 125:
              scanning = 0;
            // ;
            case 59 + offset2:
              if (ampersand == -1) characters2 = replace(characters2, /\f/g, "");
              if (property > 0 && strlen(characters2) - length2)
                append(property > 32 ? declaration(characters2 + ";", rule, parent, length2 - 1) : declaration(replace(characters2, " ", "") + ";", rule, parent, length2 - 2), declarations);
              break;
            // @ ;
            case 59:
              characters2 += ";";
            // { rule/at-rule
            default:
              append(reference2 = ruleset(characters2, root, parent, index, offset2, rules, points, type, props = [], children = [], length2), rulesets);
              if (character2 === 123)
                if (offset2 === 0)
                  parse(characters2, root, reference2, reference2, props, rulesets, length2, points, children);
                else
                  switch (atrule === 99 && charat(characters2, 3) === 110 ? 100 : atrule) {
                    // d l m s
                    case 100:
                    case 108:
                    case 109:
                    case 115:
                      parse(value, reference2, reference2, rule && append(ruleset(value, reference2, reference2, 0, 0, rules, points, type, rules, props = [], length2), children), rules, children, length2, points, rule ? props : children);
                      break;
                    default:
                      parse(characters2, reference2, reference2, reference2, [""], children, 0, points, children);
                  }
          }
          index = offset2 = property = 0, variable = ampersand = 1, type = characters2 = "", length2 = pseudo;
          break;
        // :
        case 58:
          length2 = 1 + strlen(characters2), property = previous;
        default:
          if (variable < 1) {
            if (character2 == 123)
              --variable;
            else if (character2 == 125 && variable++ == 0 && prev() == 125)
              continue;
          }
          switch (characters2 += from(character2), character2 * variable) {
            // &
            case 38:
              ampersand = offset2 > 0 ? 1 : (characters2 += "\f", -1);
              break;
            // ,
            case 44:
              points[index++] = (strlen(characters2) - 1) * ampersand, ampersand = 1;
              break;
            // @
            case 64:
              if (peek() === 45)
                characters2 += delimit(next());
              atrule = peek(), offset2 = length2 = strlen(type = characters2 += identifier(caret())), character2++;
              break;
            // -
            case 45:
              if (previous === 45 && strlen(characters2) == 2)
                variable = 0;
          }
      }
    return rulesets;
  }
  function ruleset(value, root, parent, index, offset2, rules, points, type, props, children, length2) {
    var post = offset2 - 1;
    var rule = offset2 === 0 ? rules : [""];
    var size = sizeof(rule);
    for (var i = 0, j = 0, k = 0; i < index; ++i)
      for (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)
        if (z = trim(j > 0 ? rule[x] + " " + y : replace(y, /&\f/g, rule[x])))
          props[k++] = z;
    return node(value, root, parent, offset2 === 0 ? RULESET : type, props, children, length2);
  }
  function comment(value, root, parent) {
    return node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0);
  }
  function declaration(value, root, parent, length2) {
    return node(value, root, parent, DECLARATION, substr(value, 0, length2), substr(value, length2 + 1, -1), length2);
  }
  function serialize(children, callback) {
    var output = "";
    var length2 = sizeof(children);
    for (var i = 0; i < length2; i++)
      output += callback(children[i], i, children, callback) || "";
    return output;
  }
  function stringify(element, index, children, callback) {
    switch (element.type) {
      case LAYER:
        if (element.children.length) break;
      case IMPORT:
      case DECLARATION:
        return element.return = element.return || element.value;
      case COMMENT:
        return "";
      case KEYFRAMES:
        return element.return = element.value + "{" + serialize(element.children, callback) + "}";
      case RULESET:
        element.value = element.props.join(",");
    }
    return strlen(children = serialize(element.children, callback)) ? element.return = element.value + "{" + children + "}" : "";
  }
  function middleware(collection) {
    var length2 = sizeof(collection);
    return function(element, index, children, callback) {
      var output = "";
      for (var i = 0; i < length2; i++)
        output += collection[i](element, index, children, callback) || "";
      return output;
    };
  }
  function rulesheet(callback) {
    return function(element) {
      if (!element.root) {
        if (element = element.return)
          callback(element);
      }
    };
  }
  function memoize(fn2) {
    var cache = /* @__PURE__ */ Object.create(null);
    return function(arg2) {
      if (cache[arg2] === void 0) cache[arg2] = fn2(arg2);
      return cache[arg2];
    };
  }
  var identifierWithPointTracking = function identifierWithPointTracking2(begin, points, index) {
    var previous = 0;
    var character2 = 0;
    while (true) {
      previous = character2;
      character2 = peek();
      if (previous === 38 && character2 === 12) {
        points[index] = 1;
      }
      if (token(character2)) {
        break;
      }
      next();
    }
    return slice(begin, position);
  };
  var toRules = function toRules2(parsed, points) {
    var index = -1;
    var character2 = 44;
    do {
      switch (token(character2)) {
        case 0:
          if (character2 === 38 && peek() === 12) {
            points[index] = 1;
          }
          parsed[index] += identifierWithPointTracking(position - 1, points, index);
          break;
        case 2:
          parsed[index] += delimit(character2);
          break;
        case 4:
          if (character2 === 44) {
            parsed[++index] = peek() === 58 ? "&\f" : "";
            points[index] = parsed[index].length;
            break;
          }
        // fallthrough
        default:
          parsed[index] += from(character2);
      }
    } while (character2 = next());
    return parsed;
  };
  var getRules = function getRules2(value, points) {
    return dealloc(toRules(alloc(value), points));
  };
  var fixedElements = /* @__PURE__ */ new WeakMap();
  var compat = function compat2(element) {
    if (element.type !== "rule" || !element.parent || // positive .length indicates that this rule contains pseudo
    // negative .length indicates that this rule has been already prefixed
    element.length < 1) {
      return;
    }
    var value = element.value;
    var parent = element.parent;
    var isImplicitRule = element.column === parent.column && element.line === parent.line;
    while (parent.type !== "rule") {
      parent = parent.parent;
      if (!parent) return;
    }
    if (element.props.length === 1 && value.charCodeAt(0) !== 58 && !fixedElements.get(parent)) {
      return;
    }
    if (isImplicitRule) {
      return;
    }
    fixedElements.set(element, true);
    var points = [];
    var rules = getRules(value, points);
    var parentRules = parent.props;
    for (var i = 0, k = 0; i < rules.length; i++) {
      for (var j = 0; j < parentRules.length; j++, k++) {
        element.props[k] = points[i] ? rules[i].replace(/&\f/g, parentRules[j]) : parentRules[j] + " " + rules[i];
      }
    }
  };
  var removeLabel = function removeLabel2(element) {
    if (element.type === "decl") {
      var value = element.value;
      if (
        // charcode for l
        value.charCodeAt(0) === 108 && // charcode for b
        value.charCodeAt(2) === 98
      ) {
        element["return"] = "";
        element.value = "";
      }
    }
  };
  function prefix(value, length2) {
    switch (hash$2(value, length2)) {
      // color-adjust
      case 5103:
        return WEBKIT + "print-" + value + value;
      // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)
      case 5737:
      case 4201:
      case 3177:
      case 3433:
      case 1641:
      case 4457:
      case 2921:
      // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break
      case 5572:
      case 6356:
      case 5844:
      case 3191:
      case 6645:
      case 3005:
      // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,
      case 6391:
      case 5879:
      case 5623:
      case 6135:
      case 4599:
      case 4855:
      // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)
      case 4215:
      case 6389:
      case 5109:
      case 5365:
      case 5621:
      case 3829:
        return WEBKIT + value + value;
      // appearance, user-select, transform, hyphens, text-size-adjust
      case 5349:
      case 4246:
      case 4810:
      case 6968:
      case 2756:
        return WEBKIT + value + MOZ + value + MS + value + value;
      // flex, flex-direction
      case 6828:
      case 4268:
        return WEBKIT + value + MS + value + value;
      // order
      case 6165:
        return WEBKIT + value + MS + "flex-" + value + value;
      // align-items
      case 5187:
        return WEBKIT + value + replace(value, /(\w+).+(:[^]+)/, WEBKIT + "box-$1$2" + MS + "flex-$1$2") + value;
      // align-self
      case 5443:
        return WEBKIT + value + MS + "flex-item-" + replace(value, /flex-|-self/, "") + value;
      // align-content
      case 4675:
        return WEBKIT + value + MS + "flex-line-pack" + replace(value, /align-content|flex-|-self/, "") + value;
      // flex-shrink
      case 5548:
        return WEBKIT + value + MS + replace(value, "shrink", "negative") + value;
      // flex-basis
      case 5292:
        return WEBKIT + value + MS + replace(value, "basis", "preferred-size") + value;
      // flex-grow
      case 6060:
        return WEBKIT + "box-" + replace(value, "-grow", "") + WEBKIT + value + MS + replace(value, "grow", "positive") + value;
      // transition
      case 4554:
        return WEBKIT + replace(value, /([^-])(transform)/g, "$1" + WEBKIT + "$2") + value;
      // cursor
      case 6187:
        return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + "$1"), /(image-set)/, WEBKIT + "$1"), value, "") + value;
      // background, background-image
      case 5495:
      case 3959:
        return replace(value, /(image-set\([^]*)/, WEBKIT + "$1$`$1");
      // justify-content
      case 4968:
        return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + "box-pack:$3" + MS + "flex-pack:$3"), /s.+-b[^;]+/, "justify") + WEBKIT + value + value;
      // (margin|padding)-inline-(start|end)
      case 4095:
      case 3583:
      case 4068:
      case 2532:
        return replace(value, /(.+)-inline(.+)/, WEBKIT + "$1$2") + value;
      // (min|max)?(width|height|inline-size|block-size)
      case 8116:
      case 7059:
      case 5753:
      case 5535:
      case 5445:
      case 5701:
      case 4933:
      case 4677:
      case 5533:
      case 5789:
      case 5021:
      case 4765:
        if (strlen(value) - 1 - length2 > 6) switch (charat(value, length2 + 1)) {
          // (m)ax-content, (m)in-content
          case 109:
            if (charat(value, length2 + 4) !== 45) break;
          // (f)ill-available, (f)it-content
          case 102:
            return replace(value, /(.+:)(.+)-([^]+)/, "$1" + WEBKIT + "$2-$3$1" + MOZ + (charat(value, length2 + 3) == 108 ? "$3" : "$2-$3")) + value;
          // (s)tretch
          case 115:
            return ~indexof(value, "stretch") ? prefix(replace(value, "stretch", "fill-available"), length2) + value : value;
        }
        break;
      // position: sticky
      case 4949:
        if (charat(value, length2 + 1) !== 115) break;
      // display: (flex|inline-flex)
      case 6444:
        switch (charat(value, strlen(value) - 3 - (~indexof(value, "!important") && 10))) {
          // stic(k)y
          case 107:
            return replace(value, ":", ":" + WEBKIT) + value;
          // (inline-)?fl(e)x
          case 101:
            return replace(value, /(.+:)([^;!]+)(;|!.+)?/, "$1" + WEBKIT + (charat(value, 14) === 45 ? "inline-" : "") + "box$3$1" + WEBKIT + "$2$3$1" + MS + "$2box$3") + value;
        }
        break;
      // writing-mode
      case 5936:
        switch (charat(value, length2 + 11)) {
          // vertical-l(r)
          case 114:
            return WEBKIT + value + MS + replace(value, /[svh]\w+-[tblr]{2}/, "tb") + value;
          // vertical-r(l)
          case 108:
            return WEBKIT + value + MS + replace(value, /[svh]\w+-[tblr]{2}/, "tb-rl") + value;
          // horizontal(-)tb
          case 45:
            return WEBKIT + value + MS + replace(value, /[svh]\w+-[tblr]{2}/, "lr") + value;
        }
        return WEBKIT + value + MS + value + value;
    }
    return value;
  }
  var prefixer = function prefixer2(element, index, children, callback) {
    if (element.length > -1) {
      if (!element["return"]) switch (element.type) {
        case DECLARATION:
          element["return"] = prefix(element.value, element.length);
          break;
        case KEYFRAMES:
          return serialize([copy$1(element, {
            value: replace(element.value, "@", "@" + WEBKIT)
          })], callback);
        case RULESET:
          if (element.length) return combine(element.props, function(value) {
            switch (match(value, /(::plac\w+|:read-\w+)/)) {
              // :read-(only|write)
              case ":read-only":
              case ":read-write":
                return serialize([copy$1(element, {
                  props: [replace(value, /:(read-\w+)/, ":" + MOZ + "$1")]
                })], callback);
              // :placeholder
              case "::placeholder":
                return serialize([copy$1(element, {
                  props: [replace(value, /:(plac\w+)/, ":" + WEBKIT + "input-$1")]
                }), copy$1(element, {
                  props: [replace(value, /:(plac\w+)/, ":" + MOZ + "$1")]
                }), copy$1(element, {
                  props: [replace(value, /:(plac\w+)/, MS + "input-$1")]
                })], callback);
            }
            return "";
          });
      }
    }
  };
  var defaultStylisPlugins = [prefixer];
  var createCache = function createCache2(options) {
    var key2 = options.key;
    if (key2 === "css") {
      var ssrStyles = document.querySelectorAll("style[data-emotion]:not([data-s])");
      Array.prototype.forEach.call(ssrStyles, function(node2) {
        var dataEmotionAttribute = node2.getAttribute("data-emotion");
        if (dataEmotionAttribute.indexOf(" ") === -1) {
          return;
        }
        document.head.appendChild(node2);
        node2.setAttribute("data-s", "");
      });
    }
    var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;
    var inserted = {};
    var container;
    var nodesToHydrate = [];
    {
      container = options.container || document.head;
      Array.prototype.forEach.call(
        // this means we will ignore elements which don't have a space in them which
        // means that the style elements we're looking at are only Emotion 11 server-rendered style elements
        document.querySelectorAll('style[data-emotion^="' + key2 + ' "]'),
        function(node2) {
          var attrib = node2.getAttribute("data-emotion").split(" ");
          for (var i = 1; i < attrib.length; i++) {
            inserted[attrib[i]] = true;
          }
          nodesToHydrate.push(node2);
        }
      );
    }
    var _insert;
    var omnipresentPlugins = [compat, removeLabel];
    {
      var currentSheet;
      var finalizingPlugins = [stringify, rulesheet(function(rule) {
        currentSheet.insert(rule);
      })];
      var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));
      var stylis = function stylis2(styles2) {
        return serialize(compile(styles2), serializer);
      };
      _insert = function insert(selector, serialized, sheet, shouldCache) {
        currentSheet = sheet;
        stylis(selector ? selector + "{" + serialized.styles + "}" : serialized.styles);
        if (shouldCache) {
          cache.inserted[serialized.name] = true;
        }
      };
    }
    var cache = {
      key: key2,
      sheet: new StyleSheet({
        key: key2,
        container,
        nonce: options.nonce,
        speedy: options.speedy,
        prepend: options.prepend,
        insertionPoint: options.insertionPoint
      }),
      nonce: options.nonce,
      inserted,
      registered: {},
      insert: _insert
    };
    cache.sheet.hydrate(nodesToHydrate);
    return cache;
  };
  var reactIs = { exports: {} };
  var reactIs_production_min = {};
  /** @license React v16.13.1
   * react-is.production.min.js
   *
   * Copyright (c) Facebook, Inc. and its affiliates.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   */
  var hasRequiredReactIs_production_min;
  function requireReactIs_production_min() {
    if (hasRequiredReactIs_production_min) return reactIs_production_min;
    hasRequiredReactIs_production_min = 1;
    var b = "function" === typeof Symbol && Symbol.for, c = b ? Symbol.for("react.element") : 60103, d = b ? Symbol.for("react.portal") : 60106, e = b ? Symbol.for("react.fragment") : 60107, f = b ? Symbol.for("react.strict_mode") : 60108, g = b ? Symbol.for("react.profiler") : 60114, h = b ? Symbol.for("react.provider") : 60109, k = b ? Symbol.for("react.context") : 60110, l = b ? Symbol.for("react.async_mode") : 60111, m = b ? Symbol.for("react.concurrent_mode") : 60111, n = b ? Symbol.for("react.forward_ref") : 60112, p = b ? Symbol.for("react.suspense") : 60113, q = b ? Symbol.for("react.suspense_list") : 60120, r2 = b ? Symbol.for("react.memo") : 60115, t = b ? Symbol.for("react.lazy") : 60116, v = b ? Symbol.for("react.block") : 60121, w = b ? Symbol.for("react.fundamental") : 60117, x = b ? Symbol.for("react.responder") : 60118, y = b ? Symbol.for("react.scope") : 60119;
    function z(a) {
      if ("object" === typeof a && null !== a) {
        var u = a.$$typeof;
        switch (u) {
          case c:
            switch (a = a.type, a) {
              case l:
              case m:
              case e:
              case g:
              case f:
              case p:
                return a;
              default:
                switch (a = a && a.$$typeof, a) {
                  case k:
                  case n:
                  case t:
                  case r2:
                  case h:
                    return a;
                  default:
                    return u;
                }
            }
          case d:
            return u;
        }
      }
    }
    function A(a) {
      return z(a) === m;
    }
    reactIs_production_min.AsyncMode = l;
    reactIs_production_min.ConcurrentMode = m;
    reactIs_production_min.ContextConsumer = k;
    reactIs_production_min.ContextProvider = h;
    reactIs_production_min.Element = c;
    reactIs_production_min.ForwardRef = n;
    reactIs_production_min.Fragment = e;
    reactIs_production_min.Lazy = t;
    reactIs_production_min.Memo = r2;
    reactIs_production_min.Portal = d;
    reactIs_production_min.Profiler = g;
    reactIs_production_min.StrictMode = f;
    reactIs_production_min.Suspense = p;
    reactIs_production_min.isAsyncMode = function(a) {
      return A(a) || z(a) === l;
    };
    reactIs_production_min.isConcurrentMode = A;
    reactIs_production_min.isContextConsumer = function(a) {
      return z(a) === k;
    };
    reactIs_production_min.isContextProvider = function(a) {
      return z(a) === h;
    };
    reactIs_production_min.isElement = function(a) {
      return "object" === typeof a && null !== a && a.$$typeof === c;
    };
    reactIs_production_min.isForwardRef = function(a) {
      return z(a) === n;
    };
    reactIs_production_min.isFragment = function(a) {
      return z(a) === e;
    };
    reactIs_production_min.isLazy = function(a) {
      return z(a) === t;
    };
    reactIs_production_min.isMemo = function(a) {
      return z(a) === r2;
    };
    reactIs_production_min.isPortal = function(a) {
      return z(a) === d;
    };
    reactIs_production_min.isProfiler = function(a) {
      return z(a) === g;
    };
    reactIs_production_min.isStrictMode = function(a) {
      return z(a) === f;
    };
    reactIs_production_min.isSuspense = function(a) {
      return z(a) === p;
    };
    reactIs_production_min.isValidElementType = function(a) {
      return "string" === typeof a || "function" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || "object" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r2 || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);
    };
    reactIs_production_min.typeOf = z;
    return reactIs_production_min;
  }
  var hasRequiredReactIs;
  function requireReactIs() {
    if (hasRequiredReactIs) return reactIs.exports;
    hasRequiredReactIs = 1;
    {
      reactIs.exports = requireReactIs_production_min();
    }
    return reactIs.exports;
  }
  var hoistNonReactStatics_cjs;
  var hasRequiredHoistNonReactStatics_cjs;
  function requireHoistNonReactStatics_cjs() {
    if (hasRequiredHoistNonReactStatics_cjs) return hoistNonReactStatics_cjs;
    hasRequiredHoistNonReactStatics_cjs = 1;
    var reactIs2 = requireReactIs();
    var REACT_STATICS = {
      childContextTypes: true,
      contextType: true,
      contextTypes: true,
      defaultProps: true,
      displayName: true,
      getDefaultProps: true,
      getDerivedStateFromError: true,
      getDerivedStateFromProps: true,
      mixins: true,
      propTypes: true,
      type: true
    };
    var KNOWN_STATICS = {
      name: true,
      length: true,
      prototype: true,
      caller: true,
      callee: true,
      arguments: true,
      arity: true
    };
    var FORWARD_REF_STATICS = {
      "$$typeof": true,
      render: true,
      defaultProps: true,
      displayName: true,
      propTypes: true
    };
    var MEMO_STATICS = {
      "$$typeof": true,
      compare: true,
      defaultProps: true,
      displayName: true,
      propTypes: true,
      type: true
    };
    var TYPE_STATICS = {};
    TYPE_STATICS[reactIs2.ForwardRef] = FORWARD_REF_STATICS;
    TYPE_STATICS[reactIs2.Memo] = MEMO_STATICS;
    function getStatics(component) {
      if (reactIs2.isMemo(component)) {
        return MEMO_STATICS;
      }
      return TYPE_STATICS[component["$$typeof"]] || REACT_STATICS;
    }
    var defineProperty = Object.defineProperty;
    var getOwnPropertyNames = Object.getOwnPropertyNames;
    var getOwnPropertySymbols = Object.getOwnPropertySymbols;
    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    var getPrototypeOf = Object.getPrototypeOf;
    var objectPrototype = Object.prototype;
    function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {
      if (typeof sourceComponent !== "string") {
        if (objectPrototype) {
          var inheritedComponent = getPrototypeOf(sourceComponent);
          if (inheritedComponent && inheritedComponent !== objectPrototype) {
            hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);
          }
        }
        var keys = getOwnPropertyNames(sourceComponent);
        if (getOwnPropertySymbols) {
          keys = keys.concat(getOwnPropertySymbols(sourceComponent));
        }
        var targetStatics = getStatics(targetComponent);
        var sourceStatics = getStatics(sourceComponent);
        for (var i = 0; i < keys.length; ++i) {
          var key2 = keys[i];
          if (!KNOWN_STATICS[key2] && !(blacklist && blacklist[key2]) && !(sourceStatics && sourceStatics[key2]) && !(targetStatics && targetStatics[key2])) {
            var descriptor = getOwnPropertyDescriptor(sourceComponent, key2);
            try {
              defineProperty(targetComponent, key2, descriptor);
            } catch (e) {
            }
          }
        }
      }
      return targetComponent;
    }
    hoistNonReactStatics_cjs = hoistNonReactStatics;
    return hoistNonReactStatics_cjs;
  }
  requireHoistNonReactStatics_cjs();
  var isBrowser = true;
  function getRegisteredStyles(registered, registeredStyles, classNames) {
    var rawClassName = "";
    classNames.split(" ").forEach(function(className) {
      if (registered[className] !== void 0) {
        registeredStyles.push(registered[className] + ";");
      } else if (className) {
        rawClassName += className + " ";
      }
    });
    return rawClassName;
  }
  var registerStyles = function registerStyles2(cache, serialized, isStringTag2) {
    var className = cache.key + "-" + serialized.name;
    if (
      // we only need to add the styles to the registered cache if the
      // class name could be used further down
      // the tree but if it's a string tag, we know it won't
      // so we don't have to add it to registered cache.
      // this improves memory usage since we can avoid storing the whole style string
      (isStringTag2 === false || // we need to always store it if we're in compat mode and
      // in node since emotion-server relies on whether a style is in
      // the registered cache to know whether a style is global or not
      // also, note that this check will be dead code eliminated in the browser
      isBrowser === false) && cache.registered[className] === void 0
    ) {
      cache.registered[className] = serialized.styles;
    }
  };
  var insertStyles = function insertStyles2(cache, serialized, isStringTag2) {
    registerStyles(cache, serialized, isStringTag2);
    var className = cache.key + "-" + serialized.name;
    if (cache.inserted[serialized.name] === void 0) {
      var current = serialized;
      do {
        cache.insert(serialized === current ? "." + className : "", current, cache.sheet, true);
        current = current.next;
      } while (current !== void 0);
    }
  };
  function murmur2(str) {
    var h = 0;
    var k, i = 0, len2 = str.length;
    for (; len2 >= 4; ++i, len2 -= 4) {
      k = str.charCodeAt(i) & 255 | (str.charCodeAt(++i) & 255) << 8 | (str.charCodeAt(++i) & 255) << 16 | (str.charCodeAt(++i) & 255) << 24;
      k = /* Math.imul(k, m): */
      (k & 65535) * 1540483477 + ((k >>> 16) * 59797 << 16);
      k ^= /* k >>> r: */
      k >>> 24;
      h = /* Math.imul(k, m): */
      (k & 65535) * 1540483477 + ((k >>> 16) * 59797 << 16) ^ /* Math.imul(h, m): */
      (h & 65535) * 1540483477 + ((h >>> 16) * 59797 << 16);
    }
    switch (len2) {
      case 3:
        h ^= (str.charCodeAt(i + 2) & 255) << 16;
      case 2:
        h ^= (str.charCodeAt(i + 1) & 255) << 8;
      case 1:
        h ^= str.charCodeAt(i) & 255;
        h = /* Math.imul(h, m): */
        (h & 65535) * 1540483477 + ((h >>> 16) * 59797 << 16);
    }
    h ^= h >>> 13;
    h = /* Math.imul(h, m): */
    (h & 65535) * 1540483477 + ((h >>> 16) * 59797 << 16);
    return ((h ^ h >>> 15) >>> 0).toString(36);
  }
  var unitlessKeys = {
    animationIterationCount: 1,
    aspectRatio: 1,
    borderImageOutset: 1,
    borderImageSlice: 1,
    borderImageWidth: 1,
    boxFlex: 1,
    boxFlexGroup: 1,
    boxOrdinalGroup: 1,
    columnCount: 1,
    columns: 1,
    flex: 1,
    flexGrow: 1,
    flexPositive: 1,
    flexShrink: 1,
    flexNegative: 1,
    flexOrder: 1,
    gridRow: 1,
    gridRowEnd: 1,
    gridRowSpan: 1,
    gridRowStart: 1,
    gridColumn: 1,
    gridColumnEnd: 1,
    gridColumnSpan: 1,
    gridColumnStart: 1,
    msGridRow: 1,
    msGridRowSpan: 1,
    msGridColumn: 1,
    msGridColumnSpan: 1,
    fontWeight: 1,
    lineHeight: 1,
    opacity: 1,
    order: 1,
    orphans: 1,
    scale: 1,
    tabSize: 1,
    widows: 1,
    zIndex: 1,
    zoom: 1,
    WebkitLineClamp: 1,
    // SVG-related properties
    fillOpacity: 1,
    floodOpacity: 1,
    stopOpacity: 1,
    strokeDasharray: 1,
    strokeDashoffset: 1,
    strokeMiterlimit: 1,
    strokeOpacity: 1,
    strokeWidth: 1
  };
  var hyphenateRegex = /[A-Z]|^ms/g;
  var animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;
  var isCustomProperty = function isCustomProperty2(property) {
    return property.charCodeAt(1) === 45;
  };
  var isProcessableValue = function isProcessableValue2(value) {
    return value != null && typeof value !== "boolean";
  };
  var processStyleName = /* @__PURE__ */ memoize(function(styleName) {
    return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, "-$&").toLowerCase();
  });
  var processStyleValue = function processStyleValue2(key2, value) {
    switch (key2) {
      case "animation":
      case "animationName": {
        if (typeof value === "string") {
          return value.replace(animationRegex, function(match2, p1, p2) {
            cursor = {
              name: p1,
              styles: p2,
              next: cursor
            };
            return p1;
          });
        }
      }
    }
    if (unitlessKeys[key2] !== 1 && !isCustomProperty(key2) && typeof value === "number" && value !== 0) {
      return value + "px";
    }
    return value;
  };
  function handleInterpolation(mergedProps, registered, interpolation) {
    if (interpolation == null) {
      return "";
    }
    var componentSelector = interpolation;
    if (componentSelector.__emotion_styles !== void 0) {
      return componentSelector;
    }
    switch (typeof interpolation) {
      case "boolean": {
        return "";
      }
      case "object": {
        var keyframes2 = interpolation;
        if (keyframes2.anim === 1) {
          cursor = {
            name: keyframes2.name,
            styles: keyframes2.styles,
            next: cursor
          };
          return keyframes2.name;
        }
        var serializedStyles = interpolation;
        if (serializedStyles.styles !== void 0) {
          var next2 = serializedStyles.next;
          if (next2 !== void 0) {
            while (next2 !== void 0) {
              cursor = {
                name: next2.name,
                styles: next2.styles,
                next: cursor
              };
              next2 = next2.next;
            }
          }
          var styles2 = serializedStyles.styles + ";";
          return styles2;
        }
        return createStringFromObject(mergedProps, registered, interpolation);
      }
      case "function": {
        if (mergedProps !== void 0) {
          var previousCursor = cursor;
          var result = interpolation(mergedProps);
          cursor = previousCursor;
          return handleInterpolation(mergedProps, registered, result);
        }
        break;
      }
    }
    var asString = interpolation;
    if (registered == null) {
      return asString;
    }
    var cached = registered[asString];
    return cached !== void 0 ? cached : asString;
  }
  function createStringFromObject(mergedProps, registered, obj) {
    var string = "";
    if (Array.isArray(obj)) {
      for (var i = 0; i < obj.length; i++) {
        string += handleInterpolation(mergedProps, registered, obj[i]) + ";";
      }
    } else {
      for (var key2 in obj) {
        var value = obj[key2];
        if (typeof value !== "object") {
          var asString = value;
          if (registered != null && registered[asString] !== void 0) {
            string += key2 + "{" + registered[asString] + "}";
          } else if (isProcessableValue(asString)) {
            string += processStyleName(key2) + ":" + processStyleValue(key2, asString) + ";";
          }
        } else {
          if (Array.isArray(value) && typeof value[0] === "string" && (registered == null || registered[value[0]] === void 0)) {
            for (var _i = 0; _i < value.length; _i++) {
              if (isProcessableValue(value[_i])) {
                string += processStyleName(key2) + ":" + processStyleValue(key2, value[_i]) + ";";
              }
            }
          } else {
            var interpolated = handleInterpolation(mergedProps, registered, value);
            switch (key2) {
              case "animation":
              case "animationName": {
                string += processStyleName(key2) + ":" + interpolated + ";";
                break;
              }
              default: {
                string += key2 + "{" + interpolated + "}";
              }
            }
          }
        }
      }
    }
    return string;
  }
  var labelPattern = /label:\s*([^\s;{]+)\s*(;|$)/g;
  var cursor;
  function serializeStyles(args, registered, mergedProps) {
    if (args.length === 1 && typeof args[0] === "object" && args[0] !== null && args[0].styles !== void 0) {
      return args[0];
    }
    var stringMode = true;
    var styles2 = "";
    cursor = void 0;
    var strings = args[0];
    if (strings == null || strings.raw === void 0) {
      stringMode = false;
      styles2 += handleInterpolation(mergedProps, registered, strings);
    } else {
      var asTemplateStringsArr = strings;
      styles2 += asTemplateStringsArr[0];
    }
    for (var i = 1; i < args.length; i++) {
      styles2 += handleInterpolation(mergedProps, registered, args[i]);
      if (stringMode) {
        var templateStringsArr = strings;
        styles2 += templateStringsArr[i];
      }
    }
    labelPattern.lastIndex = 0;
    var identifierName = "";
    var match2;
    while ((match2 = labelPattern.exec(styles2)) !== null) {
      identifierName += "-" + match2[1];
    }
    var name = murmur2(styles2) + identifierName;
    return {
      name,
      styles: styles2,
      next: cursor
    };
  }
  var syncFallback = function syncFallback2(create) {
    return create();
  };
  var useInsertionEffect = React__namespace["useInsertionEffect"] ? React__namespace["useInsertionEffect"] : false;
  var useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;
  var useInsertionEffectWithLayoutFallback = useInsertionEffect || React__namespace.useLayoutEffect;
  var EmotionCacheContext = /* @__PURE__ */ React__namespace.createContext(
    // we're doing this to avoid preconstruct's dead code elimination in this one case
    // because this module is primarily intended for the browser and node
    // but it's also required in react native and similar environments sometimes
    // and we could have a special build just for that
    // but this is much easier and the native packages
    // might use a different theme context in the future anyway
    typeof HTMLElement !== "undefined" ? /* @__PURE__ */ createCache({
      key: "css"
    }) : null
  );
  var CacheProvider = EmotionCacheContext.Provider;
  var withEmotionCache = function withEmotionCache2(func) {
    return /* @__PURE__ */ React.forwardRef(function(props, ref) {
      var cache = React.useContext(EmotionCacheContext);
      return func(props, cache, ref);
    });
  };
  var ThemeContext$1 = /* @__PURE__ */ React__namespace.createContext({});
  var hasOwn = {}.hasOwnProperty;
  var typePropName = "__EMOTION_TYPE_PLEASE_DO_NOT_USE__";
  var createEmotionProps = function createEmotionProps2(type, props) {
    var newProps = {};
    for (var _key in props) {
      if (hasOwn.call(props, _key)) {
        newProps[_key] = props[_key];
      }
    }
    newProps[typePropName] = type;
    return newProps;
  };
  var Insertion$1 = function Insertion(_ref) {
    var cache = _ref.cache, serialized = _ref.serialized, isStringTag2 = _ref.isStringTag;
    registerStyles(cache, serialized, isStringTag2);
    useInsertionEffectAlwaysWithSyncFallback(function() {
      return insertStyles(cache, serialized, isStringTag2);
    });
    return null;
  };
  var Emotion = /* @__PURE__ */ withEmotionCache(function(props, cache, ref) {
    var cssProp = props.css;
    if (typeof cssProp === "string" && cache.registered[cssProp] !== void 0) {
      cssProp = cache.registered[cssProp];
    }
    var WrappedComponent = props[typePropName];
    var registeredStyles = [cssProp];
    var className = "";
    if (typeof props.className === "string") {
      className = getRegisteredStyles(cache.registered, registeredStyles, props.className);
    } else if (props.className != null) {
      className = props.className + " ";
    }
    var serialized = serializeStyles(registeredStyles, void 0, React__namespace.useContext(ThemeContext$1));
    className += cache.key + "-" + serialized.name;
    var newProps = {};
    for (var _key2 in props) {
      if (hasOwn.call(props, _key2) && _key2 !== "css" && _key2 !== typePropName && true) {
        newProps[_key2] = props[_key2];
      }
    }
    newProps.className = className;
    if (ref) {
      newProps.ref = ref;
    }
    return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(Insertion$1, {
      cache,
      serialized,
      isStringTag: typeof WrappedComponent === "string"
    }), /* @__PURE__ */ React__namespace.createElement(WrappedComponent, newProps));
  });
  var Emotion$1 = Emotion;
  var jsx = function jsx2(type, props) {
    var args = arguments;
    if (props == null || !hasOwn.call(props, "css")) {
      return React__namespace.createElement.apply(void 0, args);
    }
    var argsLength = args.length;
    var createElementArgArray = new Array(argsLength);
    createElementArgArray[0] = Emotion$1;
    createElementArgArray[1] = createEmotionProps(type, props);
    for (var i = 2; i < argsLength; i++) {
      createElementArgArray[i] = args[i];
    }
    return React__namespace.createElement.apply(null, createElementArgArray);
  };
  (function(_jsx) {
    var JSX;
    /* @__PURE__ */ (function(_JSX) {
    })(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));
  })(jsx || (jsx = {}));
  var Global = /* @__PURE__ */ withEmotionCache(function(props, cache) {
    var styles2 = props.styles;
    var serialized = serializeStyles([styles2], void 0, React__namespace.useContext(ThemeContext$1));
    var sheetRef = React__namespace.useRef();
    useInsertionEffectWithLayoutFallback(function() {
      var key2 = cache.key + "-global";
      var sheet = new cache.sheet.constructor({
        key: key2,
        nonce: cache.sheet.nonce,
        container: cache.sheet.container,
        speedy: cache.sheet.isSpeedy
      });
      var rehydrating = false;
      var node2 = document.querySelector('style[data-emotion="' + key2 + " " + serialized.name + '"]');
      if (cache.sheet.tags.length) {
        sheet.before = cache.sheet.tags[0];
      }
      if (node2 !== null) {
        rehydrating = true;
        node2.setAttribute("data-emotion", key2);
        sheet.hydrate([node2]);
      }
      sheetRef.current = [sheet, rehydrating];
      return function() {
        sheet.flush();
      };
    }, [cache]);
    useInsertionEffectWithLayoutFallback(function() {
      var sheetRefCurrent = sheetRef.current;
      var sheet = sheetRefCurrent[0], rehydrating = sheetRefCurrent[1];
      if (rehydrating) {
        sheetRefCurrent[1] = false;
        return;
      }
      if (serialized.next !== void 0) {
        insertStyles(cache, serialized.next, true);
      }
      if (sheet.tags.length) {
        var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;
        sheet.before = element;
        sheet.flush();
      }
      cache.insert("", serialized, sheet, false);
    }, [cache, serialized.name]);
    return null;
  });
  function css() {
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }
    return serializeStyles(args);
  }
  function keyframes() {
    var insertable = css.apply(void 0, arguments);
    var name = "animation-" + insertable.name;
    return {
      name,
      styles: "@keyframes " + name + "{" + insertable.styles + "}",
      anim: 1,
      toString: function toString() {
        return "_EMO_" + this.name + "_" + this.styles + "_EMO_";
      }
    };
  }
  var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;
  var isPropValid = /* @__PURE__ */ memoize(
    function(prop) {
      return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91;
    }
    /* Z+1 */
  );
  var testOmitPropsOnStringTag = isPropValid;
  var testOmitPropsOnComponent = function testOmitPropsOnComponent2(key2) {
    return key2 !== "theme";
  };
  var getDefaultShouldForwardProp = function getDefaultShouldForwardProp2(tag) {
    return typeof tag === "string" && // 96 is one less than the char code
    // for "a" so this is checking that
    // it's a lowercase character
    tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;
  };
  var composeShouldForwardProps = function composeShouldForwardProps2(tag, options, isReal) {
    var shouldForwardProp2;
    if (options) {
      var optionsShouldForwardProp = options.shouldForwardProp;
      shouldForwardProp2 = tag.__emotion_forwardProp && optionsShouldForwardProp ? function(propName) {
        return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);
      } : optionsShouldForwardProp;
    }
    if (typeof shouldForwardProp2 !== "function" && isReal) {
      shouldForwardProp2 = tag.__emotion_forwardProp;
    }
    return shouldForwardProp2;
  };
  var Insertion2 = function Insertion3(_ref) {
    var cache = _ref.cache, serialized = _ref.serialized, isStringTag2 = _ref.isStringTag;
    registerStyles(cache, serialized, isStringTag2);
    useInsertionEffectAlwaysWithSyncFallback(function() {
      return insertStyles(cache, serialized, isStringTag2);
    });
    return null;
  };
  var createStyled$1 = function createStyled(tag, options) {
    var isReal = tag.__emotion_real === tag;
    var baseTag = isReal && tag.__emotion_base || tag;
    var identifierName;
    var targetClassName;
    if (options !== void 0) {
      identifierName = options.label;
      targetClassName = options.target;
    }
    var shouldForwardProp2 = composeShouldForwardProps(tag, options, isReal);
    var defaultShouldForwardProp = shouldForwardProp2 || getDefaultShouldForwardProp(baseTag);
    var shouldUseAs = !defaultShouldForwardProp("as");
    return function() {
      var args = arguments;
      var styles2 = isReal && tag.__emotion_styles !== void 0 ? tag.__emotion_styles.slice(0) : [];
      if (identifierName !== void 0) {
        styles2.push("label:" + identifierName + ";");
      }
      if (args[0] == null || args[0].raw === void 0) {
        styles2.push.apply(styles2, args);
      } else {
        var templateStringsArr = args[0];
        styles2.push(templateStringsArr[0]);
        var len2 = args.length;
        var i = 1;
        for (; i < len2; i++) {
          styles2.push(args[i], templateStringsArr[i]);
        }
      }
      var Styled = withEmotionCache(function(props, cache, ref) {
        var FinalTag = shouldUseAs && props.as || baseTag;
        var className = "";
        var classInterpolations = [];
        var mergedProps = props;
        if (props.theme == null) {
          mergedProps = {};
          for (var key2 in props) {
            mergedProps[key2] = props[key2];
          }
          mergedProps.theme = React__namespace.useContext(ThemeContext$1);
        }
        if (typeof props.className === "string") {
          className = getRegisteredStyles(cache.registered, classInterpolations, props.className);
        } else if (props.className != null) {
          className = props.className + " ";
        }
        var serialized = serializeStyles(styles2.concat(classInterpolations), cache.registered, mergedProps);
        className += cache.key + "-" + serialized.name;
        if (targetClassName !== void 0) {
          className += " " + targetClassName;
        }
        var finalShouldForwardProp = shouldUseAs && shouldForwardProp2 === void 0 ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;
        var newProps = {};
        for (var _key in props) {
          if (shouldUseAs && _key === "as") continue;
          if (finalShouldForwardProp(_key)) {
            newProps[_key] = props[_key];
          }
        }
        newProps.className = className;
        if (ref) {
          newProps.ref = ref;
        }
        return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(Insertion2, {
          cache,
          serialized,
          isStringTag: typeof FinalTag === "string"
        }), /* @__PURE__ */ React__namespace.createElement(FinalTag, newProps));
      });
      Styled.displayName = identifierName !== void 0 ? identifierName : "Styled(" + (typeof baseTag === "string" ? baseTag : baseTag.displayName || baseTag.name || "Component") + ")";
      Styled.defaultProps = tag.defaultProps;
      Styled.__emotion_real = Styled;
      Styled.__emotion_base = baseTag;
      Styled.__emotion_styles = styles2;
      Styled.__emotion_forwardProp = shouldForwardProp2;
      Object.defineProperty(Styled, "toString", {
        value: function value() {
          return "." + targetClassName;
        }
      });
      Styled.withComponent = function(nextTag, nextOptions) {
        var newStyled2 = createStyled(nextTag, _extends({}, options, nextOptions, {
          shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)
        }));
        return newStyled2.apply(void 0, styles2);
      };
      return Styled;
    };
  };
  var tags = [
    "a",
    "abbr",
    "address",
    "area",
    "article",
    "aside",
    "audio",
    "b",
    "base",
    "bdi",
    "bdo",
    "big",
    "blockquote",
    "body",
    "br",
    "button",
    "canvas",
    "caption",
    "cite",
    "code",
    "col",
    "colgroup",
    "data",
    "datalist",
    "dd",
    "del",
    "details",
    "dfn",
    "dialog",
    "div",
    "dl",
    "dt",
    "em",
    "embed",
    "fieldset",
    "figcaption",
    "figure",
    "footer",
    "form",
    "h1",
    "h2",
    "h3",
    "h4",
    "h5",
    "h6",
    "head",
    "header",
    "hgroup",
    "hr",
    "html",
    "i",
    "iframe",
    "img",
    "input",
    "ins",
    "kbd",
    "keygen",
    "label",
    "legend",
    "li",
    "link",
    "main",
    "map",
    "mark",
    "marquee",
    "menu",
    "menuitem",
    "meta",
    "meter",
    "nav",
    "noscript",
    "object",
    "ol",
    "optgroup",
    "option",
    "output",
    "p",
    "param",
    "picture",
    "pre",
    "progress",
    "q",
    "rp",
    "rt",
    "ruby",
    "s",
    "samp",
    "script",
    "section",
    "select",
    "small",
    "source",
    "span",
    "strong",
    "style",
    "sub",
    "summary",
    "sup",
    "table",
    "tbody",
    "td",
    "textarea",
    "tfoot",
    "th",
    "thead",
    "time",
    "title",
    "tr",
    "track",
    "u",
    "ul",
    "var",
    "video",
    "wbr",
    // SVG
    "circle",
    "clipPath",
    "defs",
    "ellipse",
    "foreignObject",
    "g",
    "image",
    "line",
    "linearGradient",
    "mask",
    "path",
    "pattern",
    "polygon",
    "polyline",
    "radialGradient",
    "rect",
    "stop",
    "svg",
    "text",
    "tspan"
  ];
  var newStyled = createStyled$1.bind(null);
  tags.forEach(function(tagName) {
    newStyled[tagName] = newStyled(tagName);
  });
  function isEmpty$2(obj) {
    return obj === void 0 || obj === null || Object.keys(obj).length === 0;
  }
  function GlobalStyles$2(props) {
    const {
      styles: styles2,
      defaultTheme: defaultTheme2 = {}
    } = props;
    const globalStyles = typeof styles2 === "function" ? (themeInput) => styles2(isEmpty$2(themeInput) ? defaultTheme2 : themeInput) : styles2;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(Global, {
      styles: globalStyles
    });
  }
  function styled$1(tag, options) {
    const stylesFactory = newStyled(tag, options);
    return stylesFactory;
  }
  function internal_mutateStyles(tag, processor) {
    if (Array.isArray(tag.__emotion_styles)) {
      tag.__emotion_styles = processor(tag.__emotion_styles);
    }
  }
  const wrapper = [];
  function internal_serializeStyles(styles2) {
    wrapper[0] = styles2;
    return serializeStyles(wrapper);
  }
  const sortBreakpointsValues = (values2) => {
    const breakpointsAsArray = Object.keys(values2).map((key2) => ({
      key: key2,
      val: values2[key2]
    })) || [];
    breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);
    return breakpointsAsArray.reduce((acc, obj) => {
      return {
        ...acc,
        [obj.key]: obj.val
      };
    }, {});
  };
  function createBreakpoints(breakpoints) {
    const {
      // The breakpoint **start** at this value.
      // For instance with the first breakpoint xs: [xs, sm).
      values: values2 = {
        xs: 0,
        // phone
        sm: 600,
        // tablet
        md: 900,
        // small laptop
        lg: 1200,
        // desktop
        xl: 1536
        // large screen
      },
      unit = "px",
      step = 5,
      ...other
    } = breakpoints;
    const sortedValues = sortBreakpointsValues(values2);
    const keys = Object.keys(sortedValues);
    function up(key2) {
      const value = typeof values2[key2] === "number" ? values2[key2] : key2;
      return `@media (min-width:${value}${unit})`;
    }
    function down(key2) {
      const value = typeof values2[key2] === "number" ? values2[key2] : key2;
      return `@media (max-width:${value - step / 100}${unit})`;
    }
    function between(start2, end2) {
      const endIndex = keys.indexOf(end2);
      return `@media (min-width:${typeof values2[start2] === "number" ? values2[start2] : start2}${unit}) and (max-width:${(endIndex !== -1 && typeof values2[keys[endIndex]] === "number" ? values2[keys[endIndex]] : end2) - step / 100}${unit})`;
    }
    function only(key2) {
      if (keys.indexOf(key2) + 1 < keys.length) {
        return between(key2, keys[keys.indexOf(key2) + 1]);
      }
      return up(key2);
    }
    function not(key2) {
      const keyIndex = keys.indexOf(key2);
      if (keyIndex === 0) {
        return up(keys[1]);
      }
      if (keyIndex === keys.length - 1) {
        return down(keys[keyIndex]);
      }
      return between(key2, keys[keys.indexOf(key2) + 1]).replace("@media", "@media not all and");
    }
    return {
      keys,
      values: sortedValues,
      up,
      down,
      between,
      only,
      not,
      unit,
      ...other
    };
  }
  const shape = {
    borderRadius: 4
  };
  function createSpacing(spacingInput = 8, transform = createUnarySpacing({
    spacing: spacingInput
  })) {
    if (spacingInput.mui) {
      return spacingInput;
    }
    const spacing = (...argsInput) => {
      const args = argsInput.length === 0 ? [1] : argsInput;
      return args.map((argument) => {
        const output = transform(argument);
        return typeof output === "number" ? `${output}px` : output;
      }).join(" ");
    };
    spacing.mui = true;
    return spacing;
  }
  function applyStyles$2(key2, styles2) {
    var _a;
    const theme = this;
    if (theme.vars) {
      if (!((_a = theme.colorSchemes) == null ? void 0 : _a[key2]) || typeof theme.getColorSchemeSelector !== "function") {
        return {};
      }
      let selector = theme.getColorSchemeSelector(key2);
      if (selector === "&") {
        return styles2;
      }
      if (selector.includes("data-") || selector.includes(".")) {
        selector = `*:where(${selector.replace(/\s*&$/, "")}) &`;
      }
      return {
        [selector]: styles2
      };
    }
    if (theme.palette.mode === key2) {
      return styles2;
    }
    return {};
  }
  function createTheme$1(options = {}, ...args) {
    const {
      breakpoints: breakpointsInput = {},
      palette: paletteInput = {},
      spacing: spacingInput,
      shape: shapeInput = {},
      ...other
    } = options;
    const breakpoints = createBreakpoints(breakpointsInput);
    const spacing = createSpacing(spacingInput);
    let muiTheme = deepmerge({
      breakpoints,
      direction: "ltr",
      components: {},
      // Inject component definitions.
      palette: {
        mode: "light",
        ...paletteInput
      },
      spacing,
      shape: {
        ...shape,
        ...shapeInput
      }
    }, other);
    muiTheme = cssContainerQueries(muiTheme);
    muiTheme.applyStyles = applyStyles$2;
    muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);
    muiTheme.unstable_sxConfig = {
      ...defaultSxConfig,
      ...other == null ? void 0 : other.unstable_sxConfig
    };
    muiTheme.unstable_sx = function sx(props) {
      return styleFunctionSx({
        sx: props,
        theme: this
      });
    };
    return muiTheme;
  }
  function isObjectEmpty$2(obj) {
    return Object.keys(obj).length === 0;
  }
  function useTheme$3(defaultTheme2 = null) {
    const contextTheme = React__namespace.useContext(ThemeContext$1);
    return !contextTheme || isObjectEmpty$2(contextTheme) ? defaultTheme2 : contextTheme;
  }
  const systemDefaultTheme$1 = createTheme$1();
  function useTheme$2(defaultTheme2 = systemDefaultTheme$1) {
    return useTheme$3(defaultTheme2);
  }
  function GlobalStyles$1({
    styles: styles2,
    themeId,
    defaultTheme: defaultTheme2 = {}
  }) {
    const upperTheme = useTheme$2(defaultTheme2);
    const globalStyles = typeof styles2 === "function" ? styles2(themeId ? upperTheme[themeId] || upperTheme : upperTheme) : styles2;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(GlobalStyles$2, {
      styles: globalStyles
    });
  }
  function createBox(options = {}) {
    const {
      themeId,
      defaultTheme: defaultTheme2,
      defaultClassName = "MuiBox-root",
      generateClassName
    } = options;
    const BoxRoot = styled$1("div", {
      shouldForwardProp: (prop) => prop !== "theme" && prop !== "sx" && prop !== "as"
    })(styleFunctionSx);
    const Box2 = /* @__PURE__ */ React__namespace.forwardRef(function Box3(inProps, ref) {
      const theme = useTheme$2(defaultTheme2);
      const {
        className,
        component = "div",
        ...other
      } = extendSxProp$1(inProps);
      return /* @__PURE__ */ jsxRuntimeExports.jsx(BoxRoot, {
        as: component,
        ref,
        className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),
        theme: themeId ? theme[themeId] || theme : theme,
        ...other
      });
    });
    return Box2;
  }
  function preprocessStyles(input) {
    const {
      variants,
      ...style2
    } = input;
    const result = {
      variants,
      style: internal_serializeStyles(style2),
      isProcessed: true
    };
    if (result.style === style2) {
      return result;
    }
    if (variants) {
      variants.forEach((variant) => {
        if (typeof variant.style !== "function") {
          variant.style = internal_serializeStyles(variant.style);
        }
      });
    }
    return result;
  }
  const systemDefaultTheme = createTheme$1();
  function shouldForwardProp(prop) {
    return prop !== "ownerState" && prop !== "theme" && prop !== "sx" && prop !== "as";
  }
  function defaultOverridesResolver(slot) {
    if (!slot) {
      return null;
    }
    return (_props, styles2) => styles2[slot];
  }
  function attachTheme(props, themeId, defaultTheme2) {
    props.theme = isObjectEmpty$1(props.theme) ? defaultTheme2 : props.theme[themeId] || props.theme;
  }
  function processStyle(props, style2) {
    const resolvedStyle = typeof style2 === "function" ? style2(props) : style2;
    if (Array.isArray(resolvedStyle)) {
      return resolvedStyle.flatMap((subStyle) => processStyle(props, subStyle));
    }
    if (Array.isArray(resolvedStyle == null ? void 0 : resolvedStyle.variants)) {
      let rootStyle;
      if (resolvedStyle.isProcessed) {
        rootStyle = resolvedStyle.style;
      } else {
        const {
          variants,
          ...otherStyles
        } = resolvedStyle;
        rootStyle = otherStyles;
      }
      return processStyleVariants(props, resolvedStyle.variants, [rootStyle]);
    }
    if (resolvedStyle == null ? void 0 : resolvedStyle.isProcessed) {
      return resolvedStyle.style;
    }
    return resolvedStyle;
  }
  function processStyleVariants(props, variants, results = []) {
    var _a;
    let mergedState;
    variantLoop: for (let i = 0; i < variants.length; i += 1) {
      const variant = variants[i];
      if (typeof variant.props === "function") {
        mergedState ?? (mergedState = {
          ...props,
          ...props.ownerState,
          ownerState: props.ownerState
        });
        if (!variant.props(mergedState)) {
          continue;
        }
      } else {
        for (const key2 in variant.props) {
          if (props[key2] !== variant.props[key2] && ((_a = props.ownerState) == null ? void 0 : _a[key2]) !== variant.props[key2]) {
            continue variantLoop;
          }
        }
      }
      if (typeof variant.style === "function") {
        mergedState ?? (mergedState = {
          ...props,
          ...props.ownerState,
          ownerState: props.ownerState
        });
        results.push(variant.style(mergedState));
      } else {
        results.push(variant.style);
      }
    }
    return results;
  }
  function createStyled2(input = {}) {
    const {
      themeId,
      defaultTheme: defaultTheme2 = systemDefaultTheme,
      rootShouldForwardProp: rootShouldForwardProp2 = shouldForwardProp,
      slotShouldForwardProp: slotShouldForwardProp2 = shouldForwardProp
    } = input;
    function styleAttachTheme(props) {
      attachTheme(props, themeId, defaultTheme2);
    }
    const styled2 = (tag, inputOptions = {}) => {
      internal_mutateStyles(tag, (styles2) => styles2.filter((style2) => style2 !== styleFunctionSx));
      const {
        name: componentName,
        slot: componentSlot,
        skipVariantsResolver: inputSkipVariantsResolver,
        skipSx: inputSkipSx,
        // TODO v6: remove `lowercaseFirstLetter()` in the next major release
        // For more details: https://github.com/mui/material-ui/pull/37908
        overridesResolver: overridesResolver2 = defaultOverridesResolver(lowercaseFirstLetter(componentSlot)),
        ...options
      } = inputOptions;
      const skipVariantsResolver = inputSkipVariantsResolver !== void 0 ? inputSkipVariantsResolver : (
        // TODO v6: remove `Root` in the next major release
        // For more details: https://github.com/mui/material-ui/pull/37908
        componentSlot && componentSlot !== "Root" && componentSlot !== "root" || false
      );
      const skipSx = inputSkipSx || false;
      let shouldForwardPropOption = shouldForwardProp;
      if (componentSlot === "Root" || componentSlot === "root") {
        shouldForwardPropOption = rootShouldForwardProp2;
      } else if (componentSlot) {
        shouldForwardPropOption = slotShouldForwardProp2;
      } else if (isStringTag(tag)) {
        shouldForwardPropOption = void 0;
      }
      const defaultStyledResolver = styled$1(tag, {
        shouldForwardProp: shouldForwardPropOption,
        label: generateStyledLabel(),
        ...options
      });
      const transformStyle = (style2) => {
        if (typeof style2 === "function" && style2.__emotion_real !== style2) {
          return function styleFunctionProcessor(props) {
            return processStyle(props, style2);
          };
        }
        if (isPlainObject$1(style2)) {
          const serialized = preprocessStyles(style2);
          if (!serialized.variants) {
            return serialized.style;
          }
          return function styleObjectProcessor(props) {
            return processStyle(props, serialized);
          };
        }
        return style2;
      };
      const muiStyledResolver = (...expressionsInput) => {
        const expressionsHead = [];
        const expressionsBody = expressionsInput.map(transformStyle);
        const expressionsTail = [];
        expressionsHead.push(styleAttachTheme);
        if (componentName && overridesResolver2) {
          expressionsTail.push(function styleThemeOverrides(props) {
            var _a, _b;
            const theme = props.theme;
            const styleOverrides = (_b = (_a = theme.components) == null ? void 0 : _a[componentName]) == null ? void 0 : _b.styleOverrides;
            if (!styleOverrides) {
              return null;
            }
            const resolvedStyleOverrides = {};
            for (const slotKey in styleOverrides) {
              resolvedStyleOverrides[slotKey] = processStyle(props, styleOverrides[slotKey]);
            }
            return overridesResolver2(props, resolvedStyleOverrides);
          });
        }
        if (componentName && !skipVariantsResolver) {
          expressionsTail.push(function styleThemeVariants(props) {
            var _a, _b;
            const theme = props.theme;
            const themeVariants = (_b = (_a = theme == null ? void 0 : theme.components) == null ? void 0 : _a[componentName]) == null ? void 0 : _b.variants;
            if (!themeVariants) {
              return null;
            }
            return processStyleVariants(props, themeVariants);
          });
        }
        if (!skipSx) {
          expressionsTail.push(styleFunctionSx);
        }
        if (Array.isArray(expressionsBody[0])) {
          const inputStrings = expressionsBody.shift();
          const placeholdersHead = new Array(expressionsHead.length).fill("");
          const placeholdersTail = new Array(expressionsTail.length).fill("");
          let outputStrings;
          {
            outputStrings = [...placeholdersHead, ...inputStrings, ...placeholdersTail];
            outputStrings.raw = [...placeholdersHead, ...inputStrings.raw, ...placeholdersTail];
          }
          expressionsHead.unshift(outputStrings);
        }
        const expressions = [...expressionsHead, ...expressionsBody, ...expressionsTail];
        const Component = defaultStyledResolver(...expressions);
        if (tag.muiName) {
          Component.muiName = tag.muiName;
        }
        return Component;
      };
      if (defaultStyledResolver.withConfig) {
        muiStyledResolver.withConfig = defaultStyledResolver.withConfig;
      }
      return muiStyledResolver;
    };
    return styled2;
  }
  function generateStyledLabel(componentName, componentSlot) {
    let label;
    return label;
  }
  function isObjectEmpty$1(object) {
    for (const _ in object) {
      return false;
    }
    return true;
  }
  function isStringTag(tag) {
    return typeof tag === "string" && // 96 is one less than the char code
    // for "a" so this is checking that
    // it's a lowercase character
    tag.charCodeAt(0) > 96;
  }
  function lowercaseFirstLetter(string) {
    if (!string) {
      return string;
    }
    return string.charAt(0).toLowerCase() + string.slice(1);
  }
  const ThemeContext = /* @__PURE__ */ React__namespace.createContext(null);
  function useTheme$1() {
    const theme = React__namespace.useContext(ThemeContext);
    return theme;
  }
  const hasSymbol = typeof Symbol === "function" && Symbol.for;
  const nested = hasSymbol ? Symbol.for("mui.nested") : "__THEME_NESTED__";
  function mergeOuterLocalTheme(outerTheme, localTheme) {
    if (typeof localTheme === "function") {
      const mergedTheme = localTheme(outerTheme);
      return mergedTheme;
    }
    return {
      ...outerTheme,
      ...localTheme
    };
  }
  function ThemeProvider$2(props) {
    const {
      children,
      theme: localTheme
    } = props;
    const outerTheme = useTheme$1();
    const theme = React__namespace.useMemo(() => {
      const output = outerTheme === null ? {
        ...localTheme
      } : mergeOuterLocalTheme(outerTheme, localTheme);
      if (output != null) {
        output[nested] = outerTheme !== null;
      }
      return output;
    }, [localTheme, outerTheme]);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeContext.Provider, {
      value: theme,
      children
    });
  }
  const RtlContext = /* @__PURE__ */ React__namespace.createContext();
  function RtlProvider({
    value,
    ...props
  }) {
    return /* @__PURE__ */ jsxRuntimeExports.jsx(RtlContext.Provider, {
      value: value ?? true,
      ...props
    });
  }
  const useRtl = () => {
    const value = React__namespace.useContext(RtlContext);
    return value ?? false;
  };
  const PropsContext = /* @__PURE__ */ React__namespace.createContext(void 0);
  function DefaultPropsProvider({
    value,
    children
  }) {
    return /* @__PURE__ */ jsxRuntimeExports.jsx(PropsContext.Provider, {
      value,
      children
    });
  }
  function getThemeProps(params) {
    const {
      theme,
      name,
      props
    } = params;
    if (!theme || !theme.components || !theme.components[name]) {
      return props;
    }
    const config2 = theme.components[name];
    if (config2.defaultProps) {
      return resolveProps(config2.defaultProps, props);
    }
    if (!config2.styleOverrides && !config2.variants) {
      return resolveProps(config2, props);
    }
    return props;
  }
  function useDefaultProps$1({
    props,
    name
  }) {
    const ctx = React__namespace.useContext(PropsContext);
    return getThemeProps({
      props,
      name,
      theme: {
        components: ctx
      }
    });
  }
  const EMPTY_THEME = {};
  function useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {
    return React__namespace.useMemo(() => {
      const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;
      if (typeof localTheme === "function") {
        const mergedTheme = localTheme(resolvedTheme);
        const result = themeId ? {
          ...upperTheme,
          [themeId]: mergedTheme
        } : mergedTheme;
        if (isPrivate) {
          return () => result;
        }
        return result;
      }
      return themeId ? {
        ...upperTheme,
        [themeId]: localTheme
      } : {
        ...upperTheme,
        ...localTheme
      };
    }, [themeId, upperTheme, localTheme, isPrivate]);
  }
  function ThemeProvider$1(props) {
    const {
      children,
      theme: localTheme,
      themeId
    } = props;
    const upperTheme = useTheme$3(EMPTY_THEME);
    const upperPrivateTheme = useTheme$1() || EMPTY_THEME;
    const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);
    const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);
    const rtlValue = (themeId ? engineTheme[themeId] : engineTheme).direction === "rtl";
    return /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeProvider$2, {
      theme: privateTheme,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeContext$1.Provider, {
        value: engineTheme,
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(RtlProvider, {
          value: rtlValue,
          children: /* @__PURE__ */ jsxRuntimeExports.jsx(DefaultPropsProvider, {
            value: themeId ? engineTheme[themeId].components : engineTheme.components,
            children
          })
        })
      })
    });
  }
  const arg = {
    theme: void 0
  };
  function unstable_memoTheme(styleFn) {
    let lastValue;
    let lastTheme;
    return function styleMemoized(props) {
      let value = lastValue;
      if (value === void 0 || props.theme !== lastTheme) {
        arg.theme = props.theme;
        value = preprocessStyles(styleFn(arg));
        lastValue = value;
        lastTheme = props.theme;
      }
      return value;
    };
  }
  const DEFAULT_MODE_STORAGE_KEY = "mode";
  const DEFAULT_COLOR_SCHEME_STORAGE_KEY = "color-scheme";
  const DEFAULT_ATTRIBUTE = "data-color-scheme";
  function InitColorSchemeScript(options) {
    const {
      defaultMode = "system",
      defaultLightColorScheme = "light",
      defaultDarkColorScheme = "dark",
      modeStorageKey = DEFAULT_MODE_STORAGE_KEY,
      colorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,
      attribute: initialAttribute = DEFAULT_ATTRIBUTE,
      colorSchemeNode = "document.documentElement",
      nonce
    } = options || {};
    let setter = "";
    let attribute = initialAttribute;
    if (initialAttribute === "class") {
      attribute = ".%s";
    }
    if (initialAttribute === "data") {
      attribute = "[data-%s]";
    }
    if (attribute.startsWith(".")) {
      const selector = attribute.substring(1);
      setter += `${colorSchemeNode}.classList.remove('${selector}'.replace('%s', light), '${selector}'.replace('%s', dark));
      ${colorSchemeNode}.classList.add('${selector}'.replace('%s', colorScheme));`;
    }
    const matches = attribute.match(/\[([^\]]+)\]/);
    if (matches) {
      const [attr, value] = matches[1].split("=");
      if (!value) {
        setter += `${colorSchemeNode}.removeAttribute('${attr}'.replace('%s', light));
      ${colorSchemeNode}.removeAttribute('${attr}'.replace('%s', dark));`;
      }
      setter += `
      ${colorSchemeNode}.setAttribute('${attr}'.replace('%s', colorScheme), ${value ? `${value}.replace('%s', colorScheme)` : '""'});`;
    } else {
      setter += `${colorSchemeNode}.setAttribute('${attribute}', colorScheme);`;
    }
    return /* @__PURE__ */ jsxRuntimeExports.jsx("script", {
      suppressHydrationWarning: true,
      nonce: typeof window === "undefined" ? nonce : "",
      dangerouslySetInnerHTML: {
        __html: `(function() {
try {
  let colorScheme = '';
  const mode = localStorage.getItem('${modeStorageKey}') || '${defaultMode}';
  const dark = localStorage.getItem('${colorSchemeStorageKey}-dark') || '${defaultDarkColorScheme}';
  const light = localStorage.getItem('${colorSchemeStorageKey}-light') || '${defaultLightColorScheme}';
  if (mode === 'system') {
    // handle system mode
    const mql = window.matchMedia('(prefers-color-scheme: dark)');
    if (mql.matches) {
      colorScheme = dark
    } else {
      colorScheme = light
    }
  }
  if (mode === 'light') {
    colorScheme = light;
  }
  if (mode === 'dark') {
    colorScheme = dark;
  }
  if (colorScheme) {
    ${setter}
  }
} catch(e){}})();`
      }
    }, "mui-color-scheme-init");
  }
  function noop$4() {
  }
  const localStorageManager = ({
    key: key2,
    storageWindow
  }) => {
    if (!storageWindow && typeof window !== "undefined") {
      storageWindow = window;
    }
    return {
      get(defaultValue) {
        if (typeof window === "undefined") {
          return void 0;
        }
        if (!storageWindow) {
          return defaultValue;
        }
        let value;
        try {
          value = storageWindow.localStorage.getItem(key2);
        } catch {
        }
        return value || defaultValue;
      },
      set: (value) => {
        if (storageWindow) {
          try {
            storageWindow.localStorage.setItem(key2, value);
          } catch {
          }
        }
      },
      subscribe: (handler) => {
        if (!storageWindow) {
          return noop$4;
        }
        const listener = (event) => {
          const value = event.newValue;
          if (event.key === key2) {
            handler(value);
          }
        };
        storageWindow.addEventListener("storage", listener);
        return () => {
          storageWindow.removeEventListener("storage", listener);
        };
      }
    };
  };
  function noop$3() {
  }
  function getSystemMode(mode) {
    if (typeof window !== "undefined" && typeof window.matchMedia === "function" && mode === "system") {
      const mql = window.matchMedia("(prefers-color-scheme: dark)");
      if (mql.matches) {
        return "dark";
      }
      return "light";
    }
    return void 0;
  }
  function processState(state, callback) {
    if (state.mode === "light" || state.mode === "system" && state.systemMode === "light") {
      return callback("light");
    }
    if (state.mode === "dark" || state.mode === "system" && state.systemMode === "dark") {
      return callback("dark");
    }
    return void 0;
  }
  function getColorScheme(state) {
    return processState(state, (mode) => {
      if (mode === "light") {
        return state.lightColorScheme;
      }
      if (mode === "dark") {
        return state.darkColorScheme;
      }
      return void 0;
    });
  }
  function useCurrentColorScheme(options) {
    const {
      defaultMode = "light",
      defaultLightColorScheme,
      defaultDarkColorScheme,
      supportedColorSchemes = [],
      modeStorageKey = DEFAULT_MODE_STORAGE_KEY,
      colorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,
      storageWindow = typeof window === "undefined" ? void 0 : window,
      storageManager = localStorageManager,
      noSsr = false
    } = options;
    const joinedColorSchemes = supportedColorSchemes.join(",");
    const isMultiSchemes = supportedColorSchemes.length > 1;
    const modeStorage = React__namespace.useMemo(() => storageManager == null ? void 0 : storageManager({
      key: modeStorageKey,
      storageWindow
    }), [storageManager, modeStorageKey, storageWindow]);
    const lightStorage = React__namespace.useMemo(() => storageManager == null ? void 0 : storageManager({
      key: `${colorSchemeStorageKey}-light`,
      storageWindow
    }), [storageManager, colorSchemeStorageKey, storageWindow]);
    const darkStorage = React__namespace.useMemo(() => storageManager == null ? void 0 : storageManager({
      key: `${colorSchemeStorageKey}-dark`,
      storageWindow
    }), [storageManager, colorSchemeStorageKey, storageWindow]);
    const [state, setState] = React__namespace.useState(() => {
      const initialMode = (modeStorage == null ? void 0 : modeStorage.get(defaultMode)) || defaultMode;
      const lightColorScheme = (lightStorage == null ? void 0 : lightStorage.get(defaultLightColorScheme)) || defaultLightColorScheme;
      const darkColorScheme = (darkStorage == null ? void 0 : darkStorage.get(defaultDarkColorScheme)) || defaultDarkColorScheme;
      return {
        mode: initialMode,
        systemMode: getSystemMode(initialMode),
        lightColorScheme,
        darkColorScheme
      };
    });
    const [isClient, setIsClient] = React__namespace.useState(noSsr || !isMultiSchemes);
    React__namespace.useEffect(() => {
      setIsClient(true);
    }, []);
    const colorScheme = getColorScheme(state);
    const setMode = React__namespace.useCallback((mode) => {
      setState((currentState) => {
        if (mode === currentState.mode) {
          return currentState;
        }
        const newMode = mode ?? defaultMode;
        modeStorage == null ? void 0 : modeStorage.set(newMode);
        return {
          ...currentState,
          mode: newMode,
          systemMode: getSystemMode(newMode)
        };
      });
    }, [modeStorage, defaultMode]);
    const setColorScheme = React__namespace.useCallback((value) => {
      if (!value) {
        setState((currentState) => {
          lightStorage == null ? void 0 : lightStorage.set(defaultLightColorScheme);
          darkStorage == null ? void 0 : darkStorage.set(defaultDarkColorScheme);
          return {
            ...currentState,
            lightColorScheme: defaultLightColorScheme,
            darkColorScheme: defaultDarkColorScheme
          };
        });
      } else if (typeof value === "string") {
        if (value && !joinedColorSchemes.includes(value)) {
          console.error(`\`${value}\` does not exist in \`theme.colorSchemes\`.`);
        } else {
          setState((currentState) => {
            const newState = {
              ...currentState
            };
            processState(currentState, (mode) => {
              if (mode === "light") {
                lightStorage == null ? void 0 : lightStorage.set(value);
                newState.lightColorScheme = value;
              }
              if (mode === "dark") {
                darkStorage == null ? void 0 : darkStorage.set(value);
                newState.darkColorScheme = value;
              }
            });
            return newState;
          });
        }
      } else {
        setState((currentState) => {
          const newState = {
            ...currentState
          };
          const newLightColorScheme = value.light === null ? defaultLightColorScheme : value.light;
          const newDarkColorScheme = value.dark === null ? defaultDarkColorScheme : value.dark;
          if (newLightColorScheme) {
            if (!joinedColorSchemes.includes(newLightColorScheme)) {
              console.error(`\`${newLightColorScheme}\` does not exist in \`theme.colorSchemes\`.`);
            } else {
              newState.lightColorScheme = newLightColorScheme;
              lightStorage == null ? void 0 : lightStorage.set(newLightColorScheme);
            }
          }
          if (newDarkColorScheme) {
            if (!joinedColorSchemes.includes(newDarkColorScheme)) {
              console.error(`\`${newDarkColorScheme}\` does not exist in \`theme.colorSchemes\`.`);
            } else {
              newState.darkColorScheme = newDarkColorScheme;
              darkStorage == null ? void 0 : darkStorage.set(newDarkColorScheme);
            }
          }
          return newState;
        });
      }
    }, [joinedColorSchemes, lightStorage, darkStorage, defaultLightColorScheme, defaultDarkColorScheme]);
    const handleMediaQuery = React__namespace.useCallback((event) => {
      if (state.mode === "system") {
        setState((currentState) => {
          const systemMode = (event == null ? void 0 : event.matches) ? "dark" : "light";
          if (currentState.systemMode === systemMode) {
            return currentState;
          }
          return {
            ...currentState,
            systemMode
          };
        });
      }
    }, [state.mode]);
    const mediaListener = React__namespace.useRef(handleMediaQuery);
    mediaListener.current = handleMediaQuery;
    React__namespace.useEffect(() => {
      if (typeof window.matchMedia !== "function" || !isMultiSchemes) {
        return void 0;
      }
      const handler = (...args) => mediaListener.current(...args);
      const media = window.matchMedia("(prefers-color-scheme: dark)");
      media.addListener(handler);
      handler(media);
      return () => {
        media.removeListener(handler);
      };
    }, [isMultiSchemes]);
    React__namespace.useEffect(() => {
      if (isMultiSchemes) {
        const unsubscribeMode = (modeStorage == null ? void 0 : modeStorage.subscribe((value) => {
          if (!value || ["light", "dark", "system"].includes(value)) {
            setMode(value || defaultMode);
          }
        })) || noop$3;
        const unsubscribeLight = (lightStorage == null ? void 0 : lightStorage.subscribe((value) => {
          if (!value || joinedColorSchemes.match(value)) {
            setColorScheme({
              light: value
            });
          }
        })) || noop$3;
        const unsubscribeDark = (darkStorage == null ? void 0 : darkStorage.subscribe((value) => {
          if (!value || joinedColorSchemes.match(value)) {
            setColorScheme({
              dark: value
            });
          }
        })) || noop$3;
        return () => {
          unsubscribeMode();
          unsubscribeLight();
          unsubscribeDark();
        };
      }
      return void 0;
    }, [setColorScheme, setMode, joinedColorSchemes, defaultMode, storageWindow, isMultiSchemes, modeStorage, lightStorage, darkStorage]);
    return {
      ...state,
      mode: isClient ? state.mode : void 0,
      systemMode: isClient ? state.systemMode : void 0,
      colorScheme: isClient ? colorScheme : void 0,
      setMode,
      setColorScheme
    };
  }
  const DISABLE_CSS_TRANSITION = "*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";
  function createCssVarsProvider(options) {
    const {
      themeId,
      /**
       * This `theme` object needs to follow a certain structure to
       * be used correctly by the finel `CssVarsProvider`. It should have a
       * `colorSchemes` key with the light and dark (and any other) palette.
       * It should also ideally have a vars object created using `prepareCssVars`.
       */
      theme: defaultTheme2 = {},
      modeStorageKey: defaultModeStorageKey = DEFAULT_MODE_STORAGE_KEY,
      colorSchemeStorageKey: defaultColorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,
      disableTransitionOnChange: designSystemTransitionOnChange = false,
      defaultColorScheme,
      resolveTheme
    } = options;
    const defaultContext = {
      allColorSchemes: [],
      colorScheme: void 0,
      darkColorScheme: void 0,
      lightColorScheme: void 0,
      mode: void 0,
      setColorScheme: () => {
      },
      setMode: () => {
      },
      systemMode: void 0
    };
    const ColorSchemeContext = /* @__PURE__ */ React__namespace.createContext(void 0);
    const useColorScheme = () => React__namespace.useContext(ColorSchemeContext) || defaultContext;
    const defaultColorSchemes = {};
    const defaultComponents = {};
    function CssVarsProvider2(props) {
      var _a, _b, _c, _d;
      const {
        children,
        theme: themeProp,
        modeStorageKey = defaultModeStorageKey,
        colorSchemeStorageKey = defaultColorSchemeStorageKey,
        disableTransitionOnChange = designSystemTransitionOnChange,
        storageManager,
        storageWindow = typeof window === "undefined" ? void 0 : window,
        documentNode = typeof document === "undefined" ? void 0 : document,
        colorSchemeNode = typeof document === "undefined" ? void 0 : document.documentElement,
        disableNestedContext = false,
        disableStyleSheetGeneration = false,
        defaultMode: initialMode = "system",
        forceThemeRerender = false,
        noSsr
      } = props;
      const hasMounted = React__namespace.useRef(false);
      const upperTheme = useTheme$1();
      const ctx = React__namespace.useContext(ColorSchemeContext);
      const nested2 = !!ctx && !disableNestedContext;
      const initialTheme = React__namespace.useMemo(() => {
        if (themeProp) {
          return themeProp;
        }
        return typeof defaultTheme2 === "function" ? defaultTheme2() : defaultTheme2;
      }, [themeProp]);
      const scopedTheme = initialTheme[themeId];
      const restThemeProp = scopedTheme || initialTheme;
      const {
        colorSchemes = defaultColorSchemes,
        components = defaultComponents,
        cssVarPrefix
      } = restThemeProp;
      const joinedColorSchemes = Object.keys(colorSchemes).filter((k) => !!colorSchemes[k]).join(",");
      const allColorSchemes = React__namespace.useMemo(() => joinedColorSchemes.split(","), [joinedColorSchemes]);
      const defaultLightColorScheme2 = typeof defaultColorScheme === "string" ? defaultColorScheme : defaultColorScheme.light;
      const defaultDarkColorScheme2 = typeof defaultColorScheme === "string" ? defaultColorScheme : defaultColorScheme.dark;
      const defaultMode = colorSchemes[defaultLightColorScheme2] && colorSchemes[defaultDarkColorScheme2] ? initialMode : ((_b = (_a = colorSchemes[restThemeProp.defaultColorScheme]) == null ? void 0 : _a.palette) == null ? void 0 : _b.mode) || ((_c = restThemeProp.palette) == null ? void 0 : _c.mode);
      const {
        mode: stateMode,
        setMode,
        systemMode,
        lightColorScheme,
        darkColorScheme,
        colorScheme: stateColorScheme,
        setColorScheme
      } = useCurrentColorScheme({
        supportedColorSchemes: allColorSchemes,
        defaultLightColorScheme: defaultLightColorScheme2,
        defaultDarkColorScheme: defaultDarkColorScheme2,
        modeStorageKey,
        colorSchemeStorageKey,
        defaultMode,
        storageManager,
        storageWindow,
        noSsr
      });
      let mode = stateMode;
      let colorScheme = stateColorScheme;
      if (nested2) {
        mode = ctx.mode;
        colorScheme = ctx.colorScheme;
      }
      let calculatedColorScheme = colorScheme || restThemeProp.defaultColorScheme;
      if (restThemeProp.vars && !forceThemeRerender) {
        calculatedColorScheme = restThemeProp.defaultColorScheme;
      }
      const memoTheme2 = React__namespace.useMemo(() => {
        var _a2;
        const themeVars = ((_a2 = restThemeProp.generateThemeVars) == null ? void 0 : _a2.call(restThemeProp)) || restThemeProp.vars;
        const theme = {
          ...restThemeProp,
          components,
          colorSchemes,
          cssVarPrefix,
          vars: themeVars
        };
        if (typeof theme.generateSpacing === "function") {
          theme.spacing = theme.generateSpacing();
        }
        if (calculatedColorScheme) {
          const scheme = colorSchemes[calculatedColorScheme];
          if (scheme && typeof scheme === "object") {
            Object.keys(scheme).forEach((schemeKey) => {
              if (scheme[schemeKey] && typeof scheme[schemeKey] === "object") {
                theme[schemeKey] = {
                  ...theme[schemeKey],
                  ...scheme[schemeKey]
                };
              } else {
                theme[schemeKey] = scheme[schemeKey];
              }
            });
          }
        }
        return resolveTheme ? resolveTheme(theme) : theme;
      }, [restThemeProp, calculatedColorScheme, components, colorSchemes, cssVarPrefix]);
      const colorSchemeSelector = restThemeProp.colorSchemeSelector;
      useEnhancedEffect(() => {
        if (colorScheme && colorSchemeNode && colorSchemeSelector && colorSchemeSelector !== "media") {
          const selector = colorSchemeSelector;
          let rule = colorSchemeSelector;
          if (selector === "class") {
            rule = `.%s`;
          }
          if (selector === "data") {
            rule = `[data-%s]`;
          }
          if ((selector == null ? void 0 : selector.startsWith("data-")) && !selector.includes("%s")) {
            rule = `[${selector}="%s"]`;
          }
          if (rule.startsWith(".")) {
            colorSchemeNode.classList.remove(...allColorSchemes.map((scheme) => rule.substring(1).replace("%s", scheme)));
            colorSchemeNode.classList.add(rule.substring(1).replace("%s", colorScheme));
          } else {
            const matches = rule.replace("%s", colorScheme).match(/\[([^\]]+)\]/);
            if (matches) {
              const [attr, value] = matches[1].split("=");
              if (!value) {
                allColorSchemes.forEach((scheme) => {
                  colorSchemeNode.removeAttribute(attr.replace(colorScheme, scheme));
                });
              }
              colorSchemeNode.setAttribute(attr, value ? value.replace(/"|'/g, "") : "");
            } else {
              colorSchemeNode.setAttribute(rule, colorScheme);
            }
          }
        }
      }, [colorScheme, colorSchemeSelector, colorSchemeNode, allColorSchemes]);
      React__namespace.useEffect(() => {
        let timer2;
        if (disableTransitionOnChange && hasMounted.current && documentNode) {
          const css2 = documentNode.createElement("style");
          css2.appendChild(documentNode.createTextNode(DISABLE_CSS_TRANSITION));
          documentNode.head.appendChild(css2);
          (() => window.getComputedStyle(documentNode.body))();
          timer2 = setTimeout(() => {
            documentNode.head.removeChild(css2);
          }, 1);
        }
        return () => {
          clearTimeout(timer2);
        };
      }, [colorScheme, disableTransitionOnChange, documentNode]);
      React__namespace.useEffect(() => {
        hasMounted.current = true;
        return () => {
          hasMounted.current = false;
        };
      }, []);
      const contextValue = React__namespace.useMemo(() => ({
        allColorSchemes,
        colorScheme,
        darkColorScheme,
        lightColorScheme,
        mode,
        setColorScheme,
        setMode,
        systemMode
      }), [allColorSchemes, colorScheme, darkColorScheme, lightColorScheme, mode, setColorScheme, setMode, systemMode, memoTheme2.colorSchemeSelector]);
      let shouldGenerateStyleSheet = true;
      if (disableStyleSheetGeneration || restThemeProp.cssVariables === false || nested2 && (upperTheme == null ? void 0 : upperTheme.cssVarPrefix) === cssVarPrefix) {
        shouldGenerateStyleSheet = false;
      }
      const element = /* @__PURE__ */ jsxRuntimeExports.jsxs(React__namespace.Fragment, {
        children: [/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeProvider$1, {
          themeId: scopedTheme ? themeId : void 0,
          theme: memoTheme2,
          children
        }), shouldGenerateStyleSheet && /* @__PURE__ */ jsxRuntimeExports.jsx(GlobalStyles$2, {
          styles: ((_d = memoTheme2.generateStyleSheets) == null ? void 0 : _d.call(memoTheme2)) || []
        })]
      });
      if (nested2) {
        return element;
      }
      return /* @__PURE__ */ jsxRuntimeExports.jsx(ColorSchemeContext.Provider, {
        value: contextValue,
        children: element
      });
    }
    const defaultLightColorScheme = typeof defaultColorScheme === "string" ? defaultColorScheme : defaultColorScheme.light;
    const defaultDarkColorScheme = typeof defaultColorScheme === "string" ? defaultColorScheme : defaultColorScheme.dark;
    const getInitColorSchemeScript = (params) => InitColorSchemeScript({
      colorSchemeStorageKey: defaultColorSchemeStorageKey,
      defaultLightColorScheme,
      defaultDarkColorScheme,
      modeStorageKey: defaultModeStorageKey,
      ...params
    });
    return {
      CssVarsProvider: CssVarsProvider2,
      useColorScheme,
      getInitColorSchemeScript
    };
  }
  function createGetCssVar$1(prefix2 = "") {
    function appendVar(...vars) {
      if (!vars.length) {
        return "";
      }
      const value = vars[0];
      if (typeof value === "string" && !value.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)) {
        return `, var(--${prefix2 ? `${prefix2}-` : ""}${value}${appendVar(...vars.slice(1))})`;
      }
      return `, ${value}`;
    }
    const getCssVar = (field, ...fallbacks) => {
      return `var(--${prefix2 ? `${prefix2}-` : ""}${field}${appendVar(...fallbacks)})`;
    };
    return getCssVar;
  }
  const assignNestedKeys = (obj, keys, value, arrayKeys = []) => {
    let temp = obj;
    keys.forEach((k, index) => {
      if (index === keys.length - 1) {
        if (Array.isArray(temp)) {
          temp[Number(k)] = value;
        } else if (temp && typeof temp === "object") {
          temp[k] = value;
        }
      } else if (temp && typeof temp === "object") {
        if (!temp[k]) {
          temp[k] = arrayKeys.includes(k) ? [] : {};
        }
        temp = temp[k];
      }
    });
  };
  const walkObjectDeep = (obj, callback, shouldSkipPaths) => {
    function recurse(object, parentKeys = [], arrayKeys = []) {
      Object.entries(object).forEach(([key2, value]) => {
        if (!shouldSkipPaths || shouldSkipPaths && !shouldSkipPaths([...parentKeys, key2])) {
          if (value !== void 0 && value !== null) {
            if (typeof value === "object" && Object.keys(value).length > 0) {
              recurse(value, [...parentKeys, key2], Array.isArray(value) ? [...arrayKeys, key2] : arrayKeys);
            } else {
              callback([...parentKeys, key2], value, arrayKeys);
            }
          }
        }
      });
    }
    recurse(obj);
  };
  const getCssValue = (keys, value) => {
    if (typeof value === "number") {
      if (["lineHeight", "fontWeight", "opacity", "zIndex"].some((prop) => keys.includes(prop))) {
        return value;
      }
      const lastKey = keys[keys.length - 1];
      if (lastKey.toLowerCase().includes("opacity")) {
        return value;
      }
      return `${value}px`;
    }
    return value;
  };
  function cssVarsParser(theme, options) {
    const {
      prefix: prefix2,
      shouldSkipGeneratingVar: shouldSkipGeneratingVar2
    } = options || {};
    const css2 = {};
    const vars = {};
    const varsWithDefaults = {};
    walkObjectDeep(
      theme,
      (keys, value, arrayKeys) => {
        if (typeof value === "string" || typeof value === "number") {
          if (!shouldSkipGeneratingVar2 || !shouldSkipGeneratingVar2(keys, value)) {
            const cssVar = `--${prefix2 ? `${prefix2}-` : ""}${keys.join("-")}`;
            const resolvedValue = getCssValue(keys, value);
            Object.assign(css2, {
              [cssVar]: resolvedValue
            });
            assignNestedKeys(vars, keys, `var(${cssVar})`, arrayKeys);
            assignNestedKeys(varsWithDefaults, keys, `var(${cssVar}, ${resolvedValue})`, arrayKeys);
          }
        }
      },
      (keys) => keys[0] === "vars"
      // skip 'vars/*' paths
    );
    return {
      css: css2,
      vars,
      varsWithDefaults
    };
  }
  function prepareCssVars(theme, parserConfig = {}) {
    const {
      getSelector = defaultGetSelector2,
      disableCssColorScheme,
      colorSchemeSelector: selector
    } = parserConfig;
    const {
      colorSchemes = {},
      components,
      defaultColorScheme = "light",
      ...otherTheme
    } = theme;
    const {
      vars: rootVars,
      css: rootCss,
      varsWithDefaults: rootVarsWithDefaults
    } = cssVarsParser(otherTheme, parserConfig);
    let themeVars = rootVarsWithDefaults;
    const colorSchemesMap = {};
    const {
      [defaultColorScheme]: defaultScheme,
      ...otherColorSchemes
    } = colorSchemes;
    Object.entries(otherColorSchemes || {}).forEach(([key2, scheme]) => {
      const {
        vars,
        css: css2,
        varsWithDefaults
      } = cssVarsParser(scheme, parserConfig);
      themeVars = deepmerge(themeVars, varsWithDefaults);
      colorSchemesMap[key2] = {
        css: css2,
        vars
      };
    });
    if (defaultScheme) {
      const {
        css: css2,
        vars,
        varsWithDefaults
      } = cssVarsParser(defaultScheme, parserConfig);
      themeVars = deepmerge(themeVars, varsWithDefaults);
      colorSchemesMap[defaultColorScheme] = {
        css: css2,
        vars
      };
    }
    function defaultGetSelector2(colorScheme, cssObject) {
      var _a, _b;
      let rule = selector;
      if (selector === "class") {
        rule = ".%s";
      }
      if (selector === "data") {
        rule = "[data-%s]";
      }
      if ((selector == null ? void 0 : selector.startsWith("data-")) && !selector.includes("%s")) {
        rule = `[${selector}="%s"]`;
      }
      if (colorScheme) {
        if (rule === "media") {
          if (theme.defaultColorScheme === colorScheme) {
            return ":root";
          }
          const mode = ((_b = (_a = colorSchemes[colorScheme]) == null ? void 0 : _a.palette) == null ? void 0 : _b.mode) || colorScheme;
          return {
            [`@media (prefers-color-scheme: ${mode})`]: {
              ":root": cssObject
            }
          };
        }
        if (rule) {
          if (theme.defaultColorScheme === colorScheme) {
            return `:root, ${rule.replace("%s", String(colorScheme))}`;
          }
          return rule.replace("%s", String(colorScheme));
        }
      }
      return ":root";
    }
    const generateThemeVars = () => {
      let vars = {
        ...rootVars
      };
      Object.entries(colorSchemesMap).forEach(([, {
        vars: schemeVars
      }]) => {
        vars = deepmerge(vars, schemeVars);
      });
      return vars;
    };
    const generateStyleSheets = () => {
      var _a, _b;
      const stylesheets = [];
      const colorScheme = theme.defaultColorScheme || "light";
      function insertStyleSheet(key2, css2) {
        if (Object.keys(css2).length) {
          stylesheets.push(typeof key2 === "string" ? {
            [key2]: {
              ...css2
            }
          } : key2);
        }
      }
      insertStyleSheet(getSelector(void 0, {
        ...rootCss
      }), rootCss);
      const {
        [colorScheme]: defaultSchemeVal,
        ...other
      } = colorSchemesMap;
      if (defaultSchemeVal) {
        const {
          css: css2
        } = defaultSchemeVal;
        const cssColorSheme = (_b = (_a = colorSchemes[colorScheme]) == null ? void 0 : _a.palette) == null ? void 0 : _b.mode;
        const finalCss = !disableCssColorScheme && cssColorSheme ? {
          colorScheme: cssColorSheme,
          ...css2
        } : {
          ...css2
        };
        insertStyleSheet(getSelector(colorScheme, {
          ...finalCss
        }), finalCss);
      }
      Object.entries(other).forEach(([key2, {
        css: css2
      }]) => {
        var _a2, _b2;
        const cssColorSheme = (_b2 = (_a2 = colorSchemes[key2]) == null ? void 0 : _a2.palette) == null ? void 0 : _b2.mode;
        const finalCss = !disableCssColorScheme && cssColorSheme ? {
          colorScheme: cssColorSheme,
          ...css2
        } : {
          ...css2
        };
        insertStyleSheet(getSelector(key2, {
          ...finalCss
        }), finalCss);
      });
      return stylesheets;
    };
    return {
      vars: themeVars,
      generateThemeVars,
      generateStyleSheets
    };
  }
  function createGetColorSchemeSelector(selector) {
    return function getColorSchemeSelector(colorScheme) {
      if (selector === "media") {
        return `@media (prefers-color-scheme: ${colorScheme})`;
      }
      if (selector) {
        if (selector.startsWith("data-") && !selector.includes("%s")) {
          return `[${selector}="${colorScheme}"] &`;
        }
        if (selector === "class") {
          return `.${colorScheme} &`;
        }
        if (selector === "data") {
          return `[data-${colorScheme}] &`;
        }
        return `${selector.replace("%s", colorScheme)} &`;
      }
      return "&";
    };
  }
  const common = {
    black: "#000",
    white: "#fff"
  };
  const grey = {
    50: "#fafafa",
    100: "#f5f5f5",
    200: "#eeeeee",
    300: "#e0e0e0",
    400: "#bdbdbd",
    500: "#9e9e9e",
    600: "#757575",
    700: "#616161",
    800: "#424242",
    900: "#212121",
    A100: "#f5f5f5",
    A200: "#eeeeee",
    A400: "#bdbdbd",
    A700: "#616161"
  };
  const purple = {
    50: "#f3e5f5",
    200: "#ce93d8",
    300: "#ba68c8",
    400: "#ab47bc",
    500: "#9c27b0",
    700: "#7b1fa2"
  };
  const red = {
    300: "#e57373",
    400: "#ef5350",
    500: "#f44336",
    700: "#d32f2f",
    800: "#c62828"
  };
  const orange = {
    300: "#ffb74d",
    400: "#ffa726",
    500: "#ff9800",
    700: "#f57c00",
    900: "#e65100"
  };
  const blue = {
    50: "#e3f2fd",
    200: "#90caf9",
    400: "#42a5f5",
    700: "#1976d2",
    800: "#1565c0"
  };
  const lightBlue = {
    300: "#4fc3f7",
    400: "#29b6f6",
    500: "#03a9f4",
    700: "#0288d1",
    900: "#01579b"
  };
  const green = {
    300: "#81c784",
    400: "#66bb6a",
    500: "#4caf50",
    700: "#388e3c",
    800: "#2e7d32",
    900: "#1b5e20"
  };
  function getLight() {
    return {
      // The colors used to style the text.
      text: {
        // The most important text.
        primary: "rgba(0, 0, 0, 0.87)",
        // Secondary text.
        secondary: "rgba(0, 0, 0, 0.6)",
        // Disabled text have even lower visual prominence.
        disabled: "rgba(0, 0, 0, 0.38)"
      },
      // The color used to divide different elements.
      divider: "rgba(0, 0, 0, 0.12)",
      // The background colors used to style the surfaces.
      // Consistency between these values is important.
      background: {
        paper: common.white,
        default: common.white
      },
      // The colors used to style the action elements.
      action: {
        // The color of an active action like an icon button.
        active: "rgba(0, 0, 0, 0.54)",
        // The color of an hovered action.
        hover: "rgba(0, 0, 0, 0.04)",
        hoverOpacity: 0.04,
        // The color of a selected action.
        selected: "rgba(0, 0, 0, 0.08)",
        selectedOpacity: 0.08,
        // The color of a disabled action.
        disabled: "rgba(0, 0, 0, 0.26)",
        // The background color of a disabled action.
        disabledBackground: "rgba(0, 0, 0, 0.12)",
        disabledOpacity: 0.38,
        focus: "rgba(0, 0, 0, 0.12)",
        focusOpacity: 0.12,
        activatedOpacity: 0.12
      }
    };
  }
  const light = getLight();
  function getDark() {
    return {
      text: {
        primary: common.white,
        secondary: "rgba(255, 255, 255, 0.7)",
        disabled: "rgba(255, 255, 255, 0.5)",
        icon: "rgba(255, 255, 255, 0.5)"
      },
      divider: "rgba(255, 255, 255, 0.12)",
      background: {
        paper: "#121212",
        default: "#121212"
      },
      action: {
        active: common.white,
        hover: "rgba(255, 255, 255, 0.08)",
        hoverOpacity: 0.08,
        selected: "rgba(255, 255, 255, 0.16)",
        selectedOpacity: 0.16,
        disabled: "rgba(255, 255, 255, 0.3)",
        disabledBackground: "rgba(255, 255, 255, 0.12)",
        disabledOpacity: 0.38,
        focus: "rgba(255, 255, 255, 0.12)",
        focusOpacity: 0.12,
        activatedOpacity: 0.24
      }
    };
  }
  const dark = getDark();
  function addLightOrDark(intent, direction, shade, tonalOffset) {
    const tonalOffsetLight = tonalOffset.light || tonalOffset;
    const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;
    if (!intent[direction]) {
      if (intent.hasOwnProperty(shade)) {
        intent[direction] = intent[shade];
      } else if (direction === "light") {
        intent.light = lighten(intent.main, tonalOffsetLight);
      } else if (direction === "dark") {
        intent.dark = darken(intent.main, tonalOffsetDark);
      }
    }
  }
  function getDefaultPrimary(mode = "light") {
    if (mode === "dark") {
      return {
        main: blue[200],
        light: blue[50],
        dark: blue[400]
      };
    }
    return {
      main: blue[700],
      light: blue[400],
      dark: blue[800]
    };
  }
  function getDefaultSecondary(mode = "light") {
    if (mode === "dark") {
      return {
        main: purple[200],
        light: purple[50],
        dark: purple[400]
      };
    }
    return {
      main: purple[500],
      light: purple[300],
      dark: purple[700]
    };
  }
  function getDefaultError(mode = "light") {
    if (mode === "dark") {
      return {
        main: red[500],
        light: red[300],
        dark: red[700]
      };
    }
    return {
      main: red[700],
      light: red[400],
      dark: red[800]
    };
  }
  function getDefaultInfo(mode = "light") {
    if (mode === "dark") {
      return {
        main: lightBlue[400],
        light: lightBlue[300],
        dark: lightBlue[700]
      };
    }
    return {
      main: lightBlue[700],
      light: lightBlue[500],
      dark: lightBlue[900]
    };
  }
  function getDefaultSuccess(mode = "light") {
    if (mode === "dark") {
      return {
        main: green[400],
        light: green[300],
        dark: green[700]
      };
    }
    return {
      main: green[800],
      light: green[500],
      dark: green[900]
    };
  }
  function getDefaultWarning(mode = "light") {
    if (mode === "dark") {
      return {
        main: orange[400],
        light: orange[300],
        dark: orange[700]
      };
    }
    return {
      main: "#ed6c02",
      // closest to orange[800] that pass 3:1.
      light: orange[500],
      dark: orange[900]
    };
  }
  function createPalette(palette) {
    const {
      mode = "light",
      contrastThreshold = 3,
      tonalOffset = 0.2,
      ...other
    } = palette;
    const primary = palette.primary || getDefaultPrimary(mode);
    const secondary = palette.secondary || getDefaultSecondary(mode);
    const error = palette.error || getDefaultError(mode);
    const info2 = palette.info || getDefaultInfo(mode);
    const success = palette.success || getDefaultSuccess(mode);
    const warning = palette.warning || getDefaultWarning(mode);
    function getContrastText(background) {
      const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;
      return contrastText;
    }
    const augmentColor = ({
      color: color2,
      name,
      mainShade = 500,
      lightShade = 300,
      darkShade = 700
    }) => {
      color2 = {
        ...color2
      };
      if (!color2.main && color2[mainShade]) {
        color2.main = color2[mainShade];
      }
      if (!color2.hasOwnProperty("main")) {
        throw new Error(formatMuiErrorMessage(11, name ? ` (${name})` : "", mainShade));
      }
      if (typeof color2.main !== "string") {
        throw new Error(formatMuiErrorMessage(12, name ? ` (${name})` : "", JSON.stringify(color2.main)));
      }
      addLightOrDark(color2, "light", lightShade, tonalOffset);
      addLightOrDark(color2, "dark", darkShade, tonalOffset);
      if (!color2.contrastText) {
        color2.contrastText = getContrastText(color2.main);
      }
      return color2;
    };
    let modeHydrated;
    if (mode === "light") {
      modeHydrated = getLight();
    } else if (mode === "dark") {
      modeHydrated = getDark();
    }
    const paletteOutput = deepmerge({
      // A collection of common colors.
      common: {
        ...common
      },
      // prevent mutable object.
      // The palette mode, can be light or dark.
      mode,
      // The colors used to represent primary interface elements for a user.
      primary: augmentColor({
        color: primary,
        name: "primary"
      }),
      // The colors used to represent secondary interface elements for a user.
      secondary: augmentColor({
        color: secondary,
        name: "secondary",
        mainShade: "A400",
        lightShade: "A200",
        darkShade: "A700"
      }),
      // The colors used to represent interface elements that the user should be made aware of.
      error: augmentColor({
        color: error,
        name: "error"
      }),
      // The colors used to represent potentially dangerous actions or important messages.
      warning: augmentColor({
        color: warning,
        name: "warning"
      }),
      // The colors used to present information to the user that is neutral and not necessarily important.
      info: augmentColor({
        color: info2,
        name: "info"
      }),
      // The colors used to indicate the successful completion of an action that user triggered.
      success: augmentColor({
        color: success,
        name: "success"
      }),
      // The grey colors.
      grey,
      // Used by `getContrastText()` to maximize the contrast between
      // the background and the text.
      contrastThreshold,
      // Takes a background color and returns the text color that maximizes the contrast.
      getContrastText,
      // Generate a rich color object.
      augmentColor,
      // Used by the functions below to shift a color's luminance by approximately
      // two indexes within its tonal palette.
      // E.g., shift from Red 500 to Red 300 or Red 700.
      tonalOffset,
      // The light and dark mode object.
      ...modeHydrated
    }, other);
    return paletteOutput;
  }
  function prepareTypographyVars(typography) {
    const vars = {};
    const entries = Object.entries(typography);
    entries.forEach((entry) => {
      const [key2, value] = entry;
      if (typeof value === "object") {
        vars[key2] = `${value.fontStyle ? `${value.fontStyle} ` : ""}${value.fontVariant ? `${value.fontVariant} ` : ""}${value.fontWeight ? `${value.fontWeight} ` : ""}${value.fontStretch ? `${value.fontStretch} ` : ""}${value.fontSize || ""}${value.lineHeight ? `/${value.lineHeight} ` : ""}${value.fontFamily || ""}`;
      }
    });
    return vars;
  }
  function createMixins(breakpoints, mixins) {
    return {
      toolbar: {
        minHeight: 56,
        [breakpoints.up("xs")]: {
          "@media (orientation: landscape)": {
            minHeight: 48
          }
        },
        [breakpoints.up("sm")]: {
          minHeight: 64
        }
      },
      ...mixins
    };
  }
  function round$2(value) {
    return Math.round(value * 1e5) / 1e5;
  }
  const caseAllCaps = {
    textTransform: "uppercase"
  };
  const defaultFontFamily = '"Roboto", "Helvetica", "Arial", sans-serif';
  function createTypography(palette, typography) {
    const {
      fontFamily = defaultFontFamily,
      // The default font size of the Material Specification.
      fontSize = 14,
      // px
      fontWeightLight = 300,
      fontWeightRegular = 400,
      fontWeightMedium = 500,
      fontWeightBold = 700,
      // Tell MUI what's the font-size on the html element.
      // 16px is the default font-size used by browsers.
      htmlFontSize = 16,
      // Apply the CSS properties to all the variants.
      allVariants,
      pxToRem: pxToRem2,
      ...other
    } = typeof typography === "function" ? typography(palette) : typography;
    const coef = fontSize / 14;
    const pxToRem = pxToRem2 || ((size) => `${size / htmlFontSize * coef}rem`);
    const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => ({
      fontFamily,
      fontWeight,
      fontSize: pxToRem(size),
      // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/
      lineHeight,
      // The letter spacing was designed for the Roboto font-family. Using the same letter-spacing
      // across font-families can cause issues with the kerning.
      ...fontFamily === defaultFontFamily ? {
        letterSpacing: `${round$2(letterSpacing / size)}em`
      } : {},
      ...casing,
      ...allVariants
    });
    const variants = {
      h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),
      h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),
      h3: buildVariant(fontWeightRegular, 48, 1.167, 0),
      h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),
      h5: buildVariant(fontWeightRegular, 24, 1.334, 0),
      h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),
      subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),
      subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),
      body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),
      body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),
      button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),
      caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),
      overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),
      // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.
      inherit: {
        fontFamily: "inherit",
        fontWeight: "inherit",
        fontSize: "inherit",
        lineHeight: "inherit",
        letterSpacing: "inherit"
      }
    };
    return deepmerge({
      htmlFontSize,
      pxToRem,
      fontFamily,
      fontSize,
      fontWeightLight,
      fontWeightRegular,
      fontWeightMedium,
      fontWeightBold,
      ...variants
    }, other, {
      clone: false
      // No need to clone deep
    });
  }
  const shadowKeyUmbraOpacity = 0.2;
  const shadowKeyPenumbraOpacity = 0.14;
  const shadowAmbientShadowOpacity = 0.12;
  function createShadow(...px) {
    return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(",");
  }
  const shadows = ["none", createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];
  const easing = {
    // This is the most common easing curve.
    easeInOut: "cubic-bezier(0.4, 0, 0.2, 1)",
    // Objects enter the screen at full velocity from off-screen and
    // slowly decelerate to a resting point.
    easeOut: "cubic-bezier(0.0, 0, 0.2, 1)",
    // Objects leave the screen at full velocity. They do not decelerate when off-screen.
    easeIn: "cubic-bezier(0.4, 0, 1, 1)",
    // The sharp curve is used by objects that may return to the screen at any time.
    sharp: "cubic-bezier(0.4, 0, 0.6, 1)"
  };
  const duration = {
    shortest: 150,
    shorter: 200,
    short: 250,
    // most basic recommended timing
    standard: 300,
    // this is to be used in complex animations
    complex: 375,
    // recommended when something is entering screen
    enteringScreen: 225,
    // recommended when something is leaving screen
    leavingScreen: 195
  };
  function formatMs(milliseconds) {
    return `${Math.round(milliseconds)}ms`;
  }
  function getAutoHeightDuration(height2) {
    if (!height2) {
      return 0;
    }
    const constant = height2 / 36;
    return Math.min(Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10), 3e3);
  }
  function createTransitions(inputTransitions) {
    const mergedEasing = {
      ...easing,
      ...inputTransitions.easing
    };
    const mergedDuration = {
      ...duration,
      ...inputTransitions.duration
    };
    const create = (props = ["all"], options = {}) => {
      const {
        duration: durationOption = mergedDuration.standard,
        easing: easingOption = mergedEasing.easeInOut,
        delay = 0,
        ...other
      } = options;
      return (Array.isArray(props) ? props : [props]).map((animatedProp) => `${animatedProp} ${typeof durationOption === "string" ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === "string" ? delay : formatMs(delay)}`).join(",");
    };
    return {
      getAutoHeightDuration,
      create,
      ...inputTransitions,
      easing: mergedEasing,
      duration: mergedDuration
    };
  }
  const zIndex = {
    mobileStepper: 1e3,
    fab: 1050,
    speedDial: 1050,
    appBar: 1100,
    drawer: 1200,
    modal: 1300,
    snackbar: 1400,
    tooltip: 1500
  };
  function isSerializable(val) {
    return isPlainObject$1(val) || typeof val === "undefined" || typeof val === "string" || typeof val === "boolean" || typeof val === "number" || Array.isArray(val);
  }
  function stringifyTheme(baseTheme = {}) {
    const serializableTheme = {
      ...baseTheme
    };
    function serializeTheme(object) {
      const array = Object.entries(object);
      for (let index = 0; index < array.length; index++) {
        const [key2, value] = array[index];
        if (!isSerializable(value) || key2.startsWith("unstable_")) {
          delete object[key2];
        } else if (isPlainObject$1(value)) {
          object[key2] = {
            ...value
          };
          serializeTheme(object[key2]);
        }
      }
    }
    serializeTheme(serializableTheme);
    return `import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';

const theme = ${JSON.stringify(serializableTheme, null, 2)};

theme.breakpoints = createBreakpoints(theme.breakpoints || {});
theme.transitions = createTransitions(theme.transitions || {});

export default theme;`;
  }
  function createThemeNoVars(options = {}, ...args) {
    const {
      breakpoints: breakpointsInput,
      mixins: mixinsInput = {},
      spacing: spacingInput,
      palette: paletteInput = {},
      transitions: transitionsInput = {},
      typography: typographyInput = {},
      shape: shapeInput,
      ...other
    } = options;
    if (options.vars && // The error should throw only for the root theme creation because user is not allowed to use a custom node `vars`.
    // `generateThemeVars` is the closest identifier for checking that the `options` is a result of `createTheme` with CSS variables so that user can create new theme for nested ThemeProvider.
    options.generateThemeVars === void 0) {
      throw new Error(formatMuiErrorMessage(20));
    }
    const palette = createPalette(paletteInput);
    const systemTheme = createTheme$1(options);
    let muiTheme = deepmerge(systemTheme, {
      mixins: createMixins(systemTheme.breakpoints, mixinsInput),
      palette,
      // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.
      shadows: shadows.slice(),
      typography: createTypography(palette, typographyInput),
      transitions: createTransitions(transitionsInput),
      zIndex: {
        ...zIndex
      }
    });
    muiTheme = deepmerge(muiTheme, other);
    muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);
    muiTheme.unstable_sxConfig = {
      ...defaultSxConfig,
      ...other == null ? void 0 : other.unstable_sxConfig
    };
    muiTheme.unstable_sx = function sx(props) {
      return styleFunctionSx({
        sx: props,
        theme: this
      });
    };
    muiTheme.toRuntimeSource = stringifyTheme;
    return muiTheme;
  }
  function getOverlayAlpha(elevation) {
    let alphaValue;
    if (elevation < 1) {
      alphaValue = 5.11916 * elevation ** 2;
    } else {
      alphaValue = 4.5 * Math.log(elevation + 1) + 2;
    }
    return Math.round(alphaValue * 10) / 1e3;
  }
  const defaultDarkOverlays = [...Array(25)].map((_, index) => {
    if (index === 0) {
      return "none";
    }
    const overlay = getOverlayAlpha(index);
    return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;
  });
  function getOpacity(mode) {
    return {
      inputPlaceholder: mode === "dark" ? 0.5 : 0.42,
      inputUnderline: mode === "dark" ? 0.7 : 0.42,
      switchTrackDisabled: mode === "dark" ? 0.2 : 0.12,
      switchTrack: mode === "dark" ? 0.3 : 0.38
    };
  }
  function getOverlays(mode) {
    return mode === "dark" ? defaultDarkOverlays : [];
  }
  function createColorScheme(options) {
    const {
      palette: paletteInput = {
        mode: "light"
      },
      // need to cast to avoid module augmentation test
      opacity,
      overlays,
      ...rest
    } = options;
    const palette = createPalette(paletteInput);
    return {
      palette,
      opacity: {
        ...getOpacity(palette.mode),
        ...opacity
      },
      overlays: overlays || getOverlays(palette.mode),
      ...rest
    };
  }
  function shouldSkipGeneratingVar(keys) {
    var _a;
    return !!keys[0].match(/(cssVarPrefix|colorSchemeSelector|rootSelector|typography|mixins|breakpoints|direction|transitions)/) || !!keys[0].match(/sxConfig$/) || // ends with sxConfig
    keys[0] === "palette" && !!((_a = keys[1]) == null ? void 0 : _a.match(/(mode|contrastThreshold|tonalOffset)/));
  }
  const excludeVariablesFromRoot = (cssVarPrefix) => [...[...Array(25)].map((_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ""}overlays-${index}`), `--${cssVarPrefix ? `${cssVarPrefix}-` : ""}palette-AppBar-darkBg`, `--${cssVarPrefix ? `${cssVarPrefix}-` : ""}palette-AppBar-darkColor`];
  const defaultGetSelector = (theme) => (colorScheme, css2) => {
    const root = theme.rootSelector || ":root";
    const selector = theme.colorSchemeSelector;
    let rule = selector;
    if (selector === "class") {
      rule = ".%s";
    }
    if (selector === "data") {
      rule = "[data-%s]";
    }
    if ((selector == null ? void 0 : selector.startsWith("data-")) && !selector.includes("%s")) {
      rule = `[${selector}="%s"]`;
    }
    if (theme.defaultColorScheme === colorScheme) {
      if (colorScheme === "dark") {
        const excludedVariables = {};
        excludeVariablesFromRoot(theme.cssVarPrefix).forEach((cssVar) => {
          excludedVariables[cssVar] = css2[cssVar];
          delete css2[cssVar];
        });
        if (rule === "media") {
          return {
            [root]: css2,
            [`@media (prefers-color-scheme: dark)`]: {
              [root]: excludedVariables
            }
          };
        }
        if (rule) {
          return {
            [rule.replace("%s", colorScheme)]: excludedVariables,
            [`${root}, ${rule.replace("%s", colorScheme)}`]: css2
          };
        }
        return {
          [root]: {
            ...css2,
            ...excludedVariables
          }
        };
      }
      if (rule && rule !== "media") {
        return `${root}, ${rule.replace("%s", String(colorScheme))}`;
      }
    } else if (colorScheme) {
      if (rule === "media") {
        return {
          [`@media (prefers-color-scheme: ${String(colorScheme)})`]: {
            [root]: css2
          }
        };
      }
      if (rule) {
        return rule.replace("%s", String(colorScheme));
      }
    }
    return root;
  };
  function assignNode(obj, keys) {
    keys.forEach((k) => {
      if (!obj[k]) {
        obj[k] = {};
      }
    });
  }
  function setColor(obj, key2, defaultValue) {
    if (!obj[key2] && defaultValue) {
      obj[key2] = defaultValue;
    }
  }
  function toRgb(color2) {
    if (typeof color2 !== "string" || !color2.startsWith("hsl")) {
      return color2;
    }
    return hslToRgb(color2);
  }
  function setColorChannel(obj, key2) {
    if (!(`${key2}Channel` in obj)) {
      obj[`${key2}Channel`] = private_safeColorChannel(toRgb(obj[key2]));
    }
  }
  function getSpacingVal(spacingInput) {
    if (typeof spacingInput === "number") {
      return `${spacingInput}px`;
    }
    if (typeof spacingInput === "string" || typeof spacingInput === "function" || Array.isArray(spacingInput)) {
      return spacingInput;
    }
    return "8px";
  }
  const silent = (fn2) => {
    try {
      return fn2();
    } catch (error) {
    }
    return void 0;
  };
  const createGetCssVar = (cssVarPrefix = "mui") => createGetCssVar$1(cssVarPrefix);
  function attachColorScheme$1(colorSchemes, scheme, restTheme, colorScheme) {
    if (!scheme) {
      return void 0;
    }
    scheme = scheme === true ? {} : scheme;
    const mode = colorScheme === "dark" ? "dark" : "light";
    if (!restTheme) {
      colorSchemes[colorScheme] = createColorScheme({
        ...scheme,
        palette: {
          mode,
          ...scheme == null ? void 0 : scheme.palette
        }
      });
      return void 0;
    }
    const {
      palette,
      ...muiTheme
    } = createThemeNoVars({
      ...restTheme,
      palette: {
        mode,
        ...scheme == null ? void 0 : scheme.palette
      }
    });
    colorSchemes[colorScheme] = {
      ...scheme,
      palette,
      opacity: {
        ...getOpacity(mode),
        ...scheme == null ? void 0 : scheme.opacity
      },
      overlays: (scheme == null ? void 0 : scheme.overlays) || getOverlays(mode)
    };
    return muiTheme;
  }
  function createThemeWithVars(options = {}, ...args) {
    const {
      colorSchemes: colorSchemesInput = {
        light: true
      },
      defaultColorScheme: defaultColorSchemeInput,
      disableCssColorScheme = false,
      cssVarPrefix = "mui",
      shouldSkipGeneratingVar: shouldSkipGeneratingVar$1 = shouldSkipGeneratingVar,
      colorSchemeSelector: selector = colorSchemesInput.light && colorSchemesInput.dark ? "media" : void 0,
      rootSelector = ":root",
      ...input
    } = options;
    const firstColorScheme = Object.keys(colorSchemesInput)[0];
    const defaultColorScheme = defaultColorSchemeInput || (colorSchemesInput.light && firstColorScheme !== "light" ? "light" : firstColorScheme);
    const getCssVar = createGetCssVar(cssVarPrefix);
    const {
      [defaultColorScheme]: defaultSchemeInput,
      light: builtInLight,
      dark: builtInDark,
      ...customColorSchemes
    } = colorSchemesInput;
    const colorSchemes = {
      ...customColorSchemes
    };
    let defaultScheme = defaultSchemeInput;
    if (defaultColorScheme === "dark" && !("dark" in colorSchemesInput) || defaultColorScheme === "light" && !("light" in colorSchemesInput)) {
      defaultScheme = true;
    }
    if (!defaultScheme) {
      throw new Error(formatMuiErrorMessage(21, defaultColorScheme));
    }
    const muiTheme = attachColorScheme$1(colorSchemes, defaultScheme, input, defaultColorScheme);
    if (builtInLight && !colorSchemes.light) {
      attachColorScheme$1(colorSchemes, builtInLight, void 0, "light");
    }
    if (builtInDark && !colorSchemes.dark) {
      attachColorScheme$1(colorSchemes, builtInDark, void 0, "dark");
    }
    let theme = {
      defaultColorScheme,
      ...muiTheme,
      cssVarPrefix,
      colorSchemeSelector: selector,
      rootSelector,
      getCssVar,
      colorSchemes,
      font: {
        ...prepareTypographyVars(muiTheme.typography),
        ...muiTheme.font
      },
      spacing: getSpacingVal(input.spacing)
    };
    Object.keys(theme.colorSchemes).forEach((key2) => {
      const palette = theme.colorSchemes[key2].palette;
      const setCssVarColor = (cssVar) => {
        const tokens = cssVar.split("-");
        const color2 = tokens[1];
        const colorToken = tokens[2];
        return getCssVar(cssVar, palette[color2][colorToken]);
      };
      if (palette.mode === "light") {
        setColor(palette.common, "background", "#fff");
        setColor(palette.common, "onBackground", "#000");
      }
      if (palette.mode === "dark") {
        setColor(palette.common, "background", "#000");
        setColor(palette.common, "onBackground", "#fff");
      }
      assignNode(palette, ["Alert", "AppBar", "Avatar", "Button", "Chip", "FilledInput", "LinearProgress", "Skeleton", "Slider", "SnackbarContent", "SpeedDialAction", "StepConnector", "StepContent", "Switch", "TableCell", "Tooltip"]);
      if (palette.mode === "light") {
        setColor(palette.Alert, "errorColor", private_safeDarken(palette.error.light, 0.6));
        setColor(palette.Alert, "infoColor", private_safeDarken(palette.info.light, 0.6));
        setColor(palette.Alert, "successColor", private_safeDarken(palette.success.light, 0.6));
        setColor(palette.Alert, "warningColor", private_safeDarken(palette.warning.light, 0.6));
        setColor(palette.Alert, "errorFilledBg", setCssVarColor("palette-error-main"));
        setColor(palette.Alert, "infoFilledBg", setCssVarColor("palette-info-main"));
        setColor(palette.Alert, "successFilledBg", setCssVarColor("palette-success-main"));
        setColor(palette.Alert, "warningFilledBg", setCssVarColor("palette-warning-main"));
        setColor(palette.Alert, "errorFilledColor", silent(() => palette.getContrastText(palette.error.main)));
        setColor(palette.Alert, "infoFilledColor", silent(() => palette.getContrastText(palette.info.main)));
        setColor(palette.Alert, "successFilledColor", silent(() => palette.getContrastText(palette.success.main)));
        setColor(palette.Alert, "warningFilledColor", silent(() => palette.getContrastText(palette.warning.main)));
        setColor(palette.Alert, "errorStandardBg", private_safeLighten(palette.error.light, 0.9));
        setColor(palette.Alert, "infoStandardBg", private_safeLighten(palette.info.light, 0.9));
        setColor(palette.Alert, "successStandardBg", private_safeLighten(palette.success.light, 0.9));
        setColor(palette.Alert, "warningStandardBg", private_safeLighten(palette.warning.light, 0.9));
        setColor(palette.Alert, "errorIconColor", setCssVarColor("palette-error-main"));
        setColor(palette.Alert, "infoIconColor", setCssVarColor("palette-info-main"));
        setColor(palette.Alert, "successIconColor", setCssVarColor("palette-success-main"));
        setColor(palette.Alert, "warningIconColor", setCssVarColor("palette-warning-main"));
        setColor(palette.AppBar, "defaultBg", setCssVarColor("palette-grey-100"));
        setColor(palette.Avatar, "defaultBg", setCssVarColor("palette-grey-400"));
        setColor(palette.Button, "inheritContainedBg", setCssVarColor("palette-grey-300"));
        setColor(palette.Button, "inheritContainedHoverBg", setCssVarColor("palette-grey-A100"));
        setColor(palette.Chip, "defaultBorder", setCssVarColor("palette-grey-400"));
        setColor(palette.Chip, "defaultAvatarColor", setCssVarColor("palette-grey-700"));
        setColor(palette.Chip, "defaultIconColor", setCssVarColor("palette-grey-700"));
        setColor(palette.FilledInput, "bg", "rgba(0, 0, 0, 0.06)");
        setColor(palette.FilledInput, "hoverBg", "rgba(0, 0, 0, 0.09)");
        setColor(palette.FilledInput, "disabledBg", "rgba(0, 0, 0, 0.12)");
        setColor(palette.LinearProgress, "primaryBg", private_safeLighten(palette.primary.main, 0.62));
        setColor(palette.LinearProgress, "secondaryBg", private_safeLighten(palette.secondary.main, 0.62));
        setColor(palette.LinearProgress, "errorBg", private_safeLighten(palette.error.main, 0.62));
        setColor(palette.LinearProgress, "infoBg", private_safeLighten(palette.info.main, 0.62));
        setColor(palette.LinearProgress, "successBg", private_safeLighten(palette.success.main, 0.62));
        setColor(palette.LinearProgress, "warningBg", private_safeLighten(palette.warning.main, 0.62));
        setColor(palette.Skeleton, "bg", `rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.11)`);
        setColor(palette.Slider, "primaryTrack", private_safeLighten(palette.primary.main, 0.62));
        setColor(palette.Slider, "secondaryTrack", private_safeLighten(palette.secondary.main, 0.62));
        setColor(palette.Slider, "errorTrack", private_safeLighten(palette.error.main, 0.62));
        setColor(palette.Slider, "infoTrack", private_safeLighten(palette.info.main, 0.62));
        setColor(palette.Slider, "successTrack", private_safeLighten(palette.success.main, 0.62));
        setColor(palette.Slider, "warningTrack", private_safeLighten(palette.warning.main, 0.62));
        const snackbarContentBackground = private_safeEmphasize(palette.background.default, 0.8);
        setColor(palette.SnackbarContent, "bg", snackbarContentBackground);
        setColor(palette.SnackbarContent, "color", silent(() => palette.getContrastText(snackbarContentBackground)));
        setColor(palette.SpeedDialAction, "fabHoverBg", private_safeEmphasize(palette.background.paper, 0.15));
        setColor(palette.StepConnector, "border", setCssVarColor("palette-grey-400"));
        setColor(palette.StepContent, "border", setCssVarColor("palette-grey-400"));
        setColor(palette.Switch, "defaultColor", setCssVarColor("palette-common-white"));
        setColor(palette.Switch, "defaultDisabledColor", setCssVarColor("palette-grey-100"));
        setColor(palette.Switch, "primaryDisabledColor", private_safeLighten(palette.primary.main, 0.62));
        setColor(palette.Switch, "secondaryDisabledColor", private_safeLighten(palette.secondary.main, 0.62));
        setColor(palette.Switch, "errorDisabledColor", private_safeLighten(palette.error.main, 0.62));
        setColor(palette.Switch, "infoDisabledColor", private_safeLighten(palette.info.main, 0.62));
        setColor(palette.Switch, "successDisabledColor", private_safeLighten(palette.success.main, 0.62));
        setColor(palette.Switch, "warningDisabledColor", private_safeLighten(palette.warning.main, 0.62));
        setColor(palette.TableCell, "border", private_safeLighten(private_safeAlpha(palette.divider, 1), 0.88));
        setColor(palette.Tooltip, "bg", private_safeAlpha(palette.grey[700], 0.92));
      }
      if (palette.mode === "dark") {
        setColor(palette.Alert, "errorColor", private_safeLighten(palette.error.light, 0.6));
        setColor(palette.Alert, "infoColor", private_safeLighten(palette.info.light, 0.6));
        setColor(palette.Alert, "successColor", private_safeLighten(palette.success.light, 0.6));
        setColor(palette.Alert, "warningColor", private_safeLighten(palette.warning.light, 0.6));
        setColor(palette.Alert, "errorFilledBg", setCssVarColor("palette-error-dark"));
        setColor(palette.Alert, "infoFilledBg", setCssVarColor("palette-info-dark"));
        setColor(palette.Alert, "successFilledBg", setCssVarColor("palette-success-dark"));
        setColor(palette.Alert, "warningFilledBg", setCssVarColor("palette-warning-dark"));
        setColor(palette.Alert, "errorFilledColor", silent(() => palette.getContrastText(palette.error.dark)));
        setColor(palette.Alert, "infoFilledColor", silent(() => palette.getContrastText(palette.info.dark)));
        setColor(palette.Alert, "successFilledColor", silent(() => palette.getContrastText(palette.success.dark)));
        setColor(palette.Alert, "warningFilledColor", silent(() => palette.getContrastText(palette.warning.dark)));
        setColor(palette.Alert, "errorStandardBg", private_safeDarken(palette.error.light, 0.9));
        setColor(palette.Alert, "infoStandardBg", private_safeDarken(palette.info.light, 0.9));
        setColor(palette.Alert, "successStandardBg", private_safeDarken(palette.success.light, 0.9));
        setColor(palette.Alert, "warningStandardBg", private_safeDarken(palette.warning.light, 0.9));
        setColor(palette.Alert, "errorIconColor", setCssVarColor("palette-error-main"));
        setColor(palette.Alert, "infoIconColor", setCssVarColor("palette-info-main"));
        setColor(palette.Alert, "successIconColor", setCssVarColor("palette-success-main"));
        setColor(palette.Alert, "warningIconColor", setCssVarColor("palette-warning-main"));
        setColor(palette.AppBar, "defaultBg", setCssVarColor("palette-grey-900"));
        setColor(palette.AppBar, "darkBg", setCssVarColor("palette-background-paper"));
        setColor(palette.AppBar, "darkColor", setCssVarColor("palette-text-primary"));
        setColor(palette.Avatar, "defaultBg", setCssVarColor("palette-grey-600"));
        setColor(palette.Button, "inheritContainedBg", setCssVarColor("palette-grey-800"));
        setColor(palette.Button, "inheritContainedHoverBg", setCssVarColor("palette-grey-700"));
        setColor(palette.Chip, "defaultBorder", setCssVarColor("palette-grey-700"));
        setColor(palette.Chip, "defaultAvatarColor", setCssVarColor("palette-grey-300"));
        setColor(palette.Chip, "defaultIconColor", setCssVarColor("palette-grey-300"));
        setColor(palette.FilledInput, "bg", "rgba(255, 255, 255, 0.09)");
        setColor(palette.FilledInput, "hoverBg", "rgba(255, 255, 255, 0.13)");
        setColor(palette.FilledInput, "disabledBg", "rgba(255, 255, 255, 0.12)");
        setColor(palette.LinearProgress, "primaryBg", private_safeDarken(palette.primary.main, 0.5));
        setColor(palette.LinearProgress, "secondaryBg", private_safeDarken(palette.secondary.main, 0.5));
        setColor(palette.LinearProgress, "errorBg", private_safeDarken(palette.error.main, 0.5));
        setColor(palette.LinearProgress, "infoBg", private_safeDarken(palette.info.main, 0.5));
        setColor(palette.LinearProgress, "successBg", private_safeDarken(palette.success.main, 0.5));
        setColor(palette.LinearProgress, "warningBg", private_safeDarken(palette.warning.main, 0.5));
        setColor(palette.Skeleton, "bg", `rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.13)`);
        setColor(palette.Slider, "primaryTrack", private_safeDarken(palette.primary.main, 0.5));
        setColor(palette.Slider, "secondaryTrack", private_safeDarken(palette.secondary.main, 0.5));
        setColor(palette.Slider, "errorTrack", private_safeDarken(palette.error.main, 0.5));
        setColor(palette.Slider, "infoTrack", private_safeDarken(palette.info.main, 0.5));
        setColor(palette.Slider, "successTrack", private_safeDarken(palette.success.main, 0.5));
        setColor(palette.Slider, "warningTrack", private_safeDarken(palette.warning.main, 0.5));
        const snackbarContentBackground = private_safeEmphasize(palette.background.default, 0.98);
        setColor(palette.SnackbarContent, "bg", snackbarContentBackground);
        setColor(palette.SnackbarContent, "color", silent(() => palette.getContrastText(snackbarContentBackground)));
        setColor(palette.SpeedDialAction, "fabHoverBg", private_safeEmphasize(palette.background.paper, 0.15));
        setColor(palette.StepConnector, "border", setCssVarColor("palette-grey-600"));
        setColor(palette.StepContent, "border", setCssVarColor("palette-grey-600"));
        setColor(palette.Switch, "defaultColor", setCssVarColor("palette-grey-300"));
        setColor(palette.Switch, "defaultDisabledColor", setCssVarColor("palette-grey-600"));
        setColor(palette.Switch, "primaryDisabledColor", private_safeDarken(palette.primary.main, 0.55));
        setColor(palette.Switch, "secondaryDisabledColor", private_safeDarken(palette.secondary.main, 0.55));
        setColor(palette.Switch, "errorDisabledColor", private_safeDarken(palette.error.main, 0.55));
        setColor(palette.Switch, "infoDisabledColor", private_safeDarken(palette.info.main, 0.55));
        setColor(palette.Switch, "successDisabledColor", private_safeDarken(palette.success.main, 0.55));
        setColor(palette.Switch, "warningDisabledColor", private_safeDarken(palette.warning.main, 0.55));
        setColor(palette.TableCell, "border", private_safeDarken(private_safeAlpha(palette.divider, 1), 0.68));
        setColor(palette.Tooltip, "bg", private_safeAlpha(palette.grey[700], 0.92));
      }
      setColorChannel(palette.background, "default");
      setColorChannel(palette.background, "paper");
      setColorChannel(palette.common, "background");
      setColorChannel(palette.common, "onBackground");
      setColorChannel(palette, "divider");
      Object.keys(palette).forEach((color2) => {
        const colors = palette[color2];
        if (color2 !== "tonalOffset" && colors && typeof colors === "object") {
          if (colors.main) {
            setColor(palette[color2], "mainChannel", private_safeColorChannel(toRgb(colors.main)));
          }
          if (colors.light) {
            setColor(palette[color2], "lightChannel", private_safeColorChannel(toRgb(colors.light)));
          }
          if (colors.dark) {
            setColor(palette[color2], "darkChannel", private_safeColorChannel(toRgb(colors.dark)));
          }
          if (colors.contrastText) {
            setColor(palette[color2], "contrastTextChannel", private_safeColorChannel(toRgb(colors.contrastText)));
          }
          if (color2 === "text") {
            setColorChannel(palette[color2], "primary");
            setColorChannel(palette[color2], "secondary");
          }
          if (color2 === "action") {
            if (colors.active) {
              setColorChannel(palette[color2], "active");
            }
            if (colors.selected) {
              setColorChannel(palette[color2], "selected");
            }
          }
        }
      });
    });
    theme = args.reduce((acc, argument) => deepmerge(acc, argument), theme);
    const parserConfig = {
      prefix: cssVarPrefix,
      disableCssColorScheme,
      shouldSkipGeneratingVar: shouldSkipGeneratingVar$1,
      getSelector: defaultGetSelector(theme)
    };
    const {
      vars,
      generateThemeVars,
      generateStyleSheets
    } = prepareCssVars(theme, parserConfig);
    theme.vars = vars;
    Object.entries(theme.colorSchemes[theme.defaultColorScheme]).forEach(([key2, value]) => {
      theme[key2] = value;
    });
    theme.generateThemeVars = generateThemeVars;
    theme.generateStyleSheets = generateStyleSheets;
    theme.generateSpacing = function generateSpacing() {
      return createSpacing(input.spacing, createUnarySpacing(this));
    };
    theme.getColorSchemeSelector = createGetColorSchemeSelector(selector);
    theme.spacing = theme.generateSpacing();
    theme.shouldSkipGeneratingVar = shouldSkipGeneratingVar$1;
    theme.unstable_sxConfig = {
      ...defaultSxConfig,
      ...input == null ? void 0 : input.unstable_sxConfig
    };
    theme.unstable_sx = function sx(props) {
      return styleFunctionSx({
        sx: props,
        theme: this
      });
    };
    theme.toRuntimeSource = stringifyTheme;
    return theme;
  }
  function attachColorScheme(theme, scheme, colorScheme) {
    if (!theme.colorSchemes) {
      return void 0;
    }
    if (colorScheme) {
      theme.colorSchemes[scheme] = {
        ...colorScheme !== true && colorScheme,
        palette: createPalette({
          ...colorScheme === true ? {} : colorScheme.palette,
          mode: scheme
        })
        // cast type to skip module augmentation test
      };
    }
  }
  function createTheme(options = {}, ...args) {
    const {
      palette,
      cssVariables = false,
      colorSchemes: initialColorSchemes = !palette ? {
        light: true
      } : void 0,
      defaultColorScheme: initialDefaultColorScheme = palette == null ? void 0 : palette.mode,
      ...rest
    } = options;
    const defaultColorSchemeInput = initialDefaultColorScheme || "light";
    const defaultScheme = initialColorSchemes == null ? void 0 : initialColorSchemes[defaultColorSchemeInput];
    const colorSchemesInput = {
      ...initialColorSchemes,
      ...palette ? {
        [defaultColorSchemeInput]: {
          ...typeof defaultScheme !== "boolean" && defaultScheme,
          palette
        }
      } : void 0
    };
    if (cssVariables === false) {
      if (!("colorSchemes" in options)) {
        return createThemeNoVars(options, ...args);
      }
      let paletteOptions = palette;
      if (!("palette" in options)) {
        if (colorSchemesInput[defaultColorSchemeInput]) {
          if (colorSchemesInput[defaultColorSchemeInput] !== true) {
            paletteOptions = colorSchemesInput[defaultColorSchemeInput].palette;
          } else if (defaultColorSchemeInput === "dark") {
            paletteOptions = {
              mode: "dark"
            };
          }
        }
      }
      const theme = createThemeNoVars({
        ...options,
        palette: paletteOptions
      }, ...args);
      theme.defaultColorScheme = defaultColorSchemeInput;
      theme.colorSchemes = colorSchemesInput;
      if (theme.palette.mode === "light") {
        theme.colorSchemes.light = {
          ...colorSchemesInput.light !== true && colorSchemesInput.light,
          palette: theme.palette
        };
        attachColorScheme(theme, "dark", colorSchemesInput.dark);
      }
      if (theme.palette.mode === "dark") {
        theme.colorSchemes.dark = {
          ...colorSchemesInput.dark !== true && colorSchemesInput.dark,
          palette: theme.palette
        };
        attachColorScheme(theme, "light", colorSchemesInput.light);
      }
      return theme;
    }
    if (!palette && !("light" in colorSchemesInput) && defaultColorSchemeInput === "light") {
      colorSchemesInput.light = true;
    }
    return createThemeWithVars({
      ...rest,
      colorSchemes: colorSchemesInput,
      defaultColorScheme: defaultColorSchemeInput,
      ...typeof cssVariables !== "boolean" && cssVariables
    }, ...args);
  }
  const defaultTheme$1 = createTheme();
  const THEME_ID = "$$material";
  function useTheme() {
    const theme = useTheme$2(defaultTheme$1);
    return theme[THEME_ID] || theme;
  }
  function GlobalStyles(props) {
    return /* @__PURE__ */ jsxRuntimeExports.jsx(GlobalStyles$1, {
      ...props,
      defaultTheme: defaultTheme$1,
      themeId: THEME_ID
    });
  }
  function slotShouldForwardProp(prop) {
    return prop !== "ownerState" && prop !== "theme" && prop !== "sx" && prop !== "as";
  }
  const rootShouldForwardProp = (prop) => slotShouldForwardProp(prop) && prop !== "classes";
  const styled = createStyled2({
    themeId: THEME_ID,
    defaultTheme: defaultTheme$1,
    rootShouldForwardProp
  });
  function globalCss(styles2) {
    return function GlobalStylesWrapper(props) {
      return (
        // Pigment CSS `globalCss` support callback with theme inside an object but `GlobalStyles` support theme as a callback value.
        /* @__PURE__ */ jsxRuntimeExports.jsx(GlobalStyles, {
          styles: typeof styles2 === "function" ? (theme) => styles2({
            theme,
            ...props
          }) : styles2
        })
      );
    };
  }
  function internal_createExtendSxProp() {
    return extendSxProp$1;
  }
  const memoTheme = unstable_memoTheme;
  function useDefaultProps(params) {
    return useDefaultProps$1(params);
  }
  function getSvgIconUtilityClass(slot) {
    return generateUtilityClass("MuiSvgIcon", slot);
  }
  generateUtilityClasses("MuiSvgIcon", ["root", "colorPrimary", "colorSecondary", "colorAction", "colorError", "colorDisabled", "fontSizeInherit", "fontSizeSmall", "fontSizeMedium", "fontSizeLarge"]);
  const useUtilityClasses$H = (ownerState) => {
    const {
      color: color2,
      fontSize,
      classes
    } = ownerState;
    const slots = {
      root: ["root", color2 !== "inherit" && `color${capitalize(color2)}`, `fontSize${capitalize(fontSize)}`]
    };
    return composeClasses(slots, getSvgIconUtilityClass, classes);
  };
  const SvgIconRoot = styled("svg", {
    name: "MuiSvgIcon",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.color !== "inherit" && styles2[`color${capitalize(ownerState.color)}`], styles2[`fontSize${capitalize(ownerState.fontSize)}`]];
    }
  })(memoTheme(({
    theme
  }) => {
    var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
    return {
      userSelect: "none",
      width: "1em",
      height: "1em",
      display: "inline-block",
      flexShrink: 0,
      transition: (_d = (_a = theme.transitions) == null ? void 0 : _a.create) == null ? void 0 : _d.call(_a, "fill", {
        duration: (_c = (_b = (theme.vars ?? theme).transitions) == null ? void 0 : _b.duration) == null ? void 0 : _c.shorter
      }),
      variants: [
        {
          props: (props) => !props.hasSvgAsChild,
          style: {
            // the <svg> will define the property that has `currentColor`
            // for example heroicons uses fill="none" and stroke="currentColor"
            fill: "currentColor"
          }
        },
        {
          props: {
            fontSize: "inherit"
          },
          style: {
            fontSize: "inherit"
          }
        },
        {
          props: {
            fontSize: "small"
          },
          style: {
            fontSize: ((_f = (_e = theme.typography) == null ? void 0 : _e.pxToRem) == null ? void 0 : _f.call(_e, 20)) || "1.25rem"
          }
        },
        {
          props: {
            fontSize: "medium"
          },
          style: {
            fontSize: ((_h = (_g = theme.typography) == null ? void 0 : _g.pxToRem) == null ? void 0 : _h.call(_g, 24)) || "1.5rem"
          }
        },
        {
          props: {
            fontSize: "large"
          },
          style: {
            fontSize: ((_j = (_i = theme.typography) == null ? void 0 : _i.pxToRem) == null ? void 0 : _j.call(_i, 35)) || "2.1875rem"
          }
        },
        // TODO v5 deprecate color prop, v6 remove for sx
        ...Object.entries((theme.vars ?? theme).palette).filter(([, value]) => value && value.main).map(([color2]) => {
          var _a2, _b2;
          return {
            props: {
              color: color2
            },
            style: {
              color: (_b2 = (_a2 = (theme.vars ?? theme).palette) == null ? void 0 : _a2[color2]) == null ? void 0 : _b2.main
            }
          };
        }),
        {
          props: {
            color: "action"
          },
          style: {
            color: (_l = (_k = (theme.vars ?? theme).palette) == null ? void 0 : _k.action) == null ? void 0 : _l.active
          }
        },
        {
          props: {
            color: "disabled"
          },
          style: {
            color: (_n = (_m = (theme.vars ?? theme).palette) == null ? void 0 : _m.action) == null ? void 0 : _n.disabled
          }
        },
        {
          props: {
            color: "inherit"
          },
          style: {
            color: void 0
          }
        }
      ]
    };
  }));
  const SvgIcon = /* @__PURE__ */ React__namespace.forwardRef(function SvgIcon2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiSvgIcon"
    });
    const {
      children,
      className,
      color: color2 = "inherit",
      component = "svg",
      fontSize = "medium",
      htmlColor,
      inheritViewBox = false,
      titleAccess,
      viewBox = "0 0 24 24",
      ...other
    } = props;
    const hasSvgAsChild = /* @__PURE__ */ React__namespace.isValidElement(children) && children.type === "svg";
    const ownerState = {
      ...props,
      color: color2,
      component,
      fontSize,
      instanceFontSize: inProps.fontSize,
      inheritViewBox,
      viewBox,
      hasSvgAsChild
    };
    const more = {};
    if (!inheritViewBox) {
      more.viewBox = viewBox;
    }
    const classes = useUtilityClasses$H(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(SvgIconRoot, {
      as: component,
      className: clsx(classes.root, className),
      focusable: "false",
      color: htmlColor,
      "aria-hidden": titleAccess ? void 0 : true,
      role: titleAccess ? "img" : void 0,
      ref,
      ...more,
      ...other,
      ...hasSvgAsChild && children.props,
      ownerState,
      children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /* @__PURE__ */ jsxRuntimeExports.jsx("title", {
        children: titleAccess
      }) : null]
    });
  });
  SvgIcon.muiName = "SvgIcon";
  function createSvgIcon(path, displayName) {
    function Component(props, ref) {
      return /* @__PURE__ */ jsxRuntimeExports.jsx(SvgIcon, {
        "data-testid": void 0,
        ref,
        ...props,
        children: path
      });
    }
    Component.muiName = SvgIcon.muiName;
    return /* @__PURE__ */ React__namespace.memo(/* @__PURE__ */ React__namespace.forwardRef(Component));
  }
  function isEventHandler(key2, value) {
    const thirdCharCode = key2.charCodeAt(2);
    return key2[0] === "o" && key2[1] === "n" && thirdCharCode >= 65 && thirdCharCode <= 90 && typeof value === "function";
  }
  function mergeSlotProps(externalSlotProps, defaultSlotProps) {
    if (!externalSlotProps) {
      return defaultSlotProps;
    }
    function extractHandlers(externalSlotPropsValue, defaultSlotPropsValue) {
      const handlers2 = {};
      Object.keys(defaultSlotPropsValue).forEach((key2) => {
        if (isEventHandler(key2, defaultSlotPropsValue[key2]) && typeof externalSlotPropsValue[key2] === "function") {
          handlers2[key2] = (...args) => {
            externalSlotPropsValue[key2](...args);
            defaultSlotPropsValue[key2](...args);
          };
        }
      });
      return handlers2;
    }
    if (typeof externalSlotProps === "function" || typeof defaultSlotProps === "function") {
      return (ownerState) => {
        const defaultSlotPropsValue = typeof defaultSlotProps === "function" ? defaultSlotProps(ownerState) : defaultSlotProps;
        const externalSlotPropsValue = typeof externalSlotProps === "function" ? externalSlotProps({
          ...ownerState,
          ...defaultSlotPropsValue
        }) : externalSlotProps;
        const className2 = clsx(ownerState == null ? void 0 : ownerState.className, defaultSlotPropsValue == null ? void 0 : defaultSlotPropsValue.className, externalSlotPropsValue == null ? void 0 : externalSlotPropsValue.className);
        const handlers2 = extractHandlers(externalSlotPropsValue, defaultSlotPropsValue);
        return {
          ...defaultSlotPropsValue,
          ...externalSlotPropsValue,
          ...handlers2,
          ...!!className2 && {
            className: className2
          },
          ...(defaultSlotPropsValue == null ? void 0 : defaultSlotPropsValue.style) && (externalSlotPropsValue == null ? void 0 : externalSlotPropsValue.style) && {
            style: {
              ...defaultSlotPropsValue.style,
              ...externalSlotPropsValue.style
            }
          },
          ...(defaultSlotPropsValue == null ? void 0 : defaultSlotPropsValue.sx) && (externalSlotPropsValue == null ? void 0 : externalSlotPropsValue.sx) && {
            sx: [...Array.isArray(defaultSlotPropsValue.sx) ? defaultSlotPropsValue.sx : [defaultSlotPropsValue.sx], ...Array.isArray(externalSlotPropsValue.sx) ? externalSlotPropsValue.sx : [externalSlotPropsValue.sx]]
          }
        };
      };
    }
    const typedDefaultSlotProps = defaultSlotProps;
    const handlers = extractHandlers(externalSlotProps, typedDefaultSlotProps);
    const className = clsx(typedDefaultSlotProps == null ? void 0 : typedDefaultSlotProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);
    return {
      ...defaultSlotProps,
      ...externalSlotProps,
      ...handlers,
      ...!!className && {
        className
      },
      ...(typedDefaultSlotProps == null ? void 0 : typedDefaultSlotProps.style) && (externalSlotProps == null ? void 0 : externalSlotProps.style) && {
        style: {
          ...typedDefaultSlotProps.style,
          ...externalSlotProps.style
        }
      },
      ...(typedDefaultSlotProps == null ? void 0 : typedDefaultSlotProps.sx) && (externalSlotProps == null ? void 0 : externalSlotProps.sx) && {
        sx: [...Array.isArray(typedDefaultSlotProps.sx) ? typedDefaultSlotProps.sx : [typedDefaultSlotProps.sx], ...Array.isArray(externalSlotProps.sx) ? externalSlotProps.sx : [externalSlotProps.sx]]
      }
    };
  }
  class LazyRipple {
    constructor() {
      __publicField(this, "mountEffect", () => {
        if (this.shouldMount && !this.didMount) {
          if (this.ref.current !== null) {
            this.didMount = true;
            this.mounted.resolve();
          }
        }
      });
      this.ref = {
        current: null
      };
      this.mounted = null;
      this.didMount = false;
      this.shouldMount = false;
      this.setShouldMount = null;
    }
    /** React ref to the ripple instance */
    /** If the ripple component should be mounted */
    /** Promise that resolves when the ripple component is mounted */
    /** If the ripple component has been mounted */
    /** React state hook setter */
    static create() {
      return new LazyRipple();
    }
    static use() {
      const ripple = useLazyRef(LazyRipple.create).current;
      const [shouldMount, setShouldMount] = React__namespace.useState(false);
      ripple.shouldMount = shouldMount;
      ripple.setShouldMount = setShouldMount;
      React__namespace.useEffect(ripple.mountEffect, [shouldMount]);
      return ripple;
    }
    mount() {
      if (!this.mounted) {
        this.mounted = createControlledPromise();
        this.shouldMount = true;
        this.setShouldMount(this.shouldMount);
      }
      return this.mounted;
    }
    /* Ripple API */
    start(...args) {
      this.mount().then(() => {
        var _a;
        return (_a = this.ref.current) == null ? void 0 : _a.start(...args);
      });
    }
    stop(...args) {
      this.mount().then(() => {
        var _a;
        return (_a = this.ref.current) == null ? void 0 : _a.stop(...args);
      });
    }
    pulsate(...args) {
      this.mount().then(() => {
        var _a;
        return (_a = this.ref.current) == null ? void 0 : _a.pulsate(...args);
      });
    }
  }
  function useLazyRipple() {
    return LazyRipple.use();
  }
  function createControlledPromise() {
    let resolve;
    let reject;
    const p = new Promise((resolveFn, rejectFn) => {
      resolve = resolveFn;
      reject = rejectFn;
    });
    p.resolve = resolve;
    p.reject = reject;
    return p;
  }
  function _objectWithoutPropertiesLoose(r2, e) {
    if (null == r2) return {};
    var t = {};
    for (var n in r2) if ({}.hasOwnProperty.call(r2, n)) {
      if (-1 !== e.indexOf(n)) continue;
      t[n] = r2[n];
    }
    return t;
  }
  function _setPrototypeOf(t, e) {
    return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) {
      return t2.__proto__ = e2, t2;
    }, _setPrototypeOf(t, e);
  }
  function _inheritsLoose(t, o) {
    t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o);
  }
  const config = {
    disabled: false
  };
  const TransitionGroupContext = React.createContext(null);
  var forceReflow = function forceReflow2(node2) {
    return node2.scrollTop;
  };
  var UNMOUNTED = "unmounted";
  var EXITED = "exited";
  var ENTERING = "entering";
  var ENTERED = "entered";
  var EXITING = "exiting";
  var Transition = /* @__PURE__ */ function(_React$Component) {
    _inheritsLoose(Transition2, _React$Component);
    function Transition2(props, context) {
      var _this;
      _this = _React$Component.call(this, props, context) || this;
      var parentGroup = context;
      var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;
      var initialStatus;
      _this.appearStatus = null;
      if (props.in) {
        if (appear) {
          initialStatus = EXITED;
          _this.appearStatus = ENTERING;
        } else {
          initialStatus = ENTERED;
        }
      } else {
        if (props.unmountOnExit || props.mountOnEnter) {
          initialStatus = UNMOUNTED;
        } else {
          initialStatus = EXITED;
        }
      }
      _this.state = {
        status: initialStatus
      };
      _this.nextCallback = null;
      return _this;
    }
    Transition2.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {
      var nextIn = _ref.in;
      if (nextIn && prevState.status === UNMOUNTED) {
        return {
          status: EXITED
        };
      }
      return null;
    };
    var _proto = Transition2.prototype;
    _proto.componentDidMount = function componentDidMount() {
      this.updateStatus(true, this.appearStatus);
    };
    _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
      var nextStatus = null;
      if (prevProps !== this.props) {
        var status = this.state.status;
        if (this.props.in) {
          if (status !== ENTERING && status !== ENTERED) {
            nextStatus = ENTERING;
          }
        } else {
          if (status === ENTERING || status === ENTERED) {
            nextStatus = EXITING;
          }
        }
      }
      this.updateStatus(false, nextStatus);
    };
    _proto.componentWillUnmount = function componentWillUnmount() {
      this.cancelNextCallback();
    };
    _proto.getTimeouts = function getTimeouts() {
      var timeout2 = this.props.timeout;
      var exit, enter, appear;
      exit = enter = appear = timeout2;
      if (timeout2 != null && typeof timeout2 !== "number") {
        exit = timeout2.exit;
        enter = timeout2.enter;
        appear = timeout2.appear !== void 0 ? timeout2.appear : enter;
      }
      return {
        exit,
        enter,
        appear
      };
    };
    _proto.updateStatus = function updateStatus(mounting, nextStatus) {
      if (mounting === void 0) {
        mounting = false;
      }
      if (nextStatus !== null) {
        this.cancelNextCallback();
        if (nextStatus === ENTERING) {
          if (this.props.unmountOnExit || this.props.mountOnEnter) {
            var node2 = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM__default.findDOMNode(this);
            if (node2) forceReflow(node2);
          }
          this.performEnter(mounting);
        } else {
          this.performExit();
        }
      } else if (this.props.unmountOnExit && this.state.status === EXITED) {
        this.setState({
          status: UNMOUNTED
        });
      }
    };
    _proto.performEnter = function performEnter(mounting) {
      var _this2 = this;
      var enter = this.props.enter;
      var appearing = this.context ? this.context.isMounting : mounting;
      var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM__default.findDOMNode(this), appearing], maybeNode = _ref2[0], maybeAppearing = _ref2[1];
      var timeouts = this.getTimeouts();
      var enterTimeout = appearing ? timeouts.appear : timeouts.enter;
      if (!mounting && !enter || config.disabled) {
        this.safeSetState({
          status: ENTERED
        }, function() {
          _this2.props.onEntered(maybeNode);
        });
        return;
      }
      this.props.onEnter(maybeNode, maybeAppearing);
      this.safeSetState({
        status: ENTERING
      }, function() {
        _this2.props.onEntering(maybeNode, maybeAppearing);
        _this2.onTransitionEnd(enterTimeout, function() {
          _this2.safeSetState({
            status: ENTERED
          }, function() {
            _this2.props.onEntered(maybeNode, maybeAppearing);
          });
        });
      });
    };
    _proto.performExit = function performExit() {
      var _this3 = this;
      var exit = this.props.exit;
      var timeouts = this.getTimeouts();
      var maybeNode = this.props.nodeRef ? void 0 : ReactDOM__default.findDOMNode(this);
      if (!exit || config.disabled) {
        this.safeSetState({
          status: EXITED
        }, function() {
          _this3.props.onExited(maybeNode);
        });
        return;
      }
      this.props.onExit(maybeNode);
      this.safeSetState({
        status: EXITING
      }, function() {
        _this3.props.onExiting(maybeNode);
        _this3.onTransitionEnd(timeouts.exit, function() {
          _this3.safeSetState({
            status: EXITED
          }, function() {
            _this3.props.onExited(maybeNode);
          });
        });
      });
    };
    _proto.cancelNextCallback = function cancelNextCallback() {
      if (this.nextCallback !== null) {
        this.nextCallback.cancel();
        this.nextCallback = null;
      }
    };
    _proto.safeSetState = function safeSetState(nextState, callback) {
      callback = this.setNextCallback(callback);
      this.setState(nextState, callback);
    };
    _proto.setNextCallback = function setNextCallback(callback) {
      var _this4 = this;
      var active = true;
      this.nextCallback = function(event) {
        if (active) {
          active = false;
          _this4.nextCallback = null;
          callback(event);
        }
      };
      this.nextCallback.cancel = function() {
        active = false;
      };
      return this.nextCallback;
    };
    _proto.onTransitionEnd = function onTransitionEnd(timeout2, handler) {
      this.setNextCallback(handler);
      var node2 = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM__default.findDOMNode(this);
      var doesNotHaveTimeoutOrListener = timeout2 == null && !this.props.addEndListener;
      if (!node2 || doesNotHaveTimeoutOrListener) {
        setTimeout(this.nextCallback, 0);
        return;
      }
      if (this.props.addEndListener) {
        var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node2, this.nextCallback], maybeNode = _ref3[0], maybeNextCallback = _ref3[1];
        this.props.addEndListener(maybeNode, maybeNextCallback);
      }
      if (timeout2 != null) {
        setTimeout(this.nextCallback, timeout2);
      }
    };
    _proto.render = function render() {
      var status = this.state.status;
      if (status === UNMOUNTED) {
        return null;
      }
      var _this$props = this.props, children = _this$props.children;
      _this$props.in;
      _this$props.mountOnEnter;
      _this$props.unmountOnExit;
      _this$props.appear;
      _this$props.enter;
      _this$props.exit;
      _this$props.timeout;
      _this$props.addEndListener;
      _this$props.onEnter;
      _this$props.onEntering;
      _this$props.onEntered;
      _this$props.onExit;
      _this$props.onExiting;
      _this$props.onExited;
      _this$props.nodeRef;
      var childProps = _objectWithoutPropertiesLoose(_this$props, ["children", "in", "mountOnEnter", "unmountOnExit", "appear", "enter", "exit", "timeout", "addEndListener", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "nodeRef"]);
      return (
        // allows for nested Transitions
        /* @__PURE__ */ React.createElement(TransitionGroupContext.Provider, {
          value: null
        }, typeof children === "function" ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))
      );
    };
    return Transition2;
  }(React.Component);
  Transition.contextType = TransitionGroupContext;
  Transition.propTypes = {};
  function noop$2() {
  }
  Transition.defaultProps = {
    in: false,
    mountOnEnter: false,
    unmountOnExit: false,
    appear: false,
    enter: true,
    exit: true,
    onEnter: noop$2,
    onEntering: noop$2,
    onEntered: noop$2,
    onExit: noop$2,
    onExiting: noop$2,
    onExited: noop$2
  };
  Transition.UNMOUNTED = UNMOUNTED;
  Transition.EXITED = EXITED;
  Transition.ENTERING = ENTERING;
  Transition.ENTERED = ENTERED;
  Transition.EXITING = EXITING;
  function _assertThisInitialized(e) {
    if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    return e;
  }
  function getChildMapping(children, mapFn) {
    var mapper = function mapper2(child) {
      return mapFn && React.isValidElement(child) ? mapFn(child) : child;
    };
    var result = /* @__PURE__ */ Object.create(null);
    if (children) React.Children.map(children, function(c) {
      return c;
    }).forEach(function(child) {
      result[child.key] = mapper(child);
    });
    return result;
  }
  function mergeChildMappings(prev2, next2) {
    prev2 = prev2 || {};
    next2 = next2 || {};
    function getValueForKey(key2) {
      return key2 in next2 ? next2[key2] : prev2[key2];
    }
    var nextKeysPending = /* @__PURE__ */ Object.create(null);
    var pendingKeys = [];
    for (var prevKey in prev2) {
      if (prevKey in next2) {
        if (pendingKeys.length) {
          nextKeysPending[prevKey] = pendingKeys;
          pendingKeys = [];
        }
      } else {
        pendingKeys.push(prevKey);
      }
    }
    var i;
    var childMapping = {};
    for (var nextKey in next2) {
      if (nextKeysPending[nextKey]) {
        for (i = 0; i < nextKeysPending[nextKey].length; i++) {
          var pendingNextKey = nextKeysPending[nextKey][i];
          childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);
        }
      }
      childMapping[nextKey] = getValueForKey(nextKey);
    }
    for (i = 0; i < pendingKeys.length; i++) {
      childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);
    }
    return childMapping;
  }
  function getProp(child, prop, props) {
    return props[prop] != null ? props[prop] : child.props[prop];
  }
  function getInitialChildMapping(props, onExited) {
    return getChildMapping(props.children, function(child) {
      return React.cloneElement(child, {
        onExited: onExited.bind(null, child),
        in: true,
        appear: getProp(child, "appear", props),
        enter: getProp(child, "enter", props),
        exit: getProp(child, "exit", props)
      });
    });
  }
  function getNextChildMapping(nextProps, prevChildMapping, onExited) {
    var nextChildMapping = getChildMapping(nextProps.children);
    var children = mergeChildMappings(prevChildMapping, nextChildMapping);
    Object.keys(children).forEach(function(key2) {
      var child = children[key2];
      if (!React.isValidElement(child)) return;
      var hasPrev = key2 in prevChildMapping;
      var hasNext = key2 in nextChildMapping;
      var prevChild = prevChildMapping[key2];
      var isLeaving = React.isValidElement(prevChild) && !prevChild.props.in;
      if (hasNext && (!hasPrev || isLeaving)) {
        children[key2] = React.cloneElement(child, {
          onExited: onExited.bind(null, child),
          in: true,
          exit: getProp(child, "exit", nextProps),
          enter: getProp(child, "enter", nextProps)
        });
      } else if (!hasNext && hasPrev && !isLeaving) {
        children[key2] = React.cloneElement(child, {
          in: false
        });
      } else if (hasNext && hasPrev && React.isValidElement(prevChild)) {
        children[key2] = React.cloneElement(child, {
          onExited: onExited.bind(null, child),
          in: prevChild.props.in,
          exit: getProp(child, "exit", nextProps),
          enter: getProp(child, "enter", nextProps)
        });
      }
    });
    return children;
  }
  var values = Object.values || function(obj) {
    return Object.keys(obj).map(function(k) {
      return obj[k];
    });
  };
  var defaultProps = {
    component: "div",
    childFactory: function childFactory(child) {
      return child;
    }
  };
  var TransitionGroup = /* @__PURE__ */ function(_React$Component) {
    _inheritsLoose(TransitionGroup2, _React$Component);
    function TransitionGroup2(props, context) {
      var _this;
      _this = _React$Component.call(this, props, context) || this;
      var handleExited = _this.handleExited.bind(_assertThisInitialized(_this));
      _this.state = {
        contextValue: {
          isMounting: true
        },
        handleExited,
        firstRender: true
      };
      return _this;
    }
    var _proto = TransitionGroup2.prototype;
    _proto.componentDidMount = function componentDidMount() {
      this.mounted = true;
      this.setState({
        contextValue: {
          isMounting: false
        }
      });
    };
    _proto.componentWillUnmount = function componentWillUnmount() {
      this.mounted = false;
    };
    TransitionGroup2.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {
      var prevChildMapping = _ref.children, handleExited = _ref.handleExited, firstRender = _ref.firstRender;
      return {
        children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),
        firstRender: false
      };
    };
    _proto.handleExited = function handleExited(child, node2) {
      var currentChildMapping = getChildMapping(this.props.children);
      if (child.key in currentChildMapping) return;
      if (child.props.onExited) {
        child.props.onExited(node2);
      }
      if (this.mounted) {
        this.setState(function(state) {
          var children = _extends({}, state.children);
          delete children[child.key];
          return {
            children
          };
        });
      }
    };
    _proto.render = function render() {
      var _this$props = this.props, Component = _this$props.component, childFactory2 = _this$props.childFactory, props = _objectWithoutPropertiesLoose(_this$props, ["component", "childFactory"]);
      var contextValue = this.state.contextValue;
      var children = values(this.state.children).map(childFactory2);
      delete props.appear;
      delete props.enter;
      delete props.exit;
      if (Component === null) {
        return /* @__PURE__ */ React.createElement(TransitionGroupContext.Provider, {
          value: contextValue
        }, children);
      }
      return /* @__PURE__ */ React.createElement(TransitionGroupContext.Provider, {
        value: contextValue
      }, /* @__PURE__ */ React.createElement(Component, props, children));
    };
    return TransitionGroup2;
  }(React.Component);
  TransitionGroup.propTypes = {};
  TransitionGroup.defaultProps = defaultProps;
  function Ripple(props) {
    const {
      className,
      classes,
      pulsate = false,
      rippleX,
      rippleY,
      rippleSize,
      in: inProp,
      onExited,
      timeout
    } = props;
    const [leaving, setLeaving] = React__namespace.useState(false);
    const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);
    const rippleStyles = {
      width: rippleSize,
      height: rippleSize,
      top: -(rippleSize / 2) + rippleY,
      left: -(rippleSize / 2) + rippleX
    };
    const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);
    if (!inProp && !leaving) {
      setLeaving(true);
    }
    React__namespace.useEffect(() => {
      if (!inProp && onExited != null) {
        const timeoutId = setTimeout(onExited, timeout);
        return () => {
          clearTimeout(timeoutId);
        };
      }
      return void 0;
    }, [onExited, inProp, timeout]);
    return /* @__PURE__ */ jsxRuntimeExports.jsx("span", {
      className: rippleClassName,
      style: rippleStyles,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", {
        className: childClassName
      })
    });
  }
  const touchRippleClasses = generateUtilityClasses("MuiTouchRipple", ["root", "ripple", "rippleVisible", "ripplePulsate", "child", "childLeaving", "childPulsate"]);
  const DURATION = 550;
  const DELAY_RIPPLE = 80;
  const enterKeyframe = keyframes`
  0% {
    transform: scale(0);
    opacity: 0.1;
  }

  100% {
    transform: scale(1);
    opacity: 0.3;
  }
`;
  const exitKeyframe = keyframes`
  0% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
`;
  const pulsateKeyframe = keyframes`
  0% {
    transform: scale(1);
  }

  50% {
    transform: scale(0.92);
  }

  100% {
    transform: scale(1);
  }
`;
  const TouchRippleRoot = styled("span", {
    name: "MuiTouchRipple",
    slot: "Root"
  })({
    overflow: "hidden",
    pointerEvents: "none",
    position: "absolute",
    zIndex: 0,
    top: 0,
    right: 0,
    bottom: 0,
    left: 0,
    borderRadius: "inherit"
  });
  const TouchRippleRipple = styled(Ripple, {
    name: "MuiTouchRipple",
    slot: "Ripple"
  })`
  opacity: 0;
  position: absolute;

  &.${touchRippleClasses.rippleVisible} {
    opacity: 0.3;
    transform: scale(1);
    animation-name: ${enterKeyframe};
    animation-duration: ${DURATION}ms;
    animation-timing-function: ${({
  theme
}) => theme.transitions.easing.easeInOut};
  }

  &.${touchRippleClasses.ripplePulsate} {
    animation-duration: ${({
  theme
}) => theme.transitions.duration.shorter}ms;
  }

  & .${touchRippleClasses.child} {
    opacity: 1;
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background-color: currentColor;
  }

  & .${touchRippleClasses.childLeaving} {
    opacity: 0;
    animation-name: ${exitKeyframe};
    animation-duration: ${DURATION}ms;
    animation-timing-function: ${({
  theme
}) => theme.transitions.easing.easeInOut};
  }

  & .${touchRippleClasses.childPulsate} {
    position: absolute;
    /* @noflip */
    left: 0px;
    top: 0;
    animation-name: ${pulsateKeyframe};
    animation-duration: 2500ms;
    animation-timing-function: ${({
  theme
}) => theme.transitions.easing.easeInOut};
    animation-iteration-count: infinite;
    animation-delay: 200ms;
  }
`;
  const TouchRipple = /* @__PURE__ */ React__namespace.forwardRef(function TouchRipple2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiTouchRipple"
    });
    const {
      center: centerProp = false,
      classes = {},
      className,
      ...other
    } = props;
    const [ripples, setRipples] = React__namespace.useState([]);
    const nextKey = React__namespace.useRef(0);
    const rippleCallback = React__namespace.useRef(null);
    React__namespace.useEffect(() => {
      if (rippleCallback.current) {
        rippleCallback.current();
        rippleCallback.current = null;
      }
    }, [ripples]);
    const ignoringMouseDown = React__namespace.useRef(false);
    const startTimer = useTimeout();
    const startTimerCommit = React__namespace.useRef(null);
    const container = React__namespace.useRef(null);
    const startCommit = React__namespace.useCallback((params) => {
      const {
        pulsate: pulsate2,
        rippleX,
        rippleY,
        rippleSize,
        cb
      } = params;
      setRipples((oldRipples) => [...oldRipples, /* @__PURE__ */ jsxRuntimeExports.jsx(TouchRippleRipple, {
        classes: {
          ripple: clsx(classes.ripple, touchRippleClasses.ripple),
          rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),
          ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),
          child: clsx(classes.child, touchRippleClasses.child),
          childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),
          childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)
        },
        timeout: DURATION,
        pulsate: pulsate2,
        rippleX,
        rippleY,
        rippleSize
      }, nextKey.current)]);
      nextKey.current += 1;
      rippleCallback.current = cb;
    }, [classes]);
    const start2 = React__namespace.useCallback((event = {}, options = {}, cb = () => {
    }) => {
      const {
        pulsate: pulsate2 = false,
        center = centerProp || options.pulsate,
        fakeElement = false
        // For test purposes
      } = options;
      if ((event == null ? void 0 : event.type) === "mousedown" && ignoringMouseDown.current) {
        ignoringMouseDown.current = false;
        return;
      }
      if ((event == null ? void 0 : event.type) === "touchstart") {
        ignoringMouseDown.current = true;
      }
      const element = fakeElement ? null : container.current;
      const rect = element ? element.getBoundingClientRect() : {
        width: 0,
        height: 0,
        left: 0,
        top: 0
      };
      let rippleX;
      let rippleY;
      let rippleSize;
      if (center || event === void 0 || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {
        rippleX = Math.round(rect.width / 2);
        rippleY = Math.round(rect.height / 2);
      } else {
        const {
          clientX,
          clientY
        } = event.touches && event.touches.length > 0 ? event.touches[0] : event;
        rippleX = Math.round(clientX - rect.left);
        rippleY = Math.round(clientY - rect.top);
      }
      if (center) {
        rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);
        if (rippleSize % 2 === 0) {
          rippleSize += 1;
        }
      } else {
        const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;
        const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;
        rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);
      }
      if (event == null ? void 0 : event.touches) {
        if (startTimerCommit.current === null) {
          startTimerCommit.current = () => {
            startCommit({
              pulsate: pulsate2,
              rippleX,
              rippleY,
              rippleSize,
              cb
            });
          };
          startTimer.start(DELAY_RIPPLE, () => {
            if (startTimerCommit.current) {
              startTimerCommit.current();
              startTimerCommit.current = null;
            }
          });
        }
      } else {
        startCommit({
          pulsate: pulsate2,
          rippleX,
          rippleY,
          rippleSize,
          cb
        });
      }
    }, [centerProp, startCommit, startTimer]);
    const pulsate = React__namespace.useCallback(() => {
      start2({}, {
        pulsate: true
      });
    }, [start2]);
    const stop = React__namespace.useCallback((event, cb) => {
      startTimer.clear();
      if ((event == null ? void 0 : event.type) === "touchend" && startTimerCommit.current) {
        startTimerCommit.current();
        startTimerCommit.current = null;
        startTimer.start(0, () => {
          stop(event, cb);
        });
        return;
      }
      startTimerCommit.current = null;
      setRipples((oldRipples) => {
        if (oldRipples.length > 0) {
          return oldRipples.slice(1);
        }
        return oldRipples;
      });
      rippleCallback.current = cb;
    }, [startTimer]);
    React__namespace.useImperativeHandle(ref, () => ({
      pulsate,
      start: start2,
      stop
    }), [pulsate, start2, stop]);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TouchRippleRoot, {
      className: clsx(touchRippleClasses.root, classes.root, className),
      ref: container,
      ...other,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionGroup, {
        component: null,
        exit: true,
        children: ripples
      })
    });
  });
  function getButtonBaseUtilityClass(slot) {
    return generateUtilityClass("MuiButtonBase", slot);
  }
  const buttonBaseClasses = generateUtilityClasses("MuiButtonBase", ["root", "disabled", "focusVisible"]);
  const useUtilityClasses$G = (ownerState) => {
    const {
      disabled,
      focusVisible,
      focusVisibleClassName,
      classes
    } = ownerState;
    const slots = {
      root: ["root", disabled && "disabled", focusVisible && "focusVisible"]
    };
    const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);
    if (focusVisible && focusVisibleClassName) {
      composedClasses.root += ` ${focusVisibleClassName}`;
    }
    return composedClasses;
  };
  const ButtonBaseRoot = styled("button", {
    name: "MuiButtonBase",
    slot: "Root",
    overridesResolver: (props, styles2) => styles2.root
  })({
    display: "inline-flex",
    alignItems: "center",
    justifyContent: "center",
    position: "relative",
    boxSizing: "border-box",
    WebkitTapHighlightColor: "transparent",
    backgroundColor: "transparent",
    // Reset default value
    // We disable the focus ring for mouse, touch and keyboard users.
    outline: 0,
    border: 0,
    margin: 0,
    // Remove the margin in Safari
    borderRadius: 0,
    padding: 0,
    // Remove the padding in Firefox
    cursor: "pointer",
    userSelect: "none",
    verticalAlign: "middle",
    MozAppearance: "none",
    // Reset
    WebkitAppearance: "none",
    // Reset
    textDecoration: "none",
    // So we take precedent over the style of a native <a /> element.
    color: "inherit",
    "&::-moz-focus-inner": {
      borderStyle: "none"
      // Remove Firefox dotted outline.
    },
    [`&.${buttonBaseClasses.disabled}`]: {
      pointerEvents: "none",
      // Disable link interactions
      cursor: "default"
    },
    "@media print": {
      colorAdjust: "exact"
    }
  });
  const ButtonBase = /* @__PURE__ */ React__namespace.forwardRef(function ButtonBase2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiButtonBase"
    });
    const {
      action,
      centerRipple = false,
      children,
      className,
      component = "button",
      disabled = false,
      disableRipple = false,
      disableTouchRipple = false,
      focusRipple = false,
      focusVisibleClassName,
      LinkComponent = "a",
      onBlur,
      onClick,
      onContextMenu,
      onDragLeave,
      onFocus,
      onFocusVisible,
      onKeyDown,
      onKeyUp,
      onMouseDown,
      onMouseLeave,
      onMouseUp,
      onTouchEnd,
      onTouchMove,
      onTouchStart,
      tabIndex = 0,
      TouchRippleProps,
      touchRippleRef,
      type,
      ...other
    } = props;
    const buttonRef = React__namespace.useRef(null);
    const ripple = useLazyRipple();
    const handleRippleRef = useForkRef(ripple.ref, touchRippleRef);
    const [focusVisible, setFocusVisible] = React__namespace.useState(false);
    if (disabled && focusVisible) {
      setFocusVisible(false);
    }
    React__namespace.useImperativeHandle(action, () => ({
      focusVisible: () => {
        setFocusVisible(true);
        buttonRef.current.focus();
      }
    }), []);
    const enableTouchRipple = ripple.shouldMount && !disableRipple && !disabled;
    React__namespace.useEffect(() => {
      if (focusVisible && focusRipple && !disableRipple) {
        ripple.pulsate();
      }
    }, [disableRipple, focusRipple, focusVisible, ripple]);
    const handleMouseDown = useRippleHandler(ripple, "start", onMouseDown, disableTouchRipple);
    const handleContextMenu = useRippleHandler(ripple, "stop", onContextMenu, disableTouchRipple);
    const handleDragLeave = useRippleHandler(ripple, "stop", onDragLeave, disableTouchRipple);
    const handleMouseUp = useRippleHandler(ripple, "stop", onMouseUp, disableTouchRipple);
    const handleMouseLeave = useRippleHandler(ripple, "stop", (event) => {
      if (focusVisible) {
        event.preventDefault();
      }
      if (onMouseLeave) {
        onMouseLeave(event);
      }
    }, disableTouchRipple);
    const handleTouchStart = useRippleHandler(ripple, "start", onTouchStart, disableTouchRipple);
    const handleTouchEnd = useRippleHandler(ripple, "stop", onTouchEnd, disableTouchRipple);
    const handleTouchMove = useRippleHandler(ripple, "stop", onTouchMove, disableTouchRipple);
    const handleBlur = useRippleHandler(ripple, "stop", (event) => {
      if (!isFocusVisible(event.target)) {
        setFocusVisible(false);
      }
      if (onBlur) {
        onBlur(event);
      }
    }, false);
    const handleFocus = useEventCallback((event) => {
      if (!buttonRef.current) {
        buttonRef.current = event.currentTarget;
      }
      if (isFocusVisible(event.target)) {
        setFocusVisible(true);
        if (onFocusVisible) {
          onFocusVisible(event);
        }
      }
      if (onFocus) {
        onFocus(event);
      }
    });
    const isNonNativeButton = () => {
      const button = buttonRef.current;
      return component && component !== "button" && !(button.tagName === "A" && button.href);
    };
    const handleKeyDown = useEventCallback((event) => {
      if (focusRipple && !event.repeat && focusVisible && event.key === " ") {
        ripple.stop(event, () => {
          ripple.start(event);
        });
      }
      if (event.target === event.currentTarget && isNonNativeButton() && event.key === " ") {
        event.preventDefault();
      }
      if (onKeyDown) {
        onKeyDown(event);
      }
      if (event.target === event.currentTarget && isNonNativeButton() && event.key === "Enter" && !disabled) {
        event.preventDefault();
        if (onClick) {
          onClick(event);
        }
      }
    });
    const handleKeyUp = useEventCallback((event) => {
      if (focusRipple && event.key === " " && focusVisible && !event.defaultPrevented) {
        ripple.stop(event, () => {
          ripple.pulsate(event);
        });
      }
      if (onKeyUp) {
        onKeyUp(event);
      }
      if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === " " && !event.defaultPrevented) {
        onClick(event);
      }
    });
    let ComponentProp = component;
    if (ComponentProp === "button" && (other.href || other.to)) {
      ComponentProp = LinkComponent;
    }
    const buttonProps = {};
    if (ComponentProp === "button") {
      buttonProps.type = type === void 0 ? "button" : type;
      buttonProps.disabled = disabled;
    } else {
      if (!other.href && !other.to) {
        buttonProps.role = "button";
      }
      if (disabled) {
        buttonProps["aria-disabled"] = disabled;
      }
    }
    const handleRef = useForkRef(ref, buttonRef);
    const ownerState = {
      ...props,
      centerRipple,
      component,
      disabled,
      disableRipple,
      disableTouchRipple,
      focusRipple,
      tabIndex,
      focusVisible
    };
    const classes = useUtilityClasses$G(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(ButtonBaseRoot, {
      as: ComponentProp,
      className: clsx(classes.root, className),
      ownerState,
      onBlur: handleBlur,
      onClick,
      onContextMenu: handleContextMenu,
      onFocus: handleFocus,
      onKeyDown: handleKeyDown,
      onKeyUp: handleKeyUp,
      onMouseDown: handleMouseDown,
      onMouseLeave: handleMouseLeave,
      onMouseUp: handleMouseUp,
      onDragLeave: handleDragLeave,
      onTouchEnd: handleTouchEnd,
      onTouchMove: handleTouchMove,
      onTouchStart: handleTouchStart,
      ref: handleRef,
      tabIndex: disabled ? -1 : tabIndex,
      type,
      ...buttonProps,
      ...other,
      children: [children, enableTouchRipple ? /* @__PURE__ */ jsxRuntimeExports.jsx(TouchRipple, {
        ref: handleRippleRef,
        center: centerRipple,
        ...TouchRippleProps
      }) : null]
    });
  });
  function useRippleHandler(ripple, rippleAction, eventCallback, skipRippleAction = false) {
    return useEventCallback((event) => {
      if (eventCallback) {
        eventCallback(event);
      }
      if (!skipRippleAction) {
        ripple[rippleAction](event);
      }
      return true;
    });
  }
  function hasCorrectMainProperty(obj) {
    return typeof obj.main === "string";
  }
  function checkSimplePaletteColorValues(obj, additionalPropertiesToCheck = []) {
    if (!hasCorrectMainProperty(obj)) {
      return false;
    }
    for (const value of additionalPropertiesToCheck) {
      if (!obj.hasOwnProperty(value) || typeof obj[value] !== "string") {
        return false;
      }
    }
    return true;
  }
  function createSimplePaletteValueFilter(additionalPropertiesToCheck = []) {
    return ([, value]) => value && checkSimplePaletteColorValues(value, additionalPropertiesToCheck);
  }
  function getCircularProgressUtilityClass(slot) {
    return generateUtilityClass("MuiCircularProgress", slot);
  }
  generateUtilityClasses("MuiCircularProgress", ["root", "determinate", "indeterminate", "colorPrimary", "colorSecondary", "svg", "circle", "circleDeterminate", "circleIndeterminate", "circleDisableShrink"]);
  const SIZE = 44;
  const circularRotateKeyframe = keyframes`
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
`;
  const circularDashKeyframe = keyframes`
  0% {
    stroke-dasharray: 1px, 200px;
    stroke-dashoffset: 0;
  }

  50% {
    stroke-dasharray: 100px, 200px;
    stroke-dashoffset: -15px;
  }

  100% {
    stroke-dasharray: 1px, 200px;
    stroke-dashoffset: -126px;
  }
`;
  const rotateAnimation = typeof circularRotateKeyframe !== "string" ? css`
        animation: ${circularRotateKeyframe} 1.4s linear infinite;
      ` : null;
  const dashAnimation = typeof circularDashKeyframe !== "string" ? css`
        animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;
      ` : null;
  const useUtilityClasses$F = (ownerState) => {
    const {
      classes,
      variant,
      color: color2,
      disableShrink
    } = ownerState;
    const slots = {
      root: ["root", variant, `color${capitalize(color2)}`],
      svg: ["svg"],
      circle: ["circle", `circle${capitalize(variant)}`, disableShrink && "circleDisableShrink"]
    };
    return composeClasses(slots, getCircularProgressUtilityClass, classes);
  };
  const CircularProgressRoot = styled("span", {
    name: "MuiCircularProgress",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, styles2[ownerState.variant], styles2[`color${capitalize(ownerState.color)}`]];
    }
  })(memoTheme(({
    theme
  }) => ({
    display: "inline-block",
    variants: [{
      props: {
        variant: "determinate"
      },
      style: {
        transition: theme.transitions.create("transform")
      }
    }, {
      props: {
        variant: "indeterminate"
      },
      style: rotateAnimation || {
        animation: `${circularRotateKeyframe} 1.4s linear infinite`
      }
    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => ({
      props: {
        color: color2
      },
      style: {
        color: (theme.vars || theme).palette[color2].main
      }
    }))]
  })));
  const CircularProgressSVG = styled("svg", {
    name: "MuiCircularProgress",
    slot: "Svg",
    overridesResolver: (props, styles2) => styles2.svg
  })({
    display: "block"
    // Keeps the progress centered
  });
  const CircularProgressCircle = styled("circle", {
    name: "MuiCircularProgress",
    slot: "Circle",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.circle, styles2[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles2.circleDisableShrink];
    }
  })(memoTheme(({
    theme
  }) => ({
    stroke: "currentColor",
    variants: [{
      props: {
        variant: "determinate"
      },
      style: {
        transition: theme.transitions.create("stroke-dashoffset")
      }
    }, {
      props: {
        variant: "indeterminate"
      },
      style: {
        // Some default value that looks fine waiting for the animation to kicks in.
        strokeDasharray: "80px, 200px",
        strokeDashoffset: 0
        // Add the unit to fix a Edge 16 and below bug.
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.variant === "indeterminate" && !ownerState.disableShrink,
      style: dashAnimation || {
        // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.
        animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`
      }
    }]
  })));
  const CircularProgress = /* @__PURE__ */ React__namespace.forwardRef(function CircularProgress2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiCircularProgress"
    });
    const {
      className,
      color: color2 = "primary",
      disableShrink = false,
      size = 40,
      style: style2,
      thickness = 3.6,
      value = 0,
      variant = "indeterminate",
      ...other
    } = props;
    const ownerState = {
      ...props,
      color: color2,
      disableShrink,
      size,
      thickness,
      value,
      variant
    };
    const classes = useUtilityClasses$F(ownerState);
    const circleStyle = {};
    const rootStyle = {};
    const rootProps = {};
    if (variant === "determinate") {
      const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);
      circleStyle.strokeDasharray = circumference.toFixed(3);
      rootProps["aria-valuenow"] = Math.round(value);
      circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;
      rootStyle.transform = "rotate(-90deg)";
    }
    return /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgressRoot, {
      className: clsx(classes.root, className),
      style: {
        width: size,
        height: size,
        ...rootStyle,
        ...style2
      },
      ownerState,
      ref,
      role: "progressbar",
      ...rootProps,
      ...other,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgressSVG, {
        className: classes.svg,
        ownerState,
        viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgressCircle, {
          className: classes.circle,
          style: circleStyle,
          ownerState,
          cx: SIZE,
          cy: SIZE,
          r: (SIZE - thickness) / 2,
          fill: "none",
          strokeWidth: thickness
        })
      })
    });
  });
  function getButtonUtilityClass(slot) {
    return generateUtilityClass("MuiButton", slot);
  }
  const buttonClasses = generateUtilityClasses("MuiButton", ["root", "text", "textInherit", "textPrimary", "textSecondary", "textSuccess", "textError", "textInfo", "textWarning", "outlined", "outlinedInherit", "outlinedPrimary", "outlinedSecondary", "outlinedSuccess", "outlinedError", "outlinedInfo", "outlinedWarning", "contained", "containedInherit", "containedPrimary", "containedSecondary", "containedSuccess", "containedError", "containedInfo", "containedWarning", "disableElevation", "focusVisible", "disabled", "colorInherit", "colorPrimary", "colorSecondary", "colorSuccess", "colorError", "colorInfo", "colorWarning", "textSizeSmall", "textSizeMedium", "textSizeLarge", "outlinedSizeSmall", "outlinedSizeMedium", "outlinedSizeLarge", "containedSizeSmall", "containedSizeMedium", "containedSizeLarge", "sizeMedium", "sizeSmall", "sizeLarge", "fullWidth", "startIcon", "endIcon", "icon", "iconSizeSmall", "iconSizeMedium", "iconSizeLarge", "loading", "loadingWrapper", "loadingIconPlaceholder", "loadingIndicator", "loadingPositionCenter", "loadingPositionStart", "loadingPositionEnd"]);
  const ButtonGroupContext = /* @__PURE__ */ React__namespace.createContext({});
  const ButtonGroupButtonContext = /* @__PURE__ */ React__namespace.createContext(void 0);
  const useUtilityClasses$E = (ownerState) => {
    const {
      color: color2,
      disableElevation,
      fullWidth,
      size,
      variant,
      loading,
      loadingPosition,
      classes
    } = ownerState;
    const slots = {
      root: ["root", loading && "loading", variant, `${variant}${capitalize(color2)}`, `size${capitalize(size)}`, `${variant}Size${capitalize(size)}`, `color${capitalize(color2)}`, disableElevation && "disableElevation", fullWidth && "fullWidth", loading && `loadingPosition${capitalize(loadingPosition)}`],
      startIcon: ["icon", "startIcon", `iconSize${capitalize(size)}`],
      endIcon: ["icon", "endIcon", `iconSize${capitalize(size)}`],
      loadingIndicator: ["loadingIndicator"],
      loadingWrapper: ["loadingWrapper"]
    };
    const composedClasses = composeClasses(slots, getButtonUtilityClass, classes);
    return {
      ...classes,
      // forward the focused, disabled, etc. classes to the ButtonBase
      ...composedClasses
    };
  };
  const commonIconStyles = [{
    props: {
      size: "small"
    },
    style: {
      "& > *:nth-of-type(1)": {
        fontSize: 18
      }
    }
  }, {
    props: {
      size: "medium"
    },
    style: {
      "& > *:nth-of-type(1)": {
        fontSize: 20
      }
    }
  }, {
    props: {
      size: "large"
    },
    style: {
      "& > *:nth-of-type(1)": {
        fontSize: 22
      }
    }
  }];
  const ButtonRoot = styled(ButtonBase, {
    shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
    name: "MuiButton",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, styles2[ownerState.variant], styles2[`${ownerState.variant}${capitalize(ownerState.color)}`], styles2[`size${capitalize(ownerState.size)}`], styles2[`${ownerState.variant}Size${capitalize(ownerState.size)}`], ownerState.color === "inherit" && styles2.colorInherit, ownerState.disableElevation && styles2.disableElevation, ownerState.fullWidth && styles2.fullWidth, ownerState.loading && styles2.loading];
    }
  })(memoTheme(({
    theme
  }) => {
    const inheritContainedBackgroundColor = theme.palette.mode === "light" ? theme.palette.grey[300] : theme.palette.grey[800];
    const inheritContainedHoverBackgroundColor = theme.palette.mode === "light" ? theme.palette.grey.A100 : theme.palette.grey[700];
    return {
      ...theme.typography.button,
      minWidth: 64,
      padding: "6px 16px",
      border: 0,
      borderRadius: (theme.vars || theme).shape.borderRadius,
      transition: theme.transitions.create(["background-color", "box-shadow", "border-color", "color"], {
        duration: theme.transitions.duration.short
      }),
      "&:hover": {
        textDecoration: "none"
      },
      [`&.${buttonClasses.disabled}`]: {
        color: (theme.vars || theme).palette.action.disabled
      },
      variants: [{
        props: {
          variant: "contained"
        },
        style: {
          color: `var(--variant-containedColor)`,
          backgroundColor: `var(--variant-containedBg)`,
          boxShadow: (theme.vars || theme).shadows[2],
          "&:hover": {
            boxShadow: (theme.vars || theme).shadows[4],
            // Reset on touch devices, it doesn't add specificity
            "@media (hover: none)": {
              boxShadow: (theme.vars || theme).shadows[2]
            }
          },
          "&:active": {
            boxShadow: (theme.vars || theme).shadows[8]
          },
          [`&.${buttonClasses.focusVisible}`]: {
            boxShadow: (theme.vars || theme).shadows[6]
          },
          [`&.${buttonClasses.disabled}`]: {
            color: (theme.vars || theme).palette.action.disabled,
            boxShadow: (theme.vars || theme).shadows[0],
            backgroundColor: (theme.vars || theme).palette.action.disabledBackground
          }
        }
      }, {
        props: {
          variant: "outlined"
        },
        style: {
          padding: "5px 15px",
          border: "1px solid currentColor",
          borderColor: `var(--variant-outlinedBorder, currentColor)`,
          backgroundColor: `var(--variant-outlinedBg)`,
          color: `var(--variant-outlinedColor)`,
          [`&.${buttonClasses.disabled}`]: {
            border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`
          }
        }
      }, {
        props: {
          variant: "text"
        },
        style: {
          padding: "6px 8px",
          color: `var(--variant-textColor)`,
          backgroundColor: `var(--variant-textBg)`
        }
      }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => ({
        props: {
          color: color2
        },
        style: {
          "--variant-textColor": (theme.vars || theme).palette[color2].main,
          "--variant-outlinedColor": (theme.vars || theme).palette[color2].main,
          "--variant-outlinedBorder": theme.vars ? `rgba(${theme.vars.palette[color2].mainChannel} / 0.5)` : alpha(theme.palette[color2].main, 0.5),
          "--variant-containedColor": (theme.vars || theme).palette[color2].contrastText,
          "--variant-containedBg": (theme.vars || theme).palette[color2].main,
          "@media (hover: hover)": {
            "&:hover": {
              "--variant-containedBg": (theme.vars || theme).palette[color2].dark,
              "--variant-textBg": theme.vars ? `rgba(${theme.vars.palette[color2].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color2].main, theme.palette.action.hoverOpacity),
              "--variant-outlinedBorder": (theme.vars || theme).palette[color2].main,
              "--variant-outlinedBg": theme.vars ? `rgba(${theme.vars.palette[color2].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color2].main, theme.palette.action.hoverOpacity)
            }
          }
        }
      })), {
        props: {
          color: "inherit"
        },
        style: {
          color: "inherit",
          borderColor: "currentColor",
          "--variant-containedBg": theme.vars ? theme.vars.palette.Button.inheritContainedBg : inheritContainedBackgroundColor,
          "@media (hover: hover)": {
            "&:hover": {
              "--variant-containedBg": theme.vars ? theme.vars.palette.Button.inheritContainedHoverBg : inheritContainedHoverBackgroundColor,
              "--variant-textBg": theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),
              "--variant-outlinedBg": theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity)
            }
          }
        }
      }, {
        props: {
          size: "small",
          variant: "text"
        },
        style: {
          padding: "4px 5px",
          fontSize: theme.typography.pxToRem(13)
        }
      }, {
        props: {
          size: "large",
          variant: "text"
        },
        style: {
          padding: "8px 11px",
          fontSize: theme.typography.pxToRem(15)
        }
      }, {
        props: {
          size: "small",
          variant: "outlined"
        },
        style: {
          padding: "3px 9px",
          fontSize: theme.typography.pxToRem(13)
        }
      }, {
        props: {
          size: "large",
          variant: "outlined"
        },
        style: {
          padding: "7px 21px",
          fontSize: theme.typography.pxToRem(15)
        }
      }, {
        props: {
          size: "small",
          variant: "contained"
        },
        style: {
          padding: "4px 10px",
          fontSize: theme.typography.pxToRem(13)
        }
      }, {
        props: {
          size: "large",
          variant: "contained"
        },
        style: {
          padding: "8px 22px",
          fontSize: theme.typography.pxToRem(15)
        }
      }, {
        props: {
          disableElevation: true
        },
        style: {
          boxShadow: "none",
          "&:hover": {
            boxShadow: "none"
          },
          [`&.${buttonClasses.focusVisible}`]: {
            boxShadow: "none"
          },
          "&:active": {
            boxShadow: "none"
          },
          [`&.${buttonClasses.disabled}`]: {
            boxShadow: "none"
          }
        }
      }, {
        props: {
          fullWidth: true
        },
        style: {
          width: "100%"
        }
      }, {
        props: {
          loadingPosition: "center"
        },
        style: {
          transition: theme.transitions.create(["background-color", "box-shadow", "border-color"], {
            duration: theme.transitions.duration.short
          }),
          [`&.${buttonClasses.loading}`]: {
            color: "transparent"
          }
        }
      }]
    };
  }));
  const ButtonStartIcon = styled("span", {
    name: "MuiButton",
    slot: "StartIcon",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.startIcon, ownerState.loading && styles2.startIconLoadingStart, styles2[`iconSize${capitalize(ownerState.size)}`]];
    }
  })(({
    theme
  }) => ({
    display: "inherit",
    marginRight: 8,
    marginLeft: -4,
    variants: [{
      props: {
        size: "small"
      },
      style: {
        marginLeft: -2
      }
    }, {
      props: {
        loadingPosition: "start",
        loading: true
      },
      style: {
        transition: theme.transitions.create(["opacity"], {
          duration: theme.transitions.duration.short
        }),
        opacity: 0
      }
    }, {
      props: {
        loadingPosition: "start",
        loading: true,
        fullWidth: true
      },
      style: {
        marginRight: -8
      }
    }, ...commonIconStyles]
  }));
  const ButtonEndIcon = styled("span", {
    name: "MuiButton",
    slot: "EndIcon",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.endIcon, ownerState.loading && styles2.endIconLoadingEnd, styles2[`iconSize${capitalize(ownerState.size)}`]];
    }
  })(({
    theme
  }) => ({
    display: "inherit",
    marginRight: -4,
    marginLeft: 8,
    variants: [{
      props: {
        size: "small"
      },
      style: {
        marginRight: -2
      }
    }, {
      props: {
        loadingPosition: "end",
        loading: true
      },
      style: {
        transition: theme.transitions.create(["opacity"], {
          duration: theme.transitions.duration.short
        }),
        opacity: 0
      }
    }, {
      props: {
        loadingPosition: "end",
        loading: true,
        fullWidth: true
      },
      style: {
        marginLeft: -8
      }
    }, ...commonIconStyles]
  }));
  const ButtonLoadingIndicator = styled("span", {
    name: "MuiButton",
    slot: "LoadingIndicator",
    overridesResolver: (props, styles2) => styles2.loadingIndicator
  })(({
    theme
  }) => ({
    display: "none",
    position: "absolute",
    visibility: "visible",
    variants: [{
      props: {
        loading: true
      },
      style: {
        display: "flex"
      }
    }, {
      props: {
        loadingPosition: "start"
      },
      style: {
        left: 14
      }
    }, {
      props: {
        loadingPosition: "start",
        size: "small"
      },
      style: {
        left: 10
      }
    }, {
      props: {
        variant: "text",
        loadingPosition: "start"
      },
      style: {
        left: 6
      }
    }, {
      props: {
        loadingPosition: "center"
      },
      style: {
        left: "50%",
        transform: "translate(-50%)",
        color: (theme.vars || theme).palette.action.disabled
      }
    }, {
      props: {
        loadingPosition: "end"
      },
      style: {
        right: 14
      }
    }, {
      props: {
        loadingPosition: "end",
        size: "small"
      },
      style: {
        right: 10
      }
    }, {
      props: {
        variant: "text",
        loadingPosition: "end"
      },
      style: {
        right: 6
      }
    }, {
      props: {
        loadingPosition: "start",
        fullWidth: true
      },
      style: {
        position: "relative",
        left: -10
      }
    }, {
      props: {
        loadingPosition: "end",
        fullWidth: true
      },
      style: {
        position: "relative",
        right: -10
      }
    }]
  }));
  const ButtonLoadingIconPlaceholder = styled("span", {
    name: "MuiButton",
    slot: "LoadingIconPlaceholder",
    overridesResolver: (props, styles2) => styles2.loadingIconPlaceholder
  })({
    display: "inline-block",
    width: "1em",
    height: "1em"
  });
  const Button = /* @__PURE__ */ React__namespace.forwardRef(function Button2(inProps, ref) {
    const contextProps = React__namespace.useContext(ButtonGroupContext);
    const buttonGroupButtonContextPositionClassName = React__namespace.useContext(ButtonGroupButtonContext);
    const resolvedProps = resolveProps(contextProps, inProps);
    const props = useDefaultProps({
      props: resolvedProps,
      name: "MuiButton"
    });
    const {
      children,
      color: color2 = "primary",
      component = "button",
      className,
      disabled = false,
      disableElevation = false,
      disableFocusRipple = false,
      endIcon: endIconProp,
      focusVisibleClassName,
      fullWidth = false,
      id: idProp,
      loading = null,
      loadingIndicator: loadingIndicatorProp,
      loadingPosition = "center",
      size = "medium",
      startIcon: startIconProp,
      type,
      variant = "text",
      ...other
    } = props;
    const loadingId = useId(idProp);
    const loadingIndicator = loadingIndicatorProp ?? /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, {
      "aria-labelledby": loadingId,
      color: "inherit",
      size: 16
    });
    const ownerState = {
      ...props,
      color: color2,
      component,
      disabled,
      disableElevation,
      disableFocusRipple,
      fullWidth,
      loading,
      loadingIndicator,
      loadingPosition,
      size,
      type,
      variant
    };
    const classes = useUtilityClasses$E(ownerState);
    const startIcon = (startIconProp || loading && loadingPosition === "start") && /* @__PURE__ */ jsxRuntimeExports.jsx(ButtonStartIcon, {
      className: classes.startIcon,
      ownerState,
      children: startIconProp || /* @__PURE__ */ jsxRuntimeExports.jsx(ButtonLoadingIconPlaceholder, {
        className: classes.loadingIconPlaceholder,
        ownerState
      })
    });
    const endIcon = (endIconProp || loading && loadingPosition === "end") && /* @__PURE__ */ jsxRuntimeExports.jsx(ButtonEndIcon, {
      className: classes.endIcon,
      ownerState,
      children: endIconProp || /* @__PURE__ */ jsxRuntimeExports.jsx(ButtonLoadingIconPlaceholder, {
        className: classes.loadingIconPlaceholder,
        ownerState
      })
    });
    const positionClassName = buttonGroupButtonContextPositionClassName || "";
    const loader = typeof loading === "boolean" ? (
      // use plain HTML span to minimize the runtime overhead
      /* @__PURE__ */ jsxRuntimeExports.jsx("span", {
        className: classes.loadingWrapper,
        style: {
          display: "contents"
        },
        children: loading && /* @__PURE__ */ jsxRuntimeExports.jsx(ButtonLoadingIndicator, {
          className: classes.loadingIndicator,
          ownerState,
          children: loadingIndicator
        })
      })
    ) : null;
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(ButtonRoot, {
      ownerState,
      className: clsx(contextProps.className, classes.root, className, positionClassName),
      component,
      disabled: disabled || loading,
      focusRipple: !disableFocusRipple,
      focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),
      ref,
      type,
      id: loading ? loadingId : idProp,
      ...other,
      classes,
      children: [startIcon, loadingPosition !== "end" && loader, children, loadingPosition === "end" && loader, endIcon]
    });
  });
  const ShareIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92"
  }));
  function ThemeProviderNoVars({
    theme: themeInput,
    ...props
  }) {
    const scopedTheme = THEME_ID in themeInput ? themeInput[THEME_ID] : void 0;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeProvider$1, {
      ...props,
      themeId: scopedTheme ? THEME_ID : void 0,
      theme: scopedTheme || themeInput
    });
  }
  const defaultConfig = {
    colorSchemeStorageKey: "mui-color-scheme",
    defaultLightColorScheme: "light",
    defaultDarkColorScheme: "dark",
    modeStorageKey: "mui-mode"
  };
  const {
    CssVarsProvider: InternalCssVarsProvider
  } = createCssVarsProvider({
    themeId: THEME_ID,
    // @ts-ignore ignore module augmentation tests
    theme: () => createTheme({
      cssVariables: true
    }),
    colorSchemeStorageKey: defaultConfig.colorSchemeStorageKey,
    modeStorageKey: defaultConfig.modeStorageKey,
    defaultColorScheme: {
      light: defaultConfig.defaultLightColorScheme,
      dark: defaultConfig.defaultDarkColorScheme
    },
    resolveTheme: (theme) => {
      const newTheme = {
        ...theme,
        typography: createTypography(theme.palette, theme.typography)
      };
      newTheme.unstable_sx = function sx(props) {
        return styleFunctionSx({
          sx: props,
          theme: this
        });
      };
      return newTheme;
    }
  });
  const CssVarsProvider = InternalCssVarsProvider;
  function ThemeProvider({
    theme,
    ...props
  }) {
    if (typeof theme === "function") {
      return /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeProviderNoVars, {
        theme,
        ...props
      });
    }
    const muiTheme = THEME_ID in theme ? theme[THEME_ID] : theme;
    if (!("colorSchemes" in muiTheme)) {
      if (!("vars" in muiTheme)) {
        return /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeProviderNoVars, {
          theme: {
            ...theme,
            vars: null
          },
          ...props
        });
      }
      return /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeProviderNoVars, {
        theme,
        ...props
      });
    }
    return /* @__PURE__ */ jsxRuntimeExports.jsx(CssVarsProvider, {
      theme,
      ...props
    });
  }
  const reflow = (node2) => node2.scrollTop;
  function getTransitionProps(props, options) {
    const {
      timeout,
      easing: easing2,
      style: style2 = {}
    } = props;
    return {
      duration: style2.transitionDuration ?? (typeof timeout === "number" ? timeout : timeout[options.mode] || 0),
      easing: style2.transitionTimingFunction ?? (typeof easing2 === "object" ? easing2[options.mode] : easing2),
      delay: style2.transitionDelay
    };
  }
  function getCollapseUtilityClass(slot) {
    return generateUtilityClass("MuiCollapse", slot);
  }
  generateUtilityClasses("MuiCollapse", ["root", "horizontal", "vertical", "entered", "hidden", "wrapper", "wrapperInner"]);
  const useUtilityClasses$D = (ownerState) => {
    const {
      orientation,
      classes
    } = ownerState;
    const slots = {
      root: ["root", `${orientation}`],
      entered: ["entered"],
      hidden: ["hidden"],
      wrapper: ["wrapper", `${orientation}`],
      wrapperInner: ["wrapperInner", `${orientation}`]
    };
    return composeClasses(slots, getCollapseUtilityClass, classes);
  };
  const CollapseRoot = styled("div", {
    name: "MuiCollapse",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, styles2[ownerState.orientation], ownerState.state === "entered" && styles2.entered, ownerState.state === "exited" && !ownerState.in && ownerState.collapsedSize === "0px" && styles2.hidden];
    }
  })(memoTheme(({
    theme
  }) => ({
    height: 0,
    overflow: "hidden",
    transition: theme.transitions.create("height"),
    variants: [{
      props: {
        orientation: "horizontal"
      },
      style: {
        height: "auto",
        width: 0,
        transition: theme.transitions.create("width")
      }
    }, {
      props: {
        state: "entered"
      },
      style: {
        height: "auto",
        overflow: "visible"
      }
    }, {
      props: {
        state: "entered",
        orientation: "horizontal"
      },
      style: {
        width: "auto"
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.state === "exited" && !ownerState.in && ownerState.collapsedSize === "0px",
      style: {
        visibility: "hidden"
      }
    }]
  })));
  const CollapseWrapper = styled("div", {
    name: "MuiCollapse",
    slot: "Wrapper",
    overridesResolver: (props, styles2) => styles2.wrapper
  })({
    // Hack to get children with a negative margin to not falsify the height computation.
    display: "flex",
    width: "100%",
    variants: [{
      props: {
        orientation: "horizontal"
      },
      style: {
        width: "auto",
        height: "100%"
      }
    }]
  });
  const CollapseWrapperInner = styled("div", {
    name: "MuiCollapse",
    slot: "WrapperInner",
    overridesResolver: (props, styles2) => styles2.wrapperInner
  })({
    width: "100%",
    variants: [{
      props: {
        orientation: "horizontal"
      },
      style: {
        width: "auto",
        height: "100%"
      }
    }]
  });
  const Collapse = /* @__PURE__ */ React__namespace.forwardRef(function Collapse2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiCollapse"
    });
    const {
      addEndListener,
      children,
      className,
      collapsedSize: collapsedSizeProp = "0px",
      component,
      easing: easing2,
      in: inProp,
      onEnter,
      onEntered,
      onEntering,
      onExit,
      onExited,
      onExiting,
      orientation = "vertical",
      style: style2,
      timeout = duration.standard,
      // eslint-disable-next-line react/prop-types
      TransitionComponent = Transition,
      ...other
    } = props;
    const ownerState = {
      ...props,
      orientation,
      collapsedSize: collapsedSizeProp
    };
    const classes = useUtilityClasses$D(ownerState);
    const theme = useTheme();
    const timer2 = useTimeout();
    const wrapperRef = React__namespace.useRef(null);
    const autoTransitionDuration = React__namespace.useRef();
    const collapsedSize = typeof collapsedSizeProp === "number" ? `${collapsedSizeProp}px` : collapsedSizeProp;
    const isHorizontal2 = orientation === "horizontal";
    const size = isHorizontal2 ? "width" : "height";
    const nodeRef = React__namespace.useRef(null);
    const handleRef = useForkRef(ref, nodeRef);
    const normalizedTransitionCallback = (callback) => (maybeIsAppearing) => {
      if (callback) {
        const node2 = nodeRef.current;
        if (maybeIsAppearing === void 0) {
          callback(node2);
        } else {
          callback(node2, maybeIsAppearing);
        }
      }
    };
    const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal2 ? "clientWidth" : "clientHeight"] : 0;
    const handleEnter = normalizedTransitionCallback((node2, isAppearing) => {
      if (wrapperRef.current && isHorizontal2) {
        wrapperRef.current.style.position = "absolute";
      }
      node2.style[size] = collapsedSize;
      if (onEnter) {
        onEnter(node2, isAppearing);
      }
    });
    const handleEntering = normalizedTransitionCallback((node2, isAppearing) => {
      const wrapperSize = getWrapperSize();
      if (wrapperRef.current && isHorizontal2) {
        wrapperRef.current.style.position = "";
      }
      const {
        duration: transitionDuration,
        easing: transitionTimingFunction
      } = getTransitionProps({
        style: style2,
        timeout,
        easing: easing2
      }, {
        mode: "enter"
      });
      if (timeout === "auto") {
        const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);
        node2.style.transitionDuration = `${duration2}ms`;
        autoTransitionDuration.current = duration2;
      } else {
        node2.style.transitionDuration = typeof transitionDuration === "string" ? transitionDuration : `${transitionDuration}ms`;
      }
      node2.style[size] = `${wrapperSize}px`;
      node2.style.transitionTimingFunction = transitionTimingFunction;
      if (onEntering) {
        onEntering(node2, isAppearing);
      }
    });
    const handleEntered = normalizedTransitionCallback((node2, isAppearing) => {
      node2.style[size] = "auto";
      if (onEntered) {
        onEntered(node2, isAppearing);
      }
    });
    const handleExit = normalizedTransitionCallback((node2) => {
      node2.style[size] = `${getWrapperSize()}px`;
      if (onExit) {
        onExit(node2);
      }
    });
    const handleExited = normalizedTransitionCallback(onExited);
    const handleExiting = normalizedTransitionCallback((node2) => {
      const wrapperSize = getWrapperSize();
      const {
        duration: transitionDuration,
        easing: transitionTimingFunction
      } = getTransitionProps({
        style: style2,
        timeout,
        easing: easing2
      }, {
        mode: "exit"
      });
      if (timeout === "auto") {
        const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);
        node2.style.transitionDuration = `${duration2}ms`;
        autoTransitionDuration.current = duration2;
      } else {
        node2.style.transitionDuration = typeof transitionDuration === "string" ? transitionDuration : `${transitionDuration}ms`;
      }
      node2.style[size] = collapsedSize;
      node2.style.transitionTimingFunction = transitionTimingFunction;
      if (onExiting) {
        onExiting(node2);
      }
    });
    const handleAddEndListener = (next2) => {
      if (timeout === "auto") {
        timer2.start(autoTransitionDuration.current || 0, next2);
      }
      if (addEndListener) {
        addEndListener(nodeRef.current, next2);
      }
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionComponent, {
      in: inProp,
      onEnter: handleEnter,
      onEntered: handleEntered,
      onEntering: handleEntering,
      onExit: handleExit,
      onExited: handleExited,
      onExiting: handleExiting,
      addEndListener: handleAddEndListener,
      nodeRef,
      timeout: timeout === "auto" ? null : timeout,
      ...other,
      children: (state, {
        ownerState: incomingOwnerState,
        ...restChildProps
      }) => /* @__PURE__ */ jsxRuntimeExports.jsx(CollapseRoot, {
        as: component,
        className: clsx(classes.root, className, {
          "entered": classes.entered,
          "exited": !inProp && collapsedSize === "0px" && classes.hidden
        }[state]),
        style: {
          [isHorizontal2 ? "minWidth" : "minHeight"]: collapsedSize,
          ...style2
        },
        ref: handleRef,
        ownerState: {
          ...ownerState,
          state
        },
        ...restChildProps,
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(CollapseWrapper, {
          ownerState: {
            ...ownerState,
            state
          },
          className: classes.wrapper,
          ref: wrapperRef,
          children: /* @__PURE__ */ jsxRuntimeExports.jsx(CollapseWrapperInner, {
            ownerState: {
              ...ownerState,
              state
            },
            className: classes.wrapperInner,
            children
          })
        })
      })
    });
  });
  if (Collapse) {
    Collapse.muiSupportAuto = true;
  }
  function getPaperUtilityClass(slot) {
    return generateUtilityClass("MuiPaper", slot);
  }
  generateUtilityClasses("MuiPaper", ["root", "rounded", "outlined", "elevation", "elevation0", "elevation1", "elevation2", "elevation3", "elevation4", "elevation5", "elevation6", "elevation7", "elevation8", "elevation9", "elevation10", "elevation11", "elevation12", "elevation13", "elevation14", "elevation15", "elevation16", "elevation17", "elevation18", "elevation19", "elevation20", "elevation21", "elevation22", "elevation23", "elevation24"]);
  const useUtilityClasses$C = (ownerState) => {
    const {
      square,
      elevation,
      variant,
      classes
    } = ownerState;
    const slots = {
      root: ["root", variant, !square && "rounded", variant === "elevation" && `elevation${elevation}`]
    };
    return composeClasses(slots, getPaperUtilityClass, classes);
  };
  const PaperRoot = styled("div", {
    name: "MuiPaper",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, styles2[ownerState.variant], !ownerState.square && styles2.rounded, ownerState.variant === "elevation" && styles2[`elevation${ownerState.elevation}`]];
    }
  })(memoTheme(({
    theme
  }) => ({
    backgroundColor: (theme.vars || theme).palette.background.paper,
    color: (theme.vars || theme).palette.text.primary,
    transition: theme.transitions.create("box-shadow"),
    variants: [{
      props: ({
        ownerState
      }) => !ownerState.square,
      style: {
        borderRadius: theme.shape.borderRadius
      }
    }, {
      props: {
        variant: "outlined"
      },
      style: {
        border: `1px solid ${(theme.vars || theme).palette.divider}`
      }
    }, {
      props: {
        variant: "elevation"
      },
      style: {
        boxShadow: "var(--Paper-shadow)",
        backgroundImage: "var(--Paper-overlay)"
      }
    }]
  })));
  const Paper = /* @__PURE__ */ React__namespace.forwardRef(function Paper2(inProps, ref) {
    var _a;
    const props = useDefaultProps({
      props: inProps,
      name: "MuiPaper"
    });
    const theme = useTheme();
    const {
      className,
      component = "div",
      elevation = 1,
      square = false,
      variant = "elevation",
      ...other
    } = props;
    const ownerState = {
      ...props,
      component,
      elevation,
      square,
      variant
    };
    const classes = useUtilityClasses$C(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(PaperRoot, {
      as: component,
      ownerState,
      className: clsx(classes.root, className),
      ref,
      ...other,
      style: {
        ...variant === "elevation" && {
          "--Paper-shadow": (theme.vars || theme).shadows[elevation],
          ...theme.vars && {
            "--Paper-overlay": (_a = theme.vars.overlays) == null ? void 0 : _a[elevation]
          },
          ...!theme.vars && theme.palette.mode === "dark" && {
            "--Paper-overlay": `linear-gradient(${alpha("#fff", getOverlayAlpha(elevation))}, ${alpha("#fff", getOverlayAlpha(elevation))})`
          }
        },
        ...other.style
      }
    });
  });
  function useSlot(name, parameters) {
    const {
      className,
      elementType: initialElementType,
      ownerState,
      externalForwardedProps,
      internalForwardedProps,
      shouldForwardComponentProp = false,
      ...useSlotPropsParams
    } = parameters;
    const {
      component: rootComponent,
      slots = {
        [name]: void 0
      },
      slotProps = {
        [name]: void 0
      },
      ...other
    } = externalForwardedProps;
    const elementType = slots[name] || initialElementType;
    const resolvedComponentsProps = resolveComponentProps(slotProps[name], ownerState);
    const {
      props: {
        component: slotComponent,
        ...mergedProps
      },
      internalRef
    } = mergeSlotProps$1({
      className,
      ...useSlotPropsParams,
      externalForwardedProps: name === "root" ? other : void 0,
      externalSlotProps: resolvedComponentsProps
    });
    const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, parameters.ref);
    const LeafComponent = name === "root" ? slotComponent || rootComponent : slotComponent;
    const props = appendOwnerState(elementType, {
      ...name === "root" && !rootComponent && !slots[name] && internalForwardedProps,
      ...name !== "root" && !slots[name] && internalForwardedProps,
      ...mergedProps,
      ...LeafComponent && !shouldForwardComponentProp && {
        as: LeafComponent
      },
      ...LeafComponent && shouldForwardComponentProp && {
        component: LeafComponent
      },
      ref
    }, ownerState);
    return [elementType, props];
  }
  function getAlertUtilityClass(slot) {
    return generateUtilityClass("MuiAlert", slot);
  }
  const alertClasses = generateUtilityClasses("MuiAlert", ["root", "action", "icon", "message", "filled", "colorSuccess", "colorInfo", "colorWarning", "colorError", "filledSuccess", "filledInfo", "filledWarning", "filledError", "outlined", "outlinedSuccess", "outlinedInfo", "outlinedWarning", "outlinedError", "standard", "standardSuccess", "standardInfo", "standardWarning", "standardError"]);
  function getIconButtonUtilityClass(slot) {
    return generateUtilityClass("MuiIconButton", slot);
  }
  const iconButtonClasses = generateUtilityClasses("MuiIconButton", ["root", "disabled", "colorInherit", "colorPrimary", "colorSecondary", "colorError", "colorInfo", "colorSuccess", "colorWarning", "edgeStart", "edgeEnd", "sizeSmall", "sizeMedium", "sizeLarge", "loading", "loadingIndicator", "loadingWrapper"]);
  const useUtilityClasses$B = (ownerState) => {
    const {
      classes,
      disabled,
      color: color2,
      edge,
      size,
      loading
    } = ownerState;
    const slots = {
      root: ["root", loading && "loading", disabled && "disabled", color2 !== "default" && `color${capitalize(color2)}`, edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`],
      loadingIndicator: ["loadingIndicator"],
      loadingWrapper: ["loadingWrapper"]
    };
    return composeClasses(slots, getIconButtonUtilityClass, classes);
  };
  const IconButtonRoot = styled(ButtonBase, {
    name: "MuiIconButton",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.loading && styles2.loading, ownerState.color !== "default" && styles2[`color${capitalize(ownerState.color)}`], ownerState.edge && styles2[`edge${capitalize(ownerState.edge)}`], styles2[`size${capitalize(ownerState.size)}`]];
    }
  })(memoTheme(({
    theme
  }) => ({
    textAlign: "center",
    flex: "0 0 auto",
    fontSize: theme.typography.pxToRem(24),
    padding: 8,
    borderRadius: "50%",
    color: (theme.vars || theme).palette.action.active,
    transition: theme.transitions.create("background-color", {
      duration: theme.transitions.duration.shortest
    }),
    variants: [{
      props: (props) => !props.disableRipple,
      style: {
        "--IconButton-hoverBg": theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),
        "&:hover": {
          backgroundColor: "var(--IconButton-hoverBg)",
          // Reset on touch devices, it doesn't add specificity
          "@media (hover: none)": {
            backgroundColor: "transparent"
          }
        }
      }
    }, {
      props: {
        edge: "start"
      },
      style: {
        marginLeft: -12
      }
    }, {
      props: {
        edge: "start",
        size: "small"
      },
      style: {
        marginLeft: -3
      }
    }, {
      props: {
        edge: "end"
      },
      style: {
        marginRight: -12
      }
    }, {
      props: {
        edge: "end",
        size: "small"
      },
      style: {
        marginRight: -3
      }
    }]
  })), memoTheme(({
    theme
  }) => ({
    variants: [{
      props: {
        color: "inherit"
      },
      style: {
        color: "inherit"
      }
    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => ({
      props: {
        color: color2
      },
      style: {
        color: (theme.vars || theme).palette[color2].main
      }
    })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => ({
      props: {
        color: color2
      },
      style: {
        "--IconButton-hoverBg": theme.vars ? `rgba(${(theme.vars || theme).palette[color2].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha((theme.vars || theme).palette[color2].main, theme.palette.action.hoverOpacity)
      }
    })), {
      props: {
        size: "small"
      },
      style: {
        padding: 5,
        fontSize: theme.typography.pxToRem(18)
      }
    }, {
      props: {
        size: "large"
      },
      style: {
        padding: 12,
        fontSize: theme.typography.pxToRem(28)
      }
    }],
    [`&.${iconButtonClasses.disabled}`]: {
      backgroundColor: "transparent",
      color: (theme.vars || theme).palette.action.disabled
    },
    [`&.${iconButtonClasses.loading}`]: {
      color: "transparent"
    }
  })));
  const IconButtonLoadingIndicator = styled("span", {
    name: "MuiIconButton",
    slot: "LoadingIndicator",
    overridesResolver: (props, styles2) => styles2.loadingIndicator
  })(({
    theme
  }) => ({
    display: "none",
    position: "absolute",
    visibility: "visible",
    top: "50%",
    left: "50%",
    transform: "translate(-50%, -50%)",
    color: (theme.vars || theme).palette.action.disabled,
    variants: [{
      props: {
        loading: true
      },
      style: {
        display: "flex"
      }
    }]
  }));
  const IconButton = /* @__PURE__ */ React__namespace.forwardRef(function IconButton2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiIconButton"
    });
    const {
      edge = false,
      children,
      className,
      color: color2 = "default",
      disabled = false,
      disableFocusRipple = false,
      size = "medium",
      id: idProp,
      loading = null,
      loadingIndicator: loadingIndicatorProp,
      ...other
    } = props;
    const loadingId = useId(idProp);
    const loadingIndicator = loadingIndicatorProp ?? /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, {
      "aria-labelledby": loadingId,
      color: "inherit",
      size: 16
    });
    const ownerState = {
      ...props,
      edge,
      color: color2,
      disabled,
      disableFocusRipple,
      loading,
      loadingIndicator,
      size
    };
    const classes = useUtilityClasses$B(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(IconButtonRoot, {
      id: loading ? loadingId : idProp,
      className: clsx(classes.root, className),
      centerRipple: true,
      focusRipple: !disableFocusRipple,
      disabled: disabled || loading,
      ref,
      ...other,
      ownerState,
      children: [typeof loading === "boolean" && // use plain HTML span to minimize the runtime overhead
      /* @__PURE__ */ jsxRuntimeExports.jsx("span", {
        className: classes.loadingWrapper,
        style: {
          display: "contents"
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconButtonLoadingIndicator, {
          className: classes.loadingIndicator,
          ownerState,
          children: loading && loadingIndicator
        })
      }), children]
    });
  });
  const SuccessOutlinedIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"
  }));
  const ReportProblemOutlinedIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"
  }));
  const ErrorOutlineIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"
  }));
  const InfoOutlinedIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"
  }));
  const ClearIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
  }));
  const useUtilityClasses$A = (ownerState) => {
    const {
      variant,
      color: color2,
      severity,
      classes
    } = ownerState;
    const slots = {
      root: ["root", `color${capitalize(color2 || severity)}`, `${variant}${capitalize(color2 || severity)}`, `${variant}`],
      icon: ["icon"],
      message: ["message"],
      action: ["action"]
    };
    return composeClasses(slots, getAlertUtilityClass, classes);
  };
  const AlertRoot = styled(Paper, {
    name: "MuiAlert",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, styles2[ownerState.variant], styles2[`${ownerState.variant}${capitalize(ownerState.color || ownerState.severity)}`]];
    }
  })(memoTheme(({
    theme
  }) => {
    const getColor = theme.palette.mode === "light" ? darken : lighten;
    const getBackgroundColor = theme.palette.mode === "light" ? lighten : darken;
    return {
      ...theme.typography.body2,
      backgroundColor: "transparent",
      display: "flex",
      padding: "6px 16px",
      variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(["light"])).map(([color2]) => ({
        props: {
          colorSeverity: color2,
          variant: "standard"
        },
        style: {
          color: theme.vars ? theme.vars.palette.Alert[`${color2}Color`] : getColor(theme.palette[color2].light, 0.6),
          backgroundColor: theme.vars ? theme.vars.palette.Alert[`${color2}StandardBg`] : getBackgroundColor(theme.palette[color2].light, 0.9),
          [`& .${alertClasses.icon}`]: theme.vars ? {
            color: theme.vars.palette.Alert[`${color2}IconColor`]
          } : {
            color: theme.palette[color2].main
          }
        }
      })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(["light"])).map(([color2]) => ({
        props: {
          colorSeverity: color2,
          variant: "outlined"
        },
        style: {
          color: theme.vars ? theme.vars.palette.Alert[`${color2}Color`] : getColor(theme.palette[color2].light, 0.6),
          border: `1px solid ${(theme.vars || theme).palette[color2].light}`,
          [`& .${alertClasses.icon}`]: theme.vars ? {
            color: theme.vars.palette.Alert[`${color2}IconColor`]
          } : {
            color: theme.palette[color2].main
          }
        }
      })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(["dark"])).map(([color2]) => ({
        props: {
          colorSeverity: color2,
          variant: "filled"
        },
        style: {
          fontWeight: theme.typography.fontWeightMedium,
          ...theme.vars ? {
            color: theme.vars.palette.Alert[`${color2}FilledColor`],
            backgroundColor: theme.vars.palette.Alert[`${color2}FilledBg`]
          } : {
            backgroundColor: theme.palette.mode === "dark" ? theme.palette[color2].dark : theme.palette[color2].main,
            color: theme.palette.getContrastText(theme.palette[color2].main)
          }
        }
      }))]
    };
  }));
  const AlertIcon = styled("div", {
    name: "MuiAlert",
    slot: "Icon",
    overridesResolver: (props, styles2) => styles2.icon
  })({
    marginRight: 12,
    padding: "7px 0",
    display: "flex",
    fontSize: 22,
    opacity: 0.9
  });
  const AlertMessage = styled("div", {
    name: "MuiAlert",
    slot: "Message",
    overridesResolver: (props, styles2) => styles2.message
  })({
    padding: "8px 0",
    minWidth: 0,
    overflow: "auto"
  });
  const AlertAction = styled("div", {
    name: "MuiAlert",
    slot: "Action",
    overridesResolver: (props, styles2) => styles2.action
  })({
    display: "flex",
    alignItems: "flex-start",
    padding: "4px 0 0 16px",
    marginLeft: "auto",
    marginRight: -8
  });
  const defaultIconMapping = {
    success: /* @__PURE__ */ jsxRuntimeExports.jsx(SuccessOutlinedIcon, {
      fontSize: "inherit"
    }),
    warning: /* @__PURE__ */ jsxRuntimeExports.jsx(ReportProblemOutlinedIcon, {
      fontSize: "inherit"
    }),
    error: /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorOutlineIcon, {
      fontSize: "inherit"
    }),
    info: /* @__PURE__ */ jsxRuntimeExports.jsx(InfoOutlinedIcon, {
      fontSize: "inherit"
    })
  };
  const Alert = /* @__PURE__ */ React__namespace.forwardRef(function Alert2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiAlert"
    });
    const {
      action,
      children,
      className,
      closeText = "Close",
      color: color2,
      components = {},
      componentsProps = {},
      icon,
      iconMapping = defaultIconMapping,
      onClose,
      role = "alert",
      severity = "success",
      slotProps = {},
      slots = {},
      variant = "standard",
      ...other
    } = props;
    const ownerState = {
      ...props,
      color: color2,
      severity,
      variant,
      colorSeverity: color2 || severity
    };
    const classes = useUtilityClasses$A(ownerState);
    const externalForwardedProps = {
      slots: {
        closeButton: components.CloseButton,
        closeIcon: components.CloseIcon,
        ...slots
      },
      slotProps: {
        ...componentsProps,
        ...slotProps
      }
    };
    const [RootSlot, rootSlotProps] = useSlot("root", {
      ref,
      shouldForwardComponentProp: true,
      className: clsx(classes.root, className),
      elementType: AlertRoot,
      externalForwardedProps: {
        ...externalForwardedProps,
        ...other
      },
      ownerState,
      additionalProps: {
        role,
        elevation: 0
      }
    });
    const [IconSlot, iconSlotProps] = useSlot("icon", {
      className: classes.icon,
      elementType: AlertIcon,
      externalForwardedProps,
      ownerState
    });
    const [MessageSlot, messageSlotProps] = useSlot("message", {
      className: classes.message,
      elementType: AlertMessage,
      externalForwardedProps,
      ownerState
    });
    const [ActionSlot, actionSlotProps] = useSlot("action", {
      className: classes.action,
      elementType: AlertAction,
      externalForwardedProps,
      ownerState
    });
    const [CloseButtonSlot, closeButtonProps] = useSlot("closeButton", {
      elementType: IconButton,
      externalForwardedProps,
      ownerState
    });
    const [CloseIconSlot, closeIconProps] = useSlot("closeIcon", {
      elementType: ClearIcon,
      externalForwardedProps,
      ownerState
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(RootSlot, {
      ...rootSlotProps,
      children: [icon !== false ? /* @__PURE__ */ jsxRuntimeExports.jsx(IconSlot, {
        ...iconSlotProps,
        children: icon || iconMapping[severity] || defaultIconMapping[severity]
      }) : null, /* @__PURE__ */ jsxRuntimeExports.jsx(MessageSlot, {
        ...messageSlotProps,
        children
      }), action != null ? /* @__PURE__ */ jsxRuntimeExports.jsx(ActionSlot, {
        ...actionSlotProps,
        children: action
      }) : null, action == null && onClose ? /* @__PURE__ */ jsxRuntimeExports.jsx(ActionSlot, {
        ...actionSlotProps,
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(CloseButtonSlot, {
          size: "small",
          "aria-label": closeText,
          title: closeText,
          color: "inherit",
          onClick: onClose,
          ...closeButtonProps,
          children: /* @__PURE__ */ jsxRuntimeExports.jsx(CloseIconSlot, {
            fontSize: "small",
            ...closeIconProps
          })
        })
      }) : null]
    });
  });
  function getTypographyUtilityClass(slot) {
    return generateUtilityClass("MuiTypography", slot);
  }
  generateUtilityClasses("MuiTypography", ["root", "h1", "h2", "h3", "h4", "h5", "h6", "subtitle1", "subtitle2", "body1", "body2", "inherit", "button", "caption", "overline", "alignLeft", "alignRight", "alignCenter", "alignJustify", "noWrap", "gutterBottom", "paragraph"]);
  const v6Colors = {
    primary: true,
    secondary: true,
    error: true,
    info: true,
    success: true,
    warning: true,
    textPrimary: true,
    textSecondary: true,
    textDisabled: true
  };
  const extendSxProp = internal_createExtendSxProp();
  const useUtilityClasses$z = (ownerState) => {
    const {
      align,
      gutterBottom,
      noWrap,
      paragraph,
      variant,
      classes
    } = ownerState;
    const slots = {
      root: ["root", variant, ownerState.align !== "inherit" && `align${capitalize(align)}`, gutterBottom && "gutterBottom", noWrap && "noWrap", paragraph && "paragraph"]
    };
    return composeClasses(slots, getTypographyUtilityClass, classes);
  };
  const TypographyRoot = styled("span", {
    name: "MuiTypography",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.variant && styles2[ownerState.variant], ownerState.align !== "inherit" && styles2[`align${capitalize(ownerState.align)}`], ownerState.noWrap && styles2.noWrap, ownerState.gutterBottom && styles2.gutterBottom, ownerState.paragraph && styles2.paragraph];
    }
  })(memoTheme(({
    theme
  }) => {
    var _a;
    return {
      margin: 0,
      variants: [{
        props: {
          variant: "inherit"
        },
        style: {
          // Some elements, like <button> on Chrome have default font that doesn't inherit, reset this.
          font: "inherit",
          lineHeight: "inherit",
          letterSpacing: "inherit"
        }
      }, ...Object.entries(theme.typography).filter(([variant, value]) => variant !== "inherit" && value && typeof value === "object").map(([variant, value]) => ({
        props: {
          variant
        },
        style: value
      })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => ({
        props: {
          color: color2
        },
        style: {
          color: (theme.vars || theme).palette[color2].main
        }
      })), ...Object.entries(((_a = theme.palette) == null ? void 0 : _a.text) || {}).filter(([, value]) => typeof value === "string").map(([color2]) => ({
        props: {
          color: `text${capitalize(color2)}`
        },
        style: {
          color: (theme.vars || theme).palette.text[color2]
        }
      })), {
        props: ({
          ownerState
        }) => ownerState.align !== "inherit",
        style: {
          textAlign: "var(--Typography-textAlign)"
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.noWrap,
        style: {
          overflow: "hidden",
          textOverflow: "ellipsis",
          whiteSpace: "nowrap"
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.gutterBottom,
        style: {
          marginBottom: "0.35em"
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.paragraph,
        style: {
          marginBottom: 16
        }
      }]
    };
  }));
  const defaultVariantMapping = {
    h1: "h1",
    h2: "h2",
    h3: "h3",
    h4: "h4",
    h5: "h5",
    h6: "h6",
    subtitle1: "h6",
    subtitle2: "h6",
    body1: "p",
    body2: "p",
    inherit: "p"
  };
  const Typography = /* @__PURE__ */ React__namespace.forwardRef(function Typography2(inProps, ref) {
    const {
      color: color2,
      ...themeProps
    } = useDefaultProps({
      props: inProps,
      name: "MuiTypography"
    });
    const isSxColor = !v6Colors[color2];
    const props = extendSxProp({
      ...themeProps,
      ...isSxColor && {
        color: color2
      }
    });
    const {
      align = "inherit",
      className,
      component,
      gutterBottom = false,
      noWrap = false,
      paragraph = false,
      variant = "body1",
      variantMapping = defaultVariantMapping,
      ...other
    } = props;
    const ownerState = {
      ...props,
      align,
      color: color2,
      className,
      component,
      gutterBottom,
      noWrap,
      paragraph,
      variant,
      variantMapping
    };
    const Component = component || (paragraph ? "p" : variantMapping[variant] || defaultVariantMapping[variant]) || "span";
    const classes = useUtilityClasses$z(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TypographyRoot, {
      as: Component,
      ref,
      className: clsx(classes.root, className),
      ...other,
      ownerState,
      style: {
        ...align !== "inherit" && {
          "--Typography-textAlign": align
        },
        ...other.style
      }
    });
  });
  var top = "top";
  var bottom = "bottom";
  var right = "right";
  var left = "left";
  var auto = "auto";
  var basePlacements = [top, bottom, right, left];
  var start = "start";
  var end = "end";
  var clippingParents = "clippingParents";
  var viewport = "viewport";
  var popper = "popper";
  var reference = "reference";
  var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
    return acc.concat([placement + "-" + start, placement + "-" + end]);
  }, []);
  var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
    return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
  }, []);
  var beforeRead = "beforeRead";
  var read = "read";
  var afterRead = "afterRead";
  var beforeMain = "beforeMain";
  var main = "main";
  var afterMain = "afterMain";
  var beforeWrite = "beforeWrite";
  var write = "write";
  var afterWrite = "afterWrite";
  var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
  function getNodeName(element) {
    return element ? (element.nodeName || "").toLowerCase() : null;
  }
  function getWindow(node2) {
    if (node2 == null) {
      return window;
    }
    if (node2.toString() !== "[object Window]") {
      var ownerDocument2 = node2.ownerDocument;
      return ownerDocument2 ? ownerDocument2.defaultView || window : window;
    }
    return node2;
  }
  function isElement(node2) {
    var OwnElement = getWindow(node2).Element;
    return node2 instanceof OwnElement || node2 instanceof Element;
  }
  function isHTMLElement$1(node2) {
    var OwnElement = getWindow(node2).HTMLElement;
    return node2 instanceof OwnElement || node2 instanceof HTMLElement;
  }
  function isShadowRoot(node2) {
    if (typeof ShadowRoot === "undefined") {
      return false;
    }
    var OwnElement = getWindow(node2).ShadowRoot;
    return node2 instanceof OwnElement || node2 instanceof ShadowRoot;
  }
  function applyStyles(_ref) {
    var state = _ref.state;
    Object.keys(state.elements).forEach(function(name) {
      var style2 = state.styles[name] || {};
      var attributes = state.attributes[name] || {};
      var element = state.elements[name];
      if (!isHTMLElement$1(element) || !getNodeName(element)) {
        return;
      }
      Object.assign(element.style, style2);
      Object.keys(attributes).forEach(function(name2) {
        var value = attributes[name2];
        if (value === false) {
          element.removeAttribute(name2);
        } else {
          element.setAttribute(name2, value === true ? "" : value);
        }
      });
    });
  }
  function effect$2(_ref2) {
    var state = _ref2.state;
    var initialStyles = {
      popper: {
        position: state.options.strategy,
        left: "0",
        top: "0",
        margin: "0"
      },
      arrow: {
        position: "absolute"
      },
      reference: {}
    };
    Object.assign(state.elements.popper.style, initialStyles.popper);
    state.styles = initialStyles;
    if (state.elements.arrow) {
      Object.assign(state.elements.arrow.style, initialStyles.arrow);
    }
    return function() {
      Object.keys(state.elements).forEach(function(name) {
        var element = state.elements[name];
        var attributes = state.attributes[name] || {};
        var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
        var style2 = styleProperties.reduce(function(style3, property) {
          style3[property] = "";
          return style3;
        }, {});
        if (!isHTMLElement$1(element) || !getNodeName(element)) {
          return;
        }
        Object.assign(element.style, style2);
        Object.keys(attributes).forEach(function(attribute) {
          element.removeAttribute(attribute);
        });
      });
    };
  }
  const applyStyles$1 = {
    name: "applyStyles",
    enabled: true,
    phase: "write",
    fn: applyStyles,
    effect: effect$2,
    requires: ["computeStyles"]
  };
  function getBasePlacement(placement) {
    return placement.split("-")[0];
  }
  var max = Math.max;
  var min = Math.min;
  var round$1 = Math.round;
  function getUAString() {
    var uaData = navigator.userAgentData;
    if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
      return uaData.brands.map(function(item) {
        return item.brand + "/" + item.version;
      }).join(" ");
    }
    return navigator.userAgent;
  }
  function isLayoutViewport() {
    return !/^((?!chrome|android).)*safari/i.test(getUAString());
  }
  function getBoundingClientRect(element, includeScale, isFixedStrategy) {
    if (includeScale === void 0) {
      includeScale = false;
    }
    if (isFixedStrategy === void 0) {
      isFixedStrategy = false;
    }
    var clientRect = element.getBoundingClientRect();
    var scaleX = 1;
    var scaleY = 1;
    if (includeScale && isHTMLElement$1(element)) {
      scaleX = element.offsetWidth > 0 ? round$1(clientRect.width) / element.offsetWidth || 1 : 1;
      scaleY = element.offsetHeight > 0 ? round$1(clientRect.height) / element.offsetHeight || 1 : 1;
    }
    var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;
    var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
    var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
    var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
    var width2 = clientRect.width / scaleX;
    var height2 = clientRect.height / scaleY;
    return {
      width: width2,
      height: height2,
      top: y,
      right: x + width2,
      bottom: y + height2,
      left: x,
      x,
      y
    };
  }
  function getLayoutRect(element) {
    var clientRect = getBoundingClientRect(element);
    var width2 = element.offsetWidth;
    var height2 = element.offsetHeight;
    if (Math.abs(clientRect.width - width2) <= 1) {
      width2 = clientRect.width;
    }
    if (Math.abs(clientRect.height - height2) <= 1) {
      height2 = clientRect.height;
    }
    return {
      x: element.offsetLeft,
      y: element.offsetTop,
      width: width2,
      height: height2
    };
  }
  function contains(parent, child) {
    var rootNode = child.getRootNode && child.getRootNode();
    if (parent.contains(child)) {
      return true;
    } else if (rootNode && isShadowRoot(rootNode)) {
      var next2 = child;
      do {
        if (next2 && parent.isSameNode(next2)) {
          return true;
        }
        next2 = next2.parentNode || next2.host;
      } while (next2);
    }
    return false;
  }
  function getComputedStyle(element) {
    return getWindow(element).getComputedStyle(element);
  }
  function isTableElement(element) {
    return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
  }
  function getDocumentElement(element) {
    return ((isElement(element) ? element.ownerDocument : (
      // $FlowFixMe[prop-missing]
      element.document
    )) || window.document).documentElement;
  }
  function getParentNode(element) {
    if (getNodeName(element) === "html") {
      return element;
    }
    return (
      // this is a quicker (but less type safe) way to save quite some bytes from the bundle
      // $FlowFixMe[incompatible-return]
      // $FlowFixMe[prop-missing]
      element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
      element.parentNode || // DOM Element detected
      (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
      // $FlowFixMe[incompatible-call]: HTMLElement is a Node
      getDocumentElement(element)
    );
  }
  function getTrueOffsetParent(element) {
    if (!isHTMLElement$1(element) || // https://github.com/popperjs/popper-core/issues/837
    getComputedStyle(element).position === "fixed") {
      return null;
    }
    return element.offsetParent;
  }
  function getContainingBlock(element) {
    var isFirefox = /firefox/i.test(getUAString());
    var isIE = /Trident/i.test(getUAString());
    if (isIE && isHTMLElement$1(element)) {
      var elementCss = getComputedStyle(element);
      if (elementCss.position === "fixed") {
        return null;
      }
    }
    var currentNode = getParentNode(element);
    if (isShadowRoot(currentNode)) {
      currentNode = currentNode.host;
    }
    while (isHTMLElement$1(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
      var css2 = getComputedStyle(currentNode);
      if (css2.transform !== "none" || css2.perspective !== "none" || css2.contain === "paint" || ["transform", "perspective"].indexOf(css2.willChange) !== -1 || isFirefox && css2.willChange === "filter" || isFirefox && css2.filter && css2.filter !== "none") {
        return currentNode;
      } else {
        currentNode = currentNode.parentNode;
      }
    }
    return null;
  }
  function getOffsetParent(element) {
    var window2 = getWindow(element);
    var offsetParent = getTrueOffsetParent(element);
    while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === "static") {
      offsetParent = getTrueOffsetParent(offsetParent);
    }
    if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle(offsetParent).position === "static")) {
      return window2;
    }
    return offsetParent || getContainingBlock(element) || window2;
  }
  function getMainAxisFromPlacement(placement) {
    return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
  }
  function within(min$1, value, max$1) {
    return max(min$1, min(value, max$1));
  }
  function withinMaxClamp(min2, value, max2) {
    var v = within(min2, value, max2);
    return v > max2 ? max2 : v;
  }
  function getFreshSideObject() {
    return {
      top: 0,
      right: 0,
      bottom: 0,
      left: 0
    };
  }
  function mergePaddingObject(paddingObject) {
    return Object.assign({}, getFreshSideObject(), paddingObject);
  }
  function expandToHashMap(value, keys) {
    return keys.reduce(function(hashMap, key2) {
      hashMap[key2] = value;
      return hashMap;
    }, {});
  }
  var toPaddingObject = function toPaddingObject2(padding2, state) {
    padding2 = typeof padding2 === "function" ? padding2(Object.assign({}, state.rects, {
      placement: state.placement
    })) : padding2;
    return mergePaddingObject(typeof padding2 !== "number" ? padding2 : expandToHashMap(padding2, basePlacements));
  };
  function arrow(_ref) {
    var _state$modifiersData$;
    var state = _ref.state, name = _ref.name, options = _ref.options;
    var arrowElement = state.elements.arrow;
    var popperOffsets2 = state.modifiersData.popperOffsets;
    var basePlacement = getBasePlacement(state.placement);
    var axis = getMainAxisFromPlacement(basePlacement);
    var isVertical = [left, right].indexOf(basePlacement) >= 0;
    var len2 = isVertical ? "height" : "width";
    if (!arrowElement || !popperOffsets2) {
      return;
    }
    var paddingObject = toPaddingObject(options.padding, state);
    var arrowRect = getLayoutRect(arrowElement);
    var minProp = axis === "y" ? top : left;
    var maxProp = axis === "y" ? bottom : right;
    var endDiff = state.rects.reference[len2] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len2];
    var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
    var arrowOffsetParent = getOffsetParent(arrowElement);
    var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
    var centerToReference = endDiff / 2 - startDiff / 2;
    var min2 = paddingObject[minProp];
    var max2 = clientSize - arrowRect[len2] - paddingObject[maxProp];
    var center = clientSize / 2 - arrowRect[len2] / 2 + centerToReference;
    var offset2 = within(min2, center, max2);
    var axisProp = axis;
    state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
  }
  function effect$1(_ref2) {
    var state = _ref2.state, options = _ref2.options;
    var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
    if (arrowElement == null) {
      return;
    }
    if (typeof arrowElement === "string") {
      arrowElement = state.elements.popper.querySelector(arrowElement);
      if (!arrowElement) {
        return;
      }
    }
    if (!contains(state.elements.popper, arrowElement)) {
      return;
    }
    state.elements.arrow = arrowElement;
  }
  const arrow$1 = {
    name: "arrow",
    enabled: true,
    phase: "main",
    fn: arrow,
    effect: effect$1,
    requires: ["popperOffsets"],
    requiresIfExists: ["preventOverflow"]
  };
  function getVariation(placement) {
    return placement.split("-")[1];
  }
  var unsetSides = {
    top: "auto",
    right: "auto",
    bottom: "auto",
    left: "auto"
  };
  function roundOffsetsByDPR(_ref, win) {
    var x = _ref.x, y = _ref.y;
    var dpr = win.devicePixelRatio || 1;
    return {
      x: round$1(x * dpr) / dpr || 0,
      y: round$1(y * dpr) / dpr || 0
    };
  }
  function mapToStyles(_ref2) {
    var _Object$assign2;
    var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position2 = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
    var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
    var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
      x,
      y
    }) : {
      x,
      y
    };
    x = _ref3.x;
    y = _ref3.y;
    var hasX = offsets.hasOwnProperty("x");
    var hasY = offsets.hasOwnProperty("y");
    var sideX = left;
    var sideY = top;
    var win = window;
    if (adaptive) {
      var offsetParent = getOffsetParent(popper2);
      var heightProp = "clientHeight";
      var widthProp = "clientWidth";
      if (offsetParent === getWindow(popper2)) {
        offsetParent = getDocumentElement(popper2);
        if (getComputedStyle(offsetParent).position !== "static" && position2 === "absolute") {
          heightProp = "scrollHeight";
          widthProp = "scrollWidth";
        }
      }
      offsetParent = offsetParent;
      if (placement === top || (placement === left || placement === right) && variation === end) {
        sideY = bottom;
        var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : (
          // $FlowFixMe[prop-missing]
          offsetParent[heightProp]
        );
        y -= offsetY - popperRect.height;
        y *= gpuAcceleration ? 1 : -1;
      }
      if (placement === left || (placement === top || placement === bottom) && variation === end) {
        sideX = right;
        var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : (
          // $FlowFixMe[prop-missing]
          offsetParent[widthProp]
        );
        x -= offsetX - popperRect.width;
        x *= gpuAcceleration ? 1 : -1;
      }
    }
    var commonStyles = Object.assign({
      position: position2
    }, adaptive && unsetSides);
    var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
      x,
      y
    }, getWindow(popper2)) : {
      x,
      y
    };
    x = _ref4.x;
    y = _ref4.y;
    if (gpuAcceleration) {
      var _Object$assign;
      return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
    }
    return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
  }
  function computeStyles(_ref5) {
    var state = _ref5.state, options = _ref5.options;
    var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
    var commonStyles = {
      placement: getBasePlacement(state.placement),
      variation: getVariation(state.placement),
      popper: state.elements.popper,
      popperRect: state.rects.popper,
      gpuAcceleration,
      isFixed: state.options.strategy === "fixed"
    };
    if (state.modifiersData.popperOffsets != null) {
      state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
        offsets: state.modifiersData.popperOffsets,
        position: state.options.strategy,
        adaptive,
        roundOffsets
      })));
    }
    if (state.modifiersData.arrow != null) {
      state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
        offsets: state.modifiersData.arrow,
        position: "absolute",
        adaptive: false,
        roundOffsets
      })));
    }
    state.attributes.popper = Object.assign({}, state.attributes.popper, {
      "data-popper-placement": state.placement
    });
  }
  const computeStyles$1 = {
    name: "computeStyles",
    enabled: true,
    phase: "beforeWrite",
    fn: computeStyles,
    data: {}
  };
  var passive = {
    passive: true
  };
  function effect(_ref) {
    var state = _ref.state, instance = _ref.instance, options = _ref.options;
    var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
    var window2 = getWindow(state.elements.popper);
    var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
    if (scroll) {
      scrollParents.forEach(function(scrollParent) {
        scrollParent.addEventListener("scroll", instance.update, passive);
      });
    }
    if (resize) {
      window2.addEventListener("resize", instance.update, passive);
    }
    return function() {
      if (scroll) {
        scrollParents.forEach(function(scrollParent) {
          scrollParent.removeEventListener("scroll", instance.update, passive);
        });
      }
      if (resize) {
        window2.removeEventListener("resize", instance.update, passive);
      }
    };
  }
  const eventListeners = {
    name: "eventListeners",
    enabled: true,
    phase: "write",
    fn: function fn() {
    },
    effect,
    data: {}
  };
  var hash$1 = {
    left: "right",
    right: "left",
    bottom: "top",
    top: "bottom"
  };
  function getOppositePlacement(placement) {
    return placement.replace(/left|right|bottom|top/g, function(matched) {
      return hash$1[matched];
    });
  }
  var hash = {
    start: "end",
    end: "start"
  };
  function getOppositeVariationPlacement(placement) {
    return placement.replace(/start|end/g, function(matched) {
      return hash[matched];
    });
  }
  function getWindowScroll(node2) {
    var win = getWindow(node2);
    var scrollLeft = win.pageXOffset;
    var scrollTop = win.pageYOffset;
    return {
      scrollLeft,
      scrollTop
    };
  }
  function getWindowScrollBarX(element) {
    return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
  }
  function getViewportRect(element, strategy) {
    var win = getWindow(element);
    var html = getDocumentElement(element);
    var visualViewport = win.visualViewport;
    var width2 = html.clientWidth;
    var height2 = html.clientHeight;
    var x = 0;
    var y = 0;
    if (visualViewport) {
      width2 = visualViewport.width;
      height2 = visualViewport.height;
      var layoutViewport = isLayoutViewport();
      if (layoutViewport || !layoutViewport && strategy === "fixed") {
        x = visualViewport.offsetLeft;
        y = visualViewport.offsetTop;
      }
    }
    return {
      width: width2,
      height: height2,
      x: x + getWindowScrollBarX(element),
      y
    };
  }
  function getDocumentRect(element) {
    var _element$ownerDocumen;
    var html = getDocumentElement(element);
    var winScroll = getWindowScroll(element);
    var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
    var width2 = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
    var height2 = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
    var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
    var y = -winScroll.scrollTop;
    if (getComputedStyle(body || html).direction === "rtl") {
      x += max(html.clientWidth, body ? body.clientWidth : 0) - width2;
    }
    return {
      width: width2,
      height: height2,
      x,
      y
    };
  }
  function isScrollParent(element) {
    var _getComputedStyle = getComputedStyle(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
    return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
  }
  function getScrollParent(node2) {
    if (["html", "body", "#document"].indexOf(getNodeName(node2)) >= 0) {
      return node2.ownerDocument.body;
    }
    if (isHTMLElement$1(node2) && isScrollParent(node2)) {
      return node2;
    }
    return getScrollParent(getParentNode(node2));
  }
  function listScrollParents(element, list) {
    var _element$ownerDocumen;
    if (list === void 0) {
      list = [];
    }
    var scrollParent = getScrollParent(element);
    var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
    var win = getWindow(scrollParent);
    var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
    var updatedList = list.concat(target);
    return isBody ? updatedList : (
      // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
      updatedList.concat(listScrollParents(getParentNode(target)))
    );
  }
  function rectToClientRect(rect) {
    return Object.assign({}, rect, {
      left: rect.x,
      top: rect.y,
      right: rect.x + rect.width,
      bottom: rect.y + rect.height
    });
  }
  function getInnerBoundingClientRect(element, strategy) {
    var rect = getBoundingClientRect(element, false, strategy === "fixed");
    rect.top = rect.top + element.clientTop;
    rect.left = rect.left + element.clientLeft;
    rect.bottom = rect.top + element.clientHeight;
    rect.right = rect.left + element.clientWidth;
    rect.width = element.clientWidth;
    rect.height = element.clientHeight;
    rect.x = rect.left;
    rect.y = rect.top;
    return rect;
  }
  function getClientRectFromMixedType(element, clippingParent, strategy) {
    return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
  }
  function getClippingParents(element) {
    var clippingParents2 = listScrollParents(getParentNode(element));
    var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle(element).position) >= 0;
    var clipperElement = canEscapeClipping && isHTMLElement$1(element) ? getOffsetParent(element) : element;
    if (!isElement(clipperElement)) {
      return [];
    }
    return clippingParents2.filter(function(clippingParent) {
      return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
    });
  }
  function getClippingRect(element, boundary, rootBoundary, strategy) {
    var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
    var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
    var firstClippingParent = clippingParents2[0];
    var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
      var rect = getClientRectFromMixedType(element, clippingParent, strategy);
      accRect.top = max(rect.top, accRect.top);
      accRect.right = min(rect.right, accRect.right);
      accRect.bottom = min(rect.bottom, accRect.bottom);
      accRect.left = max(rect.left, accRect.left);
      return accRect;
    }, getClientRectFromMixedType(element, firstClippingParent, strategy));
    clippingRect.width = clippingRect.right - clippingRect.left;
    clippingRect.height = clippingRect.bottom - clippingRect.top;
    clippingRect.x = clippingRect.left;
    clippingRect.y = clippingRect.top;
    return clippingRect;
  }
  function computeOffsets(_ref) {
    var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
    var basePlacement = placement ? getBasePlacement(placement) : null;
    var variation = placement ? getVariation(placement) : null;
    var commonX = reference2.x + reference2.width / 2 - element.width / 2;
    var commonY = reference2.y + reference2.height / 2 - element.height / 2;
    var offsets;
    switch (basePlacement) {
      case top:
        offsets = {
          x: commonX,
          y: reference2.y - element.height
        };
        break;
      case bottom:
        offsets = {
          x: commonX,
          y: reference2.y + reference2.height
        };
        break;
      case right:
        offsets = {
          x: reference2.x + reference2.width,
          y: commonY
        };
        break;
      case left:
        offsets = {
          x: reference2.x - element.width,
          y: commonY
        };
        break;
      default:
        offsets = {
          x: reference2.x,
          y: reference2.y
        };
    }
    var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
    if (mainAxis != null) {
      var len2 = mainAxis === "y" ? "height" : "width";
      switch (variation) {
        case start:
          offsets[mainAxis] = offsets[mainAxis] - (reference2[len2] / 2 - element[len2] / 2);
          break;
        case end:
          offsets[mainAxis] = offsets[mainAxis] + (reference2[len2] / 2 - element[len2] / 2);
          break;
      }
    }
    return offsets;
  }
  function detectOverflow(state, options) {
    if (options === void 0) {
      options = {};
    }
    var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding2 = _options$padding === void 0 ? 0 : _options$padding;
    var paddingObject = mergePaddingObject(typeof padding2 !== "number" ? padding2 : expandToHashMap(padding2, basePlacements));
    var altContext = elementContext === popper ? reference : popper;
    var popperRect = state.rects.popper;
    var element = state.elements[altBoundary ? altContext : elementContext];
    var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
    var referenceClientRect = getBoundingClientRect(state.elements.reference);
    var popperOffsets2 = computeOffsets({
      reference: referenceClientRect,
      element: popperRect,
      placement
    });
    var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
    var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
    var overflowOffsets = {
      top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
      bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
      left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
      right: elementClientRect.right - clippingClientRect.right + paddingObject.right
    };
    var offsetData = state.modifiersData.offset;
    if (elementContext === popper && offsetData) {
      var offset2 = offsetData[placement];
      Object.keys(overflowOffsets).forEach(function(key2) {
        var multiply = [right, bottom].indexOf(key2) >= 0 ? 1 : -1;
        var axis = [top, bottom].indexOf(key2) >= 0 ? "y" : "x";
        overflowOffsets[key2] += offset2[axis] * multiply;
      });
    }
    return overflowOffsets;
  }
  function computeAutoPlacement(state, options) {
    if (options === void 0) {
      options = {};
    }
    var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding2 = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
    var variation = getVariation(placement);
    var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
      return getVariation(placement2) === variation;
    }) : basePlacements;
    var allowedPlacements = placements$1.filter(function(placement2) {
      return allowedAutoPlacements.indexOf(placement2) >= 0;
    });
    if (allowedPlacements.length === 0) {
      allowedPlacements = placements$1;
    }
    var overflows = allowedPlacements.reduce(function(acc, placement2) {
      acc[placement2] = detectOverflow(state, {
        placement: placement2,
        boundary,
        rootBoundary,
        padding: padding2
      })[getBasePlacement(placement2)];
      return acc;
    }, {});
    return Object.keys(overflows).sort(function(a, b) {
      return overflows[a] - overflows[b];
    });
  }
  function getExpandedFallbackPlacements(placement) {
    if (getBasePlacement(placement) === auto) {
      return [];
    }
    var oppositePlacement = getOppositePlacement(placement);
    return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
  }
  function flip(_ref) {
    var state = _ref.state, options = _ref.options, name = _ref.name;
    if (state.modifiersData[name]._skip) {
      return;
    }
    var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding2 = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
    var preferredPlacement = state.options.placement;
    var basePlacement = getBasePlacement(preferredPlacement);
    var isBasePlacement = basePlacement === preferredPlacement;
    var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
    var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
      return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
        placement: placement2,
        boundary,
        rootBoundary,
        padding: padding2,
        flipVariations,
        allowedAutoPlacements
      }) : placement2);
    }, []);
    var referenceRect = state.rects.reference;
    var popperRect = state.rects.popper;
    var checksMap = /* @__PURE__ */ new Map();
    var makeFallbackChecks = true;
    var firstFittingPlacement = placements2[0];
    for (var i = 0; i < placements2.length; i++) {
      var placement = placements2[i];
      var _basePlacement = getBasePlacement(placement);
      var isStartVariation = getVariation(placement) === start;
      var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
      var len2 = isVertical ? "width" : "height";
      var overflow = detectOverflow(state, {
        placement,
        boundary,
        rootBoundary,
        altBoundary,
        padding: padding2
      });
      var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
      if (referenceRect[len2] > popperRect[len2]) {
        mainVariationSide = getOppositePlacement(mainVariationSide);
      }
      var altVariationSide = getOppositePlacement(mainVariationSide);
      var checks = [];
      if (checkMainAxis) {
        checks.push(overflow[_basePlacement] <= 0);
      }
      if (checkAltAxis) {
        checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
      }
      if (checks.every(function(check) {
        return check;
      })) {
        firstFittingPlacement = placement;
        makeFallbackChecks = false;
        break;
      }
      checksMap.set(placement, checks);
    }
    if (makeFallbackChecks) {
      var numberOfChecks = flipVariations ? 3 : 1;
      var _loop = function _loop2(_i2) {
        var fittingPlacement = placements2.find(function(placement2) {
          var checks2 = checksMap.get(placement2);
          if (checks2) {
            return checks2.slice(0, _i2).every(function(check) {
              return check;
            });
          }
        });
        if (fittingPlacement) {
          firstFittingPlacement = fittingPlacement;
          return "break";
        }
      };
      for (var _i = numberOfChecks; _i > 0; _i--) {
        var _ret = _loop(_i);
        if (_ret === "break") break;
      }
    }
    if (state.placement !== firstFittingPlacement) {
      state.modifiersData[name]._skip = true;
      state.placement = firstFittingPlacement;
      state.reset = true;
    }
  }
  const flip$1 = {
    name: "flip",
    enabled: true,
    phase: "main",
    fn: flip,
    requiresIfExists: ["offset"],
    data: {
      _skip: false
    }
  };
  function getSideOffsets(overflow, rect, preventedOffsets) {
    if (preventedOffsets === void 0) {
      preventedOffsets = {
        x: 0,
        y: 0
      };
    }
    return {
      top: overflow.top - rect.height - preventedOffsets.y,
      right: overflow.right - rect.width + preventedOffsets.x,
      bottom: overflow.bottom - rect.height + preventedOffsets.y,
      left: overflow.left - rect.width - preventedOffsets.x
    };
  }
  function isAnySideFullyClipped(overflow) {
    return [top, right, bottom, left].some(function(side) {
      return overflow[side] >= 0;
    });
  }
  function hide(_ref) {
    var state = _ref.state, name = _ref.name;
    var referenceRect = state.rects.reference;
    var popperRect = state.rects.popper;
    var preventedOffsets = state.modifiersData.preventOverflow;
    var referenceOverflow = detectOverflow(state, {
      elementContext: "reference"
    });
    var popperAltOverflow = detectOverflow(state, {
      altBoundary: true
    });
    var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
    var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
    var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
    var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
    state.modifiersData[name] = {
      referenceClippingOffsets,
      popperEscapeOffsets,
      isReferenceHidden,
      hasPopperEscaped
    };
    state.attributes.popper = Object.assign({}, state.attributes.popper, {
      "data-popper-reference-hidden": isReferenceHidden,
      "data-popper-escaped": hasPopperEscaped
    });
  }
  const hide$1 = {
    name: "hide",
    enabled: true,
    phase: "main",
    requiresIfExists: ["preventOverflow"],
    fn: hide
  };
  function distanceAndSkiddingToXY(placement, rects, offset2) {
    var basePlacement = getBasePlacement(placement);
    var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
    var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
      placement
    })) : offset2, skidding = _ref[0], distance = _ref[1];
    skidding = skidding || 0;
    distance = (distance || 0) * invertDistance;
    return [left, right].indexOf(basePlacement) >= 0 ? {
      x: distance,
      y: skidding
    } : {
      x: skidding,
      y: distance
    };
  }
  function offset(_ref2) {
    var state = _ref2.state, options = _ref2.options, name = _ref2.name;
    var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
    var data = placements.reduce(function(acc, placement) {
      acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
      return acc;
    }, {});
    var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
    if (state.modifiersData.popperOffsets != null) {
      state.modifiersData.popperOffsets.x += x;
      state.modifiersData.popperOffsets.y += y;
    }
    state.modifiersData[name] = data;
  }
  const offset$1 = {
    name: "offset",
    enabled: true,
    phase: "main",
    requires: ["popperOffsets"],
    fn: offset
  };
  function popperOffsets(_ref) {
    var state = _ref.state, name = _ref.name;
    state.modifiersData[name] = computeOffsets({
      reference: state.rects.reference,
      element: state.rects.popper,
      placement: state.placement
    });
  }
  const popperOffsets$1 = {
    name: "popperOffsets",
    enabled: true,
    phase: "read",
    fn: popperOffsets,
    data: {}
  };
  function getAltAxis(axis) {
    return axis === "x" ? "y" : "x";
  }
  function preventOverflow(_ref) {
    var state = _ref.state, options = _ref.options, name = _ref.name;
    var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding2 = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
    var overflow = detectOverflow(state, {
      boundary,
      rootBoundary,
      padding: padding2,
      altBoundary
    });
    var basePlacement = getBasePlacement(state.placement);
    var variation = getVariation(state.placement);
    var isBasePlacement = !variation;
    var mainAxis = getMainAxisFromPlacement(basePlacement);
    var altAxis = getAltAxis(mainAxis);
    var popperOffsets2 = state.modifiersData.popperOffsets;
    var referenceRect = state.rects.reference;
    var popperRect = state.rects.popper;
    var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
      placement: state.placement
    })) : tetherOffset;
    var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
      mainAxis: tetherOffsetValue,
      altAxis: tetherOffsetValue
    } : Object.assign({
      mainAxis: 0,
      altAxis: 0
    }, tetherOffsetValue);
    var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
    var data = {
      x: 0,
      y: 0
    };
    if (!popperOffsets2) {
      return;
    }
    if (checkMainAxis) {
      var _offsetModifierState$;
      var mainSide = mainAxis === "y" ? top : left;
      var altSide = mainAxis === "y" ? bottom : right;
      var len2 = mainAxis === "y" ? "height" : "width";
      var offset2 = popperOffsets2[mainAxis];
      var min$1 = offset2 + overflow[mainSide];
      var max$1 = offset2 - overflow[altSide];
      var additive = tether ? -popperRect[len2] / 2 : 0;
      var minLen = variation === start ? referenceRect[len2] : popperRect[len2];
      var maxLen = variation === start ? -popperRect[len2] : -referenceRect[len2];
      var arrowElement = state.elements.arrow;
      var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
        width: 0,
        height: 0
      };
      var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
      var arrowPaddingMin = arrowPaddingObject[mainSide];
      var arrowPaddingMax = arrowPaddingObject[altSide];
      var arrowLen = within(0, referenceRect[len2], arrowRect[len2]);
      var minOffset = isBasePlacement ? referenceRect[len2] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
      var maxOffset = isBasePlacement ? -referenceRect[len2] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
      var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
      var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
      var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
      var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
      var tetherMax = offset2 + maxOffset - offsetModifierValue;
      var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1);
      popperOffsets2[mainAxis] = preventedOffset;
      data[mainAxis] = preventedOffset - offset2;
    }
    if (checkAltAxis) {
      var _offsetModifierState$2;
      var _mainSide = mainAxis === "x" ? top : left;
      var _altSide = mainAxis === "x" ? bottom : right;
      var _offset = popperOffsets2[altAxis];
      var _len = altAxis === "y" ? "height" : "width";
      var _min = _offset + overflow[_mainSide];
      var _max = _offset - overflow[_altSide];
      var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
      var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
      var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
      var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
      var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
      popperOffsets2[altAxis] = _preventedOffset;
      data[altAxis] = _preventedOffset - _offset;
    }
    state.modifiersData[name] = data;
  }
  const preventOverflow$1 = {
    name: "preventOverflow",
    enabled: true,
    phase: "main",
    fn: preventOverflow,
    requiresIfExists: ["offset"]
  };
  function getHTMLElementScroll(element) {
    return {
      scrollLeft: element.scrollLeft,
      scrollTop: element.scrollTop
    };
  }
  function getNodeScroll(node2) {
    if (node2 === getWindow(node2) || !isHTMLElement$1(node2)) {
      return getWindowScroll(node2);
    } else {
      return getHTMLElementScroll(node2);
    }
  }
  function isElementScaled(element) {
    var rect = element.getBoundingClientRect();
    var scaleX = round$1(rect.width) / element.offsetWidth || 1;
    var scaleY = round$1(rect.height) / element.offsetHeight || 1;
    return scaleX !== 1 || scaleY !== 1;
  }
  function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
    if (isFixed === void 0) {
      isFixed = false;
    }
    var isOffsetParentAnElement = isHTMLElement$1(offsetParent);
    var offsetParentIsScaled = isHTMLElement$1(offsetParent) && isElementScaled(offsetParent);
    var documentElement = getDocumentElement(offsetParent);
    var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
    var scroll = {
      scrollLeft: 0,
      scrollTop: 0
    };
    var offsets = {
      x: 0,
      y: 0
    };
    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
      if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078
      isScrollParent(documentElement)) {
        scroll = getNodeScroll(offsetParent);
      }
      if (isHTMLElement$1(offsetParent)) {
        offsets = getBoundingClientRect(offsetParent, true);
        offsets.x += offsetParent.clientLeft;
        offsets.y += offsetParent.clientTop;
      } else if (documentElement) {
        offsets.x = getWindowScrollBarX(documentElement);
      }
    }
    return {
      x: rect.left + scroll.scrollLeft - offsets.x,
      y: rect.top + scroll.scrollTop - offsets.y,
      width: rect.width,
      height: rect.height
    };
  }
  function order(modifiers) {
    var map = /* @__PURE__ */ new Map();
    var visited = /* @__PURE__ */ new Set();
    var result = [];
    modifiers.forEach(function(modifier) {
      map.set(modifier.name, modifier);
    });
    function sort(modifier) {
      visited.add(modifier.name);
      var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
      requires.forEach(function(dep) {
        if (!visited.has(dep)) {
          var depModifier = map.get(dep);
          if (depModifier) {
            sort(depModifier);
          }
        }
      });
      result.push(modifier);
    }
    modifiers.forEach(function(modifier) {
      if (!visited.has(modifier.name)) {
        sort(modifier);
      }
    });
    return result;
  }
  function orderModifiers(modifiers) {
    var orderedModifiers = order(modifiers);
    return modifierPhases.reduce(function(acc, phase) {
      return acc.concat(orderedModifiers.filter(function(modifier) {
        return modifier.phase === phase;
      }));
    }, []);
  }
  function debounce(fn2) {
    var pending;
    return function() {
      if (!pending) {
        pending = new Promise(function(resolve) {
          Promise.resolve().then(function() {
            pending = void 0;
            resolve(fn2());
          });
        });
      }
      return pending;
    };
  }
  function mergeByName(modifiers) {
    var merged = modifiers.reduce(function(merged2, current) {
      var existing = merged2[current.name];
      merged2[current.name] = existing ? Object.assign({}, existing, current, {
        options: Object.assign({}, existing.options, current.options),
        data: Object.assign({}, existing.data, current.data)
      }) : current;
      return merged2;
    }, {});
    return Object.keys(merged).map(function(key2) {
      return merged[key2];
    });
  }
  var DEFAULT_OPTIONS = {
    placement: "bottom",
    modifiers: [],
    strategy: "absolute"
  };
  function areValidElements() {
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }
    return !args.some(function(element) {
      return !(element && typeof element.getBoundingClientRect === "function");
    });
  }
  function popperGenerator(generatorOptions) {
    if (generatorOptions === void 0) {
      generatorOptions = {};
    }
    var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
    return function createPopper2(reference2, popper2, options) {
      if (options === void 0) {
        options = defaultOptions;
      }
      var state = {
        placement: "bottom",
        orderedModifiers: [],
        options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
        modifiersData: {},
        elements: {
          reference: reference2,
          popper: popper2
        },
        attributes: {},
        styles: {}
      };
      var effectCleanupFns = [];
      var isDestroyed = false;
      var instance = {
        state,
        setOptions: function setOptions(setOptionsAction) {
          var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
          cleanupModifierEffects();
          state.options = Object.assign({}, defaultOptions, state.options, options2);
          state.scrollParents = {
            reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
            popper: listScrollParents(popper2)
          };
          var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
          state.orderedModifiers = orderedModifiers.filter(function(m) {
            return m.enabled;
          });
          runModifierEffects();
          return instance.update();
        },
        // Sync update – it will always be executed, even if not necessary. This
        // is useful for low frequency updates where sync behavior simplifies the
        // logic.
        // For high frequency updates (e.g. `resize` and `scroll` events), always
        // prefer the async Popper#update method
        forceUpdate: function forceUpdate() {
          if (isDestroyed) {
            return;
          }
          var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
          if (!areValidElements(reference3, popper3)) {
            return;
          }
          state.rects = {
            reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
            popper: getLayoutRect(popper3)
          };
          state.reset = false;
          state.placement = state.options.placement;
          state.orderedModifiers.forEach(function(modifier) {
            return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
          });
          for (var index = 0; index < state.orderedModifiers.length; index++) {
            if (state.reset === true) {
              state.reset = false;
              index = -1;
              continue;
            }
            var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
            if (typeof fn2 === "function") {
              state = fn2({
                state,
                options: _options,
                name,
                instance
              }) || state;
            }
          }
        },
        // Async and optimistically optimized update – it will not be executed if
        // not necessary (debounced to run at most once-per-tick)
        update: debounce(function() {
          return new Promise(function(resolve) {
            instance.forceUpdate();
            resolve(state);
          });
        }),
        destroy: function destroy() {
          cleanupModifierEffects();
          isDestroyed = true;
        }
      };
      if (!areValidElements(reference2, popper2)) {
        return instance;
      }
      instance.setOptions(options).then(function(state2) {
        if (!isDestroyed && options.onFirstUpdate) {
          options.onFirstUpdate(state2);
        }
      });
      function runModifierEffects() {
        state.orderedModifiers.forEach(function(_ref) {
          var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect2 = _ref.effect;
          if (typeof effect2 === "function") {
            var cleanupFn = effect2({
              state,
              name,
              instance,
              options: options2
            });
            var noopFn = function noopFn2() {
            };
            effectCleanupFns.push(cleanupFn || noopFn);
          }
        });
      }
      function cleanupModifierEffects() {
        effectCleanupFns.forEach(function(fn2) {
          return fn2();
        });
        effectCleanupFns = [];
      }
      return instance;
    };
  }
  var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
  var createPopper = /* @__PURE__ */ popperGenerator({
    defaultModifiers
  });
  function getContainer$1(container) {
    return typeof container === "function" ? container() : container;
  }
  const Portal = /* @__PURE__ */ React__namespace.forwardRef(function Portal2(props, forwardedRef) {
    const {
      children,
      container,
      disablePortal = false
    } = props;
    const [mountNode, setMountNode] = React__namespace.useState(null);
    const handleRef = useForkRef(/* @__PURE__ */ React__namespace.isValidElement(children) ? getReactElementRef(children) : null, forwardedRef);
    useEnhancedEffect(() => {
      if (!disablePortal) {
        setMountNode(getContainer$1(container) || document.body);
      }
    }, [container, disablePortal]);
    useEnhancedEffect(() => {
      if (mountNode && !disablePortal) {
        setRef(forwardedRef, mountNode);
        return () => {
          setRef(forwardedRef, null);
        };
      }
      return void 0;
    }, [forwardedRef, mountNode, disablePortal]);
    if (disablePortal) {
      if (/* @__PURE__ */ React__namespace.isValidElement(children)) {
        const newProps = {
          ref: handleRef
        };
        return /* @__PURE__ */ React__namespace.cloneElement(children, newProps);
      }
      return children;
    }
    return mountNode ? /* @__PURE__ */ ReactDOM__default__namespace.createPortal(children, mountNode) : mountNode;
  });
  function getPopperUtilityClass(slot) {
    return generateUtilityClass("MuiPopper", slot);
  }
  generateUtilityClasses("MuiPopper", ["root"]);
  function flipPlacement(placement, direction) {
    if (direction === "ltr") {
      return placement;
    }
    switch (placement) {
      case "bottom-end":
        return "bottom-start";
      case "bottom-start":
        return "bottom-end";
      case "top-end":
        return "top-start";
      case "top-start":
        return "top-end";
      default:
        return placement;
    }
  }
  function resolveAnchorEl$1(anchorEl) {
    return typeof anchorEl === "function" ? anchorEl() : anchorEl;
  }
  function isHTMLElement(element) {
    return element.nodeType !== void 0;
  }
  const useUtilityClasses$y = (ownerState) => {
    const {
      classes
    } = ownerState;
    const slots = {
      root: ["root"]
    };
    return composeClasses(slots, getPopperUtilityClass, classes);
  };
  const defaultPopperOptions = {};
  const PopperTooltip = /* @__PURE__ */ React__namespace.forwardRef(function PopperTooltip2(props, forwardedRef) {
    const {
      anchorEl,
      children,
      direction,
      disablePortal,
      modifiers,
      open: open2,
      placement: initialPlacement,
      popperOptions,
      popperRef: popperRefProp,
      slotProps = {},
      slots = {},
      TransitionProps,
      // @ts-ignore internal logic
      ownerState: ownerStateProp,
      // prevent from spreading to DOM, it can come from the parent component e.g. Select.
      ...other
    } = props;
    const tooltipRef = React__namespace.useRef(null);
    const ownRef = useForkRef(tooltipRef, forwardedRef);
    const popperRef = React__namespace.useRef(null);
    const handlePopperRef = useForkRef(popperRef, popperRefProp);
    const handlePopperRefRef = React__namespace.useRef(handlePopperRef);
    useEnhancedEffect(() => {
      handlePopperRefRef.current = handlePopperRef;
    }, [handlePopperRef]);
    React__namespace.useImperativeHandle(popperRefProp, () => popperRef.current, []);
    const rtlPlacement = flipPlacement(initialPlacement, direction);
    const [placement, setPlacement] = React__namespace.useState(rtlPlacement);
    const [resolvedAnchorElement, setResolvedAnchorElement] = React__namespace.useState(resolveAnchorEl$1(anchorEl));
    React__namespace.useEffect(() => {
      if (popperRef.current) {
        popperRef.current.forceUpdate();
      }
    });
    React__namespace.useEffect(() => {
      if (anchorEl) {
        setResolvedAnchorElement(resolveAnchorEl$1(anchorEl));
      }
    }, [anchorEl]);
    useEnhancedEffect(() => {
      if (!resolvedAnchorElement || !open2) {
        return void 0;
      }
      const handlePopperUpdate = (data) => {
        setPlacement(data.placement);
      };
      let popperModifiers = [{
        name: "preventOverflow",
        options: {
          altBoundary: disablePortal
        }
      }, {
        name: "flip",
        options: {
          altBoundary: disablePortal
        }
      }, {
        name: "onUpdate",
        enabled: true,
        phase: "afterWrite",
        fn: ({
          state
        }) => {
          handlePopperUpdate(state);
        }
      }];
      if (modifiers != null) {
        popperModifiers = popperModifiers.concat(modifiers);
      }
      if (popperOptions && popperOptions.modifiers != null) {
        popperModifiers = popperModifiers.concat(popperOptions.modifiers);
      }
      const popper2 = createPopper(resolvedAnchorElement, tooltipRef.current, {
        placement: rtlPlacement,
        ...popperOptions,
        modifiers: popperModifiers
      });
      handlePopperRefRef.current(popper2);
      return () => {
        popper2.destroy();
        handlePopperRefRef.current(null);
      };
    }, [resolvedAnchorElement, disablePortal, modifiers, open2, popperOptions, rtlPlacement]);
    const childProps = {
      placement
    };
    if (TransitionProps !== null) {
      childProps.TransitionProps = TransitionProps;
    }
    const classes = useUtilityClasses$y(props);
    const Root = slots.root ?? "div";
    const rootProps = useSlotProps({
      elementType: Root,
      externalSlotProps: slotProps.root,
      externalForwardedProps: other,
      additionalProps: {
        role: "tooltip",
        ref: ownRef
      },
      ownerState: props,
      className: classes.root
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsx(Root, {
      ...rootProps,
      children: typeof children === "function" ? children(childProps) : children
    });
  });
  const Popper$1 = /* @__PURE__ */ React__namespace.forwardRef(function Popper2(props, forwardedRef) {
    const {
      anchorEl,
      children,
      container: containerProp,
      direction = "ltr",
      disablePortal = false,
      keepMounted = false,
      modifiers,
      open: open2,
      placement = "bottom",
      popperOptions = defaultPopperOptions,
      popperRef,
      style: style2,
      transition = false,
      slotProps = {},
      slots = {},
      ...other
    } = props;
    const [exited, setExited] = React__namespace.useState(true);
    const handleEnter = () => {
      setExited(false);
    };
    const handleExited = () => {
      setExited(true);
    };
    if (!keepMounted && !open2 && (!transition || exited)) {
      return null;
    }
    let container;
    if (containerProp) {
      container = containerProp;
    } else if (anchorEl) {
      const resolvedAnchorEl = resolveAnchorEl$1(anchorEl);
      container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;
    }
    const display = !open2 && keepMounted && (!transition || exited) ? "none" : void 0;
    const transitionProps = transition ? {
      in: open2,
      onEnter: handleEnter,
      onExited: handleExited
    } : void 0;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal, {
      disablePortal,
      container,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(PopperTooltip, {
        anchorEl,
        direction,
        disablePortal,
        modifiers,
        ref: forwardedRef,
        open: transition ? !exited : open2,
        placement,
        popperOptions,
        popperRef,
        slotProps,
        slots,
        ...other,
        style: {
          // Prevents scroll issue, waiting for Popper.js to add this style once initiated.
          position: "fixed",
          // Fix Popper.js display issue
          top: 0,
          left: 0,
          display,
          ...style2
        },
        TransitionProps: transitionProps,
        children
      })
    });
  });
  const PopperRoot = styled(Popper$1, {
    name: "MuiPopper",
    slot: "Root",
    overridesResolver: (props, styles2) => styles2.root
  })({});
  const Popper = /* @__PURE__ */ React__namespace.forwardRef(function Popper22(inProps, ref) {
    const isRtl = useRtl();
    const props = useDefaultProps({
      props: inProps,
      name: "MuiPopper"
    });
    const {
      anchorEl,
      component,
      components,
      componentsProps,
      container,
      disablePortal,
      keepMounted,
      modifiers,
      open: open2,
      placement,
      popperOptions,
      popperRef,
      transition,
      slots,
      slotProps,
      ...other
    } = props;
    const RootComponent = (slots == null ? void 0 : slots.root) ?? (components == null ? void 0 : components.Root);
    const otherProps = {
      anchorEl,
      container,
      disablePortal,
      keepMounted,
      modifiers,
      open: open2,
      placement,
      popperOptions,
      popperRef,
      transition,
      ...other
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(PopperRoot, {
      as: component,
      direction: isRtl ? "rtl" : "ltr",
      slots: {
        root: RootComponent
      },
      slotProps: slotProps ?? componentsProps,
      ...otherProps,
      ref
    });
  });
  function getStyleValue(value) {
    return parseInt(value, 10) || 0;
  }
  const styles$2 = {
    shadow: {
      // Visibility needed to hide the extra text area on iPads
      visibility: "hidden",
      // Remove from the content flow
      position: "absolute",
      // Ignore the scrollbar width
      overflow: "hidden",
      height: 0,
      top: 0,
      left: 0,
      // Create a new layer, increase the isolation of the computed values
      transform: "translateZ(0)"
    }
  };
  function isObjectEmpty(object) {
    for (const _ in object) {
      return false;
    }
    return true;
  }
  function isEmpty$1(obj) {
    return isObjectEmpty(obj) || obj.outerHeightStyle === 0 && !obj.overflowing;
  }
  const TextareaAutosize = /* @__PURE__ */ React__namespace.forwardRef(function TextareaAutosize2(props, forwardedRef) {
    const {
      onChange,
      maxRows,
      minRows = 1,
      style: style2,
      value,
      ...other
    } = props;
    const {
      current: isControlled
    } = React__namespace.useRef(value != null);
    const textareaRef = React__namespace.useRef(null);
    const handleRef = useForkRef(forwardedRef, textareaRef);
    const heightRef = React__namespace.useRef(null);
    const hiddenTextareaRef = React__namespace.useRef(null);
    const calculateTextareaStyles = React__namespace.useCallback(() => {
      const textarea = textareaRef.current;
      const hiddenTextarea = hiddenTextareaRef.current;
      if (!textarea || !hiddenTextarea) {
        return void 0;
      }
      const containerWindow = ownerWindow(textarea);
      const computedStyle = containerWindow.getComputedStyle(textarea);
      if (computedStyle.width === "0px") {
        return {
          outerHeightStyle: 0,
          overflowing: false
        };
      }
      hiddenTextarea.style.width = computedStyle.width;
      hiddenTextarea.value = textarea.value || props.placeholder || "x";
      if (hiddenTextarea.value.slice(-1) === "\n") {
        hiddenTextarea.value += " ";
      }
      const boxSizing2 = computedStyle.boxSizing;
      const padding2 = getStyleValue(computedStyle.paddingBottom) + getStyleValue(computedStyle.paddingTop);
      const border2 = getStyleValue(computedStyle.borderBottomWidth) + getStyleValue(computedStyle.borderTopWidth);
      const innerHeight = hiddenTextarea.scrollHeight;
      hiddenTextarea.value = "x";
      const singleRowHeight = hiddenTextarea.scrollHeight;
      let outerHeight = innerHeight;
      if (minRows) {
        outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);
      }
      if (maxRows) {
        outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);
      }
      outerHeight = Math.max(outerHeight, singleRowHeight);
      const outerHeightStyle = outerHeight + (boxSizing2 === "border-box" ? padding2 + border2 : 0);
      const overflowing = Math.abs(outerHeight - innerHeight) <= 1;
      return {
        outerHeightStyle,
        overflowing
      };
    }, [maxRows, minRows, props.placeholder]);
    const didHeightChange = useEventCallback(() => {
      const textarea = textareaRef.current;
      const textareaStyles = calculateTextareaStyles();
      if (!textarea || !textareaStyles || isEmpty$1(textareaStyles)) {
        return false;
      }
      const outerHeightStyle = textareaStyles.outerHeightStyle;
      return heightRef.current != null && heightRef.current !== outerHeightStyle;
    });
    const syncHeight = React__namespace.useCallback(() => {
      const textarea = textareaRef.current;
      const textareaStyles = calculateTextareaStyles();
      if (!textarea || !textareaStyles || isEmpty$1(textareaStyles)) {
        return;
      }
      const outerHeightStyle = textareaStyles.outerHeightStyle;
      if (heightRef.current !== outerHeightStyle) {
        heightRef.current = outerHeightStyle;
        textarea.style.height = `${outerHeightStyle}px`;
      }
      textarea.style.overflow = textareaStyles.overflowing ? "hidden" : "";
    }, [calculateTextareaStyles]);
    const frameRef = React__namespace.useRef(-1);
    useEnhancedEffect(() => {
      const debouncedHandleResize = debounce$1(syncHeight);
      const textarea = textareaRef == null ? void 0 : textareaRef.current;
      if (!textarea) {
        return void 0;
      }
      const containerWindow = ownerWindow(textarea);
      containerWindow.addEventListener("resize", debouncedHandleResize);
      let resizeObserver;
      if (typeof ResizeObserver !== "undefined") {
        resizeObserver = new ResizeObserver(() => {
          if (didHeightChange()) {
            resizeObserver.unobserve(textarea);
            cancelAnimationFrame(frameRef.current);
            syncHeight();
            frameRef.current = requestAnimationFrame(() => {
              resizeObserver.observe(textarea);
            });
          }
        });
        resizeObserver.observe(textarea);
      }
      return () => {
        debouncedHandleResize.clear();
        cancelAnimationFrame(frameRef.current);
        containerWindow.removeEventListener("resize", debouncedHandleResize);
        if (resizeObserver) {
          resizeObserver.disconnect();
        }
      };
    }, [calculateTextareaStyles, syncHeight, didHeightChange]);
    useEnhancedEffect(() => {
      syncHeight();
    });
    const handleChange = (event) => {
      if (!isControlled) {
        syncHeight();
      }
      if (onChange) {
        onChange(event);
      }
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(React__namespace.Fragment, {
      children: [/* @__PURE__ */ jsxRuntimeExports.jsx("textarea", {
        value,
        onChange: handleChange,
        ref: handleRef,
        rows: minRows,
        style: style2,
        ...other
      }), /* @__PURE__ */ jsxRuntimeExports.jsx("textarea", {
        "aria-hidden": true,
        className: props.className,
        readOnly: true,
        ref: hiddenTextareaRef,
        tabIndex: -1,
        style: {
          ...styles$2.shadow,
          ...style2,
          paddingTop: 0,
          paddingBottom: 0
        }
      })]
    });
  });
  function isHostComponent(element) {
    return typeof element === "string";
  }
  function formControlState({
    props,
    states,
    muiFormControl
  }) {
    return states.reduce((acc, state) => {
      acc[state] = props[state];
      if (muiFormControl) {
        if (typeof props[state] === "undefined") {
          acc[state] = muiFormControl[state];
        }
      }
      return acc;
    }, {});
  }
  const FormControlContext = /* @__PURE__ */ React__namespace.createContext(void 0);
  function useFormControl() {
    return React__namespace.useContext(FormControlContext);
  }
  function hasValue(value) {
    return value != null && !(Array.isArray(value) && value.length === 0);
  }
  function isFilled(obj, SSR = false) {
    return obj && (hasValue(obj.value) && obj.value !== "" || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== "");
  }
  function isAdornedStart(obj) {
    return obj.startAdornment;
  }
  function getInputBaseUtilityClass(slot) {
    return generateUtilityClass("MuiInputBase", slot);
  }
  const inputBaseClasses = generateUtilityClasses("MuiInputBase", ["root", "formControl", "focused", "disabled", "adornedStart", "adornedEnd", "error", "sizeSmall", "multiline", "colorSecondary", "fullWidth", "hiddenLabel", "readOnly", "input", "inputSizeSmall", "inputMultiline", "inputTypeSearch", "inputAdornedStart", "inputAdornedEnd", "inputHiddenLabel"]);
  var _InputGlobalStyles;
  const rootOverridesResolver = (props, styles2) => {
    const {
      ownerState
    } = props;
    return [styles2.root, ownerState.formControl && styles2.formControl, ownerState.startAdornment && styles2.adornedStart, ownerState.endAdornment && styles2.adornedEnd, ownerState.error && styles2.error, ownerState.size === "small" && styles2.sizeSmall, ownerState.multiline && styles2.multiline, ownerState.color && styles2[`color${capitalize(ownerState.color)}`], ownerState.fullWidth && styles2.fullWidth, ownerState.hiddenLabel && styles2.hiddenLabel];
  };
  const inputOverridesResolver = (props, styles2) => {
    const {
      ownerState
    } = props;
    return [styles2.input, ownerState.size === "small" && styles2.inputSizeSmall, ownerState.multiline && styles2.inputMultiline, ownerState.type === "search" && styles2.inputTypeSearch, ownerState.startAdornment && styles2.inputAdornedStart, ownerState.endAdornment && styles2.inputAdornedEnd, ownerState.hiddenLabel && styles2.inputHiddenLabel];
  };
  const useUtilityClasses$x = (ownerState) => {
    const {
      classes,
      color: color2,
      disabled,
      error,
      endAdornment,
      focused,
      formControl,
      fullWidth,
      hiddenLabel,
      multiline,
      readOnly,
      size,
      startAdornment,
      type
    } = ownerState;
    const slots = {
      root: ["root", `color${capitalize(color2)}`, disabled && "disabled", error && "error", fullWidth && "fullWidth", focused && "focused", formControl && "formControl", size && size !== "medium" && `size${capitalize(size)}`, multiline && "multiline", startAdornment && "adornedStart", endAdornment && "adornedEnd", hiddenLabel && "hiddenLabel", readOnly && "readOnly"],
      input: ["input", disabled && "disabled", type === "search" && "inputTypeSearch", multiline && "inputMultiline", size === "small" && "inputSizeSmall", hiddenLabel && "inputHiddenLabel", startAdornment && "inputAdornedStart", endAdornment && "inputAdornedEnd", readOnly && "readOnly"]
    };
    return composeClasses(slots, getInputBaseUtilityClass, classes);
  };
  const InputBaseRoot = styled("div", {
    name: "MuiInputBase",
    slot: "Root",
    overridesResolver: rootOverridesResolver
  })(memoTheme(({
    theme
  }) => ({
    ...theme.typography.body1,
    color: (theme.vars || theme).palette.text.primary,
    lineHeight: "1.4375em",
    // 23px
    boxSizing: "border-box",
    // Prevent padding issue with fullWidth.
    position: "relative",
    cursor: "text",
    display: "inline-flex",
    alignItems: "center",
    [`&.${inputBaseClasses.disabled}`]: {
      color: (theme.vars || theme).palette.text.disabled,
      cursor: "default"
    },
    variants: [{
      props: ({
        ownerState
      }) => ownerState.multiline,
      style: {
        padding: "4px 0 5px"
      }
    }, {
      props: ({
        ownerState,
        size
      }) => ownerState.multiline && size === "small",
      style: {
        paddingTop: 1
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.fullWidth,
      style: {
        width: "100%"
      }
    }]
  })));
  const InputBaseInput = styled("input", {
    name: "MuiInputBase",
    slot: "Input",
    overridesResolver: inputOverridesResolver
  })(memoTheme(({
    theme
  }) => {
    const light2 = theme.palette.mode === "light";
    const placeholder = {
      color: "currentColor",
      ...theme.vars ? {
        opacity: theme.vars.opacity.inputPlaceholder
      } : {
        opacity: light2 ? 0.42 : 0.5
      },
      transition: theme.transitions.create("opacity", {
        duration: theme.transitions.duration.shorter
      })
    };
    const placeholderHidden = {
      opacity: "0 !important"
    };
    const placeholderVisible = theme.vars ? {
      opacity: theme.vars.opacity.inputPlaceholder
    } : {
      opacity: light2 ? 0.42 : 0.5
    };
    return {
      font: "inherit",
      letterSpacing: "inherit",
      color: "currentColor",
      padding: "4px 0 5px",
      border: 0,
      boxSizing: "content-box",
      background: "none",
      height: "1.4375em",
      // Reset 23pxthe native input line-height
      margin: 0,
      // Reset for Safari
      WebkitTapHighlightColor: "transparent",
      display: "block",
      // Make the flex item shrink with Firefox
      minWidth: 0,
      width: "100%",
      "&::-webkit-input-placeholder": placeholder,
      "&::-moz-placeholder": placeholder,
      // Firefox 19+
      "&::-ms-input-placeholder": placeholder,
      // Edge
      "&:focus": {
        outline: 0
      },
      // Reset Firefox invalid required input style
      "&:invalid": {
        boxShadow: "none"
      },
      "&::-webkit-search-decoration": {
        // Remove the padding when type=search.
        WebkitAppearance: "none"
      },
      // Show and hide the placeholder logic
      [`label[data-shrink=false] + .${inputBaseClasses.formControl} &`]: {
        "&::-webkit-input-placeholder": placeholderHidden,
        "&::-moz-placeholder": placeholderHidden,
        // Firefox 19+
        "&::-ms-input-placeholder": placeholderHidden,
        // Edge
        "&:focus::-webkit-input-placeholder": placeholderVisible,
        "&:focus::-moz-placeholder": placeholderVisible,
        // Firefox 19+
        "&:focus::-ms-input-placeholder": placeholderVisible
        // Edge
      },
      [`&.${inputBaseClasses.disabled}`]: {
        opacity: 1,
        // Reset iOS opacity
        WebkitTextFillColor: (theme.vars || theme).palette.text.disabled
        // Fix opacity Safari bug
      },
      variants: [{
        props: ({
          ownerState
        }) => !ownerState.disableInjectingGlobalStyles,
        style: {
          animationName: "mui-auto-fill-cancel",
          animationDuration: "10ms",
          "&:-webkit-autofill": {
            animationDuration: "5000s",
            animationName: "mui-auto-fill"
          }
        }
      }, {
        props: {
          size: "small"
        },
        style: {
          paddingTop: 1
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.multiline,
        style: {
          height: "auto",
          resize: "none",
          padding: 0,
          paddingTop: 0
        }
      }, {
        props: {
          type: "search"
        },
        style: {
          MozAppearance: "textfield"
          // Improve type search style.
        }
      }]
    };
  }));
  const InputGlobalStyles = globalCss({
    "@keyframes mui-auto-fill": {
      from: {
        display: "block"
      }
    },
    "@keyframes mui-auto-fill-cancel": {
      from: {
        display: "block"
      }
    }
  });
  const InputBase = /* @__PURE__ */ React__namespace.forwardRef(function InputBase2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiInputBase"
    });
    const {
      "aria-describedby": ariaDescribedby,
      autoComplete,
      autoFocus,
      className,
      color: color2,
      components = {},
      componentsProps = {},
      defaultValue,
      disabled,
      disableInjectingGlobalStyles,
      endAdornment,
      error,
      fullWidth = false,
      id,
      inputComponent = "input",
      inputProps: inputPropsProp = {},
      inputRef: inputRefProp,
      margin: margin2,
      maxRows,
      minRows,
      multiline = false,
      name,
      onBlur,
      onChange,
      onClick,
      onFocus,
      onKeyDown,
      onKeyUp,
      placeholder,
      readOnly,
      renderSuffix,
      rows,
      size,
      slotProps = {},
      slots = {},
      startAdornment,
      type = "text",
      value: valueProp,
      ...other
    } = props;
    const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;
    const {
      current: isControlled
    } = React__namespace.useRef(value != null);
    const inputRef = React__namespace.useRef();
    const handleInputRefWarning = React__namespace.useCallback((instance) => {
    }, []);
    const handleInputRef = useForkRef(inputRef, inputRefProp, inputPropsProp.ref, handleInputRefWarning);
    const [focused, setFocused] = React__namespace.useState(false);
    const muiFormControl = useFormControl();
    const fcs = formControlState({
      props,
      muiFormControl,
      states: ["color", "disabled", "error", "hiddenLabel", "size", "required", "filled"]
    });
    fcs.focused = muiFormControl ? muiFormControl.focused : focused;
    React__namespace.useEffect(() => {
      if (!muiFormControl && disabled && focused) {
        setFocused(false);
        if (onBlur) {
          onBlur();
        }
      }
    }, [muiFormControl, disabled, focused, onBlur]);
    const onFilled = muiFormControl && muiFormControl.onFilled;
    const onEmpty = muiFormControl && muiFormControl.onEmpty;
    const checkDirty = React__namespace.useCallback((obj) => {
      if (isFilled(obj)) {
        if (onFilled) {
          onFilled();
        }
      } else if (onEmpty) {
        onEmpty();
      }
    }, [onFilled, onEmpty]);
    useEnhancedEffect(() => {
      if (isControlled) {
        checkDirty({
          value
        });
      }
    }, [value, checkDirty, isControlled]);
    const handleFocus = (event) => {
      if (onFocus) {
        onFocus(event);
      }
      if (inputPropsProp.onFocus) {
        inputPropsProp.onFocus(event);
      }
      if (muiFormControl && muiFormControl.onFocus) {
        muiFormControl.onFocus(event);
      } else {
        setFocused(true);
      }
    };
    const handleBlur = (event) => {
      if (onBlur) {
        onBlur(event);
      }
      if (inputPropsProp.onBlur) {
        inputPropsProp.onBlur(event);
      }
      if (muiFormControl && muiFormControl.onBlur) {
        muiFormControl.onBlur(event);
      } else {
        setFocused(false);
      }
    };
    const handleChange = (event, ...args) => {
      if (!isControlled) {
        const element = event.target || inputRef.current;
        if (element == null) {
          throw new Error(formatMuiErrorMessage(1));
        }
        checkDirty({
          value: element.value
        });
      }
      if (inputPropsProp.onChange) {
        inputPropsProp.onChange(event, ...args);
      }
      if (onChange) {
        onChange(event, ...args);
      }
    };
    React__namespace.useEffect(() => {
      checkDirty(inputRef.current);
    }, []);
    const handleClick = (event) => {
      if (inputRef.current && event.currentTarget === event.target) {
        inputRef.current.focus();
      }
      if (onClick) {
        onClick(event);
      }
    };
    let InputComponent = inputComponent;
    let inputProps = inputPropsProp;
    if (multiline && InputComponent === "input") {
      if (rows) {
        inputProps = {
          type: void 0,
          minRows: rows,
          maxRows: rows,
          ...inputProps
        };
      } else {
        inputProps = {
          type: void 0,
          maxRows,
          minRows,
          ...inputProps
        };
      }
      InputComponent = TextareaAutosize;
    }
    const handleAutoFill = (event) => {
      checkDirty(event.animationName === "mui-auto-fill-cancel" ? inputRef.current : {
        value: "x"
      });
    };
    React__namespace.useEffect(() => {
      if (muiFormControl) {
        muiFormControl.setAdornedStart(Boolean(startAdornment));
      }
    }, [muiFormControl, startAdornment]);
    const ownerState = {
      ...props,
      color: fcs.color || "primary",
      disabled: fcs.disabled,
      endAdornment,
      error: fcs.error,
      focused: fcs.focused,
      formControl: muiFormControl,
      fullWidth,
      hiddenLabel: fcs.hiddenLabel,
      multiline,
      size: fcs.size,
      startAdornment,
      type
    };
    const classes = useUtilityClasses$x(ownerState);
    const Root = slots.root || components.Root || InputBaseRoot;
    const rootProps = slotProps.root || componentsProps.root || {};
    const Input3 = slots.input || components.Input || InputBaseInput;
    inputProps = {
      ...inputProps,
      ...slotProps.input ?? componentsProps.input
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(React__namespace.Fragment, {
      children: [!disableInjectingGlobalStyles && typeof InputGlobalStyles === "function" && // For Emotion/Styled-components, InputGlobalStyles will be a function
      // For Pigment CSS, this has no effect because the InputGlobalStyles will be null.
      (_InputGlobalStyles || (_InputGlobalStyles = /* @__PURE__ */ jsxRuntimeExports.jsx(InputGlobalStyles, {}))), /* @__PURE__ */ jsxRuntimeExports.jsxs(Root, {
        ...rootProps,
        ref,
        onClick: handleClick,
        ...other,
        ...!isHostComponent(Root) && {
          ownerState: {
            ...ownerState,
            ...rootProps.ownerState
          }
        },
        className: clsx(classes.root, rootProps.className, className, readOnly && "MuiInputBase-readOnly"),
        children: [startAdornment, /* @__PURE__ */ jsxRuntimeExports.jsx(FormControlContext.Provider, {
          value: null,
          children: /* @__PURE__ */ jsxRuntimeExports.jsx(Input3, {
            "aria-invalid": fcs.error,
            "aria-describedby": ariaDescribedby,
            autoComplete,
            autoFocus,
            defaultValue,
            disabled: fcs.disabled,
            id,
            onAnimationStart: handleAutoFill,
            name,
            placeholder,
            readOnly,
            required: fcs.required,
            rows,
            value,
            onKeyDown,
            onKeyUp,
            type,
            ...inputProps,
            ...!isHostComponent(Input3) && {
              as: InputComponent,
              ownerState: {
                ...ownerState,
                ...inputProps.ownerState
              }
            },
            ref: handleInputRef,
            className: clsx(classes.input, inputProps.className, readOnly && "MuiInputBase-readOnly"),
            onBlur: handleBlur,
            onChange: handleChange,
            onFocus: handleFocus
          })
        }), endAdornment, renderSuffix ? renderSuffix({
          ...fcs,
          startAdornment
        }) : null]
      })]
    });
  });
  function getInputUtilityClass(slot) {
    return generateUtilityClass("MuiInput", slot);
  }
  const inputClasses = {
    ...inputBaseClasses,
    ...generateUtilityClasses("MuiInput", ["root", "underline", "input"])
  };
  function getOutlinedInputUtilityClass(slot) {
    return generateUtilityClass("MuiOutlinedInput", slot);
  }
  const outlinedInputClasses = {
    ...inputBaseClasses,
    ...generateUtilityClasses("MuiOutlinedInput", ["root", "notchedOutline", "input"])
  };
  function getFilledInputUtilityClass(slot) {
    return generateUtilityClass("MuiFilledInput", slot);
  }
  const filledInputClasses = {
    ...inputBaseClasses,
    ...generateUtilityClasses("MuiFilledInput", ["root", "underline", "input", "adornedStart", "adornedEnd", "sizeSmall", "multiline", "hiddenLabel"])
  };
  const ArrowDropDownIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M7 10l5 5 5-5z"
  }));
  const styles$1 = {
    entering: {
      opacity: 1
    },
    entered: {
      opacity: 1
    }
  };
  const Fade = /* @__PURE__ */ React__namespace.forwardRef(function Fade2(props, ref) {
    const theme = useTheme();
    const defaultTimeout = {
      enter: theme.transitions.duration.enteringScreen,
      exit: theme.transitions.duration.leavingScreen
    };
    const {
      addEndListener,
      appear = true,
      children,
      easing: easing2,
      in: inProp,
      onEnter,
      onEntered,
      onEntering,
      onExit,
      onExited,
      onExiting,
      style: style2,
      timeout = defaultTimeout,
      // eslint-disable-next-line react/prop-types
      TransitionComponent = Transition,
      ...other
    } = props;
    const nodeRef = React__namespace.useRef(null);
    const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);
    const normalizedTransitionCallback = (callback) => (maybeIsAppearing) => {
      if (callback) {
        const node2 = nodeRef.current;
        if (maybeIsAppearing === void 0) {
          callback(node2);
        } else {
          callback(node2, maybeIsAppearing);
        }
      }
    };
    const handleEntering = normalizedTransitionCallback(onEntering);
    const handleEnter = normalizedTransitionCallback((node2, isAppearing) => {
      reflow(node2);
      const transitionProps = getTransitionProps({
        style: style2,
        timeout,
        easing: easing2
      }, {
        mode: "enter"
      });
      node2.style.webkitTransition = theme.transitions.create("opacity", transitionProps);
      node2.style.transition = theme.transitions.create("opacity", transitionProps);
      if (onEnter) {
        onEnter(node2, isAppearing);
      }
    });
    const handleEntered = normalizedTransitionCallback(onEntered);
    const handleExiting = normalizedTransitionCallback(onExiting);
    const handleExit = normalizedTransitionCallback((node2) => {
      const transitionProps = getTransitionProps({
        style: style2,
        timeout,
        easing: easing2
      }, {
        mode: "exit"
      });
      node2.style.webkitTransition = theme.transitions.create("opacity", transitionProps);
      node2.style.transition = theme.transitions.create("opacity", transitionProps);
      if (onExit) {
        onExit(node2);
      }
    });
    const handleExited = normalizedTransitionCallback(onExited);
    const handleAddEndListener = (next2) => {
      if (addEndListener) {
        addEndListener(nodeRef.current, next2);
      }
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionComponent, {
      appear,
      in: inProp,
      nodeRef,
      onEnter: handleEnter,
      onEntered: handleEntered,
      onEntering: handleEntering,
      onExit: handleExit,
      onExited: handleExited,
      onExiting: handleExiting,
      addEndListener: handleAddEndListener,
      timeout,
      ...other,
      children: (state, {
        ownerState,
        ...restChildProps
      }) => {
        return /* @__PURE__ */ React__namespace.cloneElement(children, {
          style: {
            opacity: 0,
            visibility: state === "exited" && !inProp ? "hidden" : void 0,
            ...styles$1[state],
            ...style2,
            ...children.props.style
          },
          ref: handleRef,
          ...restChildProps
        });
      }
    });
  });
  function getBackdropUtilityClass(slot) {
    return generateUtilityClass("MuiBackdrop", slot);
  }
  generateUtilityClasses("MuiBackdrop", ["root", "invisible"]);
  const useUtilityClasses$w = (ownerState) => {
    const {
      classes,
      invisible
    } = ownerState;
    const slots = {
      root: ["root", invisible && "invisible"]
    };
    return composeClasses(slots, getBackdropUtilityClass, classes);
  };
  const BackdropRoot = styled("div", {
    name: "MuiBackdrop",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.invisible && styles2.invisible];
    }
  })({
    position: "fixed",
    display: "flex",
    alignItems: "center",
    justifyContent: "center",
    right: 0,
    bottom: 0,
    top: 0,
    left: 0,
    backgroundColor: "rgba(0, 0, 0, 0.5)",
    WebkitTapHighlightColor: "transparent",
    variants: [{
      props: {
        invisible: true
      },
      style: {
        backgroundColor: "transparent"
      }
    }]
  });
  const Backdrop = /* @__PURE__ */ React__namespace.forwardRef(function Backdrop2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiBackdrop"
    });
    const {
      children,
      className,
      component = "div",
      invisible = false,
      open: open2,
      components = {},
      componentsProps = {},
      slotProps = {},
      slots = {},
      TransitionComponent: TransitionComponentProp,
      transitionDuration,
      ...other
    } = props;
    const ownerState = {
      ...props,
      component,
      invisible
    };
    const classes = useUtilityClasses$w(ownerState);
    const backwardCompatibleSlots = {
      transition: TransitionComponentProp,
      root: components.Root,
      ...slots
    };
    const backwardCompatibleSlotProps = {
      ...componentsProps,
      ...slotProps
    };
    const externalForwardedProps = {
      slots: backwardCompatibleSlots,
      slotProps: backwardCompatibleSlotProps
    };
    const [RootSlot, rootProps] = useSlot("root", {
      elementType: BackdropRoot,
      externalForwardedProps,
      className: clsx(classes.root, className),
      ownerState
    });
    const [TransitionSlot, transitionProps] = useSlot("transition", {
      elementType: Fade,
      externalForwardedProps,
      ownerState
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionSlot, {
      in: open2,
      timeout: transitionDuration,
      ...other,
      ...transitionProps,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(RootSlot, {
        "aria-hidden": true,
        ...rootProps,
        classes,
        ref,
        children
      })
    });
  });
  function useBadge(parameters) {
    const {
      badgeContent: badgeContentProp,
      invisible: invisibleProp = false,
      max: maxProp = 99,
      showZero = false
    } = parameters;
    const prevProps = usePreviousProps({
      badgeContent: badgeContentProp,
      max: maxProp
    });
    let invisible = invisibleProp;
    if (invisibleProp === false && badgeContentProp === 0 && !showZero) {
      invisible = true;
    }
    const {
      badgeContent,
      max: max2 = maxProp
    } = invisible ? prevProps : parameters;
    const displayValue = badgeContent && Number(badgeContent) > max2 ? `${max2}+` : badgeContent;
    return {
      badgeContent,
      invisible,
      max: max2,
      displayValue
    };
  }
  function getBadgeUtilityClass(slot) {
    return generateUtilityClass("MuiBadge", slot);
  }
  const badgeClasses = generateUtilityClasses("MuiBadge", [
    "root",
    "badge",
    "dot",
    "standard",
    "anchorOriginTopRight",
    "anchorOriginBottomRight",
    "anchorOriginTopLeft",
    "anchorOriginBottomLeft",
    "invisible",
    "colorError",
    "colorInfo",
    "colorPrimary",
    "colorSecondary",
    "colorSuccess",
    "colorWarning",
    "overlapRectangular",
    "overlapCircular",
    // TODO: v6 remove the overlap value from these class keys
    "anchorOriginTopLeftCircular",
    "anchorOriginTopLeftRectangular",
    "anchorOriginTopRightCircular",
    "anchorOriginTopRightRectangular",
    "anchorOriginBottomLeftCircular",
    "anchorOriginBottomLeftRectangular",
    "anchorOriginBottomRightCircular",
    "anchorOriginBottomRightRectangular"
  ]);
  const RADIUS_STANDARD = 10;
  const RADIUS_DOT = 4;
  const useUtilityClasses$v = (ownerState) => {
    const {
      color: color2,
      anchorOrigin,
      invisible,
      overlap,
      variant,
      classes = {}
    } = ownerState;
    const slots = {
      root: ["root"],
      badge: ["badge", variant, invisible && "invisible", `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}${capitalize(overlap)}`, `overlap${capitalize(overlap)}`, color2 !== "default" && `color${capitalize(color2)}`]
    };
    return composeClasses(slots, getBadgeUtilityClass, classes);
  };
  const BadgeRoot = styled("span", {
    name: "MuiBadge",
    slot: "Root",
    overridesResolver: (props, styles2) => styles2.root
  })({
    position: "relative",
    display: "inline-flex",
    // For correct alignment with the text.
    verticalAlign: "middle",
    flexShrink: 0
  });
  const BadgeBadge = styled("span", {
    name: "MuiBadge",
    slot: "Badge",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.badge, styles2[ownerState.variant], styles2[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}${capitalize(ownerState.overlap)}`], ownerState.color !== "default" && styles2[`color${capitalize(ownerState.color)}`], ownerState.invisible && styles2.invisible];
    }
  })(memoTheme(({
    theme
  }) => ({
    display: "flex",
    flexDirection: "row",
    flexWrap: "wrap",
    justifyContent: "center",
    alignContent: "center",
    alignItems: "center",
    position: "absolute",
    boxSizing: "border-box",
    fontFamily: theme.typography.fontFamily,
    fontWeight: theme.typography.fontWeightMedium,
    fontSize: theme.typography.pxToRem(12),
    minWidth: RADIUS_STANDARD * 2,
    lineHeight: 1,
    padding: "0 6px",
    height: RADIUS_STANDARD * 2,
    borderRadius: RADIUS_STANDARD,
    zIndex: 1,
    // Render the badge on top of potential ripples.
    transition: theme.transitions.create("transform", {
      easing: theme.transitions.easing.easeInOut,
      duration: theme.transitions.duration.enteringScreen
    }),
    variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(["contrastText"])).map(([color2]) => ({
      props: {
        color: color2
      },
      style: {
        backgroundColor: (theme.vars || theme).palette[color2].main,
        color: (theme.vars || theme).palette[color2].contrastText
      }
    })), {
      props: {
        variant: "dot"
      },
      style: {
        borderRadius: RADIUS_DOT,
        height: RADIUS_DOT * 2,
        minWidth: RADIUS_DOT * 2,
        padding: 0
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.vertical === "top" && ownerState.anchorOrigin.horizontal === "right" && ownerState.overlap === "rectangular",
      style: {
        top: 0,
        right: 0,
        transform: "scale(1) translate(50%, -50%)",
        transformOrigin: "100% 0%",
        [`&.${badgeClasses.invisible}`]: {
          transform: "scale(0) translate(50%, -50%)"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.vertical === "bottom" && ownerState.anchorOrigin.horizontal === "right" && ownerState.overlap === "rectangular",
      style: {
        bottom: 0,
        right: 0,
        transform: "scale(1) translate(50%, 50%)",
        transformOrigin: "100% 100%",
        [`&.${badgeClasses.invisible}`]: {
          transform: "scale(0) translate(50%, 50%)"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.vertical === "top" && ownerState.anchorOrigin.horizontal === "left" && ownerState.overlap === "rectangular",
      style: {
        top: 0,
        left: 0,
        transform: "scale(1) translate(-50%, -50%)",
        transformOrigin: "0% 0%",
        [`&.${badgeClasses.invisible}`]: {
          transform: "scale(0) translate(-50%, -50%)"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.vertical === "bottom" && ownerState.anchorOrigin.horizontal === "left" && ownerState.overlap === "rectangular",
      style: {
        bottom: 0,
        left: 0,
        transform: "scale(1) translate(-50%, 50%)",
        transformOrigin: "0% 100%",
        [`&.${badgeClasses.invisible}`]: {
          transform: "scale(0) translate(-50%, 50%)"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.vertical === "top" && ownerState.anchorOrigin.horizontal === "right" && ownerState.overlap === "circular",
      style: {
        top: "14%",
        right: "14%",
        transform: "scale(1) translate(50%, -50%)",
        transformOrigin: "100% 0%",
        [`&.${badgeClasses.invisible}`]: {
          transform: "scale(0) translate(50%, -50%)"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.vertical === "bottom" && ownerState.anchorOrigin.horizontal === "right" && ownerState.overlap === "circular",
      style: {
        bottom: "14%",
        right: "14%",
        transform: "scale(1) translate(50%, 50%)",
        transformOrigin: "100% 100%",
        [`&.${badgeClasses.invisible}`]: {
          transform: "scale(0) translate(50%, 50%)"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.vertical === "top" && ownerState.anchorOrigin.horizontal === "left" && ownerState.overlap === "circular",
      style: {
        top: "14%",
        left: "14%",
        transform: "scale(1) translate(-50%, -50%)",
        transformOrigin: "0% 0%",
        [`&.${badgeClasses.invisible}`]: {
          transform: "scale(0) translate(-50%, -50%)"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.vertical === "bottom" && ownerState.anchorOrigin.horizontal === "left" && ownerState.overlap === "circular",
      style: {
        bottom: "14%",
        left: "14%",
        transform: "scale(1) translate(-50%, 50%)",
        transformOrigin: "0% 100%",
        [`&.${badgeClasses.invisible}`]: {
          transform: "scale(0) translate(-50%, 50%)"
        }
      }
    }, {
      props: {
        invisible: true
      },
      style: {
        transition: theme.transitions.create("transform", {
          easing: theme.transitions.easing.easeInOut,
          duration: theme.transitions.duration.leavingScreen
        })
      }
    }]
  })));
  function getAnchorOrigin(anchorOrigin) {
    return {
      vertical: (anchorOrigin == null ? void 0 : anchorOrigin.vertical) ?? "top",
      horizontal: (anchorOrigin == null ? void 0 : anchorOrigin.horizontal) ?? "right"
    };
  }
  const Badge = /* @__PURE__ */ React__namespace.forwardRef(function Badge2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiBadge"
    });
    const {
      anchorOrigin: anchorOriginProp,
      className,
      classes: classesProp,
      component,
      components = {},
      componentsProps = {},
      children,
      overlap: overlapProp = "rectangular",
      color: colorProp = "default",
      invisible: invisibleProp = false,
      max: maxProp = 99,
      badgeContent: badgeContentProp,
      slots,
      slotProps,
      showZero = false,
      variant: variantProp = "standard",
      ...other
    } = props;
    const {
      badgeContent,
      invisible: invisibleFromHook,
      max: max2,
      displayValue: displayValueFromHook
    } = useBadge({
      max: maxProp,
      invisible: invisibleProp,
      badgeContent: badgeContentProp,
      showZero
    });
    const prevProps = usePreviousProps({
      anchorOrigin: getAnchorOrigin(anchorOriginProp),
      color: colorProp,
      overlap: overlapProp,
      variant: variantProp,
      badgeContent: badgeContentProp
    });
    const invisible = invisibleFromHook || badgeContent == null && variantProp !== "dot";
    const {
      color: color2 = colorProp,
      overlap = overlapProp,
      anchorOrigin: anchorOriginPropProp,
      variant = variantProp
    } = invisible ? prevProps : props;
    const anchorOrigin = getAnchorOrigin(anchorOriginPropProp);
    const displayValue = variant !== "dot" ? displayValueFromHook : void 0;
    const ownerState = {
      ...props,
      badgeContent,
      invisible,
      max: max2,
      displayValue,
      showZero,
      anchorOrigin,
      color: color2,
      overlap,
      variant
    };
    const classes = useUtilityClasses$v(ownerState);
    const RootSlot = (slots == null ? void 0 : slots.root) ?? components.Root ?? BadgeRoot;
    const BadgeSlot = (slots == null ? void 0 : slots.badge) ?? components.Badge ?? BadgeBadge;
    const rootSlotProps = (slotProps == null ? void 0 : slotProps.root) ?? componentsProps.root;
    const badgeSlotProps = (slotProps == null ? void 0 : slotProps.badge) ?? componentsProps.badge;
    const rootProps = useSlotProps({
      elementType: RootSlot,
      externalSlotProps: rootSlotProps,
      externalForwardedProps: other,
      additionalProps: {
        ref,
        as: component
      },
      ownerState,
      className: clsx(rootSlotProps == null ? void 0 : rootSlotProps.className, classes.root, className)
    });
    const badgeProps = useSlotProps({
      elementType: BadgeSlot,
      externalSlotProps: badgeSlotProps,
      ownerState,
      className: clsx(classes.badge, badgeSlotProps == null ? void 0 : badgeSlotProps.className)
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(RootSlot, {
      ...rootProps,
      children: [children, /* @__PURE__ */ jsxRuntimeExports.jsx(BadgeSlot, {
        ...badgeProps,
        children: displayValue
      })]
    });
  });
  const boxClasses = generateUtilityClasses("MuiBox", ["root"]);
  const defaultTheme = createTheme();
  const Box = createBox({
    themeId: THEME_ID,
    defaultTheme,
    defaultClassName: boxClasses.root,
    generateClassName: ClassNameGenerator.generate
  });
  function getSwitchBaseUtilityClass(slot) {
    return generateUtilityClass("PrivateSwitchBase", slot);
  }
  generateUtilityClasses("PrivateSwitchBase", ["root", "checked", "disabled", "input", "edgeStart", "edgeEnd"]);
  const useUtilityClasses$u = (ownerState) => {
    const {
      classes,
      checked,
      disabled,
      edge
    } = ownerState;
    const slots = {
      root: ["root", checked && "checked", disabled && "disabled", edge && `edge${capitalize(edge)}`],
      input: ["input"]
    };
    return composeClasses(slots, getSwitchBaseUtilityClass, classes);
  };
  const SwitchBaseRoot = styled(ButtonBase)({
    padding: 9,
    borderRadius: "50%",
    variants: [{
      props: {
        edge: "start",
        size: "small"
      },
      style: {
        marginLeft: -3
      }
    }, {
      props: ({
        edge,
        ownerState
      }) => edge === "start" && ownerState.size !== "small",
      style: {
        marginLeft: -12
      }
    }, {
      props: {
        edge: "end",
        size: "small"
      },
      style: {
        marginRight: -3
      }
    }, {
      props: ({
        edge,
        ownerState
      }) => edge === "end" && ownerState.size !== "small",
      style: {
        marginRight: -12
      }
    }]
  });
  const SwitchBaseInput = styled("input", {
    shouldForwardProp: rootShouldForwardProp
  })({
    cursor: "inherit",
    position: "absolute",
    opacity: 0,
    width: "100%",
    height: "100%",
    top: 0,
    left: 0,
    margin: 0,
    padding: 0,
    zIndex: 1
  });
  const SwitchBase = /* @__PURE__ */ React__namespace.forwardRef(function SwitchBase2(props, ref) {
    const {
      autoFocus,
      checked: checkedProp,
      checkedIcon,
      defaultChecked,
      disabled: disabledProp,
      disableFocusRipple = false,
      edge = false,
      icon,
      id,
      inputProps,
      inputRef,
      name,
      onBlur,
      onChange,
      onFocus,
      readOnly,
      required = false,
      tabIndex,
      type,
      value,
      slots = {},
      slotProps = {},
      ...other
    } = props;
    const [checked, setCheckedState] = useControlled({
      controlled: checkedProp,
      default: Boolean(defaultChecked),
      name: "SwitchBase",
      state: "checked"
    });
    const muiFormControl = useFormControl();
    const handleFocus = (event) => {
      if (onFocus) {
        onFocus(event);
      }
      if (muiFormControl && muiFormControl.onFocus) {
        muiFormControl.onFocus(event);
      }
    };
    const handleBlur = (event) => {
      if (onBlur) {
        onBlur(event);
      }
      if (muiFormControl && muiFormControl.onBlur) {
        muiFormControl.onBlur(event);
      }
    };
    const handleInputChange = (event) => {
      if (event.nativeEvent.defaultPrevented) {
        return;
      }
      const newChecked = event.target.checked;
      setCheckedState(newChecked);
      if (onChange) {
        onChange(event, newChecked);
      }
    };
    let disabled = disabledProp;
    if (muiFormControl) {
      if (typeof disabled === "undefined") {
        disabled = muiFormControl.disabled;
      }
    }
    const hasLabelFor = type === "checkbox" || type === "radio";
    const ownerState = {
      ...props,
      checked,
      disabled,
      disableFocusRipple,
      edge
    };
    const classes = useUtilityClasses$u(ownerState);
    const externalForwardedProps = {
      slots,
      slotProps: {
        input: inputProps,
        ...slotProps
      }
    };
    const [RootSlot, rootSlotProps] = useSlot("root", {
      ref,
      elementType: SwitchBaseRoot,
      className: classes.root,
      shouldForwardComponentProp: true,
      externalForwardedProps: {
        ...externalForwardedProps,
        component: "span",
        ...other
      },
      getSlotProps: (handlers) => ({
        ...handlers,
        onFocus: (event) => {
          var _a;
          (_a = handlers.onFocus) == null ? void 0 : _a.call(handlers, event);
          handleFocus(event);
        },
        onBlur: (event) => {
          var _a;
          (_a = handlers.onBlur) == null ? void 0 : _a.call(handlers, event);
          handleBlur(event);
        }
      }),
      ownerState,
      additionalProps: {
        centerRipple: true,
        focusRipple: !disableFocusRipple,
        disabled,
        role: void 0,
        tabIndex: null
      }
    });
    const [InputSlot, inputSlotProps] = useSlot("input", {
      ref: inputRef,
      elementType: SwitchBaseInput,
      className: classes.input,
      externalForwardedProps,
      getSlotProps: (handlers) => ({
        ...handlers,
        onChange: (event) => {
          var _a;
          (_a = handlers.onChange) == null ? void 0 : _a.call(handlers, event);
          handleInputChange(event);
        }
      }),
      ownerState,
      additionalProps: {
        autoFocus,
        checked: checkedProp,
        defaultChecked,
        disabled,
        id: hasLabelFor ? id : void 0,
        name,
        readOnly,
        required,
        tabIndex,
        type,
        ...type === "checkbox" && value === void 0 ? {} : {
          value
        }
      }
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(RootSlot, {
      ...rootSlotProps,
      children: [/* @__PURE__ */ jsxRuntimeExports.jsx(InputSlot, {
        ...inputSlotProps
      }), checked ? checkedIcon : icon]
    });
  });
  const CheckBoxOutlineBlankIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
  }));
  const CheckBoxIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
  }));
  const IndeterminateCheckBoxIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"
  }));
  function getCheckboxUtilityClass(slot) {
    return generateUtilityClass("MuiCheckbox", slot);
  }
  const checkboxClasses = generateUtilityClasses("MuiCheckbox", ["root", "checked", "disabled", "indeterminate", "colorPrimary", "colorSecondary", "sizeSmall", "sizeMedium"]);
  const useUtilityClasses$t = (ownerState) => {
    const {
      classes,
      indeterminate,
      color: color2,
      size
    } = ownerState;
    const slots = {
      root: ["root", indeterminate && "indeterminate", `color${capitalize(color2)}`, `size${capitalize(size)}`]
    };
    const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);
    return {
      ...classes,
      // forward the disabled and checked classes to the SwitchBase
      ...composedClasses
    };
  };
  const CheckboxRoot = styled(SwitchBase, {
    shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
    name: "MuiCheckbox",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.indeterminate && styles2.indeterminate, styles2[`size${capitalize(ownerState.size)}`], ownerState.color !== "default" && styles2[`color${capitalize(ownerState.color)}`]];
    }
  })(memoTheme(({
    theme
  }) => ({
    color: (theme.vars || theme).palette.text.secondary,
    variants: [{
      props: {
        color: "default",
        disableRipple: false
      },
      style: {
        "&:hover": {
          backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)
        }
      }
    }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => ({
      props: {
        color: color2,
        disableRipple: false
      },
      style: {
        "&:hover": {
          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color2].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color2].main, theme.palette.action.hoverOpacity)
        }
      }
    })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => ({
      props: {
        color: color2
      },
      style: {
        [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {
          color: (theme.vars || theme).palette[color2].main
        },
        [`&.${checkboxClasses.disabled}`]: {
          color: (theme.vars || theme).palette.action.disabled
        }
      }
    })), {
      // Should be last to override other colors
      props: {
        disableRipple: false
      },
      style: {
        // Reset on touch devices, it doesn't add specificity
        "&:hover": {
          "@media (hover: none)": {
            backgroundColor: "transparent"
          }
        }
      }
    }]
  })));
  const defaultCheckedIcon = /* @__PURE__ */ jsxRuntimeExports.jsx(CheckBoxIcon, {});
  const defaultIcon = /* @__PURE__ */ jsxRuntimeExports.jsx(CheckBoxOutlineBlankIcon, {});
  const defaultIndeterminateIcon = /* @__PURE__ */ jsxRuntimeExports.jsx(IndeterminateCheckBoxIcon, {});
  const Checkbox = /* @__PURE__ */ React__namespace.forwardRef(function Checkbox2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiCheckbox"
    });
    const {
      checkedIcon = defaultCheckedIcon,
      color: color2 = "primary",
      icon: iconProp = defaultIcon,
      indeterminate = false,
      indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,
      inputProps,
      size = "medium",
      disableRipple = false,
      className,
      slots = {},
      slotProps = {},
      ...other
    } = props;
    const icon = indeterminate ? indeterminateIconProp : iconProp;
    const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;
    const ownerState = {
      ...props,
      disableRipple,
      color: color2,
      indeterminate,
      size
    };
    const classes = useUtilityClasses$t(ownerState);
    const externalInputProps = slotProps.input ?? inputProps;
    const [RootSlot, rootSlotProps] = useSlot("root", {
      ref,
      elementType: CheckboxRoot,
      className: clsx(classes.root, className),
      shouldForwardComponentProp: true,
      externalForwardedProps: {
        slots,
        slotProps,
        ...other
      },
      ownerState,
      additionalProps: {
        type: "checkbox",
        icon: /* @__PURE__ */ React__namespace.cloneElement(icon, {
          fontSize: icon.props.fontSize ?? size
        }),
        checkedIcon: /* @__PURE__ */ React__namespace.cloneElement(indeterminateIcon, {
          fontSize: indeterminateIcon.props.fontSize ?? size
        }),
        disableRipple,
        slots,
        slotProps: {
          input: mergeSlotProps(typeof externalInputProps === "function" ? externalInputProps(ownerState) : externalInputProps, {
            "data-indeterminate": indeterminate
          })
        }
      }
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsx(RootSlot, {
      ...rootSlotProps,
      classes
    });
  });
  function mapEventPropToEvent(eventProp) {
    return eventProp.substring(2).toLowerCase();
  }
  function clickedRootScrollbar(event, doc) {
    return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;
  }
  function ClickAwayListener(props) {
    const {
      children,
      disableReactTree = false,
      mouseEvent = "onClick",
      onClickAway,
      touchEvent = "onTouchEnd"
    } = props;
    const movedRef = React__namespace.useRef(false);
    const nodeRef = React__namespace.useRef(null);
    const activatedRef = React__namespace.useRef(false);
    const syntheticEventRef = React__namespace.useRef(false);
    React__namespace.useEffect(() => {
      setTimeout(() => {
        activatedRef.current = true;
      }, 0);
      return () => {
        activatedRef.current = false;
      };
    }, []);
    const handleRef = useForkRef(getReactElementRef(children), nodeRef);
    const handleClickAway = useEventCallback((event) => {
      const insideReactTree = syntheticEventRef.current;
      syntheticEventRef.current = false;
      const doc = ownerDocument(nodeRef.current);
      if (!activatedRef.current || !nodeRef.current || "clientX" in event && clickedRootScrollbar(event, doc)) {
        return;
      }
      if (movedRef.current) {
        movedRef.current = false;
        return;
      }
      let insideDOM;
      if (event.composedPath) {
        insideDOM = event.composedPath().includes(nodeRef.current);
      } else {
        insideDOM = !doc.documentElement.contains(
          // @ts-expect-error returns `false` as intended when not dispatched from a Node
          event.target
        ) || nodeRef.current.contains(
          // @ts-expect-error returns `false` as intended when not dispatched from a Node
          event.target
        );
      }
      if (!insideDOM && (disableReactTree || !insideReactTree)) {
        onClickAway(event);
      }
    });
    const createHandleSynthetic = (handlerName) => (event) => {
      syntheticEventRef.current = true;
      const childrenPropsHandler = children.props[handlerName];
      if (childrenPropsHandler) {
        childrenPropsHandler(event);
      }
    };
    const childrenProps = {
      ref: handleRef
    };
    if (touchEvent !== false) {
      childrenProps[touchEvent] = createHandleSynthetic(touchEvent);
    }
    React__namespace.useEffect(() => {
      if (touchEvent !== false) {
        const mappedTouchEvent = mapEventPropToEvent(touchEvent);
        const doc = ownerDocument(nodeRef.current);
        const handleTouchMove = () => {
          movedRef.current = true;
        };
        doc.addEventListener(mappedTouchEvent, handleClickAway);
        doc.addEventListener("touchmove", handleTouchMove);
        return () => {
          doc.removeEventListener(mappedTouchEvent, handleClickAway);
          doc.removeEventListener("touchmove", handleTouchMove);
        };
      }
      return void 0;
    }, [handleClickAway, touchEvent]);
    if (mouseEvent !== false) {
      childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);
    }
    React__namespace.useEffect(() => {
      if (mouseEvent !== false) {
        const mappedMouseEvent = mapEventPropToEvent(mouseEvent);
        const doc = ownerDocument(nodeRef.current);
        doc.addEventListener(mappedMouseEvent, handleClickAway);
        return () => {
          doc.removeEventListener(mappedMouseEvent, handleClickAway);
        };
      }
      return void 0;
    }, [handleClickAway, mouseEvent]);
    return /* @__PURE__ */ React__namespace.cloneElement(children, childrenProps);
  }
  function isOverflowing(container) {
    const doc = ownerDocument(container);
    if (doc.body === container) {
      return ownerWindow(container).innerWidth > doc.documentElement.clientWidth;
    }
    return container.scrollHeight > container.clientHeight;
  }
  function ariaHidden(element, hide2) {
    if (hide2) {
      element.setAttribute("aria-hidden", "true");
    } else {
      element.removeAttribute("aria-hidden");
    }
  }
  function getPaddingRight(element) {
    return parseInt(ownerWindow(element).getComputedStyle(element).paddingRight, 10) || 0;
  }
  function isAriaHiddenForbiddenOnElement(element) {
    const forbiddenTagNames = ["TEMPLATE", "SCRIPT", "STYLE", "LINK", "MAP", "META", "NOSCRIPT", "PICTURE", "COL", "COLGROUP", "PARAM", "SLOT", "SOURCE", "TRACK"];
    const isForbiddenTagName = forbiddenTagNames.includes(element.tagName);
    const isInputHidden = element.tagName === "INPUT" && element.getAttribute("type") === "hidden";
    return isForbiddenTagName || isInputHidden;
  }
  function ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, hide2) {
    const blacklist = [mountElement, currentElement, ...elementsToExclude];
    [].forEach.call(container.children, (element) => {
      const isNotExcludedElement = !blacklist.includes(element);
      const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);
      if (isNotExcludedElement && isNotForbiddenElement) {
        ariaHidden(element, hide2);
      }
    });
  }
  function findIndexOf(items, callback) {
    let idx = -1;
    items.some((item, index) => {
      if (callback(item)) {
        idx = index;
        return true;
      }
      return false;
    });
    return idx;
  }
  function handleContainer(containerInfo, props) {
    const restoreStyle = [];
    const container = containerInfo.container;
    if (!props.disableScrollLock) {
      if (isOverflowing(container)) {
        const scrollbarSize = getScrollbarSize(ownerWindow(container));
        restoreStyle.push({
          value: container.style.paddingRight,
          property: "padding-right",
          el: container
        });
        container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;
        const fixedElements2 = ownerDocument(container).querySelectorAll(".mui-fixed");
        [].forEach.call(fixedElements2, (element) => {
          restoreStyle.push({
            value: element.style.paddingRight,
            property: "padding-right",
            el: element
          });
          element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`;
        });
      }
      let scrollContainer;
      if (container.parentNode instanceof DocumentFragment) {
        scrollContainer = ownerDocument(container).body;
      } else {
        const parent = container.parentElement;
        const containerWindow = ownerWindow(container);
        scrollContainer = (parent == null ? void 0 : parent.nodeName) === "HTML" && containerWindow.getComputedStyle(parent).overflowY === "scroll" ? parent : container;
      }
      restoreStyle.push({
        value: scrollContainer.style.overflow,
        property: "overflow",
        el: scrollContainer
      }, {
        value: scrollContainer.style.overflowX,
        property: "overflow-x",
        el: scrollContainer
      }, {
        value: scrollContainer.style.overflowY,
        property: "overflow-y",
        el: scrollContainer
      });
      scrollContainer.style.overflow = "hidden";
    }
    const restore = () => {
      restoreStyle.forEach(({
        value,
        el,
        property
      }) => {
        if (value) {
          el.style.setProperty(property, value);
        } else {
          el.style.removeProperty(property);
        }
      });
    };
    return restore;
  }
  function getHiddenSiblings(container) {
    const hiddenSiblings = [];
    [].forEach.call(container.children, (element) => {
      if (element.getAttribute("aria-hidden") === "true") {
        hiddenSiblings.push(element);
      }
    });
    return hiddenSiblings;
  }
  class ModalManager {
    constructor() {
      this.modals = [];
      this.containers = [];
    }
    add(modal, container) {
      let modalIndex = this.modals.indexOf(modal);
      if (modalIndex !== -1) {
        return modalIndex;
      }
      modalIndex = this.modals.length;
      this.modals.push(modal);
      if (modal.modalRef) {
        ariaHidden(modal.modalRef, false);
      }
      const hiddenSiblings = getHiddenSiblings(container);
      ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true);
      const containerIndex = findIndexOf(this.containers, (item) => item.container === container);
      if (containerIndex !== -1) {
        this.containers[containerIndex].modals.push(modal);
        return modalIndex;
      }
      this.containers.push({
        modals: [modal],
        container,
        restore: null,
        hiddenSiblings
      });
      return modalIndex;
    }
    mount(modal, props) {
      const containerIndex = findIndexOf(this.containers, (item) => item.modals.includes(modal));
      const containerInfo = this.containers[containerIndex];
      if (!containerInfo.restore) {
        containerInfo.restore = handleContainer(containerInfo, props);
      }
    }
    remove(modal, ariaHiddenState = true) {
      const modalIndex = this.modals.indexOf(modal);
      if (modalIndex === -1) {
        return modalIndex;
      }
      const containerIndex = findIndexOf(this.containers, (item) => item.modals.includes(modal));
      const containerInfo = this.containers[containerIndex];
      containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);
      this.modals.splice(modalIndex, 1);
      if (containerInfo.modals.length === 0) {
        if (containerInfo.restore) {
          containerInfo.restore();
        }
        if (modal.modalRef) {
          ariaHidden(modal.modalRef, ariaHiddenState);
        }
        ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false);
        this.containers.splice(containerIndex, 1);
      } else {
        const nextTop = containerInfo.modals[containerInfo.modals.length - 1];
        if (nextTop.modalRef) {
          ariaHidden(nextTop.modalRef, false);
        }
      }
      return modalIndex;
    }
    isTopModal(modal) {
      return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;
    }
  }
  const candidatesSelector = ["input", "select", "textarea", "a[href]", "button", "[tabindex]", "audio[controls]", "video[controls]", '[contenteditable]:not([contenteditable="false"])'].join(",");
  function getTabIndex(node2) {
    const tabindexAttr = parseInt(node2.getAttribute("tabindex") || "", 10);
    if (!Number.isNaN(tabindexAttr)) {
      return tabindexAttr;
    }
    if (node2.contentEditable === "true" || (node2.nodeName === "AUDIO" || node2.nodeName === "VIDEO" || node2.nodeName === "DETAILS") && node2.getAttribute("tabindex") === null) {
      return 0;
    }
    return node2.tabIndex;
  }
  function isNonTabbableRadio(node2) {
    if (node2.tagName !== "INPUT" || node2.type !== "radio") {
      return false;
    }
    if (!node2.name) {
      return false;
    }
    const getRadio = (selector) => node2.ownerDocument.querySelector(`input[type="radio"]${selector}`);
    let roving = getRadio(`[name="${node2.name}"]:checked`);
    if (!roving) {
      roving = getRadio(`[name="${node2.name}"]`);
    }
    return roving !== node2;
  }
  function isNodeMatchingSelectorFocusable(node2) {
    if (node2.disabled || node2.tagName === "INPUT" && node2.type === "hidden" || isNonTabbableRadio(node2)) {
      return false;
    }
    return true;
  }
  function defaultGetTabbable(root) {
    const regularTabNodes = [];
    const orderedTabNodes = [];
    Array.from(root.querySelectorAll(candidatesSelector)).forEach((node2, i) => {
      const nodeTabIndex = getTabIndex(node2);
      if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node2)) {
        return;
      }
      if (nodeTabIndex === 0) {
        regularTabNodes.push(node2);
      } else {
        orderedTabNodes.push({
          documentOrder: i,
          tabIndex: nodeTabIndex,
          node: node2
        });
      }
    });
    return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map((a) => a.node).concat(regularTabNodes);
  }
  function defaultIsEnabled() {
    return true;
  }
  function FocusTrap(props) {
    const {
      children,
      disableAutoFocus = false,
      disableEnforceFocus = false,
      disableRestoreFocus = false,
      getTabbable = defaultGetTabbable,
      isEnabled = defaultIsEnabled,
      open: open2
    } = props;
    const ignoreNextEnforceFocus = React__namespace.useRef(false);
    const sentinelStart = React__namespace.useRef(null);
    const sentinelEnd = React__namespace.useRef(null);
    const nodeToRestore = React__namespace.useRef(null);
    const reactFocusEventTarget = React__namespace.useRef(null);
    const activated = React__namespace.useRef(false);
    const rootRef = React__namespace.useRef(null);
    const handleRef = useForkRef(getReactElementRef(children), rootRef);
    const lastKeydown = React__namespace.useRef(null);
    React__namespace.useEffect(() => {
      if (!open2 || !rootRef.current) {
        return;
      }
      activated.current = !disableAutoFocus;
    }, [disableAutoFocus, open2]);
    React__namespace.useEffect(() => {
      if (!open2 || !rootRef.current) {
        return;
      }
      const doc = ownerDocument(rootRef.current);
      if (!rootRef.current.contains(doc.activeElement)) {
        if (!rootRef.current.hasAttribute("tabIndex")) {
          rootRef.current.setAttribute("tabIndex", "-1");
        }
        if (activated.current) {
          rootRef.current.focus();
        }
      }
      return () => {
        if (!disableRestoreFocus) {
          if (nodeToRestore.current && nodeToRestore.current.focus) {
            ignoreNextEnforceFocus.current = true;
            nodeToRestore.current.focus();
          }
          nodeToRestore.current = null;
        }
      };
    }, [open2]);
    React__namespace.useEffect(() => {
      if (!open2 || !rootRef.current) {
        return;
      }
      const doc = ownerDocument(rootRef.current);
      const loopFocus = (nativeEvent) => {
        lastKeydown.current = nativeEvent;
        if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== "Tab") {
          return;
        }
        if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {
          ignoreNextEnforceFocus.current = true;
          if (sentinelEnd.current) {
            sentinelEnd.current.focus();
          }
        }
      };
      const contain = () => {
        var _a, _b;
        const rootElement = rootRef.current;
        if (rootElement === null) {
          return;
        }
        if (!doc.hasFocus() || !isEnabled() || ignoreNextEnforceFocus.current) {
          ignoreNextEnforceFocus.current = false;
          return;
        }
        if (rootElement.contains(doc.activeElement)) {
          return;
        }
        if (disableEnforceFocus && doc.activeElement !== sentinelStart.current && doc.activeElement !== sentinelEnd.current) {
          return;
        }
        if (doc.activeElement !== reactFocusEventTarget.current) {
          reactFocusEventTarget.current = null;
        } else if (reactFocusEventTarget.current !== null) {
          return;
        }
        if (!activated.current) {
          return;
        }
        let tabbable = [];
        if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
          tabbable = getTabbable(rootRef.current);
        }
        if (tabbable.length > 0) {
          const isShiftTab = Boolean(((_a = lastKeydown.current) == null ? void 0 : _a.shiftKey) && ((_b = lastKeydown.current) == null ? void 0 : _b.key) === "Tab");
          const focusNext = tabbable[0];
          const focusPrevious = tabbable[tabbable.length - 1];
          if (typeof focusNext !== "string" && typeof focusPrevious !== "string") {
            if (isShiftTab) {
              focusPrevious.focus();
            } else {
              focusNext.focus();
            }
          }
        } else {
          rootElement.focus();
        }
      };
      doc.addEventListener("focusin", contain);
      doc.addEventListener("keydown", loopFocus, true);
      const interval = setInterval(() => {
        if (doc.activeElement && doc.activeElement.tagName === "BODY") {
          contain();
        }
      }, 50);
      return () => {
        clearInterval(interval);
        doc.removeEventListener("focusin", contain);
        doc.removeEventListener("keydown", loopFocus, true);
      };
    }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open2, getTabbable]);
    const onFocus = (event) => {
      if (nodeToRestore.current === null) {
        nodeToRestore.current = event.relatedTarget;
      }
      activated.current = true;
      reactFocusEventTarget.current = event.target;
      const childrenPropsHandler = children.props.onFocus;
      if (childrenPropsHandler) {
        childrenPropsHandler(event);
      }
    };
    const handleFocusSentinel = (event) => {
      if (nodeToRestore.current === null) {
        nodeToRestore.current = event.relatedTarget;
      }
      activated.current = true;
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(React__namespace.Fragment, {
      children: [/* @__PURE__ */ jsxRuntimeExports.jsx("div", {
        tabIndex: open2 ? 0 : -1,
        onFocus: handleFocusSentinel,
        ref: sentinelStart,
        "data-testid": "sentinelStart"
      }), /* @__PURE__ */ React__namespace.cloneElement(children, {
        ref: handleRef,
        onFocus
      }), /* @__PURE__ */ jsxRuntimeExports.jsx("div", {
        tabIndex: open2 ? 0 : -1,
        onFocus: handleFocusSentinel,
        ref: sentinelEnd,
        "data-testid": "sentinelEnd"
      })]
    });
  }
  function getContainer(container) {
    return typeof container === "function" ? container() : container;
  }
  function getHasTransition(children) {
    return children ? children.props.hasOwnProperty("in") : false;
  }
  const noop$1 = () => {
  };
  const manager = new ModalManager();
  function useModal(parameters) {
    const {
      container,
      disableEscapeKeyDown = false,
      disableScrollLock = false,
      closeAfterTransition = false,
      onTransitionEnter,
      onTransitionExited,
      children,
      onClose,
      open: open2,
      rootRef
    } = parameters;
    const modal = React__namespace.useRef({});
    const mountNodeRef = React__namespace.useRef(null);
    const modalRef = React__namespace.useRef(null);
    const handleRef = useForkRef(modalRef, rootRef);
    const [exited, setExited] = React__namespace.useState(!open2);
    const hasTransition = getHasTransition(children);
    let ariaHiddenProp = true;
    if (parameters["aria-hidden"] === "false" || parameters["aria-hidden"] === false) {
      ariaHiddenProp = false;
    }
    const getDoc = () => ownerDocument(mountNodeRef.current);
    const getModal = () => {
      modal.current.modalRef = modalRef.current;
      modal.current.mount = mountNodeRef.current;
      return modal.current;
    };
    const handleMounted = () => {
      manager.mount(getModal(), {
        disableScrollLock
      });
      if (modalRef.current) {
        modalRef.current.scrollTop = 0;
      }
    };
    const handleOpen = useEventCallback(() => {
      const resolvedContainer = getContainer(container) || getDoc().body;
      manager.add(getModal(), resolvedContainer);
      if (modalRef.current) {
        handleMounted();
      }
    });
    const isTopModal = () => manager.isTopModal(getModal());
    const handlePortalRef = useEventCallback((node2) => {
      mountNodeRef.current = node2;
      if (!node2) {
        return;
      }
      if (open2 && isTopModal()) {
        handleMounted();
      } else if (modalRef.current) {
        ariaHidden(modalRef.current, ariaHiddenProp);
      }
    });
    const handleClose = React__namespace.useCallback(() => {
      manager.remove(getModal(), ariaHiddenProp);
    }, [ariaHiddenProp]);
    React__namespace.useEffect(() => {
      return () => {
        handleClose();
      };
    }, [handleClose]);
    React__namespace.useEffect(() => {
      if (open2) {
        handleOpen();
      } else if (!hasTransition || !closeAfterTransition) {
        handleClose();
      }
    }, [open2, handleClose, hasTransition, closeAfterTransition, handleOpen]);
    const createHandleKeyDown = (otherHandlers) => (event) => {
      var _a;
      (_a = otherHandlers.onKeyDown) == null ? void 0 : _a.call(otherHandlers, event);
      if (event.key !== "Escape" || event.which === 229 || // Wait until IME is settled.
      !isTopModal()) {
        return;
      }
      if (!disableEscapeKeyDown) {
        event.stopPropagation();
        if (onClose) {
          onClose(event, "escapeKeyDown");
        }
      }
    };
    const createHandleBackdropClick = (otherHandlers) => (event) => {
      var _a;
      (_a = otherHandlers.onClick) == null ? void 0 : _a.call(otherHandlers, event);
      if (event.target !== event.currentTarget) {
        return;
      }
      if (onClose) {
        onClose(event, "backdropClick");
      }
    };
    const getRootProps = (otherHandlers = {}) => {
      const propsEventHandlers = extractEventHandlers(parameters);
      delete propsEventHandlers.onTransitionEnter;
      delete propsEventHandlers.onTransitionExited;
      const externalEventHandlers = {
        ...propsEventHandlers,
        ...otherHandlers
      };
      return {
        /*
         * Marking an element with the role presentation indicates to assistive technology
         * that this element should be ignored; it exists to support the web application and
         * is not meant for humans to interact with directly.
         * https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-static-element-interactions.md
         */
        role: "presentation",
        ...externalEventHandlers,
        onKeyDown: createHandleKeyDown(externalEventHandlers),
        ref: handleRef
      };
    };
    const getBackdropProps = (otherHandlers = {}) => {
      const externalEventHandlers = otherHandlers;
      return {
        "aria-hidden": true,
        ...externalEventHandlers,
        onClick: createHandleBackdropClick(externalEventHandlers),
        open: open2
      };
    };
    const getTransitionProps2 = () => {
      const handleEnter = () => {
        setExited(false);
        if (onTransitionEnter) {
          onTransitionEnter();
        }
      };
      const handleExited = () => {
        setExited(true);
        if (onTransitionExited) {
          onTransitionExited();
        }
        if (closeAfterTransition) {
          handleClose();
        }
      };
      return {
        onEnter: createChainedFunction(handleEnter, (children == null ? void 0 : children.props.onEnter) ?? noop$1),
        onExited: createChainedFunction(handleExited, (children == null ? void 0 : children.props.onExited) ?? noop$1)
      };
    };
    return {
      getRootProps,
      getBackdropProps,
      getTransitionProps: getTransitionProps2,
      rootRef: handleRef,
      portalRef: handlePortalRef,
      isTopModal,
      exited,
      hasTransition
    };
  }
  function getModalUtilityClass(slot) {
    return generateUtilityClass("MuiModal", slot);
  }
  generateUtilityClasses("MuiModal", ["root", "hidden", "backdrop"]);
  const useUtilityClasses$s = (ownerState) => {
    const {
      open: open2,
      exited,
      classes
    } = ownerState;
    const slots = {
      root: ["root", !open2 && exited && "hidden"],
      backdrop: ["backdrop"]
    };
    return composeClasses(slots, getModalUtilityClass, classes);
  };
  const ModalRoot = styled("div", {
    name: "MuiModal",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, !ownerState.open && ownerState.exited && styles2.hidden];
    }
  })(memoTheme(({
    theme
  }) => ({
    position: "fixed",
    zIndex: (theme.vars || theme).zIndex.modal,
    right: 0,
    bottom: 0,
    top: 0,
    left: 0,
    variants: [{
      props: ({
        ownerState
      }) => !ownerState.open && ownerState.exited,
      style: {
        visibility: "hidden"
      }
    }]
  })));
  const ModalBackdrop = styled(Backdrop, {
    name: "MuiModal",
    slot: "Backdrop",
    overridesResolver: (props, styles2) => {
      return styles2.backdrop;
    }
  })({
    zIndex: -1
  });
  const Modal = /* @__PURE__ */ React__namespace.forwardRef(function Modal2(inProps, ref) {
    const props = useDefaultProps({
      name: "MuiModal",
      props: inProps
    });
    const {
      BackdropComponent = ModalBackdrop,
      BackdropProps,
      classes: classesProp,
      className,
      closeAfterTransition = false,
      children,
      container,
      component,
      components = {},
      componentsProps = {},
      disableAutoFocus = false,
      disableEnforceFocus = false,
      disableEscapeKeyDown = false,
      disablePortal = false,
      disableRestoreFocus = false,
      disableScrollLock = false,
      hideBackdrop = false,
      keepMounted = false,
      onClose,
      onTransitionEnter,
      onTransitionExited,
      open: open2,
      slotProps = {},
      slots = {},
      // eslint-disable-next-line react/prop-types
      theme,
      ...other
    } = props;
    const propsWithDefaults = {
      ...props,
      closeAfterTransition,
      disableAutoFocus,
      disableEnforceFocus,
      disableEscapeKeyDown,
      disablePortal,
      disableRestoreFocus,
      disableScrollLock,
      hideBackdrop,
      keepMounted
    };
    const {
      getRootProps,
      getBackdropProps,
      getTransitionProps: getTransitionProps2,
      portalRef,
      isTopModal,
      exited,
      hasTransition
    } = useModal({
      ...propsWithDefaults,
      rootRef: ref
    });
    const ownerState = {
      ...propsWithDefaults,
      exited
    };
    const classes = useUtilityClasses$s(ownerState);
    const childProps = {};
    if (children.props.tabIndex === void 0) {
      childProps.tabIndex = "-1";
    }
    if (hasTransition) {
      const {
        onEnter,
        onExited
      } = getTransitionProps2();
      childProps.onEnter = onEnter;
      childProps.onExited = onExited;
    }
    const externalForwardedProps = {
      slots: {
        root: components.Root,
        backdrop: components.Backdrop,
        ...slots
      },
      slotProps: {
        ...componentsProps,
        ...slotProps
      }
    };
    const [RootSlot, rootProps] = useSlot("root", {
      ref,
      elementType: ModalRoot,
      externalForwardedProps: {
        ...externalForwardedProps,
        ...other,
        component
      },
      getSlotProps: getRootProps,
      ownerState,
      className: clsx(className, classes == null ? void 0 : classes.root, !ownerState.open && ownerState.exited && (classes == null ? void 0 : classes.hidden))
    });
    const [BackdropSlot, backdropProps] = useSlot("backdrop", {
      ref: BackdropProps == null ? void 0 : BackdropProps.ref,
      elementType: BackdropComponent,
      externalForwardedProps,
      shouldForwardComponentProp: true,
      additionalProps: BackdropProps,
      getSlotProps: (otherHandlers) => {
        return getBackdropProps({
          ...otherHandlers,
          onClick: (event) => {
            if (otherHandlers == null ? void 0 : otherHandlers.onClick) {
              otherHandlers.onClick(event);
            }
          }
        });
      },
      className: clsx(BackdropProps == null ? void 0 : BackdropProps.className, classes == null ? void 0 : classes.backdrop),
      ownerState
    });
    if (!keepMounted && !open2 && (!hasTransition || exited)) {
      return null;
    }
    return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal, {
      ref: portalRef,
      container,
      disablePortal,
      children: /* @__PURE__ */ jsxRuntimeExports.jsxs(RootSlot, {
        ...rootProps,
        children: [!hideBackdrop && BackdropComponent ? /* @__PURE__ */ jsxRuntimeExports.jsx(BackdropSlot, {
          ...backdropProps
        }) : null, /* @__PURE__ */ jsxRuntimeExports.jsx(FocusTrap, {
          disableEnforceFocus,
          disableAutoFocus,
          disableRestoreFocus,
          isEnabled: isTopModal,
          open: open2,
          children: /* @__PURE__ */ React__namespace.cloneElement(children, childProps)
        })]
      })
    });
  });
  function getDividerUtilityClass(slot) {
    return generateUtilityClass("MuiDivider", slot);
  }
  const dividerClasses = generateUtilityClasses("MuiDivider", ["root", "absolute", "fullWidth", "inset", "middle", "flexItem", "light", "vertical", "withChildren", "withChildrenVertical", "textAlignRight", "textAlignLeft", "wrapper", "wrapperVertical"]);
  const useUtilityClasses$r = (ownerState) => {
    const {
      absolute,
      children,
      classes,
      flexItem,
      light: light2,
      orientation,
      textAlign,
      variant
    } = ownerState;
    const slots = {
      root: ["root", absolute && "absolute", variant, light2 && "light", orientation === "vertical" && "vertical", flexItem && "flexItem", children && "withChildren", children && orientation === "vertical" && "withChildrenVertical", textAlign === "right" && orientation !== "vertical" && "textAlignRight", textAlign === "left" && orientation !== "vertical" && "textAlignLeft"],
      wrapper: ["wrapper", orientation === "vertical" && "wrapperVertical"]
    };
    return composeClasses(slots, getDividerUtilityClass, classes);
  };
  const DividerRoot = styled("div", {
    name: "MuiDivider",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.absolute && styles2.absolute, styles2[ownerState.variant], ownerState.light && styles2.light, ownerState.orientation === "vertical" && styles2.vertical, ownerState.flexItem && styles2.flexItem, ownerState.children && styles2.withChildren, ownerState.children && ownerState.orientation === "vertical" && styles2.withChildrenVertical, ownerState.textAlign === "right" && ownerState.orientation !== "vertical" && styles2.textAlignRight, ownerState.textAlign === "left" && ownerState.orientation !== "vertical" && styles2.textAlignLeft];
    }
  })(memoTheme(({
    theme
  }) => ({
    margin: 0,
    // Reset browser default style.
    flexShrink: 0,
    borderWidth: 0,
    borderStyle: "solid",
    borderColor: (theme.vars || theme).palette.divider,
    borderBottomWidth: "thin",
    variants: [{
      props: {
        absolute: true
      },
      style: {
        position: "absolute",
        bottom: 0,
        left: 0,
        width: "100%"
      }
    }, {
      props: {
        light: true
      },
      style: {
        borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)
      }
    }, {
      props: {
        variant: "inset"
      },
      style: {
        marginLeft: 72
      }
    }, {
      props: {
        variant: "middle",
        orientation: "horizontal"
      },
      style: {
        marginLeft: theme.spacing(2),
        marginRight: theme.spacing(2)
      }
    }, {
      props: {
        variant: "middle",
        orientation: "vertical"
      },
      style: {
        marginTop: theme.spacing(1),
        marginBottom: theme.spacing(1)
      }
    }, {
      props: {
        orientation: "vertical"
      },
      style: {
        height: "100%",
        borderBottomWidth: 0,
        borderRightWidth: "thin"
      }
    }, {
      props: {
        flexItem: true
      },
      style: {
        alignSelf: "stretch",
        height: "auto"
      }
    }, {
      props: ({
        ownerState
      }) => !!ownerState.children,
      style: {
        display: "flex",
        textAlign: "center",
        border: 0,
        borderTopStyle: "solid",
        borderLeftStyle: "solid",
        "&::before, &::after": {
          content: '""',
          alignSelf: "center"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.children && ownerState.orientation !== "vertical",
      style: {
        "&::before, &::after": {
          width: "100%",
          borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,
          borderTopStyle: "inherit"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.orientation === "vertical" && ownerState.children,
      style: {
        flexDirection: "column",
        "&::before, &::after": {
          height: "100%",
          borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,
          borderLeftStyle: "inherit"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.textAlign === "right" && ownerState.orientation !== "vertical",
      style: {
        "&::before": {
          width: "90%"
        },
        "&::after": {
          width: "10%"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.textAlign === "left" && ownerState.orientation !== "vertical",
      style: {
        "&::before": {
          width: "10%"
        },
        "&::after": {
          width: "90%"
        }
      }
    }]
  })));
  const DividerWrapper = styled("span", {
    name: "MuiDivider",
    slot: "Wrapper",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.wrapper, ownerState.orientation === "vertical" && styles2.wrapperVertical];
    }
  })(memoTheme(({
    theme
  }) => ({
    display: "inline-block",
    paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,
    paddingRight: `calc(${theme.spacing(1)} * 1.2)`,
    whiteSpace: "nowrap",
    variants: [{
      props: {
        orientation: "vertical"
      },
      style: {
        paddingTop: `calc(${theme.spacing(1)} * 1.2)`,
        paddingBottom: `calc(${theme.spacing(1)} * 1.2)`
      }
    }]
  })));
  const Divider = /* @__PURE__ */ React__namespace.forwardRef(function Divider2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiDivider"
    });
    const {
      absolute = false,
      children,
      className,
      orientation = "horizontal",
      component = children || orientation === "vertical" ? "div" : "hr",
      flexItem = false,
      light: light2 = false,
      role = component !== "hr" ? "separator" : void 0,
      textAlign = "center",
      variant = "fullWidth",
      ...other
    } = props;
    const ownerState = {
      ...props,
      absolute,
      component,
      flexItem,
      light: light2,
      orientation,
      role,
      textAlign,
      variant
    };
    const classes = useUtilityClasses$r(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(DividerRoot, {
      as: component,
      className: clsx(classes.root, className),
      role,
      ref,
      ownerState,
      "aria-orientation": role === "separator" && (component !== "hr" || orientation === "vertical") ? orientation : void 0,
      ...other,
      children: children ? /* @__PURE__ */ jsxRuntimeExports.jsx(DividerWrapper, {
        className: classes.wrapper,
        ownerState,
        children
      }) : null
    });
  });
  if (Divider) {
    Divider.muiSkipListHighlight = true;
  }
  function getTranslateValue(direction, node2, resolvedContainer) {
    const rect = node2.getBoundingClientRect();
    const containerRect = resolvedContainer && resolvedContainer.getBoundingClientRect();
    const containerWindow = ownerWindow(node2);
    let transform;
    if (node2.fakeTransform) {
      transform = node2.fakeTransform;
    } else {
      const computedStyle = containerWindow.getComputedStyle(node2);
      transform = computedStyle.getPropertyValue("-webkit-transform") || computedStyle.getPropertyValue("transform");
    }
    let offsetX = 0;
    let offsetY = 0;
    if (transform && transform !== "none" && typeof transform === "string") {
      const transformValues = transform.split("(")[1].split(")")[0].split(",");
      offsetX = parseInt(transformValues[4], 10);
      offsetY = parseInt(transformValues[5], 10);
    }
    if (direction === "left") {
      if (containerRect) {
        return `translateX(${containerRect.right + offsetX - rect.left}px)`;
      }
      return `translateX(${containerWindow.innerWidth + offsetX - rect.left}px)`;
    }
    if (direction === "right") {
      if (containerRect) {
        return `translateX(-${rect.right - containerRect.left - offsetX}px)`;
      }
      return `translateX(-${rect.left + rect.width - offsetX}px)`;
    }
    if (direction === "up") {
      if (containerRect) {
        return `translateY(${containerRect.bottom + offsetY - rect.top}px)`;
      }
      return `translateY(${containerWindow.innerHeight + offsetY - rect.top}px)`;
    }
    if (containerRect) {
      return `translateY(-${rect.top - containerRect.top + rect.height - offsetY}px)`;
    }
    return `translateY(-${rect.top + rect.height - offsetY}px)`;
  }
  function resolveContainer(containerPropProp) {
    return typeof containerPropProp === "function" ? containerPropProp() : containerPropProp;
  }
  function setTranslateValue(direction, node2, containerProp) {
    const resolvedContainer = resolveContainer(containerProp);
    const transform = getTranslateValue(direction, node2, resolvedContainer);
    if (transform) {
      node2.style.webkitTransform = transform;
      node2.style.transform = transform;
    }
  }
  const Slide = /* @__PURE__ */ React__namespace.forwardRef(function Slide2(props, ref) {
    const theme = useTheme();
    const defaultEasing = {
      enter: theme.transitions.easing.easeOut,
      exit: theme.transitions.easing.sharp
    };
    const defaultTimeout = {
      enter: theme.transitions.duration.enteringScreen,
      exit: theme.transitions.duration.leavingScreen
    };
    const {
      addEndListener,
      appear = true,
      children,
      container: containerProp,
      direction = "down",
      easing: easingProp = defaultEasing,
      in: inProp,
      onEnter,
      onEntered,
      onEntering,
      onExit,
      onExited,
      onExiting,
      style: style2,
      timeout = defaultTimeout,
      // eslint-disable-next-line react/prop-types
      TransitionComponent = Transition,
      ...other
    } = props;
    const childrenRef = React__namespace.useRef(null);
    const handleRef = useForkRef(getReactElementRef(children), childrenRef, ref);
    const normalizedTransitionCallback = (callback) => (isAppearing) => {
      if (callback) {
        if (isAppearing === void 0) {
          callback(childrenRef.current);
        } else {
          callback(childrenRef.current, isAppearing);
        }
      }
    };
    const handleEnter = normalizedTransitionCallback((node2, isAppearing) => {
      setTranslateValue(direction, node2, containerProp);
      reflow(node2);
      if (onEnter) {
        onEnter(node2, isAppearing);
      }
    });
    const handleEntering = normalizedTransitionCallback((node2, isAppearing) => {
      const transitionProps = getTransitionProps({
        timeout,
        style: style2,
        easing: easingProp
      }, {
        mode: "enter"
      });
      node2.style.webkitTransition = theme.transitions.create("-webkit-transform", {
        ...transitionProps
      });
      node2.style.transition = theme.transitions.create("transform", {
        ...transitionProps
      });
      node2.style.webkitTransform = "none";
      node2.style.transform = "none";
      if (onEntering) {
        onEntering(node2, isAppearing);
      }
    });
    const handleEntered = normalizedTransitionCallback(onEntered);
    const handleExiting = normalizedTransitionCallback(onExiting);
    const handleExit = normalizedTransitionCallback((node2) => {
      const transitionProps = getTransitionProps({
        timeout,
        style: style2,
        easing: easingProp
      }, {
        mode: "exit"
      });
      node2.style.webkitTransition = theme.transitions.create("-webkit-transform", transitionProps);
      node2.style.transition = theme.transitions.create("transform", transitionProps);
      setTranslateValue(direction, node2, containerProp);
      if (onExit) {
        onExit(node2);
      }
    });
    const handleExited = normalizedTransitionCallback((node2) => {
      node2.style.webkitTransition = "";
      node2.style.transition = "";
      if (onExited) {
        onExited(node2);
      }
    });
    const handleAddEndListener = (next2) => {
      if (addEndListener) {
        addEndListener(childrenRef.current, next2);
      }
    };
    const updatePosition = React__namespace.useCallback(() => {
      if (childrenRef.current) {
        setTranslateValue(direction, childrenRef.current, containerProp);
      }
    }, [direction, containerProp]);
    React__namespace.useEffect(() => {
      if (inProp || direction === "down" || direction === "right") {
        return void 0;
      }
      const handleResize = debounce$1(() => {
        if (childrenRef.current) {
          setTranslateValue(direction, childrenRef.current, containerProp);
        }
      });
      const containerWindow = ownerWindow(childrenRef.current);
      containerWindow.addEventListener("resize", handleResize);
      return () => {
        handleResize.clear();
        containerWindow.removeEventListener("resize", handleResize);
      };
    }, [direction, inProp, containerProp]);
    React__namespace.useEffect(() => {
      if (!inProp) {
        updatePosition();
      }
    }, [inProp, updatePosition]);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionComponent, {
      nodeRef: childrenRef,
      onEnter: handleEnter,
      onEntered: handleEntered,
      onEntering: handleEntering,
      onExit: handleExit,
      onExited: handleExited,
      onExiting: handleExiting,
      addEndListener: handleAddEndListener,
      appear,
      in: inProp,
      timeout,
      ...other,
      children: (state, {
        ownerState,
        ...restChildProps
      }) => {
        return /* @__PURE__ */ React__namespace.cloneElement(children, {
          ref: handleRef,
          style: {
            visibility: state === "exited" && !inProp ? "hidden" : void 0,
            ...style2,
            ...children.props.style
          },
          ...restChildProps
        });
      }
    });
  });
  function getDrawerUtilityClass(slot) {
    return generateUtilityClass("MuiDrawer", slot);
  }
  generateUtilityClasses("MuiDrawer", ["root", "docked", "paper", "anchorLeft", "anchorRight", "anchorTop", "anchorBottom", "paperAnchorLeft", "paperAnchorRight", "paperAnchorTop", "paperAnchorBottom", "paperAnchorDockedLeft", "paperAnchorDockedRight", "paperAnchorDockedTop", "paperAnchorDockedBottom", "modal"]);
  const overridesResolver$1 = (props, styles2) => {
    const {
      ownerState
    } = props;
    return [styles2.root, (ownerState.variant === "permanent" || ownerState.variant === "persistent") && styles2.docked, styles2.modal];
  };
  const useUtilityClasses$q = (ownerState) => {
    const {
      classes,
      anchor,
      variant
    } = ownerState;
    const slots = {
      root: ["root", `anchor${capitalize(anchor)}`],
      docked: [(variant === "permanent" || variant === "persistent") && "docked"],
      modal: ["modal"],
      paper: ["paper", `paperAnchor${capitalize(anchor)}`, variant !== "temporary" && `paperAnchorDocked${capitalize(anchor)}`]
    };
    return composeClasses(slots, getDrawerUtilityClass, classes);
  };
  const DrawerRoot = styled(Modal, {
    name: "MuiDrawer",
    slot: "Root",
    overridesResolver: overridesResolver$1
  })(memoTheme(({
    theme
  }) => ({
    zIndex: (theme.vars || theme).zIndex.drawer
  })));
  const DrawerDockedRoot = styled("div", {
    shouldForwardProp: rootShouldForwardProp,
    name: "MuiDrawer",
    slot: "Docked",
    skipVariantsResolver: false,
    overridesResolver: overridesResolver$1
  })({
    flex: "0 0 auto"
  });
  const DrawerPaper = styled(Paper, {
    name: "MuiDrawer",
    slot: "Paper",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.paper, styles2[`paperAnchor${capitalize(ownerState.anchor)}`], ownerState.variant !== "temporary" && styles2[`paperAnchorDocked${capitalize(ownerState.anchor)}`]];
    }
  })(memoTheme(({
    theme
  }) => ({
    overflowY: "auto",
    display: "flex",
    flexDirection: "column",
    height: "100%",
    flex: "1 0 auto",
    zIndex: (theme.vars || theme).zIndex.drawer,
    // Add iOS momentum scrolling for iOS < 13.0
    WebkitOverflowScrolling: "touch",
    // temporary style
    position: "fixed",
    top: 0,
    // We disable the focus ring for mouse, touch and keyboard users.
    // At some point, it would be better to keep it for keyboard users.
    // :focus-ring CSS pseudo-class will help.
    outline: 0,
    variants: [{
      props: {
        anchor: "left"
      },
      style: {
        left: 0
      }
    }, {
      props: {
        anchor: "top"
      },
      style: {
        top: 0,
        left: 0,
        right: 0,
        height: "auto",
        maxHeight: "100%"
      }
    }, {
      props: {
        anchor: "right"
      },
      style: {
        right: 0
      }
    }, {
      props: {
        anchor: "bottom"
      },
      style: {
        top: "auto",
        left: 0,
        bottom: 0,
        right: 0,
        height: "auto",
        maxHeight: "100%"
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchor === "left" && ownerState.variant !== "temporary",
      style: {
        borderRight: `1px solid ${(theme.vars || theme).palette.divider}`
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchor === "top" && ownerState.variant !== "temporary",
      style: {
        borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchor === "right" && ownerState.variant !== "temporary",
      style: {
        borderLeft: `1px solid ${(theme.vars || theme).palette.divider}`
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchor === "bottom" && ownerState.variant !== "temporary",
      style: {
        borderTop: `1px solid ${(theme.vars || theme).palette.divider}`
      }
    }]
  })));
  const oppositeDirection = {
    left: "right",
    right: "left",
    top: "down",
    bottom: "up"
  };
  function isHorizontal(anchor) {
    return ["left", "right"].includes(anchor);
  }
  function getAnchor({
    direction
  }, anchor) {
    return direction === "rtl" && isHorizontal(anchor) ? oppositeDirection[anchor] : anchor;
  }
  const Drawer = /* @__PURE__ */ React__namespace.forwardRef(function Drawer2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiDrawer"
    });
    const theme = useTheme();
    const isRtl = useRtl();
    const defaultTransitionDuration = {
      enter: theme.transitions.duration.enteringScreen,
      exit: theme.transitions.duration.leavingScreen
    };
    const {
      anchor: anchorProp = "left",
      BackdropProps,
      children,
      className,
      elevation = 16,
      hideBackdrop = false,
      ModalProps: {
        BackdropProps: BackdropPropsProp,
        ...ModalProps
      } = {},
      onClose,
      open: open2 = false,
      PaperProps = {},
      SlideProps,
      // eslint-disable-next-line react/prop-types
      TransitionComponent,
      transitionDuration = defaultTransitionDuration,
      variant = "temporary",
      slots = {},
      slotProps = {},
      ...other
    } = props;
    const mounted = React__namespace.useRef(false);
    React__namespace.useEffect(() => {
      mounted.current = true;
    }, []);
    const anchorInvariant = getAnchor({
      direction: isRtl ? "rtl" : "ltr"
    }, anchorProp);
    const anchor = anchorProp;
    const ownerState = {
      ...props,
      anchor,
      elevation,
      open: open2,
      variant,
      ...other
    };
    const classes = useUtilityClasses$q(ownerState);
    const externalForwardedProps = {
      slots: {
        transition: TransitionComponent,
        ...slots
      },
      slotProps: {
        paper: PaperProps,
        transition: SlideProps,
        ...slotProps,
        backdrop: mergeSlotProps(slotProps.backdrop || {
          ...BackdropProps,
          ...BackdropPropsProp
        }, {
          transitionDuration
        })
      }
    };
    const [RootSlot, rootSlotProps] = useSlot("root", {
      ref,
      elementType: DrawerRoot,
      className: clsx(classes.root, classes.modal, className),
      shouldForwardComponentProp: true,
      ownerState,
      externalForwardedProps: {
        ...externalForwardedProps,
        ...other,
        ...ModalProps
      },
      additionalProps: {
        open: open2,
        onClose,
        hideBackdrop,
        slots: {
          backdrop: externalForwardedProps.slots.backdrop
        },
        slotProps: {
          backdrop: externalForwardedProps.slotProps.backdrop
        }
      }
    });
    const [PaperSlot, paperSlotProps] = useSlot("paper", {
      elementType: DrawerPaper,
      shouldForwardComponentProp: true,
      className: clsx(classes.paper, PaperProps.className),
      ownerState,
      externalForwardedProps,
      additionalProps: {
        elevation: variant === "temporary" ? elevation : 0,
        square: true
      }
    });
    const [DockedSlot, dockedSlotProps] = useSlot("docked", {
      elementType: DrawerDockedRoot,
      ref,
      className: clsx(classes.root, classes.docked, className),
      ownerState,
      externalForwardedProps,
      additionalProps: other
      // pass `other` here because `DockedSlot` is also a root slot for some variants
    });
    const [TransitionSlot, transitionSlotProps] = useSlot("transition", {
      elementType: Slide,
      ownerState,
      externalForwardedProps,
      additionalProps: {
        in: open2,
        direction: oppositeDirection[anchorInvariant],
        timeout: transitionDuration,
        appear: mounted.current
      }
    });
    const drawer = /* @__PURE__ */ jsxRuntimeExports.jsx(PaperSlot, {
      ...paperSlotProps,
      children
    });
    if (variant === "permanent") {
      return /* @__PURE__ */ jsxRuntimeExports.jsx(DockedSlot, {
        ...dockedSlotProps,
        children: drawer
      });
    }
    const slidingDrawer = /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionSlot, {
      ...transitionSlotProps,
      children: drawer
    });
    if (variant === "persistent") {
      return /* @__PURE__ */ jsxRuntimeExports.jsx(DockedSlot, {
        ...dockedSlotProps,
        children: slidingDrawer
      });
    }
    return /* @__PURE__ */ jsxRuntimeExports.jsx(RootSlot, {
      ...rootSlotProps,
      children: slidingDrawer
    });
  });
  const useUtilityClasses$p = (ownerState) => {
    const {
      classes,
      disableUnderline,
      startAdornment,
      endAdornment,
      size,
      hiddenLabel,
      multiline
    } = ownerState;
    const slots = {
      root: ["root", !disableUnderline && "underline", startAdornment && "adornedStart", endAdornment && "adornedEnd", size === "small" && `size${capitalize(size)}`, hiddenLabel && "hiddenLabel", multiline && "multiline"],
      input: ["input"]
    };
    const composedClasses = composeClasses(slots, getFilledInputUtilityClass, classes);
    return {
      ...classes,
      // forward classes to the InputBase
      ...composedClasses
    };
  };
  const FilledInputRoot = styled(InputBaseRoot, {
    shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
    name: "MuiFilledInput",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [...rootOverridesResolver(props, styles2), !ownerState.disableUnderline && styles2.underline];
    }
  })(memoTheme(({
    theme
  }) => {
    const light2 = theme.palette.mode === "light";
    const bottomLineColor = light2 ? "rgba(0, 0, 0, 0.42)" : "rgba(255, 255, 255, 0.7)";
    const backgroundColor2 = light2 ? "rgba(0, 0, 0, 0.06)" : "rgba(255, 255, 255, 0.09)";
    const hoverBackground = light2 ? "rgba(0, 0, 0, 0.09)" : "rgba(255, 255, 255, 0.13)";
    const disabledBackground = light2 ? "rgba(0, 0, 0, 0.12)" : "rgba(255, 255, 255, 0.12)";
    return {
      position: "relative",
      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor2,
      borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,
      borderTopRightRadius: (theme.vars || theme).shape.borderRadius,
      transition: theme.transitions.create("background-color", {
        duration: theme.transitions.duration.shorter,
        easing: theme.transitions.easing.easeOut
      }),
      "&:hover": {
        backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,
        // Reset on touch devices, it doesn't add specificity
        "@media (hover: none)": {
          backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor2
        }
      },
      [`&.${filledInputClasses.focused}`]: {
        backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor2
      },
      [`&.${filledInputClasses.disabled}`]: {
        backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground
      },
      variants: [{
        props: ({
          ownerState
        }) => !ownerState.disableUnderline,
        style: {
          "&::after": {
            left: 0,
            bottom: 0,
            content: '""',
            position: "absolute",
            right: 0,
            transform: "scaleX(0)",
            transition: theme.transitions.create("transform", {
              duration: theme.transitions.duration.shorter,
              easing: theme.transitions.easing.easeOut
            }),
            pointerEvents: "none"
            // Transparent to the hover style.
          },
          [`&.${filledInputClasses.focused}:after`]: {
            // translateX(0) is a workaround for Safari transform scale bug
            // See https://github.com/mui/material-ui/issues/31766
            transform: "scaleX(1) translateX(0)"
          },
          [`&.${filledInputClasses.error}`]: {
            "&::before, &::after": {
              borderBottomColor: (theme.vars || theme).palette.error.main
            }
          },
          "&::before": {
            borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,
            left: 0,
            bottom: 0,
            content: '"\\00a0"',
            position: "absolute",
            right: 0,
            transition: theme.transitions.create("border-bottom-color", {
              duration: theme.transitions.duration.shorter
            }),
            pointerEvents: "none"
            // Transparent to the hover style.
          },
          [`&:hover:not(.${filledInputClasses.disabled}, .${filledInputClasses.error}):before`]: {
            borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`
          },
          [`&.${filledInputClasses.disabled}:before`]: {
            borderBottomStyle: "dotted"
          }
        }
      }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => {
        var _a;
        return {
          props: {
            disableUnderline: false,
            color: color2
          },
          style: {
            "&::after": {
              borderBottom: `2px solid ${(_a = (theme.vars || theme).palette[color2]) == null ? void 0 : _a.main}`
            }
          }
        };
      }), {
        props: ({
          ownerState
        }) => ownerState.startAdornment,
        style: {
          paddingLeft: 12
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.endAdornment,
        style: {
          paddingRight: 12
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.multiline,
        style: {
          padding: "25px 12px 8px"
        }
      }, {
        props: ({
          ownerState,
          size
        }) => ownerState.multiline && size === "small",
        style: {
          paddingTop: 21,
          paddingBottom: 4
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.multiline && ownerState.hiddenLabel,
        style: {
          paddingTop: 16,
          paddingBottom: 17
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.multiline && ownerState.hiddenLabel && ownerState.size === "small",
        style: {
          paddingTop: 8,
          paddingBottom: 9
        }
      }]
    };
  }));
  const FilledInputInput = styled(InputBaseInput, {
    name: "MuiFilledInput",
    slot: "Input",
    overridesResolver: inputOverridesResolver
  })(memoTheme(({
    theme
  }) => ({
    paddingTop: 25,
    paddingRight: 12,
    paddingBottom: 8,
    paddingLeft: 12,
    ...!theme.vars && {
      "&:-webkit-autofill": {
        WebkitBoxShadow: theme.palette.mode === "light" ? null : "0 0 0 100px #266798 inset",
        WebkitTextFillColor: theme.palette.mode === "light" ? null : "#fff",
        caretColor: theme.palette.mode === "light" ? null : "#fff",
        borderTopLeftRadius: "inherit",
        borderTopRightRadius: "inherit"
      }
    },
    ...theme.vars && {
      "&:-webkit-autofill": {
        borderTopLeftRadius: "inherit",
        borderTopRightRadius: "inherit"
      },
      [theme.getColorSchemeSelector("dark")]: {
        "&:-webkit-autofill": {
          WebkitBoxShadow: "0 0 0 100px #266798 inset",
          WebkitTextFillColor: "#fff",
          caretColor: "#fff"
        }
      }
    },
    variants: [{
      props: {
        size: "small"
      },
      style: {
        paddingTop: 21,
        paddingBottom: 4
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.hiddenLabel,
      style: {
        paddingTop: 16,
        paddingBottom: 17
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.startAdornment,
      style: {
        paddingLeft: 0
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.endAdornment,
      style: {
        paddingRight: 0
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.hiddenLabel && ownerState.size === "small",
      style: {
        paddingTop: 8,
        paddingBottom: 9
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.multiline,
      style: {
        paddingTop: 0,
        paddingBottom: 0,
        paddingLeft: 0,
        paddingRight: 0
      }
    }]
  })));
  const FilledInput = /* @__PURE__ */ React__namespace.forwardRef(function FilledInput2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiFilledInput"
    });
    const {
      disableUnderline = false,
      components = {},
      componentsProps: componentsPropsProp,
      fullWidth = false,
      hiddenLabel,
      // declare here to prevent spreading to DOM
      inputComponent = "input",
      multiline = false,
      slotProps,
      slots = {},
      type = "text",
      ...other
    } = props;
    const ownerState = {
      ...props,
      disableUnderline,
      fullWidth,
      inputComponent,
      multiline,
      type
    };
    const classes = useUtilityClasses$p(props);
    const filledInputComponentsProps = {
      root: {
        ownerState
      },
      input: {
        ownerState
      }
    };
    const componentsProps = slotProps ?? componentsPropsProp ? deepmerge(filledInputComponentsProps, slotProps ?? componentsPropsProp) : filledInputComponentsProps;
    const RootSlot = slots.root ?? components.Root ?? FilledInputRoot;
    const InputSlot = slots.input ?? components.Input ?? FilledInputInput;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(InputBase, {
      slots: {
        root: RootSlot,
        input: InputSlot
      },
      slotProps: componentsProps,
      fullWidth,
      inputComponent,
      multiline,
      ref,
      type,
      ...other,
      classes
    });
  });
  FilledInput.muiName = "Input";
  function getFormControlUtilityClasses(slot) {
    return generateUtilityClass("MuiFormControl", slot);
  }
  generateUtilityClasses("MuiFormControl", ["root", "marginNone", "marginNormal", "marginDense", "fullWidth", "disabled"]);
  const useUtilityClasses$o = (ownerState) => {
    const {
      classes,
      margin: margin2,
      fullWidth
    } = ownerState;
    const slots = {
      root: ["root", margin2 !== "none" && `margin${capitalize(margin2)}`, fullWidth && "fullWidth"]
    };
    return composeClasses(slots, getFormControlUtilityClasses, classes);
  };
  const FormControlRoot = styled("div", {
    name: "MuiFormControl",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, styles2[`margin${capitalize(ownerState.margin)}`], ownerState.fullWidth && styles2.fullWidth];
    }
  })({
    display: "inline-flex",
    flexDirection: "column",
    position: "relative",
    // Reset fieldset default style.
    minWidth: 0,
    padding: 0,
    margin: 0,
    border: 0,
    verticalAlign: "top",
    // Fix alignment issue on Safari.
    variants: [{
      props: {
        margin: "normal"
      },
      style: {
        marginTop: 16,
        marginBottom: 8
      }
    }, {
      props: {
        margin: "dense"
      },
      style: {
        marginTop: 8,
        marginBottom: 4
      }
    }, {
      props: {
        fullWidth: true
      },
      style: {
        width: "100%"
      }
    }]
  });
  const FormControl = /* @__PURE__ */ React__namespace.forwardRef(function FormControl2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiFormControl"
    });
    const {
      children,
      className,
      color: color2 = "primary",
      component = "div",
      disabled = false,
      error = false,
      focused: visuallyFocused,
      fullWidth = false,
      hiddenLabel = false,
      margin: margin2 = "none",
      required = false,
      size = "medium",
      variant = "outlined",
      ...other
    } = props;
    const ownerState = {
      ...props,
      color: color2,
      component,
      disabled,
      error,
      fullWidth,
      hiddenLabel,
      margin: margin2,
      required,
      size,
      variant
    };
    const classes = useUtilityClasses$o(ownerState);
    const [adornedStart, setAdornedStart] = React__namespace.useState(() => {
      let initialAdornedStart = false;
      if (children) {
        React__namespace.Children.forEach(children, (child) => {
          if (!isMuiElement(child, ["Input", "Select"])) {
            return;
          }
          const input = isMuiElement(child, ["Select"]) ? child.props.input : child;
          if (input && isAdornedStart(input.props)) {
            initialAdornedStart = true;
          }
        });
      }
      return initialAdornedStart;
    });
    const [filled, setFilled] = React__namespace.useState(() => {
      let initialFilled = false;
      if (children) {
        React__namespace.Children.forEach(children, (child) => {
          if (!isMuiElement(child, ["Input", "Select"])) {
            return;
          }
          if (isFilled(child.props, true) || isFilled(child.props.inputProps, true)) {
            initialFilled = true;
          }
        });
      }
      return initialFilled;
    });
    const [focusedState, setFocused] = React__namespace.useState(false);
    if (disabled && focusedState) {
      setFocused(false);
    }
    const focused = visuallyFocused !== void 0 && !disabled ? visuallyFocused : focusedState;
    let registerEffect;
    React__namespace.useRef(false);
    const onFilled = React__namespace.useCallback(() => {
      setFilled(true);
    }, []);
    const onEmpty = React__namespace.useCallback(() => {
      setFilled(false);
    }, []);
    const childContext = React__namespace.useMemo(() => {
      return {
        adornedStart,
        setAdornedStart,
        color: color2,
        disabled,
        error,
        filled,
        focused,
        fullWidth,
        hiddenLabel,
        size,
        onBlur: () => {
          setFocused(false);
        },
        onFocus: () => {
          setFocused(true);
        },
        onEmpty,
        onFilled,
        registerEffect,
        required,
        variant
      };
    }, [adornedStart, color2, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, onEmpty, onFilled, required, size, variant]);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(FormControlContext.Provider, {
      value: childContext,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(FormControlRoot, {
        as: component,
        ownerState,
        className: clsx(classes.root, className),
        ref,
        ...other,
        children
      })
    });
  });
  function getFormControlLabelUtilityClasses(slot) {
    return generateUtilityClass("MuiFormControlLabel", slot);
  }
  const formControlLabelClasses = generateUtilityClasses("MuiFormControlLabel", ["root", "labelPlacementStart", "labelPlacementTop", "labelPlacementBottom", "disabled", "label", "error", "required", "asterisk"]);
  const useUtilityClasses$n = (ownerState) => {
    const {
      classes,
      disabled,
      labelPlacement,
      error,
      required
    } = ownerState;
    const slots = {
      root: ["root", disabled && "disabled", `labelPlacement${capitalize(labelPlacement)}`, error && "error", required && "required"],
      label: ["label", disabled && "disabled"],
      asterisk: ["asterisk", error && "error"]
    };
    return composeClasses(slots, getFormControlLabelUtilityClasses, classes);
  };
  const FormControlLabelRoot = styled("label", {
    name: "MuiFormControlLabel",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [{
        [`& .${formControlLabelClasses.label}`]: styles2.label
      }, styles2.root, styles2[`labelPlacement${capitalize(ownerState.labelPlacement)}`]];
    }
  })(memoTheme(({
    theme
  }) => ({
    display: "inline-flex",
    alignItems: "center",
    cursor: "pointer",
    // For correct alignment with the text.
    verticalAlign: "middle",
    WebkitTapHighlightColor: "transparent",
    marginLeft: -11,
    marginRight: 16,
    // used for row presentation of radio/checkbox
    [`&.${formControlLabelClasses.disabled}`]: {
      cursor: "default"
    },
    [`& .${formControlLabelClasses.label}`]: {
      [`&.${formControlLabelClasses.disabled}`]: {
        color: (theme.vars || theme).palette.text.disabled
      }
    },
    variants: [{
      props: {
        labelPlacement: "start"
      },
      style: {
        flexDirection: "row-reverse",
        marginRight: -11
      }
    }, {
      props: {
        labelPlacement: "top"
      },
      style: {
        flexDirection: "column-reverse"
      }
    }, {
      props: {
        labelPlacement: "bottom"
      },
      style: {
        flexDirection: "column"
      }
    }, {
      props: ({
        labelPlacement
      }) => labelPlacement === "start" || labelPlacement === "top" || labelPlacement === "bottom",
      style: {
        marginLeft: 16
        // used for row presentation of radio/checkbox
      }
    }]
  })));
  const AsteriskComponent$1 = styled("span", {
    name: "MuiFormControlLabel",
    slot: "Asterisk",
    overridesResolver: (props, styles2) => styles2.asterisk
  })(memoTheme(({
    theme
  }) => ({
    [`&.${formControlLabelClasses.error}`]: {
      color: (theme.vars || theme).palette.error.main
    }
  })));
  const FormControlLabel = /* @__PURE__ */ React__namespace.forwardRef(function FormControlLabel2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiFormControlLabel"
    });
    const {
      checked,
      className,
      componentsProps = {},
      control,
      disabled: disabledProp,
      disableTypography,
      inputRef,
      label: labelProp,
      labelPlacement = "end",
      name,
      onChange,
      required: requiredProp,
      slots = {},
      slotProps = {},
      value,
      ...other
    } = props;
    const muiFormControl = useFormControl();
    const disabled = disabledProp ?? control.props.disabled ?? (muiFormControl == null ? void 0 : muiFormControl.disabled);
    const required = requiredProp ?? control.props.required;
    const controlProps = {
      disabled,
      required
    };
    ["checked", "name", "onChange", "value", "inputRef"].forEach((key2) => {
      if (typeof control.props[key2] === "undefined" && typeof props[key2] !== "undefined") {
        controlProps[key2] = props[key2];
      }
    });
    const fcs = formControlState({
      props,
      muiFormControl,
      states: ["error"]
    });
    const ownerState = {
      ...props,
      disabled,
      labelPlacement,
      required,
      error: fcs.error
    };
    const classes = useUtilityClasses$n(ownerState);
    const externalForwardedProps = {
      slots,
      slotProps: {
        ...componentsProps,
        ...slotProps
      }
    };
    const [TypographySlot, typographySlotProps] = useSlot("typography", {
      elementType: Typography,
      externalForwardedProps,
      ownerState
    });
    let label = labelProp;
    if (label != null && label.type !== Typography && !disableTypography) {
      label = /* @__PURE__ */ jsxRuntimeExports.jsx(TypographySlot, {
        component: "span",
        ...typographySlotProps,
        className: clsx(classes.label, typographySlotProps == null ? void 0 : typographySlotProps.className),
        children: label
      });
    }
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControlLabelRoot, {
      className: clsx(classes.root, className),
      ownerState,
      ref,
      ...other,
      children: [/* @__PURE__ */ React__namespace.cloneElement(control, controlProps), required ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
        children: [label, /* @__PURE__ */ jsxRuntimeExports.jsxs(AsteriskComponent$1, {
          ownerState,
          "aria-hidden": true,
          className: classes.asterisk,
          children: [" ", "*"]
        })]
      }) : label]
    });
  });
  function getFormHelperTextUtilityClasses(slot) {
    return generateUtilityClass("MuiFormHelperText", slot);
  }
  const formHelperTextClasses = generateUtilityClasses("MuiFormHelperText", ["root", "error", "disabled", "sizeSmall", "sizeMedium", "contained", "focused", "filled", "required"]);
  var _span$2;
  const useUtilityClasses$m = (ownerState) => {
    const {
      classes,
      contained,
      size,
      disabled,
      error,
      filled,
      focused,
      required
    } = ownerState;
    const slots = {
      root: ["root", disabled && "disabled", error && "error", size && `size${capitalize(size)}`, contained && "contained", focused && "focused", filled && "filled", required && "required"]
    };
    return composeClasses(slots, getFormHelperTextUtilityClasses, classes);
  };
  const FormHelperTextRoot = styled("p", {
    name: "MuiFormHelperText",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.size && styles2[`size${capitalize(ownerState.size)}`], ownerState.contained && styles2.contained, ownerState.filled && styles2.filled];
    }
  })(memoTheme(({
    theme
  }) => ({
    color: (theme.vars || theme).palette.text.secondary,
    ...theme.typography.caption,
    textAlign: "left",
    marginTop: 3,
    marginRight: 0,
    marginBottom: 0,
    marginLeft: 0,
    [`&.${formHelperTextClasses.disabled}`]: {
      color: (theme.vars || theme).palette.text.disabled
    },
    [`&.${formHelperTextClasses.error}`]: {
      color: (theme.vars || theme).palette.error.main
    },
    variants: [{
      props: {
        size: "small"
      },
      style: {
        marginTop: 4
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.contained,
      style: {
        marginLeft: 14,
        marginRight: 14
      }
    }]
  })));
  const FormHelperText = /* @__PURE__ */ React__namespace.forwardRef(function FormHelperText2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiFormHelperText"
    });
    const {
      children,
      className,
      component = "p",
      disabled,
      error,
      filled,
      focused,
      margin: margin2,
      required,
      variant,
      ...other
    } = props;
    const muiFormControl = useFormControl();
    const fcs = formControlState({
      props,
      muiFormControl,
      states: ["variant", "size", "disabled", "error", "filled", "focused", "required"]
    });
    const ownerState = {
      ...props,
      component,
      contained: fcs.variant === "filled" || fcs.variant === "outlined",
      variant: fcs.variant,
      size: fcs.size,
      disabled: fcs.disabled,
      error: fcs.error,
      filled: fcs.filled,
      focused: fcs.focused,
      required: fcs.required
    };
    delete ownerState.ownerState;
    const classes = useUtilityClasses$m(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(FormHelperTextRoot, {
      as: component,
      className: clsx(classes.root, className),
      ref,
      ...other,
      ownerState,
      children: children === " " ? (
        // notranslate needed while Google Translate will not fix zero-width space issue
        _span$2 || (_span$2 = /* @__PURE__ */ jsxRuntimeExports.jsx("span", {
          className: "notranslate",
          "aria-hidden": true,
          children: "​"
        }))
      ) : children
    });
  });
  function getFormLabelUtilityClasses(slot) {
    return generateUtilityClass("MuiFormLabel", slot);
  }
  const formLabelClasses = generateUtilityClasses("MuiFormLabel", ["root", "colorSecondary", "focused", "disabled", "error", "filled", "required", "asterisk"]);
  const useUtilityClasses$l = (ownerState) => {
    const {
      classes,
      color: color2,
      focused,
      disabled,
      error,
      filled,
      required
    } = ownerState;
    const slots = {
      root: ["root", `color${capitalize(color2)}`, disabled && "disabled", error && "error", filled && "filled", focused && "focused", required && "required"],
      asterisk: ["asterisk", error && "error"]
    };
    return composeClasses(slots, getFormLabelUtilityClasses, classes);
  };
  const FormLabelRoot = styled("label", {
    name: "MuiFormLabel",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.color === "secondary" && styles2.colorSecondary, ownerState.filled && styles2.filled];
    }
  })(memoTheme(({
    theme
  }) => ({
    color: (theme.vars || theme).palette.text.secondary,
    ...theme.typography.body1,
    lineHeight: "1.4375em",
    padding: 0,
    position: "relative",
    variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => ({
      props: {
        color: color2
      },
      style: {
        [`&.${formLabelClasses.focused}`]: {
          color: (theme.vars || theme).palette[color2].main
        }
      }
    })), {
      props: {},
      style: {
        [`&.${formLabelClasses.disabled}`]: {
          color: (theme.vars || theme).palette.text.disabled
        },
        [`&.${formLabelClasses.error}`]: {
          color: (theme.vars || theme).palette.error.main
        }
      }
    }]
  })));
  const AsteriskComponent = styled("span", {
    name: "MuiFormLabel",
    slot: "Asterisk",
    overridesResolver: (props, styles2) => styles2.asterisk
  })(memoTheme(({
    theme
  }) => ({
    [`&.${formLabelClasses.error}`]: {
      color: (theme.vars || theme).palette.error.main
    }
  })));
  const FormLabel = /* @__PURE__ */ React__namespace.forwardRef(function FormLabel2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiFormLabel"
    });
    const {
      children,
      className,
      color: color2,
      component = "label",
      disabled,
      error,
      filled,
      focused,
      required,
      ...other
    } = props;
    const muiFormControl = useFormControl();
    const fcs = formControlState({
      props,
      muiFormControl,
      states: ["color", "required", "focused", "disabled", "error", "filled"]
    });
    const ownerState = {
      ...props,
      color: fcs.color || "primary",
      component,
      disabled: fcs.disabled,
      error: fcs.error,
      filled: fcs.filled,
      focused: fcs.focused,
      required: fcs.required
    };
    const classes = useUtilityClasses$l(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(FormLabelRoot, {
      as: component,
      ownerState,
      className: clsx(classes.root, className),
      ref,
      ...other,
      children: [children, fcs.required && /* @__PURE__ */ jsxRuntimeExports.jsxs(AsteriskComponent, {
        ownerState,
        "aria-hidden": true,
        className: classes.asterisk,
        children: [" ", "*"]
      })]
    });
  });
  function getScale(value) {
    return `scale(${value}, ${value ** 2})`;
  }
  const styles = {
    entering: {
      opacity: 1,
      transform: getScale(1)
    },
    entered: {
      opacity: 1,
      transform: "none"
    }
  };
  const isWebKit154 = typeof navigator !== "undefined" && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\/)15(.|_)4/i.test(navigator.userAgent);
  const Grow = /* @__PURE__ */ React__namespace.forwardRef(function Grow2(props, ref) {
    const {
      addEndListener,
      appear = true,
      children,
      easing: easing2,
      in: inProp,
      onEnter,
      onEntered,
      onEntering,
      onExit,
      onExited,
      onExiting,
      style: style2,
      timeout = "auto",
      // eslint-disable-next-line react/prop-types
      TransitionComponent = Transition,
      ...other
    } = props;
    const timer2 = useTimeout();
    const autoTimeout = React__namespace.useRef();
    const theme = useTheme();
    const nodeRef = React__namespace.useRef(null);
    const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);
    const normalizedTransitionCallback = (callback) => (maybeIsAppearing) => {
      if (callback) {
        const node2 = nodeRef.current;
        if (maybeIsAppearing === void 0) {
          callback(node2);
        } else {
          callback(node2, maybeIsAppearing);
        }
      }
    };
    const handleEntering = normalizedTransitionCallback(onEntering);
    const handleEnter = normalizedTransitionCallback((node2, isAppearing) => {
      reflow(node2);
      const {
        duration: transitionDuration,
        delay,
        easing: transitionTimingFunction
      } = getTransitionProps({
        style: style2,
        timeout,
        easing: easing2
      }, {
        mode: "enter"
      });
      let duration2;
      if (timeout === "auto") {
        duration2 = theme.transitions.getAutoHeightDuration(node2.clientHeight);
        autoTimeout.current = duration2;
      } else {
        duration2 = transitionDuration;
      }
      node2.style.transition = [theme.transitions.create("opacity", {
        duration: duration2,
        delay
      }), theme.transitions.create("transform", {
        duration: isWebKit154 ? duration2 : duration2 * 0.666,
        delay,
        easing: transitionTimingFunction
      })].join(",");
      if (onEnter) {
        onEnter(node2, isAppearing);
      }
    });
    const handleEntered = normalizedTransitionCallback(onEntered);
    const handleExiting = normalizedTransitionCallback(onExiting);
    const handleExit = normalizedTransitionCallback((node2) => {
      const {
        duration: transitionDuration,
        delay,
        easing: transitionTimingFunction
      } = getTransitionProps({
        style: style2,
        timeout,
        easing: easing2
      }, {
        mode: "exit"
      });
      let duration2;
      if (timeout === "auto") {
        duration2 = theme.transitions.getAutoHeightDuration(node2.clientHeight);
        autoTimeout.current = duration2;
      } else {
        duration2 = transitionDuration;
      }
      node2.style.transition = [theme.transitions.create("opacity", {
        duration: duration2,
        delay
      }), theme.transitions.create("transform", {
        duration: isWebKit154 ? duration2 : duration2 * 0.666,
        delay: isWebKit154 ? delay : delay || duration2 * 0.333,
        easing: transitionTimingFunction
      })].join(",");
      node2.style.opacity = 0;
      node2.style.transform = getScale(0.75);
      if (onExit) {
        onExit(node2);
      }
    });
    const handleExited = normalizedTransitionCallback(onExited);
    const handleAddEndListener = (next2) => {
      if (timeout === "auto") {
        timer2.start(autoTimeout.current || 0, next2);
      }
      if (addEndListener) {
        addEndListener(nodeRef.current, next2);
      }
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionComponent, {
      appear,
      in: inProp,
      nodeRef,
      onEnter: handleEnter,
      onEntered: handleEntered,
      onEntering: handleEntering,
      onExit: handleExit,
      onExited: handleExited,
      onExiting: handleExiting,
      addEndListener: handleAddEndListener,
      timeout: timeout === "auto" ? null : timeout,
      ...other,
      children: (state, {
        ownerState,
        ...restChildProps
      }) => {
        return /* @__PURE__ */ React__namespace.cloneElement(children, {
          style: {
            opacity: 0,
            transform: getScale(0.75),
            visibility: state === "exited" && !inProp ? "hidden" : void 0,
            ...styles[state],
            ...style2,
            ...children.props.style
          },
          ref: handleRef,
          ...restChildProps
        });
      }
    });
  });
  if (Grow) {
    Grow.muiSupportAuto = true;
  }
  const useUtilityClasses$k = (ownerState) => {
    const {
      classes,
      disableUnderline
    } = ownerState;
    const slots = {
      root: ["root", !disableUnderline && "underline"],
      input: ["input"]
    };
    const composedClasses = composeClasses(slots, getInputUtilityClass, classes);
    return {
      ...classes,
      // forward classes to the InputBase
      ...composedClasses
    };
  };
  const InputRoot = styled(InputBaseRoot, {
    shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
    name: "MuiInput",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [...rootOverridesResolver(props, styles2), !ownerState.disableUnderline && styles2.underline];
    }
  })(memoTheme(({
    theme
  }) => {
    const light2 = theme.palette.mode === "light";
    let bottomLineColor = light2 ? "rgba(0, 0, 0, 0.42)" : "rgba(255, 255, 255, 0.7)";
    if (theme.vars) {
      bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;
    }
    return {
      position: "relative",
      variants: [{
        props: ({
          ownerState
        }) => ownerState.formControl,
        style: {
          "label + &": {
            marginTop: 16
          }
        }
      }, {
        props: ({
          ownerState
        }) => !ownerState.disableUnderline,
        style: {
          "&::after": {
            left: 0,
            bottom: 0,
            content: '""',
            position: "absolute",
            right: 0,
            transform: "scaleX(0)",
            transition: theme.transitions.create("transform", {
              duration: theme.transitions.duration.shorter,
              easing: theme.transitions.easing.easeOut
            }),
            pointerEvents: "none"
            // Transparent to the hover style.
          },
          [`&.${inputClasses.focused}:after`]: {
            // translateX(0) is a workaround for Safari transform scale bug
            // See https://github.com/mui/material-ui/issues/31766
            transform: "scaleX(1) translateX(0)"
          },
          [`&.${inputClasses.error}`]: {
            "&::before, &::after": {
              borderBottomColor: (theme.vars || theme).palette.error.main
            }
          },
          "&::before": {
            borderBottom: `1px solid ${bottomLineColor}`,
            left: 0,
            bottom: 0,
            content: '"\\00a0"',
            position: "absolute",
            right: 0,
            transition: theme.transitions.create("border-bottom-color", {
              duration: theme.transitions.duration.shorter
            }),
            pointerEvents: "none"
            // Transparent to the hover style.
          },
          [`&:hover:not(.${inputClasses.disabled}, .${inputClasses.error}):before`]: {
            borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,
            // Reset on touch devices, it doesn't add specificity
            "@media (hover: none)": {
              borderBottom: `1px solid ${bottomLineColor}`
            }
          },
          [`&.${inputClasses.disabled}:before`]: {
            borderBottomStyle: "dotted"
          }
        }
      }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => ({
        props: {
          color: color2,
          disableUnderline: false
        },
        style: {
          "&::after": {
            borderBottom: `2px solid ${(theme.vars || theme).palette[color2].main}`
          }
        }
      }))]
    };
  }));
  const InputInput = styled(InputBaseInput, {
    name: "MuiInput",
    slot: "Input",
    overridesResolver: inputOverridesResolver
  })({});
  const Input = /* @__PURE__ */ React__namespace.forwardRef(function Input2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiInput"
    });
    const {
      disableUnderline = false,
      components = {},
      componentsProps: componentsPropsProp,
      fullWidth = false,
      inputComponent = "input",
      multiline = false,
      slotProps,
      slots = {},
      type = "text",
      ...other
    } = props;
    const classes = useUtilityClasses$k(props);
    const ownerState = {
      disableUnderline
    };
    const inputComponentsProps = {
      root: {
        ownerState
      }
    };
    const componentsProps = slotProps ?? componentsPropsProp ? deepmerge(slotProps ?? componentsPropsProp, inputComponentsProps) : inputComponentsProps;
    const RootSlot = slots.root ?? components.Root ?? InputRoot;
    const InputSlot = slots.input ?? components.Input ?? InputInput;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(InputBase, {
      slots: {
        root: RootSlot,
        input: InputSlot
      },
      slotProps: componentsProps,
      fullWidth,
      inputComponent,
      multiline,
      ref,
      type,
      ...other,
      classes
    });
  });
  Input.muiName = "Input";
  function getInputLabelUtilityClasses(slot) {
    return generateUtilityClass("MuiInputLabel", slot);
  }
  generateUtilityClasses("MuiInputLabel", ["root", "focused", "disabled", "error", "required", "asterisk", "formControl", "sizeSmall", "shrink", "animated", "standard", "filled", "outlined"]);
  const useUtilityClasses$j = (ownerState) => {
    const {
      classes,
      formControl,
      size,
      shrink,
      disableAnimation,
      variant,
      required
    } = ownerState;
    const slots = {
      root: ["root", formControl && "formControl", !disableAnimation && "animated", shrink && "shrink", size && size !== "medium" && `size${capitalize(size)}`, variant],
      asterisk: [required && "asterisk"]
    };
    const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);
    return {
      ...classes,
      // forward the focused, disabled, etc. classes to the FormLabel
      ...composedClasses
    };
  };
  const InputLabelRoot = styled(FormLabel, {
    shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
    name: "MuiInputLabel",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [{
        [`& .${formLabelClasses.asterisk}`]: styles2.asterisk
      }, styles2.root, ownerState.formControl && styles2.formControl, ownerState.size === "small" && styles2.sizeSmall, ownerState.shrink && styles2.shrink, !ownerState.disableAnimation && styles2.animated, ownerState.focused && styles2.focused, styles2[ownerState.variant]];
    }
  })(memoTheme(({
    theme
  }) => ({
    display: "block",
    transformOrigin: "top left",
    whiteSpace: "nowrap",
    overflow: "hidden",
    textOverflow: "ellipsis",
    maxWidth: "100%",
    variants: [{
      props: ({
        ownerState
      }) => ownerState.formControl,
      style: {
        position: "absolute",
        left: 0,
        top: 0,
        // slight alteration to spec spacing to match visual spec result
        transform: "translate(0, 20px) scale(1)"
      }
    }, {
      props: {
        size: "small"
      },
      style: {
        // Compensation for the `Input.inputSizeSmall` style.
        transform: "translate(0, 17px) scale(1)"
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.shrink,
      style: {
        transform: "translate(0, -1.5px) scale(0.75)",
        transformOrigin: "top left",
        maxWidth: "133%"
      }
    }, {
      props: ({
        ownerState
      }) => !ownerState.disableAnimation,
      style: {
        transition: theme.transitions.create(["color", "transform", "max-width"], {
          duration: theme.transitions.duration.shorter,
          easing: theme.transitions.easing.easeOut
        })
      }
    }, {
      props: {
        variant: "filled"
      },
      style: {
        // Chrome's autofill feature gives the input field a yellow background.
        // Since the input field is behind the label in the HTML tree,
        // the input field is drawn last and hides the label with an opaque background color.
        // zIndex: 1 will raise the label above opaque background-colors of input.
        zIndex: 1,
        pointerEvents: "none",
        transform: "translate(12px, 16px) scale(1)",
        maxWidth: "calc(100% - 24px)"
      }
    }, {
      props: {
        variant: "filled",
        size: "small"
      },
      style: {
        transform: "translate(12px, 13px) scale(1)"
      }
    }, {
      props: ({
        variant,
        ownerState
      }) => variant === "filled" && ownerState.shrink,
      style: {
        userSelect: "none",
        pointerEvents: "auto",
        transform: "translate(12px, 7px) scale(0.75)",
        maxWidth: "calc(133% - 24px)"
      }
    }, {
      props: ({
        variant,
        ownerState,
        size
      }) => variant === "filled" && ownerState.shrink && size === "small",
      style: {
        transform: "translate(12px, 4px) scale(0.75)"
      }
    }, {
      props: {
        variant: "outlined"
      },
      style: {
        // see comment above on filled.zIndex
        zIndex: 1,
        pointerEvents: "none",
        transform: "translate(14px, 16px) scale(1)",
        maxWidth: "calc(100% - 24px)"
      }
    }, {
      props: {
        variant: "outlined",
        size: "small"
      },
      style: {
        transform: "translate(14px, 9px) scale(1)"
      }
    }, {
      props: ({
        variant,
        ownerState
      }) => variant === "outlined" && ownerState.shrink,
      style: {
        userSelect: "none",
        pointerEvents: "auto",
        // Theoretically, we should have (8+5)*2/0.75 = 34px
        // but it feels a better when it bleeds a bit on the left, so 32px.
        maxWidth: "calc(133% - 32px)",
        transform: "translate(14px, -9px) scale(0.75)"
      }
    }]
  })));
  const InputLabel = /* @__PURE__ */ React__namespace.forwardRef(function InputLabel2(inProps, ref) {
    const props = useDefaultProps({
      name: "MuiInputLabel",
      props: inProps
    });
    const {
      disableAnimation = false,
      margin: margin2,
      shrink: shrinkProp,
      variant,
      className,
      ...other
    } = props;
    const muiFormControl = useFormControl();
    let shrink = shrinkProp;
    if (typeof shrink === "undefined" && muiFormControl) {
      shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;
    }
    const fcs = formControlState({
      props,
      muiFormControl,
      states: ["size", "variant", "required", "focused"]
    });
    const ownerState = {
      ...props,
      disableAnimation,
      formControl: muiFormControl,
      shrink,
      size: fcs.size,
      variant: fcs.variant,
      required: fcs.required,
      focused: fcs.focused
    };
    const classes = useUtilityClasses$j(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabelRoot, {
      "data-shrink": shrink,
      ref,
      className: clsx(classes.root, className),
      ...other,
      ownerState,
      classes
    });
  });
  const ListContext = /* @__PURE__ */ React__namespace.createContext({});
  function getListUtilityClass(slot) {
    return generateUtilityClass("MuiList", slot);
  }
  generateUtilityClasses("MuiList", ["root", "padding", "dense", "subheader"]);
  const useUtilityClasses$i = (ownerState) => {
    const {
      classes,
      disablePadding,
      dense,
      subheader
    } = ownerState;
    const slots = {
      root: ["root", !disablePadding && "padding", dense && "dense", subheader && "subheader"]
    };
    return composeClasses(slots, getListUtilityClass, classes);
  };
  const ListRoot = styled("ul", {
    name: "MuiList",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, !ownerState.disablePadding && styles2.padding, ownerState.dense && styles2.dense, ownerState.subheader && styles2.subheader];
    }
  })({
    listStyle: "none",
    margin: 0,
    padding: 0,
    position: "relative",
    variants: [{
      props: ({
        ownerState
      }) => !ownerState.disablePadding,
      style: {
        paddingTop: 8,
        paddingBottom: 8
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.subheader,
      style: {
        paddingTop: 0
      }
    }]
  });
  const List = /* @__PURE__ */ React__namespace.forwardRef(function List2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiList"
    });
    const {
      children,
      className,
      component = "ul",
      dense = false,
      disablePadding = false,
      subheader,
      ...other
    } = props;
    const context = React__namespace.useMemo(() => ({
      dense
    }), [dense]);
    const ownerState = {
      ...props,
      component,
      dense,
      disablePadding
    };
    const classes = useUtilityClasses$i(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(ListContext.Provider, {
      value: context,
      children: /* @__PURE__ */ jsxRuntimeExports.jsxs(ListRoot, {
        as: component,
        className: clsx(classes.root, className),
        ref,
        ownerState,
        ...other,
        children: [subheader, children]
      })
    });
  });
  const listItemIconClasses = generateUtilityClasses("MuiListItemIcon", ["root", "alignItemsFlexStart"]);
  const listItemTextClasses = generateUtilityClasses("MuiListItemText", ["root", "multiline", "dense", "inset", "primary", "secondary"]);
  function nextItem(list, item, disableListWrap) {
    if (list === item) {
      return list.firstChild;
    }
    if (item && item.nextElementSibling) {
      return item.nextElementSibling;
    }
    return disableListWrap ? null : list.firstChild;
  }
  function previousItem(list, item, disableListWrap) {
    if (list === item) {
      return disableListWrap ? list.firstChild : list.lastChild;
    }
    if (item && item.previousElementSibling) {
      return item.previousElementSibling;
    }
    return disableListWrap ? null : list.lastChild;
  }
  function textCriteriaMatches(nextFocus, textCriteria) {
    if (textCriteria === void 0) {
      return true;
    }
    let text = nextFocus.innerText;
    if (text === void 0) {
      text = nextFocus.textContent;
    }
    text = text.trim().toLowerCase();
    if (text.length === 0) {
      return false;
    }
    if (textCriteria.repeating) {
      return text[0] === textCriteria.keys[0];
    }
    return text.startsWith(textCriteria.keys.join(""));
  }
  function moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {
    let wrappedOnce = false;
    let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);
    while (nextFocus) {
      if (nextFocus === list.firstChild) {
        if (wrappedOnce) {
          return false;
        }
        wrappedOnce = true;
      }
      const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute("aria-disabled") === "true";
      if (!nextFocus.hasAttribute("tabindex") || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {
        nextFocus = traversalFunction(list, nextFocus, disableListWrap);
      } else {
        nextFocus.focus();
        return true;
      }
    }
    return false;
  }
  const MenuList = /* @__PURE__ */ React__namespace.forwardRef(function MenuList2(props, ref) {
    const {
      // private
      // eslint-disable-next-line react/prop-types
      actions,
      autoFocus = false,
      autoFocusItem = false,
      children,
      className,
      disabledItemsFocusable = false,
      disableListWrap = false,
      onKeyDown,
      variant = "selectedMenu",
      ...other
    } = props;
    const listRef = React__namespace.useRef(null);
    const textCriteriaRef = React__namespace.useRef({
      keys: [],
      repeating: true,
      previousKeyMatched: true,
      lastTime: null
    });
    useEnhancedEffect(() => {
      if (autoFocus) {
        listRef.current.focus();
      }
    }, [autoFocus]);
    React__namespace.useImperativeHandle(actions, () => ({
      adjustStyleForScrollbar: (containerElement, {
        direction
      }) => {
        const noExplicitWidth = !listRef.current.style.width;
        if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {
          const scrollbarSize = `${getScrollbarSize(ownerWindow(containerElement))}px`;
          listRef.current.style[direction === "rtl" ? "paddingLeft" : "paddingRight"] = scrollbarSize;
          listRef.current.style.width = `calc(100% + ${scrollbarSize})`;
        }
        return listRef.current;
      }
    }), []);
    const handleKeyDown = (event) => {
      const list = listRef.current;
      const key2 = event.key;
      const isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;
      if (isModifierKeyPressed) {
        if (onKeyDown) {
          onKeyDown(event);
        }
        return;
      }
      const currentFocus = ownerDocument(list).activeElement;
      if (key2 === "ArrowDown") {
        event.preventDefault();
        moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);
      } else if (key2 === "ArrowUp") {
        event.preventDefault();
        moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);
      } else if (key2 === "Home") {
        event.preventDefault();
        moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);
      } else if (key2 === "End") {
        event.preventDefault();
        moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);
      } else if (key2.length === 1) {
        const criteria = textCriteriaRef.current;
        const lowerKey = key2.toLowerCase();
        const currTime = performance.now();
        if (criteria.keys.length > 0) {
          if (currTime - criteria.lastTime > 500) {
            criteria.keys = [];
            criteria.repeating = true;
            criteria.previousKeyMatched = true;
          } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {
            criteria.repeating = false;
          }
        }
        criteria.lastTime = currTime;
        criteria.keys.push(lowerKey);
        const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);
        if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {
          event.preventDefault();
        } else {
          criteria.previousKeyMatched = false;
        }
      }
      if (onKeyDown) {
        onKeyDown(event);
      }
    };
    const handleRef = useForkRef(listRef, ref);
    let activeItemIndex = -1;
    React__namespace.Children.forEach(children, (child, index) => {
      if (!/* @__PURE__ */ React__namespace.isValidElement(child)) {
        if (activeItemIndex === index) {
          activeItemIndex += 1;
          if (activeItemIndex >= children.length) {
            activeItemIndex = -1;
          }
        }
        return;
      }
      if (!child.props.disabled) {
        if (variant === "selectedMenu" && child.props.selected) {
          activeItemIndex = index;
        } else if (activeItemIndex === -1) {
          activeItemIndex = index;
        }
      }
      if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {
        activeItemIndex += 1;
        if (activeItemIndex >= children.length) {
          activeItemIndex = -1;
        }
      }
    });
    const items = React__namespace.Children.map(children, (child, index) => {
      if (index === activeItemIndex) {
        const newChildProps = {};
        if (autoFocusItem) {
          newChildProps.autoFocus = true;
        }
        if (child.props.tabIndex === void 0 && variant === "selectedMenu") {
          newChildProps.tabIndex = 0;
        }
        return /* @__PURE__ */ React__namespace.cloneElement(child, newChildProps);
      }
      return child;
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsx(List, {
      role: "menu",
      ref: handleRef,
      className,
      onKeyDown: handleKeyDown,
      tabIndex: autoFocus ? 0 : -1,
      ...other,
      children: items
    });
  });
  function getPopoverUtilityClass(slot) {
    return generateUtilityClass("MuiPopover", slot);
  }
  generateUtilityClasses("MuiPopover", ["root", "paper"]);
  function getOffsetTop(rect, vertical) {
    let offset2 = 0;
    if (typeof vertical === "number") {
      offset2 = vertical;
    } else if (vertical === "center") {
      offset2 = rect.height / 2;
    } else if (vertical === "bottom") {
      offset2 = rect.height;
    }
    return offset2;
  }
  function getOffsetLeft(rect, horizontal) {
    let offset2 = 0;
    if (typeof horizontal === "number") {
      offset2 = horizontal;
    } else if (horizontal === "center") {
      offset2 = rect.width / 2;
    } else if (horizontal === "right") {
      offset2 = rect.width;
    }
    return offset2;
  }
  function getTransformOriginValue(transformOrigin) {
    return [transformOrigin.horizontal, transformOrigin.vertical].map((n) => typeof n === "number" ? `${n}px` : n).join(" ");
  }
  function resolveAnchorEl(anchorEl) {
    return typeof anchorEl === "function" ? anchorEl() : anchorEl;
  }
  const useUtilityClasses$h = (ownerState) => {
    const {
      classes
    } = ownerState;
    const slots = {
      root: ["root"],
      paper: ["paper"]
    };
    return composeClasses(slots, getPopoverUtilityClass, classes);
  };
  const PopoverRoot = styled(Modal, {
    name: "MuiPopover",
    slot: "Root",
    overridesResolver: (props, styles2) => styles2.root
  })({});
  const PopoverPaper = styled(Paper, {
    name: "MuiPopover",
    slot: "Paper",
    overridesResolver: (props, styles2) => styles2.paper
  })({
    position: "absolute",
    overflowY: "auto",
    overflowX: "hidden",
    // So we see the popover when it's empty.
    // It's most likely on issue on userland.
    minWidth: 16,
    minHeight: 16,
    maxWidth: "calc(100% - 32px)",
    maxHeight: "calc(100% - 32px)",
    // We disable the focus ring for mouse, touch and keyboard users.
    outline: 0
  });
  const Popover = /* @__PURE__ */ React__namespace.forwardRef(function Popover2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiPopover"
    });
    const {
      action,
      anchorEl,
      anchorOrigin = {
        vertical: "top",
        horizontal: "left"
      },
      anchorPosition,
      anchorReference = "anchorEl",
      children,
      className,
      container: containerProp,
      elevation = 8,
      marginThreshold = 16,
      open: open2,
      PaperProps: PaperPropsProp = {},
      // TODO: remove in v7
      slots = {},
      slotProps = {},
      transformOrigin = {
        vertical: "top",
        horizontal: "left"
      },
      TransitionComponent,
      // TODO: remove in v7
      transitionDuration: transitionDurationProp = "auto",
      TransitionProps = {},
      // TODO: remove in v7
      disableScrollLock = false,
      ...other
    } = props;
    const paperRef = React__namespace.useRef();
    const ownerState = {
      ...props,
      anchorOrigin,
      anchorReference,
      elevation,
      marginThreshold,
      transformOrigin,
      TransitionComponent,
      transitionDuration: transitionDurationProp,
      TransitionProps
    };
    const classes = useUtilityClasses$h(ownerState);
    const getAnchorOffset = React__namespace.useCallback(() => {
      if (anchorReference === "anchorPosition") {
        return anchorPosition;
      }
      const resolvedAnchorEl = resolveAnchorEl(anchorEl);
      const anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : ownerDocument(paperRef.current).body;
      const anchorRect = anchorElement.getBoundingClientRect();
      return {
        top: anchorRect.top + getOffsetTop(anchorRect, anchorOrigin.vertical),
        left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)
      };
    }, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]);
    const getTransformOrigin = React__namespace.useCallback((elemRect) => {
      return {
        vertical: getOffsetTop(elemRect, transformOrigin.vertical),
        horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)
      };
    }, [transformOrigin.horizontal, transformOrigin.vertical]);
    const getPositioningStyle = React__namespace.useCallback((element) => {
      const elemRect = {
        width: element.offsetWidth,
        height: element.offsetHeight
      };
      const elemTransformOrigin = getTransformOrigin(elemRect);
      if (anchorReference === "none") {
        return {
          top: null,
          left: null,
          transformOrigin: getTransformOriginValue(elemTransformOrigin)
        };
      }
      const anchorOffset = getAnchorOffset();
      let top2 = anchorOffset.top - elemTransformOrigin.vertical;
      let left2 = anchorOffset.left - elemTransformOrigin.horizontal;
      const bottom2 = top2 + elemRect.height;
      const right2 = left2 + elemRect.width;
      const containerWindow = ownerWindow(resolveAnchorEl(anchorEl));
      const heightThreshold = containerWindow.innerHeight - marginThreshold;
      const widthThreshold = containerWindow.innerWidth - marginThreshold;
      if (marginThreshold !== null && top2 < marginThreshold) {
        const diff = top2 - marginThreshold;
        top2 -= diff;
        elemTransformOrigin.vertical += diff;
      } else if (marginThreshold !== null && bottom2 > heightThreshold) {
        const diff = bottom2 - heightThreshold;
        top2 -= diff;
        elemTransformOrigin.vertical += diff;
      }
      if (marginThreshold !== null && left2 < marginThreshold) {
        const diff = left2 - marginThreshold;
        left2 -= diff;
        elemTransformOrigin.horizontal += diff;
      } else if (right2 > widthThreshold) {
        const diff = right2 - widthThreshold;
        left2 -= diff;
        elemTransformOrigin.horizontal += diff;
      }
      return {
        top: `${Math.round(top2)}px`,
        left: `${Math.round(left2)}px`,
        transformOrigin: getTransformOriginValue(elemTransformOrigin)
      };
    }, [anchorEl, anchorReference, getAnchorOffset, getTransformOrigin, marginThreshold]);
    const [isPositioned, setIsPositioned] = React__namespace.useState(open2);
    const setPositioningStyles = React__namespace.useCallback(() => {
      const element = paperRef.current;
      if (!element) {
        return;
      }
      const positioning = getPositioningStyle(element);
      if (positioning.top !== null) {
        element.style.setProperty("top", positioning.top);
      }
      if (positioning.left !== null) {
        element.style.left = positioning.left;
      }
      element.style.transformOrigin = positioning.transformOrigin;
      setIsPositioned(true);
    }, [getPositioningStyle]);
    React__namespace.useEffect(() => {
      if (disableScrollLock) {
        window.addEventListener("scroll", setPositioningStyles);
      }
      return () => window.removeEventListener("scroll", setPositioningStyles);
    }, [anchorEl, disableScrollLock, setPositioningStyles]);
    const handleEntering = () => {
      setPositioningStyles();
    };
    const handleExited = () => {
      setIsPositioned(false);
    };
    React__namespace.useEffect(() => {
      if (open2) {
        setPositioningStyles();
      }
    });
    React__namespace.useImperativeHandle(action, () => open2 ? {
      updatePosition: () => {
        setPositioningStyles();
      }
    } : null, [open2, setPositioningStyles]);
    React__namespace.useEffect(() => {
      if (!open2) {
        return void 0;
      }
      const handleResize = debounce$1(() => {
        setPositioningStyles();
      });
      const containerWindow = ownerWindow(resolveAnchorEl(anchorEl));
      containerWindow.addEventListener("resize", handleResize);
      return () => {
        handleResize.clear();
        containerWindow.removeEventListener("resize", handleResize);
      };
    }, [anchorEl, open2, setPositioningStyles]);
    let transitionDuration = transitionDurationProp;
    const externalForwardedProps = {
      slots: {
        transition: TransitionComponent,
        ...slots
      },
      slotProps: {
        transition: TransitionProps,
        paper: PaperPropsProp,
        ...slotProps
      }
    };
    const [TransitionSlot, transitionSlotProps] = useSlot("transition", {
      elementType: Grow,
      externalForwardedProps,
      ownerState,
      getSlotProps: (handlers) => ({
        ...handlers,
        onEntering: (element, isAppearing) => {
          var _a;
          (_a = handlers.onEntering) == null ? void 0 : _a.call(handlers, element, isAppearing);
          handleEntering();
        },
        onExited: (element) => {
          var _a;
          (_a = handlers.onExited) == null ? void 0 : _a.call(handlers, element);
          handleExited();
        }
      }),
      additionalProps: {
        appear: true,
        in: open2
      }
    });
    if (transitionDurationProp === "auto" && !TransitionSlot.muiSupportAuto) {
      transitionDuration = void 0;
    }
    const container = containerProp || (anchorEl ? ownerDocument(resolveAnchorEl(anchorEl)).body : void 0);
    const [RootSlot, {
      slots: rootSlotsProp,
      slotProps: rootSlotPropsProp,
      ...rootProps
    }] = useSlot("root", {
      ref,
      elementType: PopoverRoot,
      externalForwardedProps: {
        ...externalForwardedProps,
        ...other
      },
      shouldForwardComponentProp: true,
      additionalProps: {
        slots: {
          backdrop: slots.backdrop
        },
        slotProps: {
          backdrop: mergeSlotProps(typeof slotProps.backdrop === "function" ? slotProps.backdrop(ownerState) : slotProps.backdrop, {
            invisible: true
          })
        },
        container,
        open: open2
      },
      ownerState,
      className: clsx(classes.root, className)
    });
    const [PaperSlot, paperProps] = useSlot("paper", {
      ref: paperRef,
      className: classes.paper,
      elementType: PopoverPaper,
      externalForwardedProps,
      shouldForwardComponentProp: true,
      additionalProps: {
        elevation,
        style: isPositioned ? void 0 : {
          opacity: 0
        }
      },
      ownerState
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsx(RootSlot, {
      ...rootProps,
      ...!isHostComponent(RootSlot) && {
        slots: rootSlotsProp,
        slotProps: rootSlotPropsProp,
        disableScrollLock
      },
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionSlot, {
        ...transitionSlotProps,
        timeout: transitionDuration,
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(PaperSlot, {
          ...paperProps,
          children
        })
      })
    });
  });
  function getMenuUtilityClass(slot) {
    return generateUtilityClass("MuiMenu", slot);
  }
  generateUtilityClasses("MuiMenu", ["root", "paper", "list"]);
  const RTL_ORIGIN = {
    vertical: "top",
    horizontal: "right"
  };
  const LTR_ORIGIN = {
    vertical: "top",
    horizontal: "left"
  };
  const useUtilityClasses$g = (ownerState) => {
    const {
      classes
    } = ownerState;
    const slots = {
      root: ["root"],
      paper: ["paper"],
      list: ["list"]
    };
    return composeClasses(slots, getMenuUtilityClass, classes);
  };
  const MenuRoot = styled(Popover, {
    shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
    name: "MuiMenu",
    slot: "Root",
    overridesResolver: (props, styles2) => styles2.root
  })({});
  const MenuPaper = styled(PopoverPaper, {
    name: "MuiMenu",
    slot: "Paper",
    overridesResolver: (props, styles2) => styles2.paper
  })({
    // specZ: The maximum height of a simple menu should be one or more rows less than the view
    // height. This ensures a tappable area outside of the simple menu with which to dismiss
    // the menu.
    maxHeight: "calc(100% - 96px)",
    // Add iOS momentum scrolling for iOS < 13.0
    WebkitOverflowScrolling: "touch"
  });
  const MenuMenuList = styled(MenuList, {
    name: "MuiMenu",
    slot: "List",
    overridesResolver: (props, styles2) => styles2.list
  })({
    // We disable the focus ring for mouse, touch and keyboard users.
    outline: 0
  });
  const Menu = /* @__PURE__ */ React__namespace.forwardRef(function Menu2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiMenu"
    });
    const {
      autoFocus = true,
      children,
      className,
      disableAutoFocusItem = false,
      MenuListProps = {},
      onClose,
      open: open2,
      PaperProps = {},
      PopoverClasses,
      transitionDuration = "auto",
      TransitionProps: {
        onEntering,
        ...TransitionProps
      } = {},
      variant = "selectedMenu",
      slots = {},
      slotProps = {},
      ...other
    } = props;
    const isRtl = useRtl();
    const ownerState = {
      ...props,
      autoFocus,
      disableAutoFocusItem,
      MenuListProps,
      onEntering,
      PaperProps,
      transitionDuration,
      TransitionProps,
      variant
    };
    const classes = useUtilityClasses$g(ownerState);
    const autoFocusItem = autoFocus && !disableAutoFocusItem && open2;
    const menuListActionsRef = React__namespace.useRef(null);
    const handleEntering = (element, isAppearing) => {
      if (menuListActionsRef.current) {
        menuListActionsRef.current.adjustStyleForScrollbar(element, {
          direction: isRtl ? "rtl" : "ltr"
        });
      }
      if (onEntering) {
        onEntering(element, isAppearing);
      }
    };
    const handleListKeyDown = (event) => {
      if (event.key === "Tab") {
        event.preventDefault();
        if (onClose) {
          onClose(event, "tabKeyDown");
        }
      }
    };
    let activeItemIndex = -1;
    React__namespace.Children.map(children, (child, index) => {
      if (!/* @__PURE__ */ React__namespace.isValidElement(child)) {
        return;
      }
      if (!child.props.disabled) {
        if (variant === "selectedMenu" && child.props.selected) {
          activeItemIndex = index;
        } else if (activeItemIndex === -1) {
          activeItemIndex = index;
        }
      }
    });
    const externalForwardedProps = {
      slots,
      slotProps: {
        list: MenuListProps,
        transition: TransitionProps,
        paper: PaperProps,
        ...slotProps
      }
    };
    const rootSlotProps = useSlotProps({
      elementType: slots.root,
      externalSlotProps: slotProps.root,
      ownerState,
      className: [classes.root, className]
    });
    const [PaperSlot, paperSlotProps] = useSlot("paper", {
      className: classes.paper,
      elementType: MenuPaper,
      externalForwardedProps,
      shouldForwardComponentProp: true,
      ownerState
    });
    const [ListSlot, listSlotProps] = useSlot("list", {
      className: clsx(classes.list, MenuListProps.className),
      elementType: MenuMenuList,
      shouldForwardComponentProp: true,
      externalForwardedProps,
      getSlotProps: (handlers) => ({
        ...handlers,
        onKeyDown: (event) => {
          var _a;
          handleListKeyDown(event);
          (_a = handlers.onKeyDown) == null ? void 0 : _a.call(handlers, event);
        }
      }),
      ownerState
    });
    const resolvedTransitionProps = typeof externalForwardedProps.slotProps.transition === "function" ? externalForwardedProps.slotProps.transition(ownerState) : externalForwardedProps.slotProps.transition;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(MenuRoot, {
      onClose,
      anchorOrigin: {
        vertical: "bottom",
        horizontal: isRtl ? "right" : "left"
      },
      transformOrigin: isRtl ? RTL_ORIGIN : LTR_ORIGIN,
      slots: {
        root: slots.root,
        paper: PaperSlot,
        backdrop: slots.backdrop,
        ...slots.transition && {
          // TODO: pass `slots.transition` directly once `TransitionComponent` is removed from Popover
          transition: slots.transition
        }
      },
      slotProps: {
        root: rootSlotProps,
        paper: paperSlotProps,
        backdrop: typeof slotProps.backdrop === "function" ? slotProps.backdrop(ownerState) : slotProps.backdrop,
        transition: {
          ...resolvedTransitionProps,
          onEntering: (...args) => {
            var _a;
            handleEntering(...args);
            (_a = resolvedTransitionProps == null ? void 0 : resolvedTransitionProps.onEntering) == null ? void 0 : _a.call(resolvedTransitionProps, ...args);
          }
        }
      },
      open: open2,
      ref,
      transitionDuration,
      ownerState,
      ...other,
      classes: PopoverClasses,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(ListSlot, {
        actions: menuListActionsRef,
        autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),
        autoFocusItem,
        variant,
        ...listSlotProps,
        children
      })
    });
  });
  function getMenuItemUtilityClass(slot) {
    return generateUtilityClass("MuiMenuItem", slot);
  }
  const menuItemClasses = generateUtilityClasses("MuiMenuItem", ["root", "focusVisible", "dense", "disabled", "divider", "gutters", "selected"]);
  const overridesResolver = (props, styles2) => {
    const {
      ownerState
    } = props;
    return [styles2.root, ownerState.dense && styles2.dense, ownerState.divider && styles2.divider, !ownerState.disableGutters && styles2.gutters];
  };
  const useUtilityClasses$f = (ownerState) => {
    const {
      disabled,
      dense,
      divider,
      disableGutters,
      selected,
      classes
    } = ownerState;
    const slots = {
      root: ["root", dense && "dense", disabled && "disabled", !disableGutters && "gutters", divider && "divider", selected && "selected"]
    };
    const composedClasses = composeClasses(slots, getMenuItemUtilityClass, classes);
    return {
      ...classes,
      ...composedClasses
    };
  };
  const MenuItemRoot = styled(ButtonBase, {
    shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
    name: "MuiMenuItem",
    slot: "Root",
    overridesResolver
  })(memoTheme(({
    theme
  }) => ({
    ...theme.typography.body1,
    display: "flex",
    justifyContent: "flex-start",
    alignItems: "center",
    position: "relative",
    textDecoration: "none",
    minHeight: 48,
    paddingTop: 6,
    paddingBottom: 6,
    boxSizing: "border-box",
    whiteSpace: "nowrap",
    "&:hover": {
      textDecoration: "none",
      backgroundColor: (theme.vars || theme).palette.action.hover,
      // Reset on touch devices, it doesn't add specificity
      "@media (hover: none)": {
        backgroundColor: "transparent"
      }
    },
    [`&.${menuItemClasses.selected}`]: {
      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),
      [`&.${menuItemClasses.focusVisible}`]: {
        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
      }
    },
    [`&.${menuItemClasses.selected}:hover`]: {
      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
      // Reset on touch devices, it doesn't add specificity
      "@media (hover: none)": {
        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)
      }
    },
    [`&.${menuItemClasses.focusVisible}`]: {
      backgroundColor: (theme.vars || theme).palette.action.focus
    },
    [`&.${menuItemClasses.disabled}`]: {
      opacity: (theme.vars || theme).palette.action.disabledOpacity
    },
    [`& + .${dividerClasses.root}`]: {
      marginTop: theme.spacing(1),
      marginBottom: theme.spacing(1)
    },
    [`& + .${dividerClasses.inset}`]: {
      marginLeft: 52
    },
    [`& .${listItemTextClasses.root}`]: {
      marginTop: 0,
      marginBottom: 0
    },
    [`& .${listItemTextClasses.inset}`]: {
      paddingLeft: 36
    },
    [`& .${listItemIconClasses.root}`]: {
      minWidth: 36
    },
    variants: [{
      props: ({
        ownerState
      }) => !ownerState.disableGutters,
      style: {
        paddingLeft: 16,
        paddingRight: 16
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.divider,
      style: {
        borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,
        backgroundClip: "padding-box"
      }
    }, {
      props: ({
        ownerState
      }) => !ownerState.dense,
      style: {
        [theme.breakpoints.up("sm")]: {
          minHeight: "auto"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.dense,
      style: {
        minHeight: 32,
        // https://m2.material.io/components/menus#specs > Dense
        paddingTop: 4,
        paddingBottom: 4,
        ...theme.typography.body2,
        [`& .${listItemIconClasses.root} svg`]: {
          fontSize: "1.25rem"
        }
      }
    }]
  })));
  const MenuItem = /* @__PURE__ */ React__namespace.forwardRef(function MenuItem2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiMenuItem"
    });
    const {
      autoFocus = false,
      component = "li",
      dense = false,
      divider = false,
      disableGutters = false,
      focusVisibleClassName,
      role = "menuitem",
      tabIndex: tabIndexProp,
      className,
      ...other
    } = props;
    const context = React__namespace.useContext(ListContext);
    const childContext = React__namespace.useMemo(() => ({
      dense: dense || context.dense || false,
      disableGutters
    }), [context.dense, dense, disableGutters]);
    const menuItemRef = React__namespace.useRef(null);
    useEnhancedEffect(() => {
      if (autoFocus) {
        if (menuItemRef.current) {
          menuItemRef.current.focus();
        }
      }
    }, [autoFocus]);
    const ownerState = {
      ...props,
      dense: childContext.dense,
      divider,
      disableGutters
    };
    const classes = useUtilityClasses$f(props);
    const handleRef = useForkRef(menuItemRef, ref);
    let tabIndex;
    if (!props.disabled) {
      tabIndex = tabIndexProp !== void 0 ? tabIndexProp : -1;
    }
    return /* @__PURE__ */ jsxRuntimeExports.jsx(ListContext.Provider, {
      value: childContext,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemRoot, {
        ref: handleRef,
        role,
        tabIndex,
        component,
        focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),
        className: clsx(classes.root, className),
        ...other,
        ownerState,
        classes
      })
    });
  });
  function getNativeSelectUtilityClasses(slot) {
    return generateUtilityClass("MuiNativeSelect", slot);
  }
  const nativeSelectClasses = generateUtilityClasses("MuiNativeSelect", ["root", "select", "multiple", "filled", "outlined", "standard", "disabled", "icon", "iconOpen", "iconFilled", "iconOutlined", "iconStandard", "nativeInput", "error"]);
  const useUtilityClasses$e = (ownerState) => {
    const {
      classes,
      variant,
      disabled,
      multiple,
      open: open2,
      error
    } = ownerState;
    const slots = {
      select: ["select", variant, disabled && "disabled", multiple && "multiple", error && "error"],
      icon: ["icon", `icon${capitalize(variant)}`, open2 && "iconOpen", disabled && "disabled"]
    };
    return composeClasses(slots, getNativeSelectUtilityClasses, classes);
  };
  const StyledSelectSelect = styled("select")(({
    theme
  }) => ({
    // Reset
    MozAppearance: "none",
    // Reset
    WebkitAppearance: "none",
    // When interacting quickly, the text can end up selected.
    // Native select can't be selected either.
    userSelect: "none",
    // Reset
    borderRadius: 0,
    cursor: "pointer",
    "&:focus": {
      // Reset Chrome style
      borderRadius: 0
    },
    [`&.${nativeSelectClasses.disabled}`]: {
      cursor: "default"
    },
    "&[multiple]": {
      height: "auto"
    },
    "&:not([multiple]) option, &:not([multiple]) optgroup": {
      backgroundColor: (theme.vars || theme).palette.background.paper
    },
    variants: [{
      props: ({
        ownerState
      }) => ownerState.variant !== "filled" && ownerState.variant !== "outlined",
      style: {
        // Bump specificity to allow extending custom inputs
        "&&&": {
          paddingRight: 24,
          minWidth: 16
          // So it doesn't collapse.
        }
      }
    }, {
      props: {
        variant: "filled"
      },
      style: {
        "&&&": {
          paddingRight: 32
        }
      }
    }, {
      props: {
        variant: "outlined"
      },
      style: {
        borderRadius: (theme.vars || theme).shape.borderRadius,
        "&:focus": {
          borderRadius: (theme.vars || theme).shape.borderRadius
          // Reset the reset for Chrome style
        },
        "&&&": {
          paddingRight: 32
        }
      }
    }]
  }));
  const NativeSelectSelect = styled(StyledSelectSelect, {
    name: "MuiNativeSelect",
    slot: "Select",
    shouldForwardProp: rootShouldForwardProp,
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.select, styles2[ownerState.variant], ownerState.error && styles2.error, {
        [`&.${nativeSelectClasses.multiple}`]: styles2.multiple
      }];
    }
  })({});
  const StyledSelectIcon = styled("svg")(({
    theme
  }) => ({
    // We use a position absolute over a flexbox in order to forward the pointer events
    // to the input and to support wrapping tags..
    position: "absolute",
    right: 0,
    // Center vertically, height is 1em
    top: "calc(50% - .5em)",
    // Don't block pointer events on the select under the icon.
    pointerEvents: "none",
    color: (theme.vars || theme).palette.action.active,
    [`&.${nativeSelectClasses.disabled}`]: {
      color: (theme.vars || theme).palette.action.disabled
    },
    variants: [{
      props: ({
        ownerState
      }) => ownerState.open,
      style: {
        transform: "rotate(180deg)"
      }
    }, {
      props: {
        variant: "filled"
      },
      style: {
        right: 7
      }
    }, {
      props: {
        variant: "outlined"
      },
      style: {
        right: 7
      }
    }]
  }));
  const NativeSelectIcon = styled(StyledSelectIcon, {
    name: "MuiNativeSelect",
    slot: "Icon",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.icon, ownerState.variant && styles2[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles2.iconOpen];
    }
  })({});
  const NativeSelectInput = /* @__PURE__ */ React__namespace.forwardRef(function NativeSelectInput2(props, ref) {
    const {
      className,
      disabled,
      error,
      IconComponent,
      inputRef,
      variant = "standard",
      ...other
    } = props;
    const ownerState = {
      ...props,
      disabled,
      variant,
      error
    };
    const classes = useUtilityClasses$e(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(React__namespace.Fragment, {
      children: [/* @__PURE__ */ jsxRuntimeExports.jsx(NativeSelectSelect, {
        ownerState,
        className: clsx(classes.select, className),
        disabled,
        ref: inputRef || ref,
        ...other
      }), props.multiple ? null : /* @__PURE__ */ jsxRuntimeExports.jsx(NativeSelectIcon, {
        as: IconComponent,
        ownerState,
        className: classes.icon
      })]
    });
  });
  var _span$1;
  const NotchedOutlineRoot$1 = styled("fieldset", {
    shouldForwardProp: rootShouldForwardProp
  })({
    textAlign: "left",
    position: "absolute",
    bottom: 0,
    right: 0,
    top: -5,
    left: 0,
    margin: 0,
    padding: "0 8px",
    pointerEvents: "none",
    borderRadius: "inherit",
    borderStyle: "solid",
    borderWidth: 1,
    overflow: "hidden",
    minWidth: "0%"
  });
  const NotchedOutlineLegend = styled("legend", {
    shouldForwardProp: rootShouldForwardProp
  })(memoTheme(({
    theme
  }) => ({
    float: "unset",
    // Fix conflict with bootstrap
    width: "auto",
    // Fix conflict with bootstrap
    overflow: "hidden",
    // Fix Horizontal scroll when label too long
    variants: [{
      props: ({
        ownerState
      }) => !ownerState.withLabel,
      style: {
        padding: 0,
        lineHeight: "11px",
        // sync with `height` in `legend` styles
        transition: theme.transitions.create("width", {
          duration: 150,
          easing: theme.transitions.easing.easeOut
        })
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.withLabel,
      style: {
        display: "block",
        // Fix conflict with normalize.css and sanitize.css
        padding: 0,
        height: 11,
        // sync with `lineHeight` in `legend` styles
        fontSize: "0.75em",
        visibility: "hidden",
        maxWidth: 0.01,
        transition: theme.transitions.create("max-width", {
          duration: 50,
          easing: theme.transitions.easing.easeOut
        }),
        whiteSpace: "nowrap",
        "& > span": {
          paddingLeft: 5,
          paddingRight: 5,
          display: "inline-block",
          opacity: 0,
          visibility: "visible"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.withLabel && ownerState.notched,
      style: {
        maxWidth: "100%",
        transition: theme.transitions.create("max-width", {
          duration: 100,
          easing: theme.transitions.easing.easeOut,
          delay: 50
        })
      }
    }]
  })));
  function NotchedOutline(props) {
    const {
      children,
      classes,
      className,
      label,
      notched,
      ...other
    } = props;
    const withLabel = label != null && label !== "";
    const ownerState = {
      ...props,
      notched,
      withLabel
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(NotchedOutlineRoot$1, {
      "aria-hidden": true,
      className,
      ownerState,
      ...other,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(NotchedOutlineLegend, {
        ownerState,
        children: withLabel ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", {
          children: label
        }) : (
          // notranslate needed while Google Translate will not fix zero-width space issue
          _span$1 || (_span$1 = /* @__PURE__ */ jsxRuntimeExports.jsx("span", {
            className: "notranslate",
            "aria-hidden": true,
            children: "​"
          }))
        )
      })
    });
  }
  const useUtilityClasses$d = (ownerState) => {
    const {
      classes
    } = ownerState;
    const slots = {
      root: ["root"],
      notchedOutline: ["notchedOutline"],
      input: ["input"]
    };
    const composedClasses = composeClasses(slots, getOutlinedInputUtilityClass, classes);
    return {
      ...classes,
      // forward classes to the InputBase
      ...composedClasses
    };
  };
  const OutlinedInputRoot = styled(InputBaseRoot, {
    shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
    name: "MuiOutlinedInput",
    slot: "Root",
    overridesResolver: rootOverridesResolver
  })(memoTheme(({
    theme
  }) => {
    const borderColor2 = theme.palette.mode === "light" ? "rgba(0, 0, 0, 0.23)" : "rgba(255, 255, 255, 0.23)";
    return {
      position: "relative",
      borderRadius: (theme.vars || theme).shape.borderRadius,
      [`&:hover .${outlinedInputClasses.notchedOutline}`]: {
        borderColor: (theme.vars || theme).palette.text.primary
      },
      // Reset on touch devices, it doesn't add specificity
      "@media (hover: none)": {
        [`&:hover .${outlinedInputClasses.notchedOutline}`]: {
          borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor2
        }
      },
      [`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]: {
        borderWidth: 2
      },
      variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color2]) => ({
        props: {
          color: color2
        },
        style: {
          [`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]: {
            borderColor: (theme.vars || theme).palette[color2].main
          }
        }
      })), {
        props: {},
        // to overide the above style
        style: {
          [`&.${outlinedInputClasses.error} .${outlinedInputClasses.notchedOutline}`]: {
            borderColor: (theme.vars || theme).palette.error.main
          },
          [`&.${outlinedInputClasses.disabled} .${outlinedInputClasses.notchedOutline}`]: {
            borderColor: (theme.vars || theme).palette.action.disabled
          }
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.startAdornment,
        style: {
          paddingLeft: 14
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.endAdornment,
        style: {
          paddingRight: 14
        }
      }, {
        props: ({
          ownerState
        }) => ownerState.multiline,
        style: {
          padding: "16.5px 14px"
        }
      }, {
        props: ({
          ownerState,
          size
        }) => ownerState.multiline && size === "small",
        style: {
          padding: "8.5px 14px"
        }
      }]
    };
  }));
  const NotchedOutlineRoot = styled(NotchedOutline, {
    name: "MuiOutlinedInput",
    slot: "NotchedOutline",
    overridesResolver: (props, styles2) => styles2.notchedOutline
  })(memoTheme(({
    theme
  }) => {
    const borderColor2 = theme.palette.mode === "light" ? "rgba(0, 0, 0, 0.23)" : "rgba(255, 255, 255, 0.23)";
    return {
      borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor2
    };
  }));
  const OutlinedInputInput = styled(InputBaseInput, {
    name: "MuiOutlinedInput",
    slot: "Input",
    overridesResolver: inputOverridesResolver
  })(memoTheme(({
    theme
  }) => ({
    padding: "16.5px 14px",
    ...!theme.vars && {
      "&:-webkit-autofill": {
        WebkitBoxShadow: theme.palette.mode === "light" ? null : "0 0 0 100px #266798 inset",
        WebkitTextFillColor: theme.palette.mode === "light" ? null : "#fff",
        caretColor: theme.palette.mode === "light" ? null : "#fff",
        borderRadius: "inherit"
      }
    },
    ...theme.vars && {
      "&:-webkit-autofill": {
        borderRadius: "inherit"
      },
      [theme.getColorSchemeSelector("dark")]: {
        "&:-webkit-autofill": {
          WebkitBoxShadow: "0 0 0 100px #266798 inset",
          WebkitTextFillColor: "#fff",
          caretColor: "#fff"
        }
      }
    },
    variants: [{
      props: {
        size: "small"
      },
      style: {
        padding: "8.5px 14px"
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.multiline,
      style: {
        padding: 0
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.startAdornment,
      style: {
        paddingLeft: 0
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.endAdornment,
      style: {
        paddingRight: 0
      }
    }]
  })));
  const OutlinedInput = /* @__PURE__ */ React__namespace.forwardRef(function OutlinedInput2(inProps, ref) {
    var _React$Fragment;
    const props = useDefaultProps({
      props: inProps,
      name: "MuiOutlinedInput"
    });
    const {
      components = {},
      fullWidth = false,
      inputComponent = "input",
      label,
      multiline = false,
      notched,
      slots = {},
      type = "text",
      ...other
    } = props;
    const classes = useUtilityClasses$d(props);
    const muiFormControl = useFormControl();
    const fcs = formControlState({
      props,
      muiFormControl,
      states: ["color", "disabled", "error", "focused", "hiddenLabel", "size", "required"]
    });
    const ownerState = {
      ...props,
      color: fcs.color || "primary",
      disabled: fcs.disabled,
      error: fcs.error,
      focused: fcs.focused,
      formControl: muiFormControl,
      fullWidth,
      hiddenLabel: fcs.hiddenLabel,
      multiline,
      size: fcs.size,
      type
    };
    const RootSlot = slots.root ?? components.Root ?? OutlinedInputRoot;
    const InputSlot = slots.input ?? components.Input ?? OutlinedInputInput;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(InputBase, {
      slots: {
        root: RootSlot,
        input: InputSlot
      },
      renderSuffix: (state) => /* @__PURE__ */ jsxRuntimeExports.jsx(NotchedOutlineRoot, {
        ownerState,
        className: classes.notchedOutline,
        label: label != null && label !== "" && fcs.required ? _React$Fragment || (_React$Fragment = /* @__PURE__ */ jsxRuntimeExports.jsxs(React__namespace.Fragment, {
          children: [label, " ", "*"]
        })) : label,
        notched: typeof notched !== "undefined" ? notched : Boolean(state.startAdornment || state.filled || state.focused)
      }),
      fullWidth,
      inputComponent,
      multiline,
      ref,
      type,
      ...other,
      classes: {
        ...classes,
        notchedOutline: null
      }
    });
  });
  OutlinedInput.muiName = "Input";
  function getSelectUtilityClasses(slot) {
    return generateUtilityClass("MuiSelect", slot);
  }
  const selectClasses = generateUtilityClasses("MuiSelect", ["root", "select", "multiple", "filled", "outlined", "standard", "disabled", "focused", "icon", "iconOpen", "iconFilled", "iconOutlined", "iconStandard", "nativeInput", "error"]);
  var _span;
  const SelectSelect = styled(StyledSelectSelect, {
    name: "MuiSelect",
    slot: "Select",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [
        // Win specificity over the input base
        {
          [`&.${selectClasses.select}`]: styles2.select
        },
        {
          [`&.${selectClasses.select}`]: styles2[ownerState.variant]
        },
        {
          [`&.${selectClasses.error}`]: styles2.error
        },
        {
          [`&.${selectClasses.multiple}`]: styles2.multiple
        }
      ];
    }
  })({
    // Win specificity over the input base
    [`&.${selectClasses.select}`]: {
      height: "auto",
      // Resets for multiple select with chips
      minHeight: "1.4375em",
      // Required for select\text-field height consistency
      textOverflow: "ellipsis",
      whiteSpace: "nowrap",
      overflow: "hidden"
    }
  });
  const SelectIcon = styled(StyledSelectIcon, {
    name: "MuiSelect",
    slot: "Icon",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.icon, ownerState.variant && styles2[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles2.iconOpen];
    }
  })({});
  const SelectNativeInput = styled("input", {
    shouldForwardProp: (prop) => slotShouldForwardProp(prop) && prop !== "classes",
    name: "MuiSelect",
    slot: "NativeInput",
    overridesResolver: (props, styles2) => styles2.nativeInput
  })({
    bottom: 0,
    left: 0,
    position: "absolute",
    opacity: 0,
    pointerEvents: "none",
    width: "100%",
    boxSizing: "border-box"
  });
  function areEqualValues(a, b) {
    if (typeof b === "object" && b !== null) {
      return a === b;
    }
    return String(a) === String(b);
  }
  function isEmpty(display) {
    return display == null || typeof display === "string" && !display.trim();
  }
  const useUtilityClasses$c = (ownerState) => {
    const {
      classes,
      variant,
      disabled,
      multiple,
      open: open2,
      error
    } = ownerState;
    const slots = {
      select: ["select", variant, disabled && "disabled", multiple && "multiple", error && "error"],
      icon: ["icon", `icon${capitalize(variant)}`, open2 && "iconOpen", disabled && "disabled"],
      nativeInput: ["nativeInput"]
    };
    return composeClasses(slots, getSelectUtilityClasses, classes);
  };
  const SelectInput = /* @__PURE__ */ React__namespace.forwardRef(function SelectInput2(props, ref) {
    var _a;
    const {
      "aria-describedby": ariaDescribedby,
      "aria-label": ariaLabel,
      autoFocus,
      autoWidth,
      children,
      className,
      defaultOpen,
      defaultValue,
      disabled,
      displayEmpty,
      error = false,
      IconComponent,
      inputRef: inputRefProp,
      labelId,
      MenuProps = {},
      multiple,
      name,
      onBlur,
      onChange,
      onClose,
      onFocus,
      onOpen,
      open: openProp,
      readOnly,
      renderValue,
      required,
      SelectDisplayProps = {},
      tabIndex: tabIndexProp,
      // catching `type` from Input which makes no sense for SelectInput
      type,
      value: valueProp,
      variant = "standard",
      ...other
    } = props;
    const [value, setValueState] = useControlled({
      controlled: valueProp,
      default: defaultValue,
      name: "Select"
    });
    const [openState, setOpenState] = useControlled({
      controlled: openProp,
      default: defaultOpen,
      name: "Select"
    });
    const inputRef = React__namespace.useRef(null);
    const displayRef = React__namespace.useRef(null);
    const [displayNode, setDisplayNode] = React__namespace.useState(null);
    const {
      current: isOpenControlled
    } = React__namespace.useRef(openProp != null);
    const [menuMinWidthState, setMenuMinWidthState] = React__namespace.useState();
    const handleRef = useForkRef(ref, inputRefProp);
    const handleDisplayRef = React__namespace.useCallback((node2) => {
      displayRef.current = node2;
      if (node2) {
        setDisplayNode(node2);
      }
    }, []);
    const anchorElement = displayNode == null ? void 0 : displayNode.parentNode;
    React__namespace.useImperativeHandle(handleRef, () => ({
      focus: () => {
        displayRef.current.focus();
      },
      node: inputRef.current,
      value
    }), [value]);
    React__namespace.useEffect(() => {
      if (defaultOpen && openState && displayNode && !isOpenControlled) {
        setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);
        displayRef.current.focus();
      }
    }, [displayNode, autoWidth]);
    React__namespace.useEffect(() => {
      if (autoFocus) {
        displayRef.current.focus();
      }
    }, [autoFocus]);
    React__namespace.useEffect(() => {
      if (!labelId) {
        return void 0;
      }
      const label = ownerDocument(displayRef.current).getElementById(labelId);
      if (label) {
        const handler = () => {
          if (getSelection().isCollapsed) {
            displayRef.current.focus();
          }
        };
        label.addEventListener("click", handler);
        return () => {
          label.removeEventListener("click", handler);
        };
      }
      return void 0;
    }, [labelId]);
    const update = (open22, event) => {
      if (open22) {
        if (onOpen) {
          onOpen(event);
        }
      } else if (onClose) {
        onClose(event);
      }
      if (!isOpenControlled) {
        setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);
        setOpenState(open22);
      }
    };
    const handleMouseDown = (event) => {
      if (event.button !== 0) {
        return;
      }
      event.preventDefault();
      displayRef.current.focus();
      update(true, event);
    };
    const handleClose = (event) => {
      update(false, event);
    };
    const childrenArray = React__namespace.Children.toArray(children);
    const handleChange = (event) => {
      const child = childrenArray.find((childItem) => childItem.props.value === event.target.value);
      if (child === void 0) {
        return;
      }
      setValueState(child.props.value);
      if (onChange) {
        onChange(event, child);
      }
    };
    const handleItemClick = (child) => (event) => {
      let newValue;
      if (!event.currentTarget.hasAttribute("tabindex")) {
        return;
      }
      if (multiple) {
        newValue = Array.isArray(value) ? value.slice() : [];
        const itemIndex = value.indexOf(child.props.value);
        if (itemIndex === -1) {
          newValue.push(child.props.value);
        } else {
          newValue.splice(itemIndex, 1);
        }
      } else {
        newValue = child.props.value;
      }
      if (child.props.onClick) {
        child.props.onClick(event);
      }
      if (value !== newValue) {
        setValueState(newValue);
        if (onChange) {
          const nativeEvent = event.nativeEvent || event;
          const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);
          Object.defineProperty(clonedEvent, "target", {
            writable: true,
            value: {
              value: newValue,
              name
            }
          });
          onChange(clonedEvent, child);
        }
      }
      if (!multiple) {
        update(false, event);
      }
    };
    const handleKeyDown = (event) => {
      if (!readOnly) {
        const validKeys = [
          " ",
          "ArrowUp",
          "ArrowDown",
          // The native select doesn't respond to enter on macOS, but it's recommended by
          // https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/
          "Enter"
        ];
        if (validKeys.includes(event.key)) {
          event.preventDefault();
          update(true, event);
        }
      }
    };
    const open2 = displayNode !== null && openState;
    const handleBlur = (event) => {
      if (!open2 && onBlur) {
        Object.defineProperty(event, "target", {
          writable: true,
          value: {
            value,
            name
          }
        });
        onBlur(event);
      }
    };
    delete other["aria-invalid"];
    let display;
    let displaySingle;
    const displayMultiple = [];
    let computeDisplay = false;
    if (isFilled({
      value
    }) || displayEmpty) {
      if (renderValue) {
        display = renderValue(value);
      } else {
        computeDisplay = true;
      }
    }
    const items = childrenArray.map((child) => {
      if (!/* @__PURE__ */ React__namespace.isValidElement(child)) {
        return null;
      }
      let selected;
      if (multiple) {
        if (!Array.isArray(value)) {
          throw new Error(formatMuiErrorMessage(2));
        }
        selected = value.some((v) => areEqualValues(v, child.props.value));
        if (selected && computeDisplay) {
          displayMultiple.push(child.props.children);
        }
      } else {
        selected = areEqualValues(value, child.props.value);
        if (selected && computeDisplay) {
          displaySingle = child.props.children;
        }
      }
      return /* @__PURE__ */ React__namespace.cloneElement(child, {
        "aria-selected": selected ? "true" : "false",
        onClick: handleItemClick(child),
        onKeyUp: (event) => {
          if (event.key === " ") {
            event.preventDefault();
          }
          if (child.props.onKeyUp) {
            child.props.onKeyUp(event);
          }
        },
        role: "option",
        selected,
        value: void 0,
        // The value is most likely not a valid HTML attribute.
        "data-value": child.props.value
        // Instead, we provide it as a data attribute.
      });
    });
    if (computeDisplay) {
      if (multiple) {
        if (displayMultiple.length === 0) {
          display = null;
        } else {
          display = displayMultiple.reduce((output, child, index) => {
            output.push(child);
            if (index < displayMultiple.length - 1) {
              output.push(", ");
            }
            return output;
          }, []);
        }
      } else {
        display = displaySingle;
      }
    }
    let menuMinWidth = menuMinWidthState;
    if (!autoWidth && isOpenControlled && displayNode) {
      menuMinWidth = anchorElement.clientWidth;
    }
    let tabIndex;
    if (typeof tabIndexProp !== "undefined") {
      tabIndex = tabIndexProp;
    } else {
      tabIndex = disabled ? null : 0;
    }
    const buttonId = SelectDisplayProps.id || (name ? `mui-component-select-${name}` : void 0);
    const ownerState = {
      ...props,
      variant,
      value,
      open: open2,
      error
    };
    const classes = useUtilityClasses$c(ownerState);
    const paperProps = {
      ...MenuProps.PaperProps,
      ...(_a = MenuProps.slotProps) == null ? void 0 : _a.paper
    };
    const listboxId = useId();
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(React__namespace.Fragment, {
      children: [/* @__PURE__ */ jsxRuntimeExports.jsx(SelectSelect, {
        as: "div",
        ref: handleDisplayRef,
        tabIndex,
        role: "combobox",
        "aria-controls": open2 ? listboxId : void 0,
        "aria-disabled": disabled ? "true" : void 0,
        "aria-expanded": open2 ? "true" : "false",
        "aria-haspopup": "listbox",
        "aria-label": ariaLabel,
        "aria-labelledby": [labelId, buttonId].filter(Boolean).join(" ") || void 0,
        "aria-describedby": ariaDescribedby,
        "aria-required": required ? "true" : void 0,
        "aria-invalid": error ? "true" : void 0,
        onKeyDown: handleKeyDown,
        onMouseDown: disabled || readOnly ? null : handleMouseDown,
        onBlur: handleBlur,
        onFocus,
        ...SelectDisplayProps,
        ownerState,
        className: clsx(SelectDisplayProps.className, classes.select, className),
        id: buttonId,
        children: isEmpty(display) ? (
          // notranslate needed while Google Translate will not fix zero-width space issue
          _span || (_span = /* @__PURE__ */ jsxRuntimeExports.jsx("span", {
            className: "notranslate",
            "aria-hidden": true,
            children: "​"
          }))
        ) : display
      }), /* @__PURE__ */ jsxRuntimeExports.jsx(SelectNativeInput, {
        "aria-invalid": error,
        value: Array.isArray(value) ? value.join(",") : value,
        name,
        ref: inputRef,
        "aria-hidden": true,
        onChange: handleChange,
        tabIndex: -1,
        disabled,
        className: classes.nativeInput,
        autoFocus,
        required,
        ...other,
        ownerState
      }), /* @__PURE__ */ jsxRuntimeExports.jsx(SelectIcon, {
        as: IconComponent,
        className: classes.icon,
        ownerState
      }), /* @__PURE__ */ jsxRuntimeExports.jsx(Menu, {
        id: `menu-${name || ""}`,
        anchorEl: anchorElement,
        open: open2,
        onClose: handleClose,
        anchorOrigin: {
          vertical: "bottom",
          horizontal: "center"
        },
        transformOrigin: {
          vertical: "top",
          horizontal: "center"
        },
        ...MenuProps,
        slotProps: {
          ...MenuProps.slotProps,
          list: {
            "aria-labelledby": labelId,
            role: "listbox",
            "aria-multiselectable": multiple ? "true" : void 0,
            disableListWrap: true,
            id: listboxId,
            ...MenuProps.MenuListProps
          },
          paper: {
            ...paperProps,
            style: {
              minWidth: menuMinWidth,
              ...paperProps != null ? paperProps.style : null
            }
          }
        },
        children: items
      })]
    });
  });
  const useUtilityClasses$b = (ownerState) => {
    const {
      classes
    } = ownerState;
    const slots = {
      root: ["root"]
    };
    const composedClasses = composeClasses(slots, getSelectUtilityClasses, classes);
    return {
      ...classes,
      ...composedClasses
    };
  };
  const styledRootConfig = {
    name: "MuiSelect",
    overridesResolver: (props, styles2) => styles2.root,
    shouldForwardProp: (prop) => rootShouldForwardProp(prop) && prop !== "variant",
    slot: "Root"
  };
  const StyledInput = styled(Input, styledRootConfig)("");
  const StyledOutlinedInput = styled(OutlinedInput, styledRootConfig)("");
  const StyledFilledInput = styled(FilledInput, styledRootConfig)("");
  const Select = /* @__PURE__ */ React__namespace.forwardRef(function Select2(inProps, ref) {
    const props = useDefaultProps({
      name: "MuiSelect",
      props: inProps
    });
    const {
      autoWidth = false,
      children,
      classes: classesProp = {},
      className,
      defaultOpen = false,
      displayEmpty = false,
      IconComponent = ArrowDropDownIcon,
      id,
      input,
      inputProps,
      label,
      labelId,
      MenuProps,
      multiple = false,
      native = false,
      onClose,
      onOpen,
      open: open2,
      renderValue,
      SelectDisplayProps,
      variant: variantProp = "outlined",
      ...other
    } = props;
    const inputComponent = native ? NativeSelectInput : SelectInput;
    const muiFormControl = useFormControl();
    const fcs = formControlState({
      props,
      muiFormControl,
      states: ["variant", "error"]
    });
    const variant = fcs.variant || variantProp;
    const ownerState = {
      ...props,
      variant,
      classes: classesProp
    };
    const classes = useUtilityClasses$b(ownerState);
    const {
      root,
      ...restOfClasses
    } = classes;
    const InputComponent = input || {
      standard: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledInput, {
        ownerState
      }),
      outlined: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledOutlinedInput, {
        label,
        ownerState
      }),
      filled: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledFilledInput, {
        ownerState
      })
    }[variant];
    const inputComponentRef = useForkRef(ref, getReactElementRef(InputComponent));
    return /* @__PURE__ */ jsxRuntimeExports.jsx(React__namespace.Fragment, {
      children: /* @__PURE__ */ React__namespace.cloneElement(InputComponent, {
        // Most of the logic is implemented in `SelectInput`.
        // The `Select` component is a simple API wrapper to expose something better to play with.
        inputComponent,
        inputProps: {
          children,
          error: fcs.error,
          IconComponent,
          variant,
          type: void 0,
          // We render a select. We can ignore the type provided by the `Input`.
          multiple,
          ...native ? {
            id
          } : {
            autoWidth,
            defaultOpen,
            displayEmpty,
            labelId,
            MenuProps,
            onClose,
            onOpen,
            open: open2,
            renderValue,
            SelectDisplayProps: {
              id,
              ...SelectDisplayProps
            }
          },
          ...inputProps,
          classes: inputProps ? deepmerge(restOfClasses, inputProps.classes) : restOfClasses,
          ...input ? input.props.inputProps : {}
        },
        ...(multiple && native || displayEmpty) && variant === "outlined" ? {
          notched: true
        } : {},
        ref: inputComponentRef,
        className: clsx(InputComponent.props.className, className, classes.root),
        // If a custom input is provided via 'input' prop, do not allow 'variant' to be propagated to it's root element. See https://github.com/mui/material-ui/issues/33894.
        ...!input && {
          variant
        },
        ...other
      })
    });
  });
  Select.muiName = "Select";
  function useSnackbar(parameters = {}) {
    const {
      autoHideDuration = null,
      disableWindowBlurListener = false,
      onClose,
      open: open2,
      resumeHideDuration
    } = parameters;
    const timerAutoHide = useTimeout();
    React__namespace.useEffect(() => {
      if (!open2) {
        return void 0;
      }
      function handleKeyDown(nativeEvent) {
        if (!nativeEvent.defaultPrevented) {
          if (nativeEvent.key === "Escape") {
            onClose == null ? void 0 : onClose(nativeEvent, "escapeKeyDown");
          }
        }
      }
      document.addEventListener("keydown", handleKeyDown);
      return () => {
        document.removeEventListener("keydown", handleKeyDown);
      };
    }, [open2, onClose]);
    const handleClose = useEventCallback((event, reason) => {
      onClose == null ? void 0 : onClose(event, reason);
    });
    const setAutoHideTimer = useEventCallback((autoHideDurationParam) => {
      if (!onClose || autoHideDurationParam == null) {
        return;
      }
      timerAutoHide.start(autoHideDurationParam, () => {
        handleClose(null, "timeout");
      });
    });
    React__namespace.useEffect(() => {
      if (open2) {
        setAutoHideTimer(autoHideDuration);
      }
      return timerAutoHide.clear;
    }, [open2, autoHideDuration, setAutoHideTimer, timerAutoHide]);
    const handleClickAway = (event) => {
      onClose == null ? void 0 : onClose(event, "clickaway");
    };
    const handlePause = timerAutoHide.clear;
    const handleResume = React__namespace.useCallback(() => {
      if (autoHideDuration != null) {
        setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);
      }
    }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);
    const createHandleBlur = (otherHandlers) => (event) => {
      const onBlurCallback = otherHandlers.onBlur;
      onBlurCallback == null ? void 0 : onBlurCallback(event);
      handleResume();
    };
    const createHandleFocus = (otherHandlers) => (event) => {
      const onFocusCallback = otherHandlers.onFocus;
      onFocusCallback == null ? void 0 : onFocusCallback(event);
      handlePause();
    };
    const createMouseEnter = (otherHandlers) => (event) => {
      const onMouseEnterCallback = otherHandlers.onMouseEnter;
      onMouseEnterCallback == null ? void 0 : onMouseEnterCallback(event);
      handlePause();
    };
    const createMouseLeave = (otherHandlers) => (event) => {
      const onMouseLeaveCallback = otherHandlers.onMouseLeave;
      onMouseLeaveCallback == null ? void 0 : onMouseLeaveCallback(event);
      handleResume();
    };
    React__namespace.useEffect(() => {
      if (!disableWindowBlurListener && open2) {
        window.addEventListener("focus", handleResume);
        window.addEventListener("blur", handlePause);
        return () => {
          window.removeEventListener("focus", handleResume);
          window.removeEventListener("blur", handlePause);
        };
      }
      return void 0;
    }, [disableWindowBlurListener, open2, handleResume, handlePause]);
    const getRootProps = (externalProps = {}) => {
      const externalEventHandlers = {
        ...extractEventHandlers(parameters),
        ...extractEventHandlers(externalProps)
      };
      return {
        // ClickAwayListener adds an `onClick` prop which results in the alert not being announced.
        // See https://github.com/mui/material-ui/issues/29080
        role: "presentation",
        ...externalProps,
        ...externalEventHandlers,
        onBlur: createHandleBlur(externalEventHandlers),
        onFocus: createHandleFocus(externalEventHandlers),
        onMouseEnter: createMouseEnter(externalEventHandlers),
        onMouseLeave: createMouseLeave(externalEventHandlers)
      };
    };
    return {
      getRootProps,
      onClickAway: handleClickAway
    };
  }
  function getSnackbarContentUtilityClass(slot) {
    return generateUtilityClass("MuiSnackbarContent", slot);
  }
  generateUtilityClasses("MuiSnackbarContent", ["root", "message", "action"]);
  const useUtilityClasses$a = (ownerState) => {
    const {
      classes
    } = ownerState;
    const slots = {
      root: ["root"],
      action: ["action"],
      message: ["message"]
    };
    return composeClasses(slots, getSnackbarContentUtilityClass, classes);
  };
  const SnackbarContentRoot = styled(Paper, {
    name: "MuiSnackbarContent",
    slot: "Root",
    overridesResolver: (props, styles2) => styles2.root
  })(memoTheme(({
    theme
  }) => {
    const emphasis = theme.palette.mode === "light" ? 0.8 : 0.98;
    const backgroundColor2 = emphasize(theme.palette.background.default, emphasis);
    return {
      ...theme.typography.body2,
      color: theme.vars ? theme.vars.palette.SnackbarContent.color : theme.palette.getContrastText(backgroundColor2),
      backgroundColor: theme.vars ? theme.vars.palette.SnackbarContent.bg : backgroundColor2,
      display: "flex",
      alignItems: "center",
      flexWrap: "wrap",
      padding: "6px 16px",
      borderRadius: (theme.vars || theme).shape.borderRadius,
      flexGrow: 1,
      [theme.breakpoints.up("sm")]: {
        flexGrow: "initial",
        minWidth: 288
      }
    };
  }));
  const SnackbarContentMessage = styled("div", {
    name: "MuiSnackbarContent",
    slot: "Message",
    overridesResolver: (props, styles2) => styles2.message
  })({
    padding: "8px 0"
  });
  const SnackbarContentAction = styled("div", {
    name: "MuiSnackbarContent",
    slot: "Action",
    overridesResolver: (props, styles2) => styles2.action
  })({
    display: "flex",
    alignItems: "center",
    marginLeft: "auto",
    paddingLeft: 16,
    marginRight: -8
  });
  const SnackbarContent = /* @__PURE__ */ React__namespace.forwardRef(function SnackbarContent2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiSnackbarContent"
    });
    const {
      action,
      className,
      message,
      role = "alert",
      ...other
    } = props;
    const ownerState = props;
    const classes = useUtilityClasses$a(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(SnackbarContentRoot, {
      role,
      square: true,
      elevation: 6,
      className: clsx(classes.root, className),
      ownerState,
      ref,
      ...other,
      children: [/* @__PURE__ */ jsxRuntimeExports.jsx(SnackbarContentMessage, {
        className: classes.message,
        ownerState,
        children: message
      }), action ? /* @__PURE__ */ jsxRuntimeExports.jsx(SnackbarContentAction, {
        className: classes.action,
        ownerState,
        children: action
      }) : null]
    });
  });
  function getSnackbarUtilityClass(slot) {
    return generateUtilityClass("MuiSnackbar", slot);
  }
  generateUtilityClasses("MuiSnackbar", ["root", "anchorOriginTopCenter", "anchorOriginBottomCenter", "anchorOriginTopRight", "anchorOriginBottomRight", "anchorOriginTopLeft", "anchorOriginBottomLeft"]);
  const useUtilityClasses$9 = (ownerState) => {
    const {
      classes,
      anchorOrigin
    } = ownerState;
    const slots = {
      root: ["root", `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`]
    };
    return composeClasses(slots, getSnackbarUtilityClass, classes);
  };
  const SnackbarRoot = styled("div", {
    name: "MuiSnackbar",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, styles2[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}`]];
    }
  })(memoTheme(({
    theme
  }) => ({
    zIndex: (theme.vars || theme).zIndex.snackbar,
    position: "fixed",
    display: "flex",
    left: 8,
    right: 8,
    justifyContent: "center",
    alignItems: "center",
    variants: [{
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.vertical === "top",
      style: {
        top: 8,
        [theme.breakpoints.up("sm")]: {
          top: 24
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.vertical !== "top",
      style: {
        bottom: 8,
        [theme.breakpoints.up("sm")]: {
          bottom: 24
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.horizontal === "left",
      style: {
        justifyContent: "flex-start",
        [theme.breakpoints.up("sm")]: {
          left: 24,
          right: "auto"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.horizontal === "right",
      style: {
        justifyContent: "flex-end",
        [theme.breakpoints.up("sm")]: {
          right: 24,
          left: "auto"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.anchorOrigin.horizontal === "center",
      style: {
        [theme.breakpoints.up("sm")]: {
          left: "50%",
          right: "auto",
          transform: "translateX(-50%)"
        }
      }
    }]
  })));
  const Snackbar = /* @__PURE__ */ React__namespace.forwardRef(function Snackbar2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiSnackbar"
    });
    const theme = useTheme();
    const defaultTransitionDuration = {
      enter: theme.transitions.duration.enteringScreen,
      exit: theme.transitions.duration.leavingScreen
    };
    const {
      action,
      anchorOrigin: {
        vertical,
        horizontal
      } = {
        vertical: "bottom",
        horizontal: "left"
      },
      autoHideDuration = null,
      children,
      className,
      ClickAwayListenerProps: ClickAwayListenerPropsProp,
      ContentProps: ContentPropsProp,
      disableWindowBlurListener = false,
      message,
      onBlur,
      onClose,
      onFocus,
      onMouseEnter,
      onMouseLeave,
      open: open2,
      resumeHideDuration,
      slots = {},
      slotProps = {},
      TransitionComponent: TransitionComponentProp,
      transitionDuration = defaultTransitionDuration,
      TransitionProps: {
        onEnter,
        onExited,
        ...TransitionPropsProp
      } = {},
      ...other
    } = props;
    const ownerState = {
      ...props,
      anchorOrigin: {
        vertical,
        horizontal
      },
      autoHideDuration,
      disableWindowBlurListener,
      TransitionComponent: TransitionComponentProp,
      transitionDuration
    };
    const classes = useUtilityClasses$9(ownerState);
    const {
      getRootProps,
      onClickAway
    } = useSnackbar({
      ...ownerState
    });
    const [exited, setExited] = React__namespace.useState(true);
    const handleExited = (node2) => {
      setExited(true);
      if (onExited) {
        onExited(node2);
      }
    };
    const handleEnter = (node2, isAppearing) => {
      setExited(false);
      if (onEnter) {
        onEnter(node2, isAppearing);
      }
    };
    const externalForwardedProps = {
      slots: {
        transition: TransitionComponentProp,
        ...slots
      },
      slotProps: {
        content: ContentPropsProp,
        clickAwayListener: ClickAwayListenerPropsProp,
        transition: TransitionPropsProp,
        ...slotProps
      }
    };
    const [Root, rootProps] = useSlot("root", {
      ref,
      className: [classes.root, className],
      elementType: SnackbarRoot,
      getSlotProps: getRootProps,
      externalForwardedProps: {
        ...externalForwardedProps,
        ...other
      },
      ownerState
    });
    const [ClickAwaySlot, {
      ownerState: clickAwayOwnerStateProp,
      ...clickAwayListenerProps
    }] = useSlot("clickAwayListener", {
      elementType: ClickAwayListener,
      externalForwardedProps,
      getSlotProps: (handlers) => ({
        onClickAway: (...params) => {
          var _a;
          (_a = handlers.onClickAway) == null ? void 0 : _a.call(handlers, ...params);
          onClickAway(...params);
        }
      }),
      ownerState
    });
    const [ContentSlot, contentSlotProps] = useSlot("content", {
      elementType: SnackbarContent,
      shouldForwardComponentProp: true,
      externalForwardedProps,
      additionalProps: {
        message,
        action
      },
      ownerState
    });
    const [TransitionSlot, transitionProps] = useSlot("transition", {
      elementType: Grow,
      externalForwardedProps,
      getSlotProps: (handlers) => ({
        onEnter: (...params) => {
          var _a;
          (_a = handlers.onEnter) == null ? void 0 : _a.call(handlers, ...params);
          handleEnter(...params);
        },
        onExited: (...params) => {
          var _a;
          (_a = handlers.onExited) == null ? void 0 : _a.call(handlers, ...params);
          handleExited(...params);
        }
      }),
      additionalProps: {
        appear: true,
        in: open2,
        timeout: transitionDuration,
        direction: vertical === "top" ? "down" : "up"
      },
      ownerState
    });
    if (!open2 && exited) {
      return null;
    }
    return /* @__PURE__ */ jsxRuntimeExports.jsx(ClickAwaySlot, {
      ...clickAwayListenerProps,
      ...slots.clickAwayListener && {
        ownerState: clickAwayOwnerStateProp
      },
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(Root, {
        ...rootProps,
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionSlot, {
          ...transitionProps,
          children: children || /* @__PURE__ */ jsxRuntimeExports.jsx(ContentSlot, {
            ...contentSlotProps
          })
        })
      })
    });
  });
  function getTooltipUtilityClass(slot) {
    return generateUtilityClass("MuiTooltip", slot);
  }
  const tooltipClasses = generateUtilityClasses("MuiTooltip", ["popper", "popperInteractive", "popperArrow", "popperClose", "tooltip", "tooltipArrow", "touch", "tooltipPlacementLeft", "tooltipPlacementRight", "tooltipPlacementTop", "tooltipPlacementBottom", "arrow"]);
  function round(value) {
    return Math.round(value * 1e5) / 1e5;
  }
  const useUtilityClasses$8 = (ownerState) => {
    const {
      classes,
      disableInteractive,
      arrow: arrow2,
      touch,
      placement
    } = ownerState;
    const slots = {
      popper: ["popper", !disableInteractive && "popperInteractive", arrow2 && "popperArrow"],
      tooltip: ["tooltip", arrow2 && "tooltipArrow", touch && "touch", `tooltipPlacement${capitalize(placement.split("-")[0])}`],
      arrow: ["arrow"]
    };
    return composeClasses(slots, getTooltipUtilityClass, classes);
  };
  const TooltipPopper = styled(Popper, {
    name: "MuiTooltip",
    slot: "Popper",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.popper, !ownerState.disableInteractive && styles2.popperInteractive, ownerState.arrow && styles2.popperArrow, !ownerState.open && styles2.popperClose];
    }
  })(memoTheme(({
    theme
  }) => ({
    zIndex: (theme.vars || theme).zIndex.tooltip,
    pointerEvents: "none",
    variants: [{
      props: ({
        ownerState
      }) => !ownerState.disableInteractive,
      style: {
        pointerEvents: "auto"
      }
    }, {
      props: ({
        open: open2
      }) => !open2,
      style: {
        pointerEvents: "none"
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.arrow,
      style: {
        [`&[data-popper-placement*="bottom"] .${tooltipClasses.arrow}`]: {
          top: 0,
          marginTop: "-0.71em",
          "&::before": {
            transformOrigin: "0 100%"
          }
        },
        [`&[data-popper-placement*="top"] .${tooltipClasses.arrow}`]: {
          bottom: 0,
          marginBottom: "-0.71em",
          "&::before": {
            transformOrigin: "100% 0"
          }
        },
        [`&[data-popper-placement*="right"] .${tooltipClasses.arrow}`]: {
          height: "1em",
          width: "0.71em",
          "&::before": {
            transformOrigin: "100% 100%"
          }
        },
        [`&[data-popper-placement*="left"] .${tooltipClasses.arrow}`]: {
          height: "1em",
          width: "0.71em",
          "&::before": {
            transformOrigin: "0 0"
          }
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.arrow && !ownerState.isRtl,
      style: {
        [`&[data-popper-placement*="right"] .${tooltipClasses.arrow}`]: {
          left: 0,
          marginLeft: "-0.71em"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.arrow && !!ownerState.isRtl,
      style: {
        [`&[data-popper-placement*="right"] .${tooltipClasses.arrow}`]: {
          right: 0,
          marginRight: "-0.71em"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.arrow && !ownerState.isRtl,
      style: {
        [`&[data-popper-placement*="left"] .${tooltipClasses.arrow}`]: {
          right: 0,
          marginRight: "-0.71em"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.arrow && !!ownerState.isRtl,
      style: {
        [`&[data-popper-placement*="left"] .${tooltipClasses.arrow}`]: {
          left: 0,
          marginLeft: "-0.71em"
        }
      }
    }]
  })));
  const TooltipTooltip = styled("div", {
    name: "MuiTooltip",
    slot: "Tooltip",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.tooltip, ownerState.touch && styles2.touch, ownerState.arrow && styles2.tooltipArrow, styles2[`tooltipPlacement${capitalize(ownerState.placement.split("-")[0])}`]];
    }
  })(memoTheme(({
    theme
  }) => ({
    backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),
    borderRadius: (theme.vars || theme).shape.borderRadius,
    color: (theme.vars || theme).palette.common.white,
    fontFamily: theme.typography.fontFamily,
    padding: "4px 8px",
    fontSize: theme.typography.pxToRem(11),
    maxWidth: 300,
    margin: 2,
    wordWrap: "break-word",
    fontWeight: theme.typography.fontWeightMedium,
    [`.${tooltipClasses.popper}[data-popper-placement*="left"] &`]: {
      transformOrigin: "right center"
    },
    [`.${tooltipClasses.popper}[data-popper-placement*="right"] &`]: {
      transformOrigin: "left center"
    },
    [`.${tooltipClasses.popper}[data-popper-placement*="top"] &`]: {
      transformOrigin: "center bottom",
      marginBottom: "14px"
    },
    [`.${tooltipClasses.popper}[data-popper-placement*="bottom"] &`]: {
      transformOrigin: "center top",
      marginTop: "14px"
    },
    variants: [{
      props: ({
        ownerState
      }) => ownerState.arrow,
      style: {
        position: "relative",
        margin: 0
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.touch,
      style: {
        padding: "8px 16px",
        fontSize: theme.typography.pxToRem(14),
        lineHeight: `${round(16 / 14)}em`,
        fontWeight: theme.typography.fontWeightRegular
      }
    }, {
      props: ({
        ownerState
      }) => !ownerState.isRtl,
      style: {
        [`.${tooltipClasses.popper}[data-popper-placement*="left"] &`]: {
          marginRight: "14px"
        },
        [`.${tooltipClasses.popper}[data-popper-placement*="right"] &`]: {
          marginLeft: "14px"
        }
      }
    }, {
      props: ({
        ownerState
      }) => !ownerState.isRtl && ownerState.touch,
      style: {
        [`.${tooltipClasses.popper}[data-popper-placement*="left"] &`]: {
          marginRight: "24px"
        },
        [`.${tooltipClasses.popper}[data-popper-placement*="right"] &`]: {
          marginLeft: "24px"
        }
      }
    }, {
      props: ({
        ownerState
      }) => !!ownerState.isRtl,
      style: {
        [`.${tooltipClasses.popper}[data-popper-placement*="left"] &`]: {
          marginLeft: "14px"
        },
        [`.${tooltipClasses.popper}[data-popper-placement*="right"] &`]: {
          marginRight: "14px"
        }
      }
    }, {
      props: ({
        ownerState
      }) => !!ownerState.isRtl && ownerState.touch,
      style: {
        [`.${tooltipClasses.popper}[data-popper-placement*="left"] &`]: {
          marginLeft: "24px"
        },
        [`.${tooltipClasses.popper}[data-popper-placement*="right"] &`]: {
          marginRight: "24px"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.touch,
      style: {
        [`.${tooltipClasses.popper}[data-popper-placement*="top"] &`]: {
          marginBottom: "24px"
        }
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.touch,
      style: {
        [`.${tooltipClasses.popper}[data-popper-placement*="bottom"] &`]: {
          marginTop: "24px"
        }
      }
    }]
  })));
  const TooltipArrow = styled("span", {
    name: "MuiTooltip",
    slot: "Arrow",
    overridesResolver: (props, styles2) => styles2.arrow
  })(memoTheme(({
    theme
  }) => ({
    overflow: "hidden",
    position: "absolute",
    width: "1em",
    height: "0.71em",
    boxSizing: "border-box",
    color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),
    "&::before": {
      content: '""',
      margin: "auto",
      display: "block",
      width: "100%",
      height: "100%",
      backgroundColor: "currentColor",
      transform: "rotate(45deg)"
    }
  })));
  let hystersisOpen = false;
  const hystersisTimer = new Timeout();
  let cursorPosition = {
    x: 0,
    y: 0
  };
  function composeEventHandler(handler, eventHandler) {
    return (event, ...params) => {
      if (eventHandler) {
        eventHandler(event, ...params);
      }
      handler(event, ...params);
    };
  }
  const Tooltip = /* @__PURE__ */ React__namespace.forwardRef(function Tooltip2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiTooltip"
    });
    const {
      arrow: arrow2 = false,
      children: childrenProp,
      classes: classesProp,
      components = {},
      componentsProps = {},
      describeChild = false,
      disableFocusListener = false,
      disableHoverListener = false,
      disableInteractive: disableInteractiveProp = false,
      disableTouchListener = false,
      enterDelay = 100,
      enterNextDelay = 0,
      enterTouchDelay = 700,
      followCursor = false,
      id: idProp,
      leaveDelay = 0,
      leaveTouchDelay = 1500,
      onClose,
      onOpen,
      open: openProp,
      placement = "bottom",
      PopperComponent: PopperComponentProp,
      PopperProps = {},
      slotProps = {},
      slots = {},
      title,
      TransitionComponent: TransitionComponentProp,
      TransitionProps,
      ...other
    } = props;
    const children = /* @__PURE__ */ React__namespace.isValidElement(childrenProp) ? childrenProp : /* @__PURE__ */ jsxRuntimeExports.jsx("span", {
      children: childrenProp
    });
    const theme = useTheme();
    const isRtl = useRtl();
    const [childNode, setChildNode] = React__namespace.useState();
    const [arrowRef, setArrowRef] = React__namespace.useState(null);
    const ignoreNonTouchEvents = React__namespace.useRef(false);
    const disableInteractive = disableInteractiveProp || followCursor;
    const closeTimer = useTimeout();
    const enterTimer = useTimeout();
    const leaveTimer = useTimeout();
    const touchTimer = useTimeout();
    const [openState, setOpenState] = useControlled({
      controlled: openProp,
      default: false,
      name: "Tooltip",
      state: "open"
    });
    let open2 = openState;
    const id = useId(idProp);
    const prevUserSelect = React__namespace.useRef();
    const stopTouchInteraction = useEventCallback(() => {
      if (prevUserSelect.current !== void 0) {
        document.body.style.WebkitUserSelect = prevUserSelect.current;
        prevUserSelect.current = void 0;
      }
      touchTimer.clear();
    });
    React__namespace.useEffect(() => stopTouchInteraction, [stopTouchInteraction]);
    const handleOpen = (event) => {
      hystersisTimer.clear();
      hystersisOpen = true;
      setOpenState(true);
      if (onOpen && !open2) {
        onOpen(event);
      }
    };
    const handleClose = useEventCallback(
      /**
       * @param {React.SyntheticEvent | Event} event
       */
      (event) => {
        hystersisTimer.start(800 + leaveDelay, () => {
          hystersisOpen = false;
        });
        setOpenState(false);
        if (onClose && open2) {
          onClose(event);
        }
        closeTimer.start(theme.transitions.duration.shortest, () => {
          ignoreNonTouchEvents.current = false;
        });
      }
    );
    const handleMouseOver = (event) => {
      if (ignoreNonTouchEvents.current && event.type !== "touchstart") {
        return;
      }
      if (childNode) {
        childNode.removeAttribute("title");
      }
      enterTimer.clear();
      leaveTimer.clear();
      if (enterDelay || hystersisOpen && enterNextDelay) {
        enterTimer.start(hystersisOpen ? enterNextDelay : enterDelay, () => {
          handleOpen(event);
        });
      } else {
        handleOpen(event);
      }
    };
    const handleMouseLeave = (event) => {
      enterTimer.clear();
      leaveTimer.start(leaveDelay, () => {
        handleClose(event);
      });
    };
    const [, setChildIsFocusVisible] = React__namespace.useState(false);
    const handleBlur = (event) => {
      if (!isFocusVisible(event.target)) {
        setChildIsFocusVisible(false);
        handleMouseLeave(event);
      }
    };
    const handleFocus = (event) => {
      if (!childNode) {
        setChildNode(event.currentTarget);
      }
      if (isFocusVisible(event.target)) {
        setChildIsFocusVisible(true);
        handleMouseOver(event);
      }
    };
    const detectTouchStart = (event) => {
      ignoreNonTouchEvents.current = true;
      const childrenProps2 = children.props;
      if (childrenProps2.onTouchStart) {
        childrenProps2.onTouchStart(event);
      }
    };
    const handleTouchStart = (event) => {
      detectTouchStart(event);
      leaveTimer.clear();
      closeTimer.clear();
      stopTouchInteraction();
      prevUserSelect.current = document.body.style.WebkitUserSelect;
      document.body.style.WebkitUserSelect = "none";
      touchTimer.start(enterTouchDelay, () => {
        document.body.style.WebkitUserSelect = prevUserSelect.current;
        handleMouseOver(event);
      });
    };
    const handleTouchEnd = (event) => {
      if (children.props.onTouchEnd) {
        children.props.onTouchEnd(event);
      }
      stopTouchInteraction();
      leaveTimer.start(leaveTouchDelay, () => {
        handleClose(event);
      });
    };
    React__namespace.useEffect(() => {
      if (!open2) {
        return void 0;
      }
      function handleKeyDown(nativeEvent) {
        if (nativeEvent.key === "Escape") {
          handleClose(nativeEvent);
        }
      }
      document.addEventListener("keydown", handleKeyDown);
      return () => {
        document.removeEventListener("keydown", handleKeyDown);
      };
    }, [handleClose, open2]);
    const handleRef = useForkRef(getReactElementRef(children), setChildNode, ref);
    if (!title && title !== 0) {
      open2 = false;
    }
    const popperRef = React__namespace.useRef();
    const handleMouseMove = (event) => {
      const childrenProps2 = children.props;
      if (childrenProps2.onMouseMove) {
        childrenProps2.onMouseMove(event);
      }
      cursorPosition = {
        x: event.clientX,
        y: event.clientY
      };
      if (popperRef.current) {
        popperRef.current.update();
      }
    };
    const nameOrDescProps = {};
    const titleIsString = typeof title === "string";
    if (describeChild) {
      nameOrDescProps.title = !open2 && titleIsString && !disableHoverListener ? title : null;
      nameOrDescProps["aria-describedby"] = open2 ? id : null;
    } else {
      nameOrDescProps["aria-label"] = titleIsString ? title : null;
      nameOrDescProps["aria-labelledby"] = open2 && !titleIsString ? id : null;
    }
    const childrenProps = {
      ...nameOrDescProps,
      ...other,
      ...children.props,
      className: clsx(other.className, children.props.className),
      onTouchStart: detectTouchStart,
      ref: handleRef,
      ...followCursor ? {
        onMouseMove: handleMouseMove
      } : {}
    };
    const interactiveWrapperListeners = {};
    if (!disableTouchListener) {
      childrenProps.onTouchStart = handleTouchStart;
      childrenProps.onTouchEnd = handleTouchEnd;
    }
    if (!disableHoverListener) {
      childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);
      childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);
      if (!disableInteractive) {
        interactiveWrapperListeners.onMouseOver = handleMouseOver;
        interactiveWrapperListeners.onMouseLeave = handleMouseLeave;
      }
    }
    if (!disableFocusListener) {
      childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);
      childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);
      if (!disableInteractive) {
        interactiveWrapperListeners.onFocus = handleFocus;
        interactiveWrapperListeners.onBlur = handleBlur;
      }
    }
    const ownerState = {
      ...props,
      isRtl,
      arrow: arrow2,
      disableInteractive,
      placement,
      PopperComponentProp,
      touch: ignoreNonTouchEvents.current
    };
    const resolvedPopperProps = typeof slotProps.popper === "function" ? slotProps.popper(ownerState) : slotProps.popper;
    const popperOptions = React__namespace.useMemo(() => {
      var _a, _b;
      let tooltipModifiers = [{
        name: "arrow",
        enabled: Boolean(arrowRef),
        options: {
          element: arrowRef,
          padding: 4
        }
      }];
      if ((_a = PopperProps.popperOptions) == null ? void 0 : _a.modifiers) {
        tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);
      }
      if ((_b = resolvedPopperProps == null ? void 0 : resolvedPopperProps.popperOptions) == null ? void 0 : _b.modifiers) {
        tooltipModifiers = tooltipModifiers.concat(resolvedPopperProps.popperOptions.modifiers);
      }
      return {
        ...PopperProps.popperOptions,
        ...resolvedPopperProps == null ? void 0 : resolvedPopperProps.popperOptions,
        modifiers: tooltipModifiers
      };
    }, [arrowRef, PopperProps.popperOptions, resolvedPopperProps == null ? void 0 : resolvedPopperProps.popperOptions]);
    const classes = useUtilityClasses$8(ownerState);
    const resolvedTransitionProps = typeof slotProps.transition === "function" ? slotProps.transition(ownerState) : slotProps.transition;
    const externalForwardedProps = {
      slots: {
        popper: components.Popper,
        transition: components.Transition ?? TransitionComponentProp,
        tooltip: components.Tooltip,
        arrow: components.Arrow,
        ...slots
      },
      slotProps: {
        arrow: slotProps.arrow ?? componentsProps.arrow,
        popper: {
          ...PopperProps,
          ...resolvedPopperProps ?? componentsProps.popper
        },
        // resolvedPopperProps can be spread because it's already an object
        tooltip: slotProps.tooltip ?? componentsProps.tooltip,
        transition: {
          ...TransitionProps,
          ...resolvedTransitionProps ?? componentsProps.transition
        }
      }
    };
    const [PopperSlot, popperSlotProps] = useSlot("popper", {
      elementType: TooltipPopper,
      externalForwardedProps,
      ownerState,
      className: clsx(classes.popper, PopperProps == null ? void 0 : PopperProps.className)
    });
    const [TransitionSlot, transitionSlotProps] = useSlot("transition", {
      elementType: Grow,
      externalForwardedProps,
      ownerState
    });
    const [TooltipSlot, tooltipSlotProps] = useSlot("tooltip", {
      elementType: TooltipTooltip,
      className: classes.tooltip,
      externalForwardedProps,
      ownerState
    });
    const [ArrowSlot, arrowSlotProps] = useSlot("arrow", {
      elementType: TooltipArrow,
      className: classes.arrow,
      externalForwardedProps,
      ownerState,
      ref: setArrowRef
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(React__namespace.Fragment, {
      children: [/* @__PURE__ */ React__namespace.cloneElement(children, childrenProps), /* @__PURE__ */ jsxRuntimeExports.jsx(PopperSlot, {
        as: PopperComponentProp ?? Popper,
        placement,
        anchorEl: followCursor ? {
          getBoundingClientRect: () => ({
            top: cursorPosition.y,
            left: cursorPosition.x,
            right: cursorPosition.x,
            bottom: cursorPosition.y,
            width: 0,
            height: 0
          })
        } : childNode,
        popperRef,
        open: childNode ? open2 : false,
        id,
        transition: true,
        ...interactiveWrapperListeners,
        ...popperSlotProps,
        popperOptions,
        children: ({
          TransitionProps: TransitionPropsInner
        }) => /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionSlot, {
          timeout: theme.transitions.duration.shorter,
          ...TransitionPropsInner,
          ...transitionSlotProps,
          children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipSlot, {
            ...tooltipSlotProps,
            children: [title, arrow2 ? /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowSlot, {
              ...arrowSlotProps
            }) : null]
          })
        })
      })]
    });
  });
  function getSwitchUtilityClass(slot) {
    return generateUtilityClass("MuiSwitch", slot);
  }
  const switchClasses = generateUtilityClasses("MuiSwitch", ["root", "edgeStart", "edgeEnd", "switchBase", "colorPrimary", "colorSecondary", "sizeSmall", "sizeMedium", "checked", "disabled", "input", "thumb", "track"]);
  const useUtilityClasses$7 = (ownerState) => {
    const {
      classes,
      edge,
      size,
      color: color2,
      checked,
      disabled
    } = ownerState;
    const slots = {
      root: ["root", edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`],
      switchBase: ["switchBase", `color${capitalize(color2)}`, checked && "checked", disabled && "disabled"],
      thumb: ["thumb"],
      track: ["track"],
      input: ["input"]
    };
    const composedClasses = composeClasses(slots, getSwitchUtilityClass, classes);
    return {
      ...classes,
      // forward the disabled and checked classes to the SwitchBase
      ...composedClasses
    };
  };
  const SwitchRoot = styled("span", {
    name: "MuiSwitch",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.edge && styles2[`edge${capitalize(ownerState.edge)}`], styles2[`size${capitalize(ownerState.size)}`]];
    }
  })({
    display: "inline-flex",
    width: 34 + 12 * 2,
    height: 14 + 12 * 2,
    overflow: "hidden",
    padding: 12,
    boxSizing: "border-box",
    position: "relative",
    flexShrink: 0,
    zIndex: 0,
    // Reset the stacking context.
    verticalAlign: "middle",
    // For correct alignment with the text.
    "@media print": {
      colorAdjust: "exact"
    },
    variants: [{
      props: {
        edge: "start"
      },
      style: {
        marginLeft: -8
      }
    }, {
      props: {
        edge: "end"
      },
      style: {
        marginRight: -8
      }
    }, {
      props: {
        size: "small"
      },
      style: {
        width: 40,
        height: 24,
        padding: 7,
        [`& .${switchClasses.thumb}`]: {
          width: 16,
          height: 16
        },
        [`& .${switchClasses.switchBase}`]: {
          padding: 4,
          [`&.${switchClasses.checked}`]: {
            transform: "translateX(16px)"
          }
        }
      }
    }]
  });
  const SwitchSwitchBase = styled(SwitchBase, {
    name: "MuiSwitch",
    slot: "SwitchBase",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.switchBase, {
        [`& .${switchClasses.input}`]: styles2.input
      }, ownerState.color !== "default" && styles2[`color${capitalize(ownerState.color)}`]];
    }
  })(memoTheme(({
    theme
  }) => ({
    position: "absolute",
    top: 0,
    left: 0,
    zIndex: 1,
    // Render above the focus ripple.
    color: theme.vars ? theme.vars.palette.Switch.defaultColor : `${theme.palette.mode === "light" ? theme.palette.common.white : theme.palette.grey[300]}`,
    transition: theme.transitions.create(["left", "transform"], {
      duration: theme.transitions.duration.shortest
    }),
    [`&.${switchClasses.checked}`]: {
      transform: "translateX(20px)"
    },
    [`&.${switchClasses.disabled}`]: {
      color: theme.vars ? theme.vars.palette.Switch.defaultDisabledColor : `${theme.palette.mode === "light" ? theme.palette.grey[100] : theme.palette.grey[600]}`
    },
    [`&.${switchClasses.checked} + .${switchClasses.track}`]: {
      opacity: 0.5
    },
    [`&.${switchClasses.disabled} + .${switchClasses.track}`]: {
      opacity: theme.vars ? theme.vars.opacity.switchTrackDisabled : `${theme.palette.mode === "light" ? 0.12 : 0.2}`
    },
    [`& .${switchClasses.input}`]: {
      left: "-100%",
      width: "300%"
    }
  })), memoTheme(({
    theme
  }) => ({
    "&:hover": {
      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),
      // Reset on touch devices, it doesn't add specificity
      "@media (hover: none)": {
        backgroundColor: "transparent"
      }
    },
    variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(["light"])).map(([color2]) => ({
      props: {
        color: color2
      },
      style: {
        [`&.${switchClasses.checked}`]: {
          color: (theme.vars || theme).palette[color2].main,
          "&:hover": {
            backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color2].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color2].main, theme.palette.action.hoverOpacity),
            "@media (hover: none)": {
              backgroundColor: "transparent"
            }
          },
          [`&.${switchClasses.disabled}`]: {
            color: theme.vars ? theme.vars.palette.Switch[`${color2}DisabledColor`] : `${theme.palette.mode === "light" ? lighten(theme.palette[color2].main, 0.62) : darken(theme.palette[color2].main, 0.55)}`
          }
        },
        [`&.${switchClasses.checked} + .${switchClasses.track}`]: {
          backgroundColor: (theme.vars || theme).palette[color2].main
        }
      }
    }))]
  })));
  const SwitchTrack = styled("span", {
    name: "MuiSwitch",
    slot: "Track",
    overridesResolver: (props, styles2) => styles2.track
  })(memoTheme(({
    theme
  }) => ({
    height: "100%",
    width: "100%",
    borderRadius: 14 / 2,
    zIndex: -1,
    transition: theme.transitions.create(["opacity", "background-color"], {
      duration: theme.transitions.duration.shortest
    }),
    backgroundColor: theme.vars ? theme.vars.palette.common.onBackground : `${theme.palette.mode === "light" ? theme.palette.common.black : theme.palette.common.white}`,
    opacity: theme.vars ? theme.vars.opacity.switchTrack : `${theme.palette.mode === "light" ? 0.38 : 0.3}`
  })));
  const SwitchThumb = styled("span", {
    name: "MuiSwitch",
    slot: "Thumb",
    overridesResolver: (props, styles2) => styles2.thumb
  })(memoTheme(({
    theme
  }) => ({
    boxShadow: (theme.vars || theme).shadows[1],
    backgroundColor: "currentColor",
    width: 20,
    height: 20,
    borderRadius: "50%"
  })));
  const Switch = /* @__PURE__ */ React__namespace.forwardRef(function Switch2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiSwitch"
    });
    const {
      className,
      color: color2 = "primary",
      edge = false,
      size = "medium",
      sx,
      slots = {},
      slotProps = {},
      ...other
    } = props;
    const ownerState = {
      ...props,
      color: color2,
      edge,
      size
    };
    const classes = useUtilityClasses$7(ownerState);
    const externalForwardedProps = {
      slots,
      slotProps
    };
    const [RootSlot, rootSlotProps] = useSlot("root", {
      className: clsx(classes.root, className),
      elementType: SwitchRoot,
      externalForwardedProps,
      ownerState,
      additionalProps: {
        sx
      }
    });
    const [ThumbSlot, thumbSlotProps] = useSlot("thumb", {
      className: classes.thumb,
      elementType: SwitchThumb,
      externalForwardedProps,
      ownerState
    });
    const icon = /* @__PURE__ */ jsxRuntimeExports.jsx(ThumbSlot, {
      ...thumbSlotProps
    });
    const [TrackSlot, trackSlotProps] = useSlot("track", {
      className: classes.track,
      elementType: SwitchTrack,
      externalForwardedProps,
      ownerState
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(RootSlot, {
      ...rootSlotProps,
      children: [/* @__PURE__ */ jsxRuntimeExports.jsx(SwitchSwitchBase, {
        type: "checkbox",
        icon,
        checkedIcon: icon,
        ref,
        ownerState,
        ...other,
        classes: {
          ...classes,
          root: classes.switchBase
        },
        slots: {
          ...slots.switchBase && {
            root: slots.switchBase
          },
          ...slots.input && {
            input: slots.input
          }
        },
        slotProps: {
          ...slotProps.switchBase && {
            root: typeof slotProps.switchBase === "function" ? slotProps.switchBase(ownerState) : slotProps.switchBase
          },
          ...slotProps.input && {
            input: typeof slotProps.input === "function" ? slotProps.input(ownerState) : slotProps.input
          }
        }
      }), /* @__PURE__ */ jsxRuntimeExports.jsx(TrackSlot, {
        ...trackSlotProps
      })]
    });
  });
  const TableContext = /* @__PURE__ */ React__namespace.createContext();
  function getTableUtilityClass(slot) {
    return generateUtilityClass("MuiTable", slot);
  }
  generateUtilityClasses("MuiTable", ["root", "stickyHeader"]);
  const useUtilityClasses$6 = (ownerState) => {
    const {
      classes,
      stickyHeader
    } = ownerState;
    const slots = {
      root: ["root", stickyHeader && "stickyHeader"]
    };
    return composeClasses(slots, getTableUtilityClass, classes);
  };
  const TableRoot = styled("table", {
    name: "MuiTable",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.stickyHeader && styles2.stickyHeader];
    }
  })(memoTheme(({
    theme
  }) => ({
    display: "table",
    width: "100%",
    borderCollapse: "collapse",
    borderSpacing: 0,
    "& caption": {
      ...theme.typography.body2,
      padding: theme.spacing(2),
      color: (theme.vars || theme).palette.text.secondary,
      textAlign: "left",
      captionSide: "bottom"
    },
    variants: [{
      props: ({
        ownerState
      }) => ownerState.stickyHeader,
      style: {
        borderCollapse: "separate"
      }
    }]
  })));
  const defaultComponent$3 = "table";
  const Table = /* @__PURE__ */ React__namespace.forwardRef(function Table2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiTable"
    });
    const {
      className,
      component = defaultComponent$3,
      padding: padding2 = "normal",
      size = "medium",
      stickyHeader = false,
      ...other
    } = props;
    const ownerState = {
      ...props,
      component,
      padding: padding2,
      size,
      stickyHeader
    };
    const classes = useUtilityClasses$6(ownerState);
    const table = React__namespace.useMemo(() => ({
      padding: padding2,
      size,
      stickyHeader
    }), [padding2, size, stickyHeader]);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TableContext.Provider, {
      value: table,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(TableRoot, {
        as: component,
        role: component === defaultComponent$3 ? null : "table",
        ref,
        className: clsx(classes.root, className),
        ownerState,
        ...other
      })
    });
  });
  const Tablelvl2Context = /* @__PURE__ */ React__namespace.createContext();
  function getTableBodyUtilityClass(slot) {
    return generateUtilityClass("MuiTableBody", slot);
  }
  generateUtilityClasses("MuiTableBody", ["root"]);
  const useUtilityClasses$5 = (ownerState) => {
    const {
      classes
    } = ownerState;
    const slots = {
      root: ["root"]
    };
    return composeClasses(slots, getTableBodyUtilityClass, classes);
  };
  const TableBodyRoot = styled("tbody", {
    name: "MuiTableBody",
    slot: "Root",
    overridesResolver: (props, styles2) => styles2.root
  })({
    display: "table-row-group"
  });
  const tablelvl2$1 = {
    variant: "body"
  };
  const defaultComponent$2 = "tbody";
  const TableBody = /* @__PURE__ */ React__namespace.forwardRef(function TableBody2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiTableBody"
    });
    const {
      className,
      component = defaultComponent$2,
      ...other
    } = props;
    const ownerState = {
      ...props,
      component
    };
    const classes = useUtilityClasses$5(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(Tablelvl2Context.Provider, {
      value: tablelvl2$1,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(TableBodyRoot, {
        className: clsx(classes.root, className),
        as: component,
        ref,
        role: component === defaultComponent$2 ? null : "rowgroup",
        ownerState,
        ...other
      })
    });
  });
  function getTableCellUtilityClass(slot) {
    return generateUtilityClass("MuiTableCell", slot);
  }
  const tableCellClasses = generateUtilityClasses("MuiTableCell", ["root", "head", "body", "footer", "sizeSmall", "sizeMedium", "paddingCheckbox", "paddingNone", "alignLeft", "alignCenter", "alignRight", "alignJustify", "stickyHeader"]);
  const useUtilityClasses$4 = (ownerState) => {
    const {
      classes,
      variant,
      align,
      padding: padding2,
      size,
      stickyHeader
    } = ownerState;
    const slots = {
      root: ["root", variant, stickyHeader && "stickyHeader", align !== "inherit" && `align${capitalize(align)}`, padding2 !== "normal" && `padding${capitalize(padding2)}`, `size${capitalize(size)}`]
    };
    return composeClasses(slots, getTableCellUtilityClass, classes);
  };
  const TableCellRoot = styled("td", {
    name: "MuiTableCell",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, styles2[ownerState.variant], styles2[`size${capitalize(ownerState.size)}`], ownerState.padding !== "normal" && styles2[`padding${capitalize(ownerState.padding)}`], ownerState.align !== "inherit" && styles2[`align${capitalize(ownerState.align)}`], ownerState.stickyHeader && styles2.stickyHeader];
    }
  })(memoTheme(({
    theme
  }) => ({
    ...theme.typography.body2,
    display: "table-cell",
    verticalAlign: "inherit",
    // Workaround for a rendering bug with spanned columns in Chrome 62.0.
    // Removes the alpha (sets it to 1), and lightens or darkens the theme color.
    borderBottom: theme.vars ? `1px solid ${theme.vars.palette.TableCell.border}` : `1px solid
    ${theme.palette.mode === "light" ? lighten(alpha(theme.palette.divider, 1), 0.88) : darken(alpha(theme.palette.divider, 1), 0.68)}`,
    textAlign: "left",
    padding: 16,
    variants: [{
      props: {
        variant: "head"
      },
      style: {
        color: (theme.vars || theme).palette.text.primary,
        lineHeight: theme.typography.pxToRem(24),
        fontWeight: theme.typography.fontWeightMedium
      }
    }, {
      props: {
        variant: "body"
      },
      style: {
        color: (theme.vars || theme).palette.text.primary
      }
    }, {
      props: {
        variant: "footer"
      },
      style: {
        color: (theme.vars || theme).palette.text.secondary,
        lineHeight: theme.typography.pxToRem(21),
        fontSize: theme.typography.pxToRem(12)
      }
    }, {
      props: {
        size: "small"
      },
      style: {
        padding: "6px 16px",
        [`&.${tableCellClasses.paddingCheckbox}`]: {
          width: 24,
          // prevent the checkbox column from growing
          padding: "0 12px 0 16px",
          "& > *": {
            padding: 0
          }
        }
      }
    }, {
      props: {
        padding: "checkbox"
      },
      style: {
        width: 48,
        // prevent the checkbox column from growing
        padding: "0 0 0 4px"
      }
    }, {
      props: {
        padding: "none"
      },
      style: {
        padding: 0
      }
    }, {
      props: {
        align: "left"
      },
      style: {
        textAlign: "left"
      }
    }, {
      props: {
        align: "center"
      },
      style: {
        textAlign: "center"
      }
    }, {
      props: {
        align: "right"
      },
      style: {
        textAlign: "right",
        flexDirection: "row-reverse"
      }
    }, {
      props: {
        align: "justify"
      },
      style: {
        textAlign: "justify"
      }
    }, {
      props: ({
        ownerState
      }) => ownerState.stickyHeader,
      style: {
        position: "sticky",
        top: 0,
        zIndex: 2,
        backgroundColor: (theme.vars || theme).palette.background.default
      }
    }]
  })));
  const TableCell = /* @__PURE__ */ React__namespace.forwardRef(function TableCell2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiTableCell"
    });
    const {
      align = "inherit",
      className,
      component: componentProp,
      padding: paddingProp,
      scope: scopeProp,
      size: sizeProp,
      sortDirection,
      variant: variantProp,
      ...other
    } = props;
    const table = React__namespace.useContext(TableContext);
    const tablelvl22 = React__namespace.useContext(Tablelvl2Context);
    const isHeadCell = tablelvl22 && tablelvl22.variant === "head";
    let component;
    if (componentProp) {
      component = componentProp;
    } else {
      component = isHeadCell ? "th" : "td";
    }
    let scope = scopeProp;
    if (component === "td") {
      scope = void 0;
    } else if (!scope && isHeadCell) {
      scope = "col";
    }
    const variant = variantProp || tablelvl22 && tablelvl22.variant;
    const ownerState = {
      ...props,
      align,
      component,
      padding: paddingProp || (table && table.padding ? table.padding : "normal"),
      size: sizeProp || (table && table.size ? table.size : "medium"),
      sortDirection,
      stickyHeader: variant === "head" && table && table.stickyHeader,
      variant
    };
    const classes = useUtilityClasses$4(ownerState);
    let ariaSort = null;
    if (sortDirection) {
      ariaSort = sortDirection === "asc" ? "ascending" : "descending";
    }
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TableCellRoot, {
      as: component,
      ref,
      className: clsx(classes.root, className),
      "aria-sort": ariaSort,
      scope,
      ownerState,
      ...other
    });
  });
  function getTableContainerUtilityClass(slot) {
    return generateUtilityClass("MuiTableContainer", slot);
  }
  generateUtilityClasses("MuiTableContainer", ["root"]);
  const useUtilityClasses$3 = (ownerState) => {
    const {
      classes
    } = ownerState;
    const slots = {
      root: ["root"]
    };
    return composeClasses(slots, getTableContainerUtilityClass, classes);
  };
  const TableContainerRoot = styled("div", {
    name: "MuiTableContainer",
    slot: "Root",
    overridesResolver: (props, styles2) => styles2.root
  })({
    width: "100%",
    overflowX: "auto"
  });
  const TableContainer = /* @__PURE__ */ React__namespace.forwardRef(function TableContainer2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiTableContainer"
    });
    const {
      className,
      component = "div",
      ...other
    } = props;
    const ownerState = {
      ...props,
      component
    };
    const classes = useUtilityClasses$3(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TableContainerRoot, {
      ref,
      as: component,
      className: clsx(classes.root, className),
      ownerState,
      ...other
    });
  });
  function getTableHeadUtilityClass(slot) {
    return generateUtilityClass("MuiTableHead", slot);
  }
  generateUtilityClasses("MuiTableHead", ["root"]);
  const useUtilityClasses$2 = (ownerState) => {
    const {
      classes
    } = ownerState;
    const slots = {
      root: ["root"]
    };
    return composeClasses(slots, getTableHeadUtilityClass, classes);
  };
  const TableHeadRoot = styled("thead", {
    name: "MuiTableHead",
    slot: "Root",
    overridesResolver: (props, styles2) => styles2.root
  })({
    display: "table-header-group"
  });
  const tablelvl2 = {
    variant: "head"
  };
  const defaultComponent$1 = "thead";
  const TableHead = /* @__PURE__ */ React__namespace.forwardRef(function TableHead2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiTableHead"
    });
    const {
      className,
      component = defaultComponent$1,
      ...other
    } = props;
    const ownerState = {
      ...props,
      component
    };
    const classes = useUtilityClasses$2(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(Tablelvl2Context.Provider, {
      value: tablelvl2,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(TableHeadRoot, {
        as: component,
        className: clsx(classes.root, className),
        ref,
        role: component === defaultComponent$1 ? null : "rowgroup",
        ownerState,
        ...other
      })
    });
  });
  function getTableRowUtilityClass(slot) {
    return generateUtilityClass("MuiTableRow", slot);
  }
  const tableRowClasses = generateUtilityClasses("MuiTableRow", ["root", "selected", "hover", "head", "footer"]);
  const useUtilityClasses$1 = (ownerState) => {
    const {
      classes,
      selected,
      hover,
      head,
      footer
    } = ownerState;
    const slots = {
      root: ["root", selected && "selected", hover && "hover", head && "head", footer && "footer"]
    };
    return composeClasses(slots, getTableRowUtilityClass, classes);
  };
  const TableRowRoot = styled("tr", {
    name: "MuiTableRow",
    slot: "Root",
    overridesResolver: (props, styles2) => {
      const {
        ownerState
      } = props;
      return [styles2.root, ownerState.head && styles2.head, ownerState.footer && styles2.footer];
    }
  })(memoTheme(({
    theme
  }) => ({
    color: "inherit",
    display: "table-row",
    verticalAlign: "middle",
    // We disable the focus ring for mouse, touch and keyboard users.
    outline: 0,
    [`&.${tableRowClasses.hover}:hover`]: {
      backgroundColor: (theme.vars || theme).palette.action.hover
    },
    [`&.${tableRowClasses.selected}`]: {
      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),
      "&:hover": {
        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)
      }
    }
  })));
  const defaultComponent = "tr";
  const TableRow = /* @__PURE__ */ React__namespace.forwardRef(function TableRow2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiTableRow"
    });
    const {
      className,
      component = defaultComponent,
      hover = false,
      selected = false,
      ...other
    } = props;
    const tablelvl22 = React__namespace.useContext(Tablelvl2Context);
    const ownerState = {
      ...props,
      component,
      hover,
      selected,
      head: tablelvl22 && tablelvl22.variant === "head",
      footer: tablelvl22 && tablelvl22.variant === "footer"
    };
    const classes = useUtilityClasses$1(ownerState);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(TableRowRoot, {
      as: component,
      ref,
      className: clsx(classes.root, className),
      role: component === defaultComponent ? null : "row",
      ownerState,
      ...other
    });
  });
  function getTextFieldUtilityClass(slot) {
    return generateUtilityClass("MuiTextField", slot);
  }
  generateUtilityClasses("MuiTextField", ["root"]);
  const variantComponent = {
    standard: Input,
    filled: FilledInput,
    outlined: OutlinedInput
  };
  const useUtilityClasses = (ownerState) => {
    const {
      classes
    } = ownerState;
    const slots = {
      root: ["root"]
    };
    return composeClasses(slots, getTextFieldUtilityClass, classes);
  };
  const TextFieldRoot = styled(FormControl, {
    name: "MuiTextField",
    slot: "Root",
    overridesResolver: (props, styles2) => styles2.root
  })({});
  const TextField = /* @__PURE__ */ React__namespace.forwardRef(function TextField2(inProps, ref) {
    const props = useDefaultProps({
      props: inProps,
      name: "MuiTextField"
    });
    const {
      autoComplete,
      autoFocus = false,
      children,
      className,
      color: color2 = "primary",
      defaultValue,
      disabled = false,
      error = false,
      FormHelperTextProps: FormHelperTextPropsProp,
      fullWidth = false,
      helperText,
      id: idOverride,
      InputLabelProps: InputLabelPropsProp,
      inputProps: inputPropsProp,
      InputProps: InputPropsProp,
      inputRef,
      label,
      maxRows,
      minRows,
      multiline = false,
      name,
      onBlur,
      onChange,
      onFocus,
      placeholder,
      required = false,
      rows,
      select = false,
      SelectProps: SelectPropsProp,
      slots = {},
      slotProps = {},
      type,
      value,
      variant = "outlined",
      ...other
    } = props;
    const ownerState = {
      ...props,
      autoFocus,
      color: color2,
      disabled,
      error,
      fullWidth,
      multiline,
      required,
      select,
      variant
    };
    const classes = useUtilityClasses(ownerState);
    const id = useId(idOverride);
    const helperTextId = helperText && id ? `${id}-helper-text` : void 0;
    const inputLabelId = label && id ? `${id}-label` : void 0;
    const InputComponent = variantComponent[variant];
    const externalForwardedProps = {
      slots,
      slotProps: {
        input: InputPropsProp,
        inputLabel: InputLabelPropsProp,
        htmlInput: inputPropsProp,
        formHelperText: FormHelperTextPropsProp,
        select: SelectPropsProp,
        ...slotProps
      }
    };
    const inputAdditionalProps = {};
    const inputLabelSlotProps = externalForwardedProps.slotProps.inputLabel;
    if (variant === "outlined") {
      if (inputLabelSlotProps && typeof inputLabelSlotProps.shrink !== "undefined") {
        inputAdditionalProps.notched = inputLabelSlotProps.shrink;
      }
      inputAdditionalProps.label = label;
    }
    if (select) {
      if (!SelectPropsProp || !SelectPropsProp.native) {
        inputAdditionalProps.id = void 0;
      }
      inputAdditionalProps["aria-describedby"] = void 0;
    }
    const [RootSlot, rootProps] = useSlot("root", {
      elementType: TextFieldRoot,
      shouldForwardComponentProp: true,
      externalForwardedProps: {
        ...externalForwardedProps,
        ...other
      },
      ownerState,
      className: clsx(classes.root, className),
      ref,
      additionalProps: {
        disabled,
        error,
        fullWidth,
        required,
        color: color2,
        variant
      }
    });
    const [InputSlot, inputProps] = useSlot("input", {
      elementType: InputComponent,
      externalForwardedProps,
      additionalProps: inputAdditionalProps,
      ownerState
    });
    const [InputLabelSlot, inputLabelProps] = useSlot("inputLabel", {
      elementType: InputLabel,
      externalForwardedProps,
      ownerState
    });
    const [HtmlInputSlot, htmlInputProps] = useSlot("htmlInput", {
      elementType: "input",
      externalForwardedProps,
      ownerState
    });
    const [FormHelperTextSlot, formHelperTextProps] = useSlot("formHelperText", {
      elementType: FormHelperText,
      externalForwardedProps,
      ownerState
    });
    const [SelectSlot, selectProps] = useSlot("select", {
      elementType: Select,
      externalForwardedProps,
      ownerState
    });
    const InputElement = /* @__PURE__ */ jsxRuntimeExports.jsx(InputSlot, {
      "aria-describedby": helperTextId,
      autoComplete,
      autoFocus,
      defaultValue,
      fullWidth,
      multiline,
      name,
      rows,
      maxRows,
      minRows,
      type,
      value,
      id,
      inputRef,
      onBlur,
      onChange,
      onFocus,
      placeholder,
      inputProps: htmlInputProps,
      slots: {
        input: slots.htmlInput ? HtmlInputSlot : void 0
      },
      ...inputProps
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(RootSlot, {
      ...rootProps,
      children: [label != null && label !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabelSlot, {
        htmlFor: id,
        id: inputLabelId,
        ...inputLabelProps,
        children: label
      }), select ? /* @__PURE__ */ jsxRuntimeExports.jsx(SelectSlot, {
        "aria-describedby": helperTextId,
        id,
        labelId: inputLabelId,
        value,
        input: InputElement,
        ...selectProps,
        children
      }) : InputElement, helperText && /* @__PURE__ */ jsxRuntimeExports.jsx(FormHelperTextSlot, {
        id: helperTextId,
        ...formHelperTextProps,
        children: helperText
      })]
    });
  });
  const cloudEnum = {
    xunlei: "xunlei",
    // 迅雷网盘
    uc: "uc",
    // UC网盘
    baidu: "baidu",
    // 百度网盘
    baiduSync: "baiduSync",
    // 百度网盘同步
    tianyi: "tianyi",
    // 天翼云盘
    quark: "quark",
    // 天翼云盘
    alipan: "alipan",
    // 阿里云盘
    yidong139: "yidong139",
    // 中国移动网盘
    lanzou: "lanzou",
    // 蓝奏云
    yun115: "yun115"
    // 115网盘
  };
  const cloudInfoAll = {
    [cloudEnum.xunlei]: {
      name: "迅雷网盘",
      // 云盘名称
      type: cloudEnum.xunlei,
      // 云盘类型
      rootElementId: "sharelink-plus-xunlei",
      matchUrl: [new RegExp("pan.xunlei.com/*")],
      // 匹配url
      mountFn: () => {
        const appContainer = document.createElement("li");
        appContainer.style.cssText = `
       display: flex;
       justify-content: center;
      `;
        const mountDOM = document.querySelector(
          ".pan-wrapper-asider > ul"
        );
        if (mountDOM) {
          const tempDOM = document.createElement("div");
          tempDOM.id = cloudInfoAll[cloudEnum.xunlei].rootElementId;
          mountDOM.appendChild(tempDOM);
          const shadowContainer = tempDOM.attachShadow({
            mode: "open"
          });
          shadowContainer.appendChild(appContainer);
          return {
            appContainer,
            shadowContainer
          };
        }
        return {
          appContainer
        };
      }
    },
    [cloudEnum.uc]: {
      name: "UC网盘",
      // 云盘名称
      type: cloudEnum.uc,
      // 云盘类型
      rootElementId: "sharelink-plus-uc",
      //挂载唯一id标识,判断是否挂载成功的用途
      matchUrl: [new RegExp("drive.uc.cn/*")],
      // 匹配url
      mountFn: () => {
        var _a;
        const appContainer = document.createElement("div");
        appContainer.style.cssText = `
       margin-right:16px;
       margin-bottom:4px;
      `;
        const mountDOM = document.querySelector(
          ".file-search-box"
        );
        if (mountDOM) {
          const tempDOM = document.createElement("div");
          tempDOM.id = cloudInfoAll[cloudEnum.uc].rootElementId;
          (_a = mountDOM == null ? void 0 : mountDOM.parentNode) == null ? void 0 : _a.insertBefore(tempDOM, mountDOM.nextSibling);
          const shadowContainer = tempDOM.attachShadow({
            mode: "open"
          });
          shadowContainer.appendChild(appContainer);
          return {
            appContainer,
            shadowContainer
          };
        }
        return {
          appContainer
        };
      }
    },
    [cloudEnum.baidu]: {
      name: "百度网盘",
      // 云盘名称
      type: cloudEnum.baidu,
      // 云盘类型
      rootElementId: "sharelink-plus-baidu",
      //挂载唯一id标识,判断是否挂载成功的用途
      matchUrl: [new RegExp("pan.baidu.com/disk/main*")],
      // 匹配url
      mountFn: () => {
        const appContainer = document.createElement("div");
        appContainer.style.cssText = `
      `;
        const mountDOM = document.querySelector(
          "div.wp-s-header__right"
        );
        if (mountDOM) {
          const tempDOM = document.createElement("div");
          tempDOM.id = cloudInfoAll[cloudEnum.baidu].rootElementId;
          mountDOM == null ? void 0 : mountDOM.insertBefore(tempDOM, mountDOM == null ? void 0 : mountDOM.firstChild);
          const shadowContainer = tempDOM.attachShadow({
            mode: "open"
          });
          shadowContainer.appendChild(appContainer);
          return {
            appContainer,
            shadowContainer
          };
        }
        return {
          appContainer
        };
      }
    },
    [cloudEnum.baiduSync]: {
      name: "百度网盘同步",
      // 云盘名称
      type: cloudEnum.baiduSync,
      // 云盘类型
      rootElementId: "sharelink-plus-baiduSync",
      //挂载唯一id标识,判断是否挂载成功的用途
      matchUrl: [new RegExp("pan.baidu.com/disk/synchronization*")],
      // 匹配url
      mountFn: () => {
        const appContainer = document.createElement("div");
        appContainer.style.cssText = `
          text-align:center;
      `;
        const mountDOM = document.querySelector(
          "div.wp-aside-nav__sub-top"
        );
        if (mountDOM) {
          const tempDOM = document.createElement("div");
          tempDOM.id = cloudInfoAll[cloudEnum.baiduSync].rootElementId;
          mountDOM == null ? void 0 : mountDOM.insertBefore(tempDOM, mountDOM == null ? void 0 : mountDOM.firstChild);
          const shadowContainer = tempDOM.attachShadow({
            mode: "open"
          });
          shadowContainer.appendChild(appContainer);
          return {
            appContainer,
            shadowContainer
          };
        }
        return {
          appContainer
        };
      }
    },
    [cloudEnum.tianyi]: {
      name: "天翼云盘",
      // 云盘名称
      type: cloudEnum.tianyi,
      // 云盘类型
      rootElementId: "sharelink-plus-tianyi",
      //挂载唯一id标识,判断是否挂载成功的用途
      matchUrl: [new RegExp("cloud.189.cn/*")],
      // 匹配url
      mountFn: () => {
        const appContainer = document.createElement("div");
        appContainer.style.cssText = `
      `;
        const mountDOM = document.querySelector("ul.nav-menu");
        if (mountDOM) {
          const tempDOM = document.createElement("div");
          tempDOM.id = cloudInfoAll[cloudEnum.tianyi].rootElementId;
          mountDOM == null ? void 0 : mountDOM.appendChild(tempDOM);
          const shadowContainer = tempDOM.attachShadow({
            mode: "open"
          });
          shadowContainer.appendChild(appContainer);
          return {
            appContainer,
            shadowContainer
          };
        }
        return {
          appContainer
        };
      }
    },
    [cloudEnum.quark]: {
      name: "天翼云盘",
      // 云盘名称
      type: cloudEnum.quark,
      // 云盘类型
      rootElementId: "sharelink-plus-quark",
      //挂载唯一id标识,判断是否挂载成功的用途
      matchUrl: [new RegExp("pan.quark.cn/*")],
      // 匹配url
      mountFn: () => {
        var _a;
        const appContainer = document.createElement("div");
        appContainer.style.cssText = `
      `;
        const mountDOM = document.querySelector(
          ".file-search-box"
        );
        if (mountDOM) {
          const tempDOM = document.createElement("div");
          tempDOM.id = cloudInfoAll[cloudEnum.quark].rootElementId;
          (_a = mountDOM == null ? void 0 : mountDOM.parentNode) == null ? void 0 : _a.insertBefore(tempDOM, mountDOM);
          const shadowContainer = tempDOM.attachShadow({
            mode: "open"
          });
          shadowContainer.appendChild(appContainer);
          return {
            appContainer,
            shadowContainer
          };
        }
        return {
          appContainer
        };
      }
    },
    [cloudEnum.alipan]: {
      name: "阿里云盘",
      // 云盘名称
      type: cloudEnum.alipan,
      // 云盘类型
      rootElementId: "sharelink-plus-alipan",
      //挂载唯一id标识,判断是否挂载成功的用途
      matchUrl: [
        new RegExp("www.alipan.com/*"),
        new RegExp("www.aliyundrive.com/*")
      ],
      // 匹配url
      mountFn: () => {
        const appContainer = document.createElement("div");
        appContainer.style.cssText = ``;
        const navTabItem = document.querySelector("div[class^='nav-tab-item--']");
        if (navTabItem) {
          const navTabClass = Array.from(navTabItem.classList).find(
            (className) => className.startsWith("nav-tab-item--")
          );
          if (navTabClass) {
            const tempDOM2 = document.createElement("div");
            tempDOM2.id = cloudInfoAll[cloudEnum.alipan].rootElementId;
            appContainer.classList.add(navTabClass);
            const navTabContent = document.querySelector(
              "div[class^='nav-tab-content--']"
            );
            if (navTabContent) {
              tempDOM2.style.cssText = `
              margin: 8px 16px;
            `;
              navTabContent.appendChild(tempDOM2);
              const shadowContainer2 = tempDOM2.attachShadow({
                mode: "open"
              });
              shadowContainer2.appendChild(appContainer);
              return {
                appContainer,
                shadowContainer: shadowContainer2
              };
            }
          }
        }
        const tempDOM = document.createElement("div");
        tempDOM.id = cloudInfoAll[cloudEnum.alipan].rootElementId;
        document.body.appendChild(tempDOM);
        const shadowContainer = tempDOM.attachShadow({
          mode: "open"
        });
        shadowContainer.appendChild(appContainer);
        return {
          appContainer,
          shadowContainer
        };
      }
    },
    [cloudEnum.yidong139]: {
      name: "中国移动网盘",
      // 云盘名称
      type: cloudEnum.yidong139,
      // 云盘类型
      rootElementId: "sharelink-plus-yidong139",
      //挂载唯一id标识,判断是否挂载成功的用途
      matchUrl: [new RegExp("yun.139.com/*")],
      // 匹配url
      mountFn: () => {
        var _a;
        const appContainer = document.createElement("div");
        appContainer.style.cssText = `
               display:inline-block;
                margin-top:20px;`;
        const mountDOM = document.querySelector(
          ".document_top_upload_button"
        );
        if (mountDOM) {
          const tempDOM = document.createElement("div");
          tempDOM.id = cloudInfoAll[cloudEnum.yidong139].rootElementId;
          (_a = mountDOM.parentNode) == null ? void 0 : _a.append(appContainer, tempDOM);
          const shadowContainer = tempDOM.attachShadow({
            mode: "open"
          });
          shadowContainer.appendChild(appContainer);
          return {
            appContainer,
            shadowContainer
          };
        }
        return {
          appContainer
        };
      }
    },
    [cloudEnum.lanzou]: {
      name: "蓝奏云",
      // 云盘名称
      type: cloudEnum.lanzou,
      // 云盘类型
      rootElementId: "sharelink-plus-lanzou",
      //挂载唯一id标识,判断是否挂载成功的用途
      matchUrl: [
        new RegExp("lanzou\\.com/.*"),
        new RegExp("www\\.lanzou\\.com/.*"),
        new RegExp("www\\.lanzou\\.com/account\\.php"),
        new RegExp("up\\.woozooo\\.com/.*"),
        new RegExp("up\\.woozooo\\.com/mydisk\\.php"),
        new RegExp("pc\\.woozooo\\.com/.*"),
        new RegExp("pc\\.woozooo\\.com/mydisk\\.php"),
        new RegExp("pan\\.lanzou\\.com/.*")
      ],
      // 匹配url
      mountFn: () => {
        const appContainer = document.createElement("div");
        appContainer.style.cssText = `
          margin-top: -2px;
      `;
        const mountDOM = document.querySelector(".toum");
        console.log(mountDOM, "22222222222222");
        if (mountDOM) {
          const tempDOM = document.createElement("div");
          tempDOM.id = cloudInfoAll[cloudEnum.lanzou].rootElementId;
          mountDOM == null ? void 0 : mountDOM.append(tempDOM);
          const shadowContainer = tempDOM.attachShadow({
            mode: "open"
          });
          shadowContainer.appendChild(appContainer);
          console.log(appContainer, shadowContainer);
          return {
            appContainer,
            shadowContainer
          };
        }
        return {
          appContainer
        };
      }
    },
    [cloudEnum.yun115]: {
      name: "115网盘",
      // 云盘名称
      type: cloudEnum.yun115,
      // 云盘类型
      rootElementId: "sharelink-plus-yun115",
      //挂载唯一id标识,判断是否挂载成功的用途
      matchUrl: [new RegExp("115.com/*")],
      // 匹配url
      mountFn: () => {
        const appContainer = document.createElement("div");
        appContainer.style.cssText = `
              margin-top: 12px;
              margin-left: 10px;
      `;
        const mountDOM = document.querySelector("div.main-top");
        if (mountDOM) {
          const tempDOM = document.createElement("div");
          tempDOM.id = cloudInfoAll[cloudEnum.yun115].rootElementId;
          mountDOM.appendChild(tempDOM);
          const shadowContainer = tempDOM.attachShadow({
            mode: "open"
          });
          shadowContainer.appendChild(appContainer);
          return {
            appContainer,
            shadowContainer
          };
        }
        return {
          appContainer
        };
      }
    }
  };
  const getCloudInfo = (url) => {
    const currentUrl = window.location.href;
    for (const key2 of Object.keys(
      cloudInfoAll
    )) {
      const matchUrl = cloudInfoAll[key2].matchUrl;
      if (matchUrl.some((pattern) => pattern.test(currentUrl))) {
        return cloudInfoAll[key2];
      }
    }
    return null;
  };
  const undefStr = "undefined";
  const PromiseCls = Promise;
  const promiseReject = (value) => PromiseCls.reject(value);
  const ObjectCls = Object;
  const RegExpCls = RegExp;
  const undefinedValue = void 0;
  const nullValue = null;
  const trueValue = true;
  const falseValue = false;
  const promiseThen = (promise, onFulfilled, onrejected) => promise.then(onFulfilled, onrejected);
  const promiseCatch = (promise, onrejected) => promise.catch(onrejected);
  const promiseFinally = (promise, onfinally) => promise.finally(onfinally);
  const JSONStringify = (value, replacer, space) => JSON.stringify(value, replacer, space);
  const JSONParse = (value) => JSON.parse(value);
  const setTimeoutFn = (fn2, delay = 0) => setTimeout(fn2, delay);
  const clearTimeoutTimer = (timer2) => clearTimeout(timer2);
  const objectKeys = (obj) => ObjectCls.keys(obj);
  const forEach = (ary, fn2) => ary.forEach(fn2);
  const pushItem = (ary, ...item) => ary.push(...item);
  const mapItem = (ary, callbackfn) => ary.map(callbackfn);
  const filterItem = (ary, predicate) => ary.filter(predicate);
  const len = (data) => data.length;
  const isArray = (arg2) => Array.isArray(arg2);
  const deleteAttr = (arg2, attr) => delete arg2[attr];
  const typeOf = (arg2) => typeof arg2;
  const isSSR = typeof window === undefStr && (typeof process !== undefStr ? typeof process.cwd === "function" : typeof Deno !== undefStr);
  const MEMORY = "memory";
  const STORAGE_RESTORE = "restore";
  const noop = () => {
  };
  const $self = (arg2) => arg2;
  const isFn = (arg2) => typeOf(arg2) === "function";
  const isNumber = (arg2) => typeOf(arg2) === "number" && !Number.isNaN(arg2);
  const isString = (arg2) => typeOf(arg2) === "string";
  const globalToString = (arg2) => ObjectCls.prototype.toString.call(arg2);
  const isPlainObject = (arg2) => globalToString(arg2) === "[object Object]";
  const instanceOf = (arg2, cls) => arg2 instanceof cls;
  const getTime = (date) => date ? date.getTime() : Date.now();
  const getContext = (methodInstance) => methodInstance.context;
  const getConfig = (methodInstance) => methodInstance.config;
  const getContextOptions = (alovaInstance2) => alovaInstance2.options;
  const getOptions = (methodInstance) => getContextOptions(getContext(methodInstance));
  const key = (methodInstance) => {
    const { params, headers } = getConfig(methodInstance);
    return JSONStringify([methodInstance.type, methodInstance.url, params, methodInstance.data, headers]);
  };
  const getMethodInternalKey = (methodInstance) => methodInstance.key;
  const isSpecialRequestBody = (data) => {
    const dataTypeString = globalToString(data);
    return /^\[object (Blob|FormData|ReadableStream|URLSearchParams)\]$/i.test(dataTypeString) || instanceOf(data, ArrayBuffer);
  };
  const objAssign = (target, ...sources) => ObjectCls.assign(target, ...sources);
  const getLocalCacheConfigParam = (methodInstance) => {
    const { cacheFor } = getConfig(methodInstance);
    const getCacheExpireTs = (cacheExpire) => isNumber(cacheExpire) ? getTime() + cacheExpire : getTime(cacheExpire || undefinedValue);
    let cacheMode = MEMORY;
    let expire = () => 0;
    let store = falseValue;
    let tag = undefinedValue;
    const controlled = isFn(cacheFor);
    if (!controlled) {
      let expireColumn = cacheFor;
      if (isPlainObject(cacheFor)) {
        const { mode = MEMORY, expire: expire2, tag: configTag } = cacheFor || {};
        cacheMode = mode;
        store = mode === STORAGE_RESTORE;
        tag = configTag ? configTag.toString() : undefinedValue;
        expireColumn = expire2;
      }
      expire = (mode) => getCacheExpireTs(isFn(expireColumn) ? expireColumn({ method: methodInstance, mode }) : expireColumn);
    }
    return {
      f: cacheFor,
      c: controlled,
      e: expire,
      m: cacheMode,
      s: store,
      t: tag
    };
  };
  const newInstance = (Cls, ...args) => new Cls(...args);
  const sloughFunction = (arg2, defaultFn) => isFn(arg2) ? arg2 : ![falseValue, nullValue].includes(arg2) ? defaultFn : noop;
  const cacheKeyPrefix = "$a.";
  const buildNamespacedCacheKey = (namespace, key2) => cacheKeyPrefix + namespace + key2;
  const buildCompletedURL = (baseURL, url, params) => {
    baseURL = baseURL.endsWith("/") ? baseURL.slice(0, -1) : baseURL;
    if (url !== "") {
      url = url.match(/^(\/|https?:\/\/)/) ? url : `/${url}`;
    }
    const completeURL = baseURL + url;
    const paramsStr = mapItem(filterItem(objectKeys(params), (key2) => params[key2] !== undefinedValue), (key2) => `${key2}=${params[key2]}`).join("&");
    return paramsStr ? +completeURL.includes("?") ? `${completeURL}&${paramsStr}` : `${completeURL}?${paramsStr}` : completeURL;
  };
  const deepClone = (obj) => {
    if (isArray(obj)) {
      return mapItem(obj, deepClone);
    }
    if (isPlainObject(obj) && obj.constructor === ObjectCls) {
      const clone = {};
      forEach(objectKeys(obj), (key2) => {
        clone[key2] = deepClone(obj[key2]);
      });
      return clone;
    }
    return obj;
  };
  class AlovaError extends Error {
    constructor(prefix2, message, errorCode) {
      super(message + (errorCode ? `

For detailed: https://alova.js.org/error#${errorCode}` : ""));
      this.name = `[alova${prefix2 ? `/${prefix2}` : ""}]`;
    }
  }
  const createAssert = (prefix2 = "") => (expression, message, errorCode) => {
    if (!expression) {
      throw newInstance(AlovaError, prefix2, message, errorCode);
    }
  };
  const createEventManager = () => {
    const eventMap = {};
    return {
      eventMap,
      on(type, handler) {
        const eventTypeItem = eventMap[type] = eventMap[type] || [];
        pushItem(eventTypeItem, handler);
        return () => {
          eventMap[type] = filterItem(eventTypeItem, (item) => item !== handler);
        };
      },
      off(type, handler) {
        const handlers = eventMap[type];
        if (!handlers) {
          return;
        }
        if (handler) {
          const index = handlers.indexOf(handler);
          index > -1 && handlers.splice(index, 1);
        } else {
          delete eventMap[type];
        }
      },
      emit(type, event) {
        const handlers = eventMap[type] || [];
        return mapItem(handlers, (handler) => handler(event));
      }
    };
  };
  let globalConfigMap = {
    autoHitCache: "global",
    ssr: isSSR
  };
  const titleStyle = "color: black; font-size: 12px; font-weight: bolder";
  var defaultCacheLogger = (response, methodInstance, cacheMode, tag) => {
    const cole = console;
    const log = (...args) => console.log(...args);
    const { url } = methodInstance;
    const isRestoreMode = cacheMode === STORAGE_RESTORE;
    const hdStyle = "\x1B[42m%s\x1B[49m";
    const labelStyle = "\x1B[32m%s\x1B[39m";
    const startSep = ` [HitCache]${url} `;
    const endSepFn = () => Array(len(startSep) + 1).join("^");
    if (globalConfigMap.ssr) {
      log(hdStyle, startSep);
      log(labelStyle, " Cache ", response);
      log(labelStyle, " Mode  ", cacheMode);
      isRestoreMode && log(labelStyle, " Tag   ", tag);
      log(labelStyle, endSepFn());
    } else {
      cole.groupCollapsed ? cole.groupCollapsed("%cHitCache", "padding: 2px 6px; background: #c4fcd3; color: #53b56d;", url) : log(hdStyle, startSep);
      log("%c[Cache]", titleStyle, response);
      log("%c[Mode]", titleStyle, cacheMode);
      isRestoreMode && log("%c[Tag]", titleStyle, tag);
      log("%c[Method]", titleStyle, methodInstance);
      cole.groupEnd ? cole.groupEnd() : log(labelStyle, endSepFn());
    }
  };
  const hitSourceStringCacheKey = (key2) => `hss.${key2}`;
  const hitSourceRegexpPrefix = "hsr.";
  const hitSourceRegexpCacheKey = (regexpStr) => hitSourceRegexpPrefix + regexpStr;
  const unifiedHitSourceRegexpCacheKey = "$$hsrs";
  const regexpSourceFlagSeparator = "__$<>$__";
  const addItem = (obj, item) => {
    obj[item] = 0;
  };
  const setWithCacheAdapter = async (namespace, key2, data, expireTimestamp, cacheAdapter, hitSource, tag) => {
    if (expireTimestamp > getTime() && data) {
      const methodCacheKey = buildNamespacedCacheKey(namespace, key2);
      await cacheAdapter.set(methodCacheKey, filterItem([data, expireTimestamp === Infinity ? undefinedValue : expireTimestamp, tag], Boolean));
      if (hitSource) {
        const hitSourceKeys = {};
        const hitSourceRegexpSources = [];
        forEach(hitSource, (sourceItem) => {
          const isRegexp = instanceOf(sourceItem, RegExpCls);
          const targetHitSourceKey = isRegexp ? sourceItem.source + (sourceItem.flags ? regexpSourceFlagSeparator + sourceItem.flags : "") : sourceItem;
          if (targetHitSourceKey) {
            if (isRegexp && !hitSourceKeys[targetHitSourceKey]) {
              pushItem(hitSourceRegexpSources, targetHitSourceKey);
            }
            addItem(hitSourceKeys, isRegexp ? hitSourceRegexpCacheKey(targetHitSourceKey) : hitSourceStringCacheKey(targetHitSourceKey));
          }
        });
        const promises = mapItem(objectKeys(hitSourceKeys), async (hitSourceKey) => {
          const targetMethodKeys = await cacheAdapter.get(hitSourceKey) || {};
          addItem(targetMethodKeys, methodCacheKey);
          await cacheAdapter.set(hitSourceKey, targetMethodKeys);
        });
        const saveRegexp = async () => {
          if (len(hitSourceRegexpSources)) {
            const regexpList = await cacheAdapter.get(unifiedHitSourceRegexpCacheKey) || [];
            pushItem(regexpList, ...hitSourceRegexpSources);
            await cacheAdapter.set(unifiedHitSourceRegexpCacheKey, regexpList);
          }
        };
        await PromiseCls.all([...promises, saveRegexp()]);
      }
    }
  };
  const removeWithCacheAdapter = async (namespace, key2, cacheAdapter) => {
    const methodStoreKey = buildNamespacedCacheKey(namespace, key2);
    await cacheAdapter.remove(methodStoreKey);
  };
  const getRawWithCacheAdapter = async (namespace, key2, cacheAdapter, tag) => {
    const storagedData = await cacheAdapter.get(buildNamespacedCacheKey(namespace, key2));
    if (storagedData) {
      const [dataUnused, expireTimestamp, storedTag] = storagedData;
      if (storedTag === tag && (!expireTimestamp || expireTimestamp > getTime())) {
        return storagedData;
      }
      await removeWithCacheAdapter(namespace, key2, cacheAdapter);
    }
  };
  const getWithCacheAdapter = async (namespace, key2, cacheAdapter, tag) => {
    const rawData = await getRawWithCacheAdapter(namespace, key2, cacheAdapter, tag);
    return rawData ? rawData[0] : undefinedValue;
  };
  const hitTargetCacheWithCacheAdapter = async (sourceKey, sourceName, cacheAdapter) => {
    const sourceNameStr = `${sourceName}`;
    const sourceTargetKeyMap = {};
    const hitSourceKey = hitSourceStringCacheKey(sourceKey);
    sourceTargetKeyMap[hitSourceKey] = await cacheAdapter.get(hitSourceKey);
    let unifiedHitSourceRegexpChannel;
    if (sourceName) {
      const hitSourceName = hitSourceStringCacheKey(sourceNameStr);
      sourceTargetKeyMap[hitSourceName] = await cacheAdapter.get(hitSourceName);
      unifiedHitSourceRegexpChannel = await cacheAdapter.get(unifiedHitSourceRegexpCacheKey);
      const matchedRegexpStrings = [];
      if (unifiedHitSourceRegexpChannel && len(unifiedHitSourceRegexpChannel)) {
        forEach(unifiedHitSourceRegexpChannel, (regexpStr) => {
          const [source, flag] = regexpStr.split(regexpSourceFlagSeparator);
          if (newInstance(RegExpCls, source, flag).test(sourceNameStr)) {
            pushItem(matchedRegexpStrings, regexpStr);
          }
        });
        await PromiseCls.all(mapItem(matchedRegexpStrings, async (regexpString) => {
          const hitSourceRegexpString = hitSourceRegexpCacheKey(regexpString);
          sourceTargetKeyMap[hitSourceRegexpString] = await cacheAdapter.get(hitSourceRegexpString);
        }));
      }
    }
    const removeWithTargetKey = async (targetKey) => {
      try {
        await cacheAdapter.remove(targetKey);
        for (const sourceKey2 in sourceTargetKeyMap) {
          const targetKeys = sourceTargetKeyMap[sourceKey2];
          if (targetKeys) {
            deleteAttr(targetKeys, targetKey);
          }
        }
      } catch (_a) {
      }
    };
    const accessedKeys = {};
    await PromiseCls.all(mapItem(objectKeys(sourceTargetKeyMap), async (sourceKey2) => {
      const targetKeys = sourceTargetKeyMap[sourceKey2];
      if (targetKeys) {
        const removingPromises = [];
        for (const key2 in targetKeys) {
          if (!accessedKeys[key2]) {
            addItem(accessedKeys, key2);
            pushItem(removingPromises, removeWithTargetKey(key2));
          }
        }
        await PromiseCls.all(removingPromises);
      }
    }));
    const unifiedHitSourceRegexpChannelLen = len(unifiedHitSourceRegexpChannel || []);
    await PromiseCls.all(mapItem(objectKeys(sourceTargetKeyMap), async (sourceKey2) => {
      const targetKeys = sourceTargetKeyMap[sourceKey2];
      if (targetKeys) {
        if (len(objectKeys(targetKeys))) {
          await cacheAdapter.set(sourceKey2, targetKeys);
        } else {
          await cacheAdapter.remove(sourceKey2);
          if (sourceKey2.includes(hitSourceRegexpPrefix) && unifiedHitSourceRegexpChannel) {
            unifiedHitSourceRegexpChannel = filterItem(unifiedHitSourceRegexpChannel, (rawRegexpStr) => hitSourceRegexpCacheKey(rawRegexpStr) !== sourceKey2);
          }
        }
      }
    }));
    if (unifiedHitSourceRegexpChannelLen !== len(unifiedHitSourceRegexpChannel || [])) {
      await cacheAdapter.set(unifiedHitSourceRegexpCacheKey, unifiedHitSourceRegexpChannel);
    }
  };
  var cloneMethod = (methodInstance) => {
    const { data, config: config2 } = methodInstance;
    const newConfig = { ...config2 };
    const { headers = {}, params = {} } = newConfig;
    const ctx = getContext(methodInstance);
    newConfig.headers = { ...headers };
    newConfig.params = { ...params };
    const newMethod = newInstance(Method, methodInstance.type, ctx, methodInstance.url, newConfig, data);
    return objAssign(newMethod, {
      ...methodInstance,
      config: newConfig
    });
  };
  const hitCacheBySource = async (sourceMethod) => {
    const { autoHitCache } = globalConfigMap;
    const { l1Cache, l2Cache } = getContext(sourceMethod);
    const sourceKey = getMethodInternalKey(sourceMethod);
    const { name: sourceName } = getConfig(sourceMethod);
    const cacheAdaptersInvolved = {
      global: [...usingL1CacheAdapters, ...usingL2CacheAdapters],
      self: [l1Cache, l2Cache],
      close: []
    }[autoHitCache];
    if (cacheAdaptersInvolved && len(cacheAdaptersInvolved)) {
      await PromiseCls.all(mapItem(cacheAdaptersInvolved, (involvedCacheAdapter) => hitTargetCacheWithCacheAdapter(sourceKey, sourceName, involvedCacheAdapter)));
    }
  };
  const adapterReturnMap = {};
  function sendRequest(methodInstance, forceRequest) {
    let fromCache = trueValue;
    let requestAdapterCtrlsPromiseResolveFn;
    const requestAdapterCtrlsPromise = newInstance(PromiseCls, (resolve) => {
      requestAdapterCtrlsPromiseResolveFn = resolve;
    });
    const response = async () => {
      const { beforeRequest = noop, responded, requestAdapter, cacheLogger } = getOptions(methodInstance);
      const methodKey = getMethodInternalKey(methodInstance);
      const { s: toStorage, t: tag, m: cacheMode, e: expireMilliseconds } = getLocalCacheConfigParam(methodInstance);
      const { id, l1Cache, l2Cache, snapshots } = getContext(methodInstance);
      const { cacheFor } = getConfig(methodInstance);
      const { hitSource: methodHitSource } = methodInstance;
      let cachedResponse = await (isFn(cacheFor) ? cacheFor() : (
        // If it is a forced request, skip the step of getting it from the cache
        // Otherwise, determine whether to use cached data
        forceRequest ? undefinedValue : getWithCacheAdapter(id, methodKey, l1Cache)
      ));
      if (cacheMode === STORAGE_RESTORE && !cachedResponse && !forceRequest) {
        const rawL2CacheData = await getRawWithCacheAdapter(id, methodKey, l2Cache, tag);
        if (rawL2CacheData) {
          const [l2Response, l2ExpireMilliseconds] = rawL2CacheData;
          await setWithCacheAdapter(id, methodKey, l2Response, l2ExpireMilliseconds, l1Cache, methodHitSource);
          cachedResponse = l2Response;
        }
      }
      const clonedMethod = cloneMethod(methodInstance);
      await beforeRequest(clonedMethod);
      const { baseURL, url: newUrl, type, data } = clonedMethod;
      const { params = {}, headers = {}, transform = $self, shareRequest } = getConfig(clonedMethod);
      const namespacedAdapterReturnMap = adapterReturnMap[id] = adapterReturnMap[id] || {};
      const requestBody = clonedMethod.data;
      const requestBodyIsSpecial = isSpecialRequestBody(requestBody);
      let requestAdapterCtrls = requestBodyIsSpecial ? undefinedValue : namespacedAdapterReturnMap[methodKey];
      let responseSuccessHandler = $self;
      let responseErrorHandler = undefinedValue;
      let responseCompleteHandler = noop;
      if (isFn(responded)) {
        responseSuccessHandler = responded;
      } else if (isPlainObject(responded)) {
        const { onSuccess: successHandler, onError: errorHandler, onComplete: completeHandler } = responded;
        responseSuccessHandler = isFn(successHandler) ? successHandler : responseSuccessHandler;
        responseErrorHandler = isFn(errorHandler) ? errorHandler : responseErrorHandler;
        responseCompleteHandler = isFn(completeHandler) ? completeHandler : responseCompleteHandler;
      }
      if (cachedResponse !== undefinedValue) {
        requestAdapterCtrlsPromiseResolveFn();
        clonedMethod.fromCache = trueValue;
        sloughFunction(cacheLogger, defaultCacheLogger)(cachedResponse, clonedMethod, cacheMode, tag);
        responseCompleteHandler(clonedMethod);
        return cachedResponse;
      }
      fromCache = falseValue;
      if (!shareRequest || !requestAdapterCtrls) {
        const ctrls = requestAdapter({
          url: buildCompletedURL(baseURL, newUrl, params),
          type,
          data,
          headers
        }, clonedMethod);
        requestAdapterCtrls = namespacedAdapterReturnMap[methodKey] = ctrls;
      }
      requestAdapterCtrlsPromiseResolveFn(requestAdapterCtrls);
      const handleResponseTask = async (handlerReturns, responseHeaders, callInSuccess = trueValue) => {
        const responseData = await handlerReturns;
        const transformedData = await transform(responseData, responseHeaders || {});
        snapshots.save(methodInstance);
        try {
          await hitCacheBySource(clonedMethod);
        } catch (_a) {
        }
        const toCache = !requestBody || !requestBodyIsSpecial;
        if (toCache && callInSuccess) {
          try {
            await PromiseCls.all([
              setWithCacheAdapter(id, methodKey, transformedData, expireMilliseconds(MEMORY), l1Cache, methodHitSource),
              toStorage && setWithCacheAdapter(id, methodKey, transformedData, expireMilliseconds(STORAGE_RESTORE), l2Cache, methodHitSource, tag)
            ]);
          } catch (_b) {
          }
        }
        return deepClone(transformedData);
      };
      return promiseFinally(promiseThen(PromiseCls.all([requestAdapterCtrls.response(), requestAdapterCtrls.headers()]), ([rawResponse, rawHeaders]) => {
        deleteAttr(namespacedAdapterReturnMap, methodKey);
        return handleResponseTask(responseSuccessHandler(rawResponse, clonedMethod), rawHeaders);
      }, (error) => {
        deleteAttr(namespacedAdapterReturnMap, methodKey);
        return isFn(responseErrorHandler) ? (
          // When responding to an error, if no error is thrown, the successful response process will be processed, but the data will not be cached.
          handleResponseTask(responseErrorHandler(error, clonedMethod), undefinedValue, falseValue)
        ) : promiseReject(error);
      }), () => {
        responseCompleteHandler(clonedMethod);
      });
    };
    return {
      // request interrupt function
      abort: () => {
        promiseThen(requestAdapterCtrlsPromise, (requestAdapterCtrls) => requestAdapterCtrls && requestAdapterCtrls.abort());
      },
      onDownload: (handler) => {
        promiseThen(requestAdapterCtrlsPromise, (requestAdapterCtrls) => requestAdapterCtrls && requestAdapterCtrls.onDownload && requestAdapterCtrls.onDownload(handler));
      },
      onUpload: (handler) => {
        promiseThen(requestAdapterCtrlsPromise, (requestAdapterCtrls) => requestAdapterCtrls && requestAdapterCtrls.onUpload && requestAdapterCtrls.onUpload(handler));
      },
      response,
      fromCache: () => fromCache
    };
  }
  const offEventCallback = (offHandler, handlers) => () => {
    const index = handlers.indexOf(offHandler);
    index >= 0 && handlers.splice(index, 1);
  };
  class Method {
    constructor(type, context, url, config2, data) {
      this.dhs = [];
      this.uhs = [];
      this.fromCache = undefinedValue;
      const abortRequest = () => {
        abortRequest.a();
      };
      abortRequest.a = noop;
      const instance = this;
      const contextOptions = getContextOptions(context);
      instance.abort = abortRequest;
      instance.baseURL = contextOptions.baseURL || "";
      instance.url = url;
      instance.type = type;
      instance.context = context;
      const contextConcatConfig = {};
      const mergedLocalCacheKey = "cacheFor";
      const globalLocalCache = isPlainObject(contextOptions[mergedLocalCacheKey]) ? contextOptions[mergedLocalCacheKey][type] : undefinedValue;
      const hitSource = config2 && config2.hitSource;
      forEach(["timeout", "shareRequest"], (mergedKey) => {
        if (contextOptions[mergedKey] !== undefinedValue) {
          contextConcatConfig[mergedKey] = contextOptions[mergedKey];
        }
      });
      if (globalLocalCache !== undefinedValue) {
        contextConcatConfig[mergedLocalCacheKey] = globalLocalCache;
      }
      if (hitSource) {
        instance.hitSource = mapItem(isArray(hitSource) ? hitSource : [hitSource], (sourceItem) => instanceOf(sourceItem, Method) ? getMethodInternalKey(sourceItem) : sourceItem);
        deleteAttr(config2, "hitSource");
      }
      instance.config = {
        ...contextConcatConfig,
        headers: {},
        params: {},
        ...config2 || {}
      };
      instance.data = data;
      instance.meta = config2 ? config2.meta : instance.meta;
      instance.key = instance.generateKey();
    }
    /**
     * Bind download progress callback function
     * @param progressHandler Download progress callback function
     * @version 2.17.0
     * @return unbind function
     */
    onDownload(downloadHandler) {
      pushItem(this.dhs, downloadHandler);
      return offEventCallback(downloadHandler, this.dhs);
    }
    /**
     * Bind upload progress callback function
     * @param progressHandler Upload progress callback function
     * @version 2.17.0
     * @return unbind function
     */
    onUpload(uploadHandler) {
      pushItem(this.uhs, uploadHandler);
      return offEventCallback(uploadHandler, this.uhs);
    }
    /**
     * Send a request through a method instance and return a promise object
     */
    send(forceRequest = falseValue) {
      const instance = this;
      const { response, onDownload, onUpload, abort, fromCache } = sendRequest(instance, forceRequest);
      len(instance.dhs) > 0 && onDownload((loaded, total) => forEach(instance.dhs, (handler) => handler({ loaded, total })));
      len(instance.uhs) > 0 && onUpload((loaded, total) => forEach(instance.uhs, (handler) => handler({ loaded, total })));
      instance.abort.a = abort;
      instance.fromCache = undefinedValue;
      instance.promise = promiseThen(response(), (r2) => {
        instance.fromCache = fromCache();
        return r2;
      });
      return instance.promise;
    }
    /**
     * Set the method name, if there is already a name it will be overwritten
     * @param name method name
     */
    setName(name) {
      getConfig(this).name = name;
    }
    generateKey() {
      return key(this);
    }
    /**
     * Bind callbacks for resolve and/or reject Promise
     * @param onfulfilled The callback to be executed when resolving the Promise
     * @param onrejected The callback to be executed when the Promise is rejected
     * @returns Returns a Promise for executing any callbacks
     */
    then(onfulfilled, onrejected) {
      return promiseThen(this.send(), onfulfilled, onrejected);
    }
    /**
     * Bind a callback only for reject Promise
     * @param onrejected The callback to be executed when the Promise is rejected
     * @returns Returns a Promise that completes the callback
     */
    catch(onrejected) {
      return promiseCatch(this.send(), onrejected);
    }
    /**
     * Bind a callback that is called when the Promise is resolved (resolve or reject)
     * @param onfinally Callback executed when Promise is resolved (resolve or reject).
     * @return Returns a Promise that completes the callback.
     */
    finally(onfinally) {
      return promiseFinally(this.send(), onfinally);
    }
  }
  const myAssert = createAssert();
  const EVENT_SUCCESS_KEY = "success";
  const memoryAdapter = () => {
    let l1Cache = {};
    const l1CacheEmitter = createEventManager();
    const adapter = {
      set(key2, value) {
        l1Cache[key2] = value;
        l1CacheEmitter.emit(EVENT_SUCCESS_KEY, { type: "set", key: key2, value, container: l1Cache });
      },
      get: (key2) => {
        const value = l1Cache[key2];
        l1CacheEmitter.emit(EVENT_SUCCESS_KEY, { type: "get", key: key2, value, container: l1Cache });
        return value;
      },
      remove(key2) {
        deleteAttr(l1Cache, key2);
        l1CacheEmitter.emit(EVENT_SUCCESS_KEY, { type: "remove", key: key2, container: l1Cache });
      },
      clear: () => {
        l1Cache = {};
        l1CacheEmitter.emit(EVENT_SUCCESS_KEY, { type: "clear", key: "", container: l1Cache });
      },
      emitter: l1CacheEmitter
    };
    return adapter;
  };
  const localStorageAdapter = () => {
    const l2CacheEmitter = createEventManager();
    const instance = localStorage;
    const adapter = {
      set: (key2, value) => {
        instance.setItem(key2, JSONStringify(value));
        l2CacheEmitter.emit(EVENT_SUCCESS_KEY, { type: "set", key: key2, value, container: instance });
      },
      get: (key2) => {
        const data = instance.getItem(key2);
        const value = data ? JSONParse(data) : data;
        l2CacheEmitter.emit(EVENT_SUCCESS_KEY, { type: "get", key: key2, value, container: instance });
        return value;
      },
      remove: (key2) => {
        instance.removeItem(key2);
        l2CacheEmitter.emit(EVENT_SUCCESS_KEY, { type: "remove", key: key2, container: instance });
      },
      clear: () => {
        instance.clear();
        l2CacheEmitter.emit(EVENT_SUCCESS_KEY, { type: "clear", key: "", container: instance });
      },
      emitter: l2CacheEmitter
    };
    return adapter;
  };
  const placeholderAdapter = () => {
    const l2CacheNotDefinedAssert = () => {
      myAssert(falseValue, "l2Cache is not defined.");
    };
    return {
      set: () => {
        l2CacheNotDefinedAssert();
      },
      get: () => {
        l2CacheNotDefinedAssert();
        return undefinedValue;
      },
      remove: () => {
        l2CacheNotDefinedAssert();
      },
      clear: () => {
      }
    };
  };
  const SetCls = Set;
  class MethodSnapshotContainer {
    constructor(capacity) {
      this.records = {};
      this.occupy = 0;
      myAssert(capacity >= 0, "expected snapshots limit to be >= 0");
      this.capacity = capacity;
    }
    /**
     * Save method instance snapshot
     * @param methodInstance method instance
     */
    save(methodInstance) {
      const { name } = getConfig(methodInstance);
      const { records, occupy, capacity } = this;
      if (name && occupy < capacity) {
        const targetSnapshots = records[name] = records[name] || newInstance(SetCls);
        targetSnapshots.add(methodInstance);
        this.occupy += 1;
      }
    }
    /**
     * Get a Method instance snapshot, which will filter out the corresponding Method instance based on the matcher
     * @param matcher Matching snapshot name, which can be a string or regular expression, or an object with a filter function
     * @returns Array of matched Method instance snapshots
     */
    match(matcher, matchAll = true) {
      let nameString;
      let nameReg;
      let matchHandler;
      let nameMatcher = matcher;
      if (isPlainObject(matcher)) {
        nameMatcher = matcher.name;
        matchHandler = matcher.filter;
      }
      if (instanceOf(nameMatcher, RegExpCls)) {
        nameReg = nameMatcher;
      } else if (isString(nameMatcher)) {
        nameString = nameMatcher;
      }
      const { records } = this;
      let matches = newInstance(SetCls);
      if (nameString) {
        matches = records[nameString] || matches;
      } else if (nameReg) {
        forEach(filterItem(objectKeys(records), (methodName) => nameReg.test(methodName)), (methodName) => {
          records[methodName].forEach((method) => matches.add(method));
        });
      }
      const fromMatchesArray = isFn(matchHandler) ? filterItem([...matches], matchHandler) : [...matches];
      return matchAll ? fromMatchesArray : fromMatchesArray[0];
    }
  }
  const typeGet = "GET";
  const typeHead = "HEAD";
  const typePost = "POST";
  const typePut = "PUT";
  const typePatch = "PATCH";
  const typeDelete = "DELETE";
  const typeOptions = "OPTIONS";
  const defaultAlovaOptions = {
    /**
     * GET requests are cached for 5 minutes (300000 milliseconds) by default, and other requests are not cached by default.
     */
    cacheFor: {
      [typeGet]: 3e5
    },
    /**
     * Share requests default to true
     */
    shareRequest: trueValue,
    /**
     * Number of method snapshots, default is 1000
     */
    snapshots: 1e3
  };
  let idCount = 0;
  class Alova {
    constructor(options) {
      var _a, _b;
      const instance = this;
      instance.id = (options.id || (idCount += 1)).toString();
      instance.l1Cache = options.l1Cache || memoryAdapter();
      instance.l2Cache = options.l2Cache || (typeof localStorage !== "undefined" ? localStorageAdapter() : placeholderAdapter());
      instance.options = {
        ...defaultAlovaOptions,
        ...options
      };
      instance.snapshots = newInstance(MethodSnapshotContainer, (_b = (_a = options.snapshots) !== null && _a !== void 0 ? _a : defaultAlovaOptions.snapshots) !== null && _b !== void 0 ? _b : 0);
    }
    Get(url, config2) {
      return newInstance(Method, typeGet, this, url, config2);
    }
    Post(url, data, config2) {
      return newInstance(Method, typePost, this, url, config2, data);
    }
    Delete(url, data, config2) {
      return newInstance(Method, typeDelete, this, url, config2, data);
    }
    Put(url, data, config2) {
      return newInstance(Method, typePut, this, url, config2, data);
    }
    Head(url, config2) {
      return newInstance(Method, typeHead, this, url, config2);
    }
    Patch(url, data, config2) {
      return newInstance(Method, typePatch, this, url, config2, data);
    }
    Options(url, config2) {
      return newInstance(Method, typeOptions, this, url, config2);
    }
  }
  let boundStatesHook = undefinedValue;
  const usingL1CacheAdapters = [];
  const usingL2CacheAdapters = [];
  const createAlova = (options) => {
    const alovaInstance2 = newInstance(Alova, options);
    const newStatesHook = alovaInstance2.options.statesHook;
    if (boundStatesHook) {
      myAssert(boundStatesHook === newStatesHook, "expected to use the same `statesHook`");
    }
    boundStatesHook = newStatesHook;
    const { l1Cache, l2Cache } = alovaInstance2;
    !usingL1CacheAdapters.includes(l1Cache) && pushItem(usingL1CacheAdapters, l1Cache);
    !usingL2CacheAdapters.includes(l2Cache) && pushItem(usingL2CacheAdapters, l2Cache);
    return alovaInstance2;
  };
  const isBodyData = (data) => isString(data) || isSpecialRequestBody(data);
  function adapterFetch() {
    return (elements, method) => {
      const adapterConfig = method.config;
      const timeout = adapterConfig.timeout || 0;
      const ctrl = new AbortController();
      const { data, headers } = elements;
      const isContentTypeSet = /content-type/i.test(ObjectCls.keys(headers).join());
      const isDataFormData = data && data.toString() === "[object FormData]";
      if (!isContentTypeSet && !isDataFormData) {
        headers["Content-Type"] = "application/json;charset=UTF-8";
      }
      const fetchPromise = fetch(elements.url, {
        ...adapterConfig,
        method: elements.type,
        signal: ctrl.signal,
        body: isBodyData(data) ? data : JSONStringify(data)
      });
      let abortTimer;
      let isTimeout = falseValue;
      if (timeout > 0) {
        abortTimer = setTimeoutFn(() => {
          isTimeout = trueValue;
          ctrl.abort();
        }, timeout);
      }
      return {
        response: () => fetchPromise.then((response) => {
          clearTimeoutTimer(abortTimer);
          return response.clone();
        }, (err) => promiseReject(isTimeout ? newInstance(Error, "fetchError: network timeout") : err)),
        // The then in the Headers function needs to catch exceptions, otherwise the correct error object will not be obtained internally.
        headers: () => fetchPromise.then(({ headers: responseHeaders }) => responseHeaders, () => ({})),
        // Due to limitations of the node fetch library, this code cannot be unit tested, but it has passed the test in the browser.
        /* c8 ignore start */
        onDownload: async (cb) => {
          let isAborted = falseValue;
          const response = await fetchPromise.catch(() => {
            isAborted = trueValue;
          });
          if (!response)
            return;
          const { headers: responseHeaders, body } = response.clone();
          const reader = body ? body.getReader() : undefinedValue;
          const total = Number(responseHeaders.get("Content-Length") || responseHeaders.get("content-length") || 0);
          if (total <= 0) {
            return;
          }
          let loaded = 0;
          if (reader) {
            const pump = () => reader.read().then(({ done, value = new Uint8Array() }) => {
              if (done || isAborted) {
                isAborted && cb(total, 0);
              } else {
                loaded += value.byteLength;
                cb(total, loaded);
                return pump();
              }
            });
            pump();
          }
        },
        onUpload() {
          console.error("fetch API does'nt support uploading progress. please consider to change `@alova/adapter-xhr` or `@alova/adapter-axios`");
        },
        /* c8 ignore stop */
        abort: () => {
          ctrl.abort();
          clearTimeoutTimer(abortTimer);
        }
      };
    };
  }
  const alovaInstance = createAlova({
    baseURL: "",
    timeout: 1e4,
    requestAdapter: adapterFetch(),
    // 响应拦截
    responded: {
      onSuccess: async (response, method) => {
        const json = await response.json();
        return json;
      },
      // 请求失败的拦截器
      // 请求错误时将会进入该拦截器。
      // 第二个参数为当前请求的method实例,你可以用它同步请求前后的配置信息
      onError: (error, method) => {
        return error;
      }
    }
  });
  const xunlei = {
    share: (data, config2) => {
      return alovaInstance.Post("https://api-pan.xunlei.com/drive/v1/share", data, config2);
    }
  };
  var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)();
  var _unsafeWindow = /* @__PURE__ */ (() => typeof unsafeWindow != "undefined" ? unsafeWindow : void 0)();
  const uc = {
    // 获取任务ID 第一步
    getTaskId: (data) => {
      return new Promise(
        (resolve, reject) => {
          _GM_xmlhttpRequest({
            method: "post",
            url: "https://pc-api.uc.cn/1/clouddrive/share?pr=UCBrowser&fr=pc",
            headers: {
              accept: "application/json, text/plain, */*"
            },
            data: JSON.stringify(data),
            onload: ({ response }) => {
              var _a, _b, _c, _d;
              const { data: data2 = {} } = JSON.parse(response) || {};
              resolve({
                task_id: (data2 == null ? void 0 : data2.task_id) ? data2 == null ? void 0 : data2.task_id : (_b = (_a = data2 == null ? void 0 : data2.task_resp) == null ? void 0 : _a.data) == null ? void 0 : _b.task_id,
                share_id: ((_d = (_c = data2 == null ? void 0 : data2.task_resp) == null ? void 0 : _c.data) == null ? void 0 : _d.share_id) ?? ""
              });
            },
            onerror: (res) => {
              reject(res);
            }
          });
        }
      );
    },
    //获取分享链接 第二步
    getShareId: (taskId, time = 0) => {
      return new Promise((resolve, reject) => {
        _GM_xmlhttpRequest({
          method: "get",
          url: `https://pc-api.uc.cn/1/clouddrive/task?pr=UCBrowser&fr=pc&task_id=${taskId}&retry_index=${time}`,
          headers: {
            accept: "application/json, text/plain, */*"
          },
          onload: ({ response }) => {
            const { data = {} } = JSON.parse(response) || {};
            resolve({
              share_id: (data == null ? void 0 : data.share_id) ?? ""
            });
          },
          onerror: (res) => {
            reject(res);
          }
        });
      });
    },
    // 获取分享信息 第三步
    getShareInfo: (share_id) => {
      return new Promise(
        (resolve, reject) => {
          _GM_xmlhttpRequest({
            method: "post",
            url: "https://pc-api.uc.cn/1/clouddrive/share/password?pr=UCBrowser&fr=pc",
            data: JSON.stringify({
              share_id
            }),
            onload: ({ response }) => {
              const { data } = JSON.parse(response) || {};
              const { share_url = "", passcode = "" } = data || {};
              resolve({
                share_url,
                passcode
              });
            },
            onerror: (res) => {
              reject(res);
            }
          });
        }
      );
    }
  };
  const baidu = {
    //获取分享链接
    share: (url, data, params, config2) => {
      return alovaInstance.Post(url, new URLSearchParams(data), {
        params: {
          channel: "chunlei",
          clienttype: "0",
          app_id: "250528",
          //未知-好像是定值
          web: 1,
          ...params
        },
        ...config2
      });
    }
  };
  const tianyi = {
    //获取分享链接
    share: (paramsData) => {
      return alovaInstance.Get(
        window.location.origin + "/api/open/share/createShareLink.action",
        {
          params: {
            ...paramsData
          },
          headers: {
            accept: "application/json;charset=UTF-8"
          }
        }
      );
    }
  };
  const quark = {
    // 获取任务ID 第一步
    getTaskId: (data) => {
      return new Promise((resolve, reject) => {
        _GM_xmlhttpRequest({
          method: "post",
          url: "https://drive-pc.quark.cn/1/clouddrive/share?pr=ucpro&fr=pc",
          headers: {
            accept: "application/json, text/plain, */*",
            "content-type": "application/json"
          },
          data: JSON.stringify(data),
          onload: ({ response }) => {
            const { data: data2 } = JSON.parse(response) || {};
            const task_id = (data2 == null ? void 0 : data2.task_id) ?? "";
            resolve({
              task_id
            });
          },
          onerror: (res) => {
            reject(res);
          }
        });
      });
    },
    //获取分享链接 第二步
    getShareId: (taskId, retry_index = 0) => {
      return new Promise((resolve, reject) => {
        _GM_xmlhttpRequest({
          method: "get",
          url: `https://drive-pc.quark.cn/1/clouddrive/task?pr=ucpro&fr=pc&task_id=${taskId}&retry_index=${retry_index}`,
          onload: ({ response }) => {
            const { data } = JSON.parse(response) || {};
            const share_id = (data == null ? void 0 : data.share_id) ?? "";
            resolve({
              share_id
            });
          },
          onerror: (res) => {
            reject(res);
          }
        });
      });
    },
    // 获取分享信息 第三步
    getShareInfo: (share_id) => {
      return new Promise(
        (resolve, reject) => {
          _GM_xmlhttpRequest({
            method: "post",
            url: "https://drive-pc.quark.cn/1/clouddrive/share/password?pr=ucpro&fr=pc",
            data: JSON.stringify({
              share_id
            }),
            onload: ({ response }) => {
              const { data } = JSON.parse(response) || {};
              const { share_url = "", passcode = "" } = data || {};
              resolve({
                share_url,
                passcode
              });
            },
            onerror: (res) => {
              reject(res);
            }
          });
        }
      );
    }
  };
  const alipan = {
    //获取分享链接
    share: (data) => {
      const token2 = JSON.parse(
        localStorage.getItem("token") ?? `{}`
      );
      return alovaInstance.Post(
        "https://api.aliyundrive.com/adrive/v2/share_link/create",
        data,
        {
          headers: {
            authorization: `${token2.token_type} ${token2.access_token}`
          }
        }
      );
    }
  };
  const yidong139 = {
    share: (data, auth) => {
      return alovaInstance.Post(
        `${window.location.origin}/orchestration/personalCloud-rebuild/outlink/v1.0/getOutLink`,
        data,
        {
          headers: {
            Accept: "application/json, text/plain, */*",
            "Content-Type": "application/json;charset=UTF-8",
            Authorization: auth
          }
        }
      );
    }
  };
  const lanzou = {
    //获取分享链接
    share: (data) => {
      return alovaInstance.Post(
        `${window.location.origin}/doupload.php`,
        new URLSearchParams(data),
        {
          headers: {
            "Content-Type": "application/x-www-form-urlencoded"
          }
        }
      );
    }
  };
  const yun115 = {
    //获取文件夹大小
    getFolderSize: (id) => {
      return new Promise((resolve, reject) => {
        _GM_xmlhttpRequest({
          method: "get",
          url: `https://webapi.115.com/category/get?cid=${id}`,
          onload: ({ response }) => {
            const result = JSON.parse(response);
            if (!result.error) {
              resolve((result == null ? void 0 : result.size) ?? "");
            } else {
              reject(result);
            }
          },
          onerror: (err) => {
            reject(err);
          }
        });
      });
    },
    //获取分享链接
    share: (data) => {
      return new Promise((resolve, reject) => {
        _GM_xmlhttpRequest({
          method: "post",
          url: "https://webapi.115.com/share/send",
          data,
          headers: {
            Accept: "application/json, text/javascript, */*; q=0.01"
          },
          onload: ({ response }) => {
            const result = JSON.parse(response);
            if (!result.error) {
              resolve(result);
            } else {
              reject(result);
            }
          },
          onerror: (err) => {
            reject(err);
          }
        });
      });
    },
    //更新设置内容
    updateSetting: (data) => {
      return new Promise((resolve, reject) => {
        _GM_xmlhttpRequest({
          method: "post",
          url: "https://webapi.115.com/share/updateshare",
          headers: {
            Accept: "application/json, text/javascript, */*; q=0.01"
          },
          data,
          onload: ({ response }) => {
            const result = JSON.parse(response);
            if (!result.error) {
              resolve(result);
            } else {
              reject(result);
            }
          },
          onerror: (err) => {
            reject(err);
          }
        });
      });
    },
    //更新免登录下载限制
    updateAnonymousDownloadLimit: (data) => {
      return new Promise((resolve, reject) => {
        _GM_xmlhttpRequest({
          method: "post",
          url: "https://webapi.115.com/share/skip_login_down",
          headers: {
            Accept: "application/json, text/javascript, */*; q=0.01"
          },
          data,
          onload: ({ response }) => {
            const result = JSON.parse(response);
            if (!result.error) {
              resolve(result);
            } else {
              reject(result);
            }
          },
          onerror: (res) => {
            reject(res);
          }
        });
      });
    }
  };
  const shareLogicMap = {
    //参考https://alova.js.org/zh-CN/api/alova#alovapost
    //迅雷分享逻辑
    [cloudEnum.xunlei]: xunlei,
    //UC网盘分享逻辑
    [cloudEnum.uc]: uc,
    //百度网盘分享逻辑
    [cloudEnum.baidu]: baidu,
    //天翼云分享逻辑
    [cloudEnum.tianyi]: tianyi,
    //夸克网盘分享逻辑
    [cloudEnum.quark]: quark,
    //阿里云盘分享逻辑
    [cloudEnum.alipan]: alipan,
    //移动139分享逻辑
    [cloudEnum.yidong139]: yidong139,
    //蓝奏云分享逻辑
    [cloudEnum.lanzou]: lanzou,
    //115网盘分享逻辑
    [cloudEnum.yun115]: yun115
  };
  const ContentCopyIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"
  }));
  const HourglassEmptyIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2zm10 14.5V20H8v-3.5l4-4zm-4-5-4-4V4h8v3.5z"
  }));
  const CheckCircleIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"
  }));
  const ErrorIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"
  }));
  const StatusIcon = ({ status }) => {
    switch (status) {
      case "ready":
        return /* @__PURE__ */ jsxRuntimeExports.jsx(HourglassEmptyIcon, { fontSize: "small", color: "disabled" });
      case "sharing":
        return /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 16 });
      case "success":
        return /* @__PURE__ */ jsxRuntimeExports.jsx(CheckCircleIcon, { fontSize: "small", color: "success" });
      case "error":
        return /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorIcon, { fontSize: "small", color: "error" });
    }
  };
  const StatusText = ({
    status,
    message
  }) => {
    const style2 = {
      maxWidth: "200px",
      overflow: "hidden",
      textOverflow: "ellipsis",
      whiteSpace: "nowrap",
      display: "inline-block"
    };
    switch (status) {
      case "ready":
        return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: style2, children: "准备分享" });
      case "sharing":
        return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: style2, children: "分享中..." });
      case "success":
        return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: style2, children: "分享成功" });
      case "error":
        return message ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: style2, children: message }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: style2, children: "分享失败" });
    }
  };
  const ExpandMoreIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"
  }));
  const ExpandLessIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"
  }));
  var ExpireTimeEnum$8 = /* @__PURE__ */ ((ExpireTimeEnum2) => {
    ExpireTimeEnum2[ExpireTimeEnum2["oneDay"] = 1] = "oneDay";
    ExpireTimeEnum2[ExpireTimeEnum2["twoDay"] = 2] = "twoDay";
    ExpireTimeEnum2[ExpireTimeEnum2["threeDay"] = 3] = "threeDay";
    ExpireTimeEnum2[ExpireTimeEnum2["fourDay"] = 4] = "fourDay";
    ExpireTimeEnum2[ExpireTimeEnum2["fiveDay"] = 5] = "fiveDay";
    ExpireTimeEnum2[ExpireTimeEnum2["sixDay"] = 6] = "sixDay";
    ExpireTimeEnum2[ExpireTimeEnum2["sevenDay"] = 7] = "sevenDay";
    ExpireTimeEnum2[ExpireTimeEnum2["forever"] = -1] = "forever";
    return ExpireTimeEnum2;
  })(ExpireTimeEnum$8 || {});
  var ExtractEnum$1 = /* @__PURE__ */ ((ExtractEnum2) => {
    ExtractEnum2[ExtractEnum2["forever"] = -1] = "forever";
    ExtractEnum2[ExtractEnum2["One"] = 1] = "One";
    ExtractEnum2[ExtractEnum2["Two"] = 2] = "Two";
    ExtractEnum2[ExtractEnum2["Three"] = 3] = "Three";
    ExtractEnum2[ExtractEnum2["Four"] = 4] = "Four";
    ExtractEnum2[ExtractEnum2["Five"] = 5] = "Five";
    ExtractEnum2[ExtractEnum2["Six"] = 6] = "Six";
    ExtractEnum2[ExtractEnum2["Seven"] = 7] = "Seven";
    ExtractEnum2[ExtractEnum2["Eight"] = 8] = "Eight";
    ExtractEnum2[ExtractEnum2["Nine"] = 9] = "Nine";
    ExtractEnum2[ExtractEnum2["Ten"] = 10] = "Ten";
    ExtractEnum2[ExtractEnum2["Eleven"] = 11] = "Eleven";
    ExtractEnum2[ExtractEnum2["Twelve"] = 12] = "Twelve";
    ExtractEnum2[ExtractEnum2["Thirteen"] = 13] = "Thirteen";
    ExtractEnum2[ExtractEnum2["Fourteen"] = 14] = "Fourteen";
    ExtractEnum2[ExtractEnum2["Fifteen"] = 15] = "Fifteen";
    ExtractEnum2[ExtractEnum2["Sixteen"] = 16] = "Sixteen";
    ExtractEnum2[ExtractEnum2["Seventeen"] = 17] = "Seventeen";
    ExtractEnum2[ExtractEnum2["Eighteen"] = 18] = "Eighteen";
    ExtractEnum2[ExtractEnum2["Nineteen"] = 19] = "Nineteen";
    ExtractEnum2[ExtractEnum2["Twenty"] = 20] = "Twenty";
    return ExtractEnum2;
  })(ExtractEnum$1 || {});
  const extractOptions$1 = [
    { label: "不限", value: ExtractEnum$1.forever },
    { label: "1天", value: ExtractEnum$1.One },
    { label: "2天", value: ExtractEnum$1.Two },
    { label: "3天", value: ExtractEnum$1.Three },
    { label: "4天", value: ExtractEnum$1.Four },
    { label: "5天", value: ExtractEnum$1.Five },
    { label: "6天", value: ExtractEnum$1.Six },
    { label: "7天", value: ExtractEnum$1.Seven },
    { label: "8天", value: ExtractEnum$1.Eight },
    { label: "9天", value: ExtractEnum$1.Nine },
    { label: "10天", value: ExtractEnum$1.Ten },
    { label: "11天", value: ExtractEnum$1.Eleven },
    { label: "12天", value: ExtractEnum$1.Twelve },
    { label: "13天", value: ExtractEnum$1.Thirteen },
    { label: "14天", value: ExtractEnum$1.Fourteen },
    { label: "15天", value: ExtractEnum$1.Fifteen },
    { label: "16天", value: ExtractEnum$1.Sixteen },
    { label: "17天", value: ExtractEnum$1.Seventeen },
    { label: "18天", value: ExtractEnum$1.Eighteen },
    { label: "19天", value: ExtractEnum$1.Nineteen },
    { label: "20天", value: ExtractEnum$1.Twenty }
  ];
  const expireTimeOptions$4 = [
    { label: "不限", value: ExpireTimeEnum$8.forever },
    { label: "1天", value: ExpireTimeEnum$8.oneDay },
    { label: "2天", value: ExpireTimeEnum$8.twoDay },
    { label: "3天", value: ExpireTimeEnum$8.threeDay },
    { label: "4天", value: ExpireTimeEnum$8.fourDay },
    { label: "5天", value: ExpireTimeEnum$8.fiveDay },
    { label: "6天", value: ExpireTimeEnum$8.sixDay },
    { label: "7天", value: ExpireTimeEnum$8.sevenDay }
  ];
  const sleep = (timeout) => {
    return new Promise((resolve) => {
      setTimeout(resolve, timeout);
    });
  };
  var FileSaver_min$1 = { exports: {} };
  var FileSaver_min = FileSaver_min$1.exports;
  var hasRequiredFileSaver_min;
  function requireFileSaver_min() {
    if (hasRequiredFileSaver_min) return FileSaver_min$1.exports;
    hasRequiredFileSaver_min = 1;
    (function(module, exports) {
      (function(a, b) {
        b();
      })(FileSaver_min, function() {
        function b(a2, b2) {
          return "undefined" == typeof b2 ? b2 = { autoBom: false } : "object" != typeof b2 && (console.warn("Deprecated: Expected third argument to be a object"), b2 = { autoBom: !b2 }), b2.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a2.type) ? new Blob(["\uFEFF", a2], { type: a2.type }) : a2;
        }
        function c(a2, b2, c2) {
          var d2 = new XMLHttpRequest();
          d2.open("GET", a2), d2.responseType = "blob", d2.onload = function() {
            g(d2.response, b2, c2);
          }, d2.onerror = function() {
            console.error("could not download file");
          }, d2.send();
        }
        function d(a2) {
          var b2 = new XMLHttpRequest();
          b2.open("HEAD", a2, false);
          try {
            b2.send();
          } catch (a3) {
          }
          return 200 <= b2.status && 299 >= b2.status;
        }
        function e(a2) {
          try {
            a2.dispatchEvent(new MouseEvent("click"));
          } catch (c2) {
            var b2 = document.createEvent("MouseEvents");
            b2.initMouseEvent("click", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null), a2.dispatchEvent(b2);
          }
        }
        var f = "object" == typeof window && window.window === window ? window : "object" == typeof self && self.self === self ? self : "object" == typeof commonjsGlobal && commonjsGlobal.global === commonjsGlobal ? commonjsGlobal : void 0, a = f.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent), g = f.saveAs || ("object" != typeof window || window !== f ? function() {
        } : "download" in HTMLAnchorElement.prototype && !a ? function(b2, g2, h) {
          var i = f.URL || f.webkitURL, j = document.createElement("a");
          g2 = g2 || b2.name || "download", j.download = g2, j.rel = "noopener", "string" == typeof b2 ? (j.href = b2, j.origin === location.origin ? e(j) : d(j.href) ? c(b2, g2, h) : e(j, j.target = "_blank")) : (j.href = i.createObjectURL(b2), setTimeout(function() {
            i.revokeObjectURL(j.href);
          }, 4e4), setTimeout(function() {
            e(j);
          }, 0));
        } : "msSaveOrOpenBlob" in navigator ? function(f2, g2, h) {
          if (g2 = g2 || f2.name || "download", "string" != typeof f2) navigator.msSaveOrOpenBlob(b(f2, h), g2);
          else if (d(f2)) c(f2, g2, h);
          else {
            var i = document.createElement("a");
            i.href = f2, i.target = "_blank", setTimeout(function() {
              e(i);
            });
          }
        } : function(b2, d2, e2, g2) {
          if (g2 = g2 || open("", "_blank"), g2 && (g2.document.title = g2.document.body.innerText = "downloading..."), "string" == typeof b2) return c(b2, d2, e2);
          var h = "application/octet-stream" === b2.type, i = /constructor/i.test(f.HTMLElement) || f.safari, j = /CriOS\/[\d]+/.test(navigator.userAgent);
          if ((j || h && i || a) && "undefined" != typeof FileReader) {
            var k = new FileReader();
            k.onloadend = function() {
              var a2 = k.result;
              a2 = j ? a2 : a2.replace(/^data:[^;]*;/, "data:attachment/file;"), g2 ? g2.location.href = a2 : location = a2, g2 = null;
            }, k.readAsDataURL(b2);
          } else {
            var l = f.URL || f.webkitURL, m = l.createObjectURL(b2);
            g2 ? g2.location = m : location.href = m, g2 = null, setTimeout(function() {
              l.revokeObjectURL(m);
            }, 4e4);
          }
        });
        f.saveAs = g.saveAs = g, module.exports = g;
      });
    })(FileSaver_min$1);
    return FileSaver_min$1.exports;
  }
  var FileSaver_minExports = requireFileSaver_min();
  const FileSaver = /* @__PURE__ */ getDefaultExportFromCjs(FileSaver_minExports);
  function findLocalStorageKeysWithPrefix(prefix2) {
    let result = {};
    for (const key2 in localStorage) {
      if (localStorage.hasOwnProperty(key2) && key2.startsWith(prefix2)) {
        result = JSON.parse(localStorage[key2]);
      }
    }
    return result;
  }
  function copy(text) {
    return new Promise((resolve, reject) => {
      navigator.clipboard.writeText(text).then(resolve).catch(reject);
    });
  }
  function downloadTxt(text, filename) {
    const a = document.createElement("a");
    a.href = "data:text/plain;charset=utf-8," + encodeURIComponent(text);
    a.download = filename;
    a.click();
  }
  function getTimestamp() {
    return (/* @__PURE__ */ new Date()).getTime();
  }
  function exportXlsxFile(filename, data) {
    if (!data || !(data == null ? void 0 : data.length)) {
      throw new Error("数据不能为空");
    }
    const worksheet = XLSX__namespace.utils.json_to_sheet(data);
    const workbook = XLSX__namespace.utils.book_new();
    XLSX__namespace.utils.book_append_sheet(workbook, worksheet, "Sheet1");
    const wb_out = XLSX__namespace.write(workbook, { type: "buffer" });
    FileSaver.saveAs(
      new Blob([wb_out], { type: "application/octet-stream" }),
      filename
    );
  }
  function generateRandomString(numDigits = 4) {
    const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    const letters = [
      "a",
      "b",
      "c",
      "d",
      "e",
      "f",
      "g",
      "h",
      "i",
      "j",
      "k",
      "l",
      "m",
      "n",
      "o",
      "p",
      "q",
      "r",
      "s",
      "t",
      "u",
      "v",
      "w",
      "x",
      "y",
      "z"
    ];
    let result = "";
    for (let i = 0; i < numDigits; i++) {
      const randomIndex = Math.floor(
        Math.random() * (numbers.length + letters.length)
      );
      if (randomIndex < numbers.length) {
        result += String(numbers[randomIndex]);
      } else {
        result += letters[randomIndex - numbers.length];
      }
    }
    return result;
  }
  function bytesToSize(bytes) {
    if (bytes === 0) return "0B";
    const units = ["B", "KB", "MB", "GB", "TB"];
    const k = 1024;
    const i = Math.floor(Math.log(bytes) / Math.log(k));
    const size = bytes / Math.pow(k, i);
    const sizeStr = size.toFixed(2);
    return sizeStr.endsWith(".00") ? `${parseInt(sizeStr)}${units[i]}` : `${sizeStr}${units[i]}`;
  }
  const FileShareStatusEnum = {
    all: "all",
    ready: "ready",
    sharing: "sharing",
    success: "success",
    error: "error"
  };
  const getShareInfo$1 = () => {
    var _a;
    try {
      const tempDOM = document.querySelector(".pan-web");
      const selectedRowKeys = tempDOM.__vue__.$parent.fileSelected ?? [];
      const allInfo = tempDOM.__vue__.$store.state.drive.all ?? {};
      const selectRowInfos = selectedRowKeys.map((id) => allInfo[id]) ?? [];
      const temp1 = findLocalStorageKeysWithPrefix("captcha_") ?? {};
      const temp2 = findLocalStorageKeysWithPrefix("credentials_") ?? {};
      let temp3 = "";
      for (const key2 in localStorage) {
        if (key2.startsWith("captcha_")) {
          temp3 = key2.slice(key2.indexOf("_") + 1);
        }
      }
      return {
        "x-captcha-token": temp1.token,
        authorization: `${temp2.token_type} ` + temp2.access_token,
        "x-device-id": (_a = localStorage.getItem("deviceid")) == null ? void 0 : _a.slice(6, 38),
        "x-client-id": temp3,
        selectedRowKeys,
        //文件id
        selectRowInfos
        //文件信息
      };
    } catch {
      return {};
    }
  };
  const transformFileInfo = (list) => {
    if (!list || !(list == null ? void 0 : list.length)) return [];
    return list == null ? void 0 : list.map((item) => {
      return {
        id: item == null ? void 0 : item.id,
        fileName: item == null ? void 0 : item.name,
        status: FileShareStatusEnum.ready,
        fileSize: bytesToSize(item == null ? void 0 : item.size) ?? "NA"
      };
    });
  };
  const transformShareInfoForXlsx$9 = (list) => {
    if (!list || !(list == null ? void 0 : list.length)) return [];
    return list == null ? void 0 : list.map((item) => {
      var _a, _b;
      const expireTimeLabel = ((_a = expireTimeOptions$4.find((option) => option.value === (item == null ? void 0 : item.expireTime))) == null ? void 0 : _a.label) || (item == null ? void 0 : item.expireTime) || "";
      const restoreLimitLabel = ((_b = extractOptions$1.find((option) => option.value === (item == null ? void 0 : item.restoreLimit))) == null ? void 0 : _b.label) || (item == null ? void 0 : item.restoreLimit) || "";
      return {
        文件名称: (item == null ? void 0 : item.fileName) ?? "",
        分享链接: (item == null ? void 0 : item.shareLink) ?? "",
        提取码: (item == null ? void 0 : item.extractCode) ?? "",
        有效期: expireTimeLabel,
        有效次数: restoreLimitLabel
      };
    });
  };
  const formatStringForCopyAndDownload$9 = (list) => {
    if (!list || !(list == null ? void 0 : list.length)) return "";
    return list == null ? void 0 : list.map((item) => {
      return `${item == null ? void 0 : item.fileName} ${item == null ? void 0 : item.shareLink} ${item == null ? void 0 : item.extractCode}`;
    }).join("\n");
  };
  const DeleteIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z"
  }));
  const NotificationsContext = /* @__PURE__ */ React__namespace.createContext(null);
  const serverNotifications = {
    show: () => {
      throw new Error("Not supported on server side");
    },
    close: () => {
      throw new Error("Not supported on server side");
    }
  };
  function useNotifications() {
    const context = React__namespace.useContext(NotificationsContext);
    if (context) {
      return context;
    }
    return serverNotifications;
  }
  const CloseIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
  }));
  function useNonNullableContext(context, name) {
    const maybeContext = React__namespace.useContext(context);
    if (maybeContext === null || maybeContext === void 0) {
      throw new Error(`context "${name}" was used without a Provider`);
    }
    return maybeContext;
  }
  const LocalizationContext = /* @__PURE__ */ React__namespace.createContext({});
  function useLocaleText() {
    return React__namespace.useContext(LocalizationContext);
  }
  var _CloseIcon;
  const RootPropsContext = /* @__PURE__ */ React__namespace.createContext(null);
  const defaultLocaleText = {
    close: "Close"
  };
  function Notification({
    notificationKey,
    open: open2,
    message,
    options,
    badge
  }) {
    var _a, _b;
    const globalLocaleText = useLocaleText();
    const localeText = {
      ...defaultLocaleText,
      ...globalLocaleText
    };
    const {
      close
    } = useNonNullableContext(NotificationsContext);
    const {
      severity,
      actionText,
      onAction,
      autoHideDuration
    } = options;
    const handleClose = React__namespace.useCallback((event, reason) => {
      if (reason === "clickaway") {
        return;
      }
      close(notificationKey);
    }, [notificationKey, close]);
    const action = /* @__PURE__ */ jsxRuntimeExports.jsxs(React__namespace.Fragment, {
      children: [onAction ? /* @__PURE__ */ jsxRuntimeExports.jsx(Button, {
        color: "inherit",
        size: "small",
        onClick: onAction,
        children: actionText ?? "Action"
      }) : null, /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, {
        size: "small",
        "aria-label": localeText == null ? void 0 : localeText.close,
        title: localeText == null ? void 0 : localeText.close,
        color: "inherit",
        onClick: handleClose,
        children: _CloseIcon || (_CloseIcon = /* @__PURE__ */ jsxRuntimeExports.jsx(CloseIcon, {
          fontSize: "small"
        }))
      })]
    });
    const props = React__namespace.useContext(RootPropsContext);
    const SnackbarComponent = ((_a = props == null ? void 0 : props.slots) == null ? void 0 : _a.snackbar) ?? Snackbar;
    const snackbarSlotProps = useSlotProps({
      elementType: SnackbarComponent,
      ownerState: props,
      externalSlotProps: (_b = props == null ? void 0 : props.slotProps) == null ? void 0 : _b.snackbar,
      additionalProps: {
        open: open2,
        autoHideDuration,
        onClose: handleClose,
        action
      }
    });
    return /* @__PURE__ */ jsxRuntimeExports.jsx(SnackbarComponent, {
      ...snackbarSlotProps,
      children: /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, {
        badgeContent: badge,
        color: "primary",
        sx: {
          width: "100%"
        },
        children: severity ? /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, {
          severity,
          sx: {
            width: "100%"
          },
          action,
          children: message
        }) : /* @__PURE__ */ jsxRuntimeExports.jsx(SnackbarContent, {
          message,
          action
        })
      })
    }, notificationKey);
  }
  function Notifications({
    state
  }) {
    const currentNotification = state.queue[0] ?? null;
    return currentNotification ? /* @__PURE__ */ jsxRuntimeExports.jsx(Notification, {
      ...currentNotification,
      badge: state.queue.length > 1 ? String(state.queue.length) : null
    }) : null;
  }
  let nextId = 0;
  const generateId = () => {
    const id = nextId;
    nextId += 1;
    return id;
  };
  function NotificationsProvider(props) {
    const {
      children
    } = props;
    const [state, setState] = React__namespace.useState({
      queue: []
    });
    const show = React__namespace.useCallback((message, options = {}) => {
      const notificationKey = options.key ?? `::toolpad-internal::notification::${generateId()}`;
      setState((prev2) => {
        if (prev2.queue.some((n) => n.notificationKey === notificationKey)) {
          return prev2;
        }
        return {
          ...prev2,
          queue: [...prev2.queue, {
            message,
            options,
            notificationKey,
            open: true
          }]
        };
      });
      return notificationKey;
    }, []);
    const close = React__namespace.useCallback((key2) => {
      setState((prev2) => ({
        ...prev2,
        queue: prev2.queue.filter((n) => n.notificationKey !== key2)
      }));
    }, []);
    const contextValue = React__namespace.useMemo(() => ({
      show,
      close
    }), [show, close]);
    return /* @__PURE__ */ jsxRuntimeExports.jsx(RootPropsContext.Provider, {
      value: props,
      children: /* @__PURE__ */ jsxRuntimeExports.jsxs(NotificationsContext.Provider, {
        value: contextValue,
        children: [children, /* @__PURE__ */ jsxRuntimeExports.jsx(Notifications, {
          state
        })]
      })
    });
  }
  function useShare({
    cloudName
  }) {
    const notifications = useNotifications();
    const [open2, setOpen] = React.useState(false);
    const [configExpanded, setConfigExpanded] = React.useState(true);
    const [loadingShareData, setLoadingShareData] = React.useState(false);
    const [isSharing, setIsSharing] = React.useState(false);
    const [isPreparingShare, setIsPreparingShare] = React.useState(true);
    const [isPrepared, setIsPrepared] = React.useState(false);
    const [isCancelling, setIsCancelling] = React.useState(false);
    const [filterStatus, setFilterStatus] = React.useState(
      FileShareStatusEnum.all
    );
    const [shareResults, setShareResults] = React.useState([]);
    const isCancellingRef = React.useRef(false);
    const handleCopy = (text) => {
      copy(text).then(() => {
        notifications.show("复制成功", {
          autoHideDuration: 1500,
          severity: "success"
        });
      }).catch((error) => {
        notifications.show("复制失败" + error, {
          autoHideDuration: 1500,
          severity: "error"
        });
      });
    };
    const handleDownloadLinks = (text) => {
      downloadTxt(text, `${cloudName}-批量分享链接-${getTimestamp()}.txt`);
    };
    const handleDownloadExcel = (text) => {
      exportXlsxFile(`${cloudName}-批量分享链接-${getTimestamp()}.xlsx`, text);
    };
    const copyLink = (link) => {
      copy(link).then(() => {
        notifications.show("已复制", {
          autoHideDuration: 1500,
          severity: "success"
        });
      }).catch((error) => {
        notifications.show("复制失败" + error, {
          autoHideDuration: 1500,
          severity: "error"
        });
      });
    };
    const resetShareStatus = () => {
      setIsPreparingShare(true);
      setIsSharing(false);
      isCancellingRef.current = false;
    };
    const handleDefaultCloseDrawerCallback = () => {
      setOpen(false);
      setIsCancelling(false);
      setIsSharing(false);
      setIsPreparingShare(true);
    };
    return {
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback,
      notifications
    };
  }
  const StatusCount = (props) => {
    const { shareResults, selectedItems } = props;
    const getStatusCount = React.useCallback(
      (status) => {
        return shareResults.filter((r2) => r2.status === status).length;
      },
      [shareResults]
    );
    return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "caption", color: "textSecondary", children: [
      "总计: ",
      shareResults.length,
      " | 准备: ",
      getStatusCount("ready"),
      " | 分享中:",
      " ",
      getStatusCount("sharing"),
      " | 成功: ",
      getStatusCount("success"),
      " | 失败:",
      " ",
      getStatusCount("error"),
      " | 已选: ",
      selectedItems.length
    ] }) });
  };
  const FileDownloadIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z"
  }));
  const ArticleIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-5 14H7v-2h7zm3-4H7v-2h10zm0-4H7V7h10z"
  }));
  const CancelIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2m5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12z"
  }));
  const ShareBtns = (props) => {
    const {
      isPreparingShare,
      isSharing,
      isPrepared,
      isCancelling,
      onPrepareShare,
      onShare,
      onCancelShare
    } = props;
    if (isPreparingShare) {
      return /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "contained",
          color: "primary",
          size: "small",
          onClick: onPrepareShare,
          children: "准备分享"
        }
      );
    }
    if (isCancelling) {
      return /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "contained", color: "warning", size: "small", disabled: true, children: "取消分享中..." });
    }
    if (isSharing) {
      return /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "contained",
          color: "error",
          size: "small",
          onClick: onCancelShare,
          children: "取消分享"
        }
      );
    }
    if (isPrepared) {
      return /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "contained",
          color: "success",
          size: "small",
          onClick: onShare,
          children: "开始分享"
        }
      );
    }
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      Button,
      {
        variant: "contained",
        color: "primary",
        size: "small",
        onClick: onPrepareShare,
        children: "准备分享111"
      }
    );
  };
  const Footer = (props) => {
    const {
      handleCancelClose,
      // 取消关闭
      isPreparingShare,
      // 准备分享
      isSharing,
      // 分享
      isPrepared,
      // 已准备
      isCancelling,
      // 取消分享
      handlePrepareShare,
      // 准备分享
      handleShare,
      // 分享
      handleCancelShare,
      // 取消分享
      copyToClipboard,
      // 复制到剪贴板
      downloadLinksToTxt,
      // 下载TXT
      downloadLinksToExcel,
      // 导出Excel
      disabledCopy,
      // 复制按钮是否禁用
      disabledDownloadLinks,
      // 下载TXT按钮是否禁用
      disabledDownloadExcel,
      // 导出Excel按钮是否禁用
      extraButtons
    } = props;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-auto pt-3", children: [
      /* @__PURE__ */ jsxRuntimeExports.jsx(Divider, { className: "mb-3" }),
      /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-center items-center gap-2 flex-wrap", children: [
        /* @__PURE__ */ jsxRuntimeExports.jsx(
          Button,
          {
            variant: "outlined",
            color: "error",
            startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(CancelIcon, {}),
            onClick: handleCancelClose,
            size: "small",
            children: "取消"
          }
        ),
        /* @__PURE__ */ jsxRuntimeExports.jsx(
          ShareBtns,
          {
            isPreparingShare,
            isSharing,
            isPrepared,
            isCancelling,
            onPrepareShare: handlePrepareShare,
            onShare: handleShare,
            onCancelShare: handleCancelShare
          }
        ),
        /* @__PURE__ */ jsxRuntimeExports.jsx(
          Button,
          {
            variant: "outlined",
            startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, {}),
            onClick: copyToClipboard,
            disabled: disabledCopy,
            size: "small",
            children: "复制"
          }
        ),
        /* @__PURE__ */ jsxRuntimeExports.jsx(
          Button,
          {
            variant: "outlined",
            startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(FileDownloadIcon, {}),
            onClick: downloadLinksToTxt,
            disabled: disabledDownloadLinks,
            size: "small",
            children: "下载"
          }
        ),
        /* @__PURE__ */ jsxRuntimeExports.jsx(
          Button,
          {
            variant: "outlined",
            startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ArticleIcon, {}),
            onClick: downloadLinksToExcel,
            disabled: disabledDownloadExcel,
            size: "small",
            children: "导出"
          }
        ),
        extraButtons
      ] })
    ] }) });
  };
  const Header = (props) => {
    const { title, handleCancelClose } = props;
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
        /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "subtitle1", className: "font-bold", children: title }),
        /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", onClick: handleCancelClose, children: /* @__PURE__ */ jsxRuntimeExports.jsx(CloseIcon, { fontSize: "small" }) })
      ] }),
      /* @__PURE__ */ jsxRuntimeExports.jsx(Divider, { className: "mb-3" })
    ] });
  };
  const BaseDrawer = React.forwardRef((props, ref) => {
    const {
      open: open2,
      onClose,
      width: width2 = "50vw",
      children,
      footerProps,
      headerProps,
      className,
      extraButtons
    } = props;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      Drawer,
      {
        open: open2,
        onClose,
        anchor: "right",
        className,
        slotProps: {
          paper: {
            sx: {
              width: width2
            }
          }
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex flex-col h-full", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsx(Header, { ...headerProps ? headerProps : {} }),
          /* @__PURE__ */ jsxRuntimeExports.jsx(Divider, {}),
          /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex-1 overflow-y-auto p-3", children }),
          /* @__PURE__ */ jsxRuntimeExports.jsx(
            Footer,
            {
              ...footerProps ? footerProps : {},
              extraButtons
            }
          )
        ] })
      }
    );
  });
  const defaultGlobalSetting = {
    defaultShareDelay: 300
    // 默认分享延迟
  };
  const ShareDrawer$9 = React.forwardRef((props, ref) => {
    const { name: cloudName } = useBaseCloudInfo();
    const {
      notifications,
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback
    } = useShare({ cloudName });
    const [shareConfig, setShareConfig] = React.useState({
      expireTime: ExpireTimeEnum$8.forever,
      // 提取期限,默认永久
      extractLimit: ExtractEnum$1.forever,
      // 提取次数,默认不限制
      shareDelay: defaultGlobalSetting.defaultShareDelay,
      // 分享间隔延迟,单位毫秒
      allowFastAccess: true
      // 是否允许快速访问(链接中包含提取码)
    });
    const [selectedItems, setSelectedItems] = React.useState([]);
    React.useImperativeHandle(ref, () => {
      return {
        open() {
          setOpen(true);
        }
      };
    });
    const handlePrepareShare = async () => {
      try {
        setLoadingShareData(true);
        const { selectRowInfos } = getShareInfo$1();
        setShareResults(transformFileInfo(selectRowInfos ?? []));
        setIsPreparingShare(false);
        setIsPrepared(true);
      } finally {
        setLoadingShareData(false);
      }
    };
    const handleShare = async () => {
      setIsCancelling(false);
      setIsSharing(true);
      const {
        "x-captcha-token": xCaptchaToken,
        authorization,
        "x-device-id": xDeviceId,
        "x-client-id": xClientId
      } = getShareInfo$1();
      for (let i = 0; i < shareResults.length; i++) {
        if (isCancellingRef.current) {
          setIsSharing(false);
          break;
        }
        try {
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = { ...updated[i], status: "sharing" };
            return updated;
          });
          let res = await shareLogicMap[cloudEnum.xunlei].share(
            {
              expiration_days: shareConfig.expireTime + "",
              // 过期时间
              file_ids: [shareResults[i].id],
              // 文件id
              params: {
                subscribe_push: "false",
                // 是否订阅推送
                withPassCodeInLink: shareConfig.allowFastAccess ? "true" : "false"
                // 是否在链接中包含提取码
              },
              restore_limit: shareConfig.extractLimit + "",
              // 提取次数
              share_to: "copy",
              // 分享方式
              title: "云盘资源分享"
              // 分享标题
            },
            {
              headers: {
                "x-captcha-token": xCaptchaToken,
                authorization,
                "x-device-id": xDeviceId,
                "x-client-id": xClientId
              }
            }
          );
          res = {
            ...res ?? {},
            restoreLimit: shareConfig.extractLimit,
            expireTime: shareConfig.expireTime
          };
          setShareResults((prev2) => {
            var _a;
            const updated = [...prev2];
            if (((_a = res == null ? void 0 : res.share_error_files) == null ? void 0 : _a.length) > 0) {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.error,
                message: "分享失败"
              };
            } else {
              updated[i] = {
                ...updated[i],
                restoreLimit: res.restoreLimit,
                expireTime: res.expireTime,
                status: "success",
                shareLink: res.share_url,
                extractCode: res.pass_code
              };
            }
            return updated;
          });
        } catch (error) {
          console.log(error, "分享失败");
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = {
              ...updated[i],
              status: FileShareStatusEnum.error,
              message: "分享失败"
            };
            return updated;
          });
        } finally {
          await sleep(shareConfig.shareDelay);
        }
      }
      resetShareStatus();
    };
    const filteredResults = shareResults.filter((result) => {
      if (filterStatus === "all") return true;
      return result.status === filterStatus;
    });
    const handleCancelClose = () => {
      handleDefaultCloseDrawerCallback();
    };
    const handleCancelShare = () => {
      setIsCancelling(true);
      isCancellingRef.current = true;
      setShareResults((prev2) => {
        return prev2.map((result) => {
          if (result.status === FileShareStatusEnum.sharing || result.status === FileShareStatusEnum.ready) {
            return { ...result, status: FileShareStatusEnum.ready };
          }
          return result;
        });
      });
    };
    const handleItemSelect = (id) => {
      setSelectedItems((prev2) => {
        if (prev2.includes(id)) {
          return prev2.filter((itemId) => itemId !== id);
        } else {
          return [...prev2, id];
        }
      });
    };
    const handleSelectAll = () => {
      if (selectedItems.length === filteredResults.length) {
        setSelectedItems([]);
      } else {
        setSelectedItems(filteredResults.map((item) => item.id));
      }
    };
    const handleDeleteSelected = () => {
      if (selectedItems.length === 0) return;
      setShareResults((prev2) => {
        return prev2.filter((item) => !selectedItems.includes(item.id));
      });
      setSelectedItems([]);
      notifications.show(`已删除 ${selectedItems.length} 项`, {
        autoHideDuration: 1500,
        severity: "success"
      });
    };
    const isAllSelected = filteredResults.length > 0 && selectedItems.length === filteredResults.length;
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      BaseDrawer,
      {
        open: open2,
        onClose: handleCancelClose,
        headerProps: {
          title: `${cloudName} 批量分享`,
          handleCancelClose
        },
        footerProps: {
          handleCancelClose,
          isPreparingShare,
          isSharing,
          isPrepared,
          isCancelling,
          handlePrepareShare,
          handleShare,
          handleCancelShare,
          copyToClipboard: () => handleCopy(formatStringForCopyAndDownload$9(filteredResults)),
          downloadLinksToTxt: () => handleDownloadLinks(formatStringForCopyAndDownload$9(filteredResults)),
          downloadLinksToExcel: () => handleDownloadExcel(transformShareInfoForXlsx$9(filteredResults)),
          disabledCopy: isSharing,
          disabledDownloadLinks: isSharing,
          disabledDownloadExcel: isSharing
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex flex-col h-full p-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex-1 flex flex-col overflow-y-auto", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "border rounded-md bg-gray-50 mb-3", children: [
            /* @__PURE__ */ jsxRuntimeExports.jsxs(
              Box,
              {
                className: "flex justify-between items-center px-3 py-2 cursor-pointer",
                onClick: () => setConfigExpanded(!configExpanded),
                children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base m-0", children: "分享配置" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", children: configExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, {}) })
                ]
              }
            ),
            /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: configExpanded, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "p-3 pt-0 border-t", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "grid grid-cols-2 gap-3", children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "提取期限" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    value: shareConfig.expireTime,
                    label: "提取期限",
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      expireTime: Number(e.target.value)
                    })),
                    children: expireTimeOptions$4.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                  }
                )
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "提取次数" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    value: shareConfig.extractLimit,
                    label: "提取次数",
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      extractLimit: Number(e.target.value)
                    })),
                    children: extractOptions$1.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                  }
                )
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "分享延迟",
                  type: "number",
                  variant: "filled",
                  value: shareConfig.shareDelay,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareDelay: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 1,
                      step: 100
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { className: "flex flex-row items-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      checked: shareConfig.allowFastAccess,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        allowFastAccess: e.target.checked
                      }))
                    }
                  ),
                  label: "允许快速访问分享链接"
                }
              ) })
            ] }) }) })
          ] }),
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-3 h-0 flex-1", children: [
            loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex justify-center items-center mt-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 50 }) }),
            shareResults.length > 0 && !loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base", children: "分享结果" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusCount,
                    {
                      shareResults,
                      selectedItems
                    }
                  )
                ] }),
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex gap-2", children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "删除已选项", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    IconButton,
                    {
                      size: "small",
                      onClick: handleDeleteSelected,
                      disabled: selectedItems.length === 0 || isSharing,
                      color: "error",
                      children: /* @__PURE__ */ jsxRuntimeExports.jsx(DeleteIcon, { fontSize: "small" })
                    }
                  ) }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Select,
                    {
                      value: filterStatus,
                      size: "small",
                      onChange: (e) => setFilterStatus(e.target.value),
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "all", children: "全部" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "ready", children: "准备分享" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "sharing", children: "分享中" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "success", children: "分享成功" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "error", children: "分享失败" })
                      ]
                    }
                  ) })
                ] })
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(
                TableContainer,
                {
                  component: Paper,
                  variant: "outlined",
                  sx: {
                    width: "100%",
                    overflow: "auto",
                    // 启用横向滚动
                    position: "relative"
                    // 为固定列提供定位上下文
                  },
                  children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Table,
                    {
                      size: "small",
                      className: "text-sm",
                      stickyHeader: true,
                      sx: { minWidth: 650 },
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                          /* @__PURE__ */ jsxRuntimeExports.jsx(
                            TableCell,
                            {
                              padding: "checkbox",
                              sx: {
                                position: "sticky",
                                // 使用粘性定位
                                left: 0,
                                // 固定在左侧
                                zIndex: 3,
                                // 确保在其他表头之上
                                backgroundColor: "#f5f5f5",
                                // 表头背景色
                                minWidth: "50px",
                                width: "50px"
                              },
                              children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                                Checkbox,
                                {
                                  size: "small",
                                  indeterminate: selectedItems.length > 0 && !isAllSelected,
                                  checked: isAllSelected,
                                  onChange: handleSelectAll,
                                  disabled: filteredResults.length === 0 || isSharing
                                }
                              )
                            }
                          ),
                          /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { style: { minWidth: "100px" }, children: "状态" }),
                          /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件名" }),
                          /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "分享链接" }),
                          /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "提取码" }),
                          /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { style: { minWidth: "100px" }, children: "信息" })
                        ] }) }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(TableBody, { children: filteredResults.map((result) => /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                          /* @__PURE__ */ jsxRuntimeExports.jsx(
                            TableCell,
                            {
                              padding: "checkbox",
                              sx: {
                                position: "sticky",
                                // 使用粘性定位
                                left: 0,
                                // 固定在左侧
                                zIndex: 2,
                                // 确保在其他单元格之上
                                backgroundColor: "white",
                                // 数据行背景色
                                borderRight: "1px solid rgba(224, 224, 224, 1)"
                                // 右侧边框
                              },
                              children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                                Checkbox,
                                {
                                  size: "small",
                                  checked: selectedItems.includes(result.id),
                                  onChange: () => handleItemSelect(result.id),
                                  disabled: isSharing
                                }
                              )
                            }
                          ),
                          /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { align: "center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StatusIcon, { status: result.status }) }),
                          /* @__PURE__ */ jsxRuntimeExports.jsx(
                            TableCell,
                            {
                              title: result.fileName,
                              children: result.fileName
                            }
                          ),
                          /* @__PURE__ */ jsxRuntimeExports.jsxs(TableCell, { children: [
                            result.shareLink || "-",
                            result.shareLink && /* @__PURE__ */ jsxRuntimeExports.jsx(
                              IconButton,
                              {
                                size: "small",
                                onClick: () => copyLink(result.shareLink ?? ""),
                                children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                              }
                            )
                          ] }),
                          /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.extractCode || "-" }),
                          /* @__PURE__ */ jsxRuntimeExports.jsx(
                            TableCell,
                            {
                              sx: {
                                maxWidth: "250px",
                                overflow: "hidden",
                                textOverflow: "ellipsis",
                                whiteSpace: "nowrap"
                              },
                              children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                                StatusText,
                                {
                                  status: result.status,
                                  message: result.message
                                }
                              )
                            }
                          )
                        ] }, result.id)) })
                      ]
                    }
                  )
                }
              )
            ] })
          ] })
        ] }) })
      }
    );
  });
  const Xunlei$1 = () => {
    const shareDOM = React.useRef(null);
    const handleClick = () => {
      var _a;
      (_a = shareDOM.current) == null ? void 0 : _a.open();
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "outlined",
          startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ShareIcon, {}),
          onClick: handleClick,
          children: "批量分享"
        }
      ),
      /* @__PURE__ */ jsxRuntimeExports.jsx(ShareDrawer$9, { ref: shareDOM })
    ] });
  };
  var ExpireTimeEnum$7 = /* @__PURE__ */ ((ExpireTimeEnum2) => {
    ExpireTimeEnum2[ExpireTimeEnum2["sevenDay"] = 3] = "sevenDay";
    ExpireTimeEnum2[ExpireTimeEnum2["thirty"] = 4] = "thirty";
    ExpireTimeEnum2[ExpireTimeEnum2["sixty"] = 5] = "sixty";
    ExpireTimeEnum2[ExpireTimeEnum2["halfYear"] = 7] = "halfYear";
    ExpireTimeEnum2[ExpireTimeEnum2["forever"] = 1] = "forever";
    ExpireTimeEnum2[ExpireTimeEnum2["oneDay"] = 2] = "oneDay";
    return ExpireTimeEnum2;
  })(ExpireTimeEnum$7 || {});
  const ExpireTimeEnumMap$7 = {
    [
      2
      /* oneDay */
    ]: "1天",
    [
      3
      /* sevenDay */
    ]: "7天",
    [
      4
      /* thirty */
    ]: "30天",
    [
      5
      /* sixty */
    ]: "60天",
    [
      7
      /* halfYear */
    ]: "180天",
    [
      1
      /* forever */
    ]: "永久"
  };
  var ExtractEnum = /* @__PURE__ */ ((ExtractEnum2) => {
    ExtractEnum2[ExtractEnum2["forever"] = -1] = "forever";
    ExtractEnum2[ExtractEnum2["one"] = 1] = "one";
    ExtractEnum2[ExtractEnum2["five"] = 5] = "five";
    ExtractEnum2[ExtractEnum2["ten"] = 10] = "ten";
    ExtractEnum2[ExtractEnum2["fifty"] = 50] = "fifty";
    ExtractEnum2[ExtractEnum2["hundred"] = 100] = "hundred";
    return ExtractEnum2;
  })(ExtractEnum || {});
  const ExtractEnumMap = {
    [
      -1
      /* forever */
    ]: "永久",
    [
      1
      /* one */
    ]: "1次",
    [
      5
      /* five */
    ]: "5次",
    [
      10
      /* ten */
    ]: "10次",
    [
      50
      /* fifty */
    ]: "50次"
  };
  var ExtractCodeTypeEnum = /* @__PURE__ */ ((ExtractCodeTypeEnum2) => {
    ExtractCodeTypeEnum2[ExtractCodeTypeEnum2["no"] = 1] = "no";
    ExtractCodeTypeEnum2[ExtractCodeTypeEnum2["yes"] = 2] = "yes";
    return ExtractCodeTypeEnum2;
  })(ExtractCodeTypeEnum || {});
  const extractOptions = [
    { value: ExtractEnum.forever, label: "不限制" },
    { value: ExtractEnum.one, label: "1次" },
    { value: ExtractEnum.five, label: "5次" },
    { value: ExtractEnum.ten, label: "10次" },
    { value: ExtractEnum.fifty, label: "50次" },
    { value: ExtractEnum.hundred, label: "100次" }
  ];
  const expireOptions$2 = [
    { value: ExpireTimeEnum$7.oneDay, label: "1天" },
    { value: ExpireTimeEnum$7.sevenDay, label: "7天" },
    { value: ExpireTimeEnum$7.thirty, label: "30天" },
    { value: ExpireTimeEnum$7.sixty, label: "60天" },
    { value: ExpireTimeEnum$7.halfYear, label: "180天" },
    { value: ExpireTimeEnum$7.forever, label: "永久" }
  ];
  const transformShareInfo$5 = (list) => {
    if (!list || list.length === 0) return [];
    return list.map((item) => ({
      id: item.fid,
      fileName: item.file_name,
      status: FileShareStatusEnum.ready,
      fileSize: bytesToSize(item.file_size)
    })) ?? [];
  };
  const transformShareInfoForXlsx$8 = (list) => {
    if (!list || list.length === 0) return [];
    return list.map((item) => ({
      文件名: item.fileName,
      链接: item.shareLink,
      提取码: item.extractCode,
      有效期: ExpireTimeEnumMap$7[item.expireTime],
      下载次数: ExtractEnumMap[item.restoreLimit],
      分享主题: item.shareTheme
    }));
  };
  const formatStringForCopyAndDownload$8 = (list) => {
    if (!list || list.length === 0) return "";
    return list.map(
      (item) => `${item.fileName} 链接:${item.shareLink} 提取码:${item.extractCode} 有效期:${item.expireTime} 下载次数:${item.restoreLimit}`
    ).join("\n");
  };
  function findNodeReact(selector, findKeys) {
    const node2 = typeof selector === "string" ? document.querySelector(selector) : selector;
    if (!node2) return {};
    const reactKey = Object.keys(node2).find(
      (key2) => key2.startsWith("__reactFiber$") || key2.startsWith("__reactInternalInstance$")
    );
    if (!reactKey) return {};
    const fiberNode = node2[reactKey];
    if (!fiberNode) return {};
    const result = {};
    const foundKeys = /* @__PURE__ */ new Set();
    const findInFiber = (fiber) => {
      console.log(fiber, "fiber");
      if (!fiber || foundKeys.size === findKeys.length) return;
      if (fiber.memoizedProps && typeof fiber.memoizedProps === "object") {
        for (const key2 of findKeys) {
          const typedKey = key2;
          if (result[typedKey] === void 0 && key2 in fiber.memoizedProps) {
            result[typedKey] = fiber.memoizedProps[key2];
            foundKeys.add(key2);
          }
        }
      }
      let state = fiber.memoizedState;
      while (state) {
        if (typeof state === "object" && state !== null && "memoizedState" in state) {
          const val = state.memoizedState;
          if (val && typeof val === "object") {
            for (const key2 of findKeys) {
              const typedKey = key2;
              if (result[typedKey] === void 0 && key2 in val) {
                result[typedKey] = val[key2];
                foundKeys.add(key2);
              }
            }
          }
        }
        state = state.next;
      }
      if (fiber.child) findInFiber(fiber.child);
      if (fiber.sibling) findInFiber(fiber.sibling);
    };
    findInFiber(fiberNode);
    return result;
  }
  const ShareDrawer$8 = React.forwardRef((props, ref) => {
    const { name: cloudName } = useBaseCloudInfo();
    const {
      notifications,
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback
    } = useShare({ cloudName });
    const [shareConfig, setShareConfig] = React.useState({
      shareDelay: defaultGlobalSetting.defaultShareDelay,
      // 分享延迟
      shareTheme: "",
      // 分享主题
      extractLimit: ExtractEnum.forever,
      // 下载次数
      expireTime: ExpireTimeEnum$7.forever,
      // 有效期
      enableCustomCode: false,
      // 是否启用自定义提取码
      customCode: ""
      // 自定义提取码
    });
    const [selectedItems, setSelectedItems] = React.useState([]);
    const filteredResults = shareResults.filter((result) => {
      if (filterStatus === "all") return true;
      return result.status === filterStatus;
    });
    React.useImperativeHandle(ref, () => {
      return {
        open() {
          setOpen(true);
        }
      };
    });
    const handlePrepareShare = async () => {
      var _a, _b;
      try {
        setLoadingShareData(true);
        const result = findNodeReact(".file-list", ["selectedRowKeys", "list"]);
        setShareResults(
          ((_b = (_a = transformShareInfo$5(result.list)) == null ? void 0 : _a.filter((item) => result.selectedRowKeys.includes(item.id))) == null ? void 0 : _b.map((item) => ({
            ...item,
            status: FileShareStatusEnum.ready
          }))) ?? []
        );
        setIsPreparingShare(false);
        setIsPrepared(true);
      } catch (e) {
        notifications.show("获取分享文件列表失败" + e, {
          autoHideDuration: 1500,
          severity: "error"
        });
        console.error(e);
      } finally {
        setLoadingShareData(false);
      }
    };
    const handleShare = async () => {
      setIsCancelling(false);
      setIsSharing(true);
      for (let i = 0; i < shareResults.length; i++) {
        if (isCancellingRef.current) {
          setIsSharing(false);
          break;
        }
        try {
          const sendData = {
            expired_type: shareConfig.expireTime,
            //分享天数
            dl_limit: shareConfig.extractLimit,
            //提取次数
            url_type: shareConfig.enableCustomCode ? ExtractCodeTypeEnum.yes : ExtractCodeTypeEnum.no,
            //提取码type
            title: shareConfig.shareTheme,
            //标题
            fid_list: [shareResults[i].id]
            //文件id
          };
          if (shareConfig.enableCustomCode) {
            sendData["passcode"] = shareConfig.customCode ? shareConfig.customCode : generateRandomString();
          }
          const { task_id } = await shareLogicMap[cloudEnum.uc].getTaskId(sendData);
          let shareIdInfo = await shareLogicMap[cloudEnum.uc].getShareId(task_id);
          if (!shareIdInfo.share_id) {
            shareIdInfo = await shareLogicMap[cloudEnum.uc].getShareId(
              task_id,
              1
            );
          }
          const { share_url, passcode } = await shareLogicMap[cloudEnum.uc].getShareInfo(shareIdInfo.share_id);
          setShareResults((prev2) => {
            const updated = [...prev2];
            if (share_url) {
              updated[i] = {
                ...updated[i],
                expireTime: shareConfig.expireTime,
                status: FileShareStatusEnum.success,
                shareLink: share_url,
                extractCode: passcode,
                restoreLimit: shareConfig.extractLimit,
                shareTheme: shareConfig.shareTheme
              };
            } else {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.error,
                message: "分享失败"
              };
            }
            return updated;
          });
        } catch (error) {
          console.log(error, "分享失败");
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = {
              ...updated[i],
              status: "error",
              message: "分享失败"
            };
            return updated;
          });
        } finally {
          setIsPreparingShare(true);
          setIsSharing(false);
          isCancellingRef.current = false;
          await sleep(shareConfig.shareDelay);
        }
      }
      resetShareStatus();
    };
    const handleCancelClose = () => {
      handleDefaultCloseDrawerCallback();
    };
    const handleCancelShare = () => {
      setIsCancelling(true);
      isCancellingRef.current = true;
    };
    const handleItemSelect = (id) => {
      setSelectedItems(
        (prev2) => prev2.includes(id) ? prev2.filter((item) => item !== id) : [...prev2, id]
      );
    };
    const handleSelectAll = () => {
      if (selectedItems.length === filteredResults.length) {
        setSelectedItems([]);
      } else {
        setSelectedItems(filteredResults.map((item) => item.id));
      }
    };
    const handleDeleteSelected = () => {
      setShareResults(
        (prev2) => prev2.filter((item) => !selectedItems.includes(item.id))
      );
      setSelectedItems([]);
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      BaseDrawer,
      {
        open: open2,
        onClose: handleCancelClose,
        headerProps: {
          title: `${cloudName} 批量分享`,
          handleCancelClose
        },
        footerProps: {
          handleCancelClose,
          isPreparingShare,
          isSharing,
          isPrepared,
          isCancelling,
          handlePrepareShare,
          handleShare,
          handleCancelShare,
          copyToClipboard: () => {
            handleCopy(formatStringForCopyAndDownload$8(filteredResults));
          },
          downloadLinksToTxt: () => {
            handleDownloadLinks(formatStringForCopyAndDownload$8(filteredResults));
          },
          downloadLinksToExcel: () => {
            handleDownloadExcel(transformShareInfoForXlsx$8(filteredResults));
          },
          disabledCopy: isSharing,
          disabledDownloadLinks: isSharing,
          disabledDownloadExcel: isSharing
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex flex-col h-full p-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex-1 flex flex-col overflow-y-auto", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "border rounded-md bg-gray-50 mb-3", children: [
            /* @__PURE__ */ jsxRuntimeExports.jsxs(
              Box,
              {
                className: "flex justify-between items-center px-3 py-2 cursor-pointer",
                onClick: () => setConfigExpanded(!configExpanded),
                children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base m-0", children: "分享配置" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", children: configExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, {}) })
                ]
              }
            ),
            /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: configExpanded, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "p-3 pt-0 border-t", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "grid grid-cols-2 gap-3", children: [
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "分享延迟",
                  size: "small",
                  type: "number",
                  value: shareConfig.shareDelay,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareDelay: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 1,
                      step: 100
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  size: "small",
                  label: "分享主题",
                  value: shareConfig.shareTheme,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareTheme: e.target.value
                  })),
                  placeholder: "请输入分享主题",
                  slotProps: {
                    htmlInput: {
                      maxLength: 30
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, size: "small", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "下载次数" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    label: "下载次数",
                    value: shareConfig.extractLimit,
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      extractLimit: Number(e.target.value)
                    })),
                    size: "small",
                    children: extractOptions.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                  }
                )
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, size: "small", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "有效期" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    label: "有效期",
                    value: shareConfig.expireTime,
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      expireTime: Number(e.target.value)
                    })),
                    size: "small",
                    children: expireOptions$2.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                  }
                )
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      checked: shareConfig.enableCustomCode,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        enableCustomCode: e.target.checked
                      })),
                      size: "small"
                    }
                  ),
                  label: "开启提取码"
                }
              ) }),
              shareConfig.enableCustomCode && /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  size: "small",
                  value: shareConfig.customCode,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    customCode: e.target.value
                  })),
                  placeholder: "(可空)只能包含大小写英文+数字)",
                  slotProps: {
                    htmlInput: {
                      maxLength: 4
                    }
                  }
                }
              ) })
            ] }) }) })
          ] }),
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-3 h-0 flex-1", children: [
            loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex justify-center items-center mt-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 50 }) }),
            shareResults.length > 0 && !loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base", children: "分享结果" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusCount,
                    {
                      shareResults,
                      selectedItems
                    }
                  )
                ] }),
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex gap-2", children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "删除已选项", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    IconButton,
                    {
                      size: "small",
                      onClick: handleDeleteSelected,
                      disabled: selectedItems.length === 0 || isSharing,
                      color: "error",
                      children: /* @__PURE__ */ jsxRuntimeExports.jsx(DeleteIcon, { fontSize: "small" })
                    }
                  ) }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Select,
                    {
                      value: filterStatus,
                      size: "small",
                      onChange: (e) => setFilterStatus(e.target.value),
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "all", children: "全部" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "ready", children: "准备分享" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "sharing", children: "分享中" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "success", children: "分享成功" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "error", children: "分享失败" })
                      ]
                    }
                  ) })
                ] })
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(TableContainer, { component: Paper, variant: "outlined", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table, { size: "small", className: "text-sm", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.length === filteredResults.length && filteredResults.length > 0,
                      indeterminate: selectedItems.length > 0 && selectedItems.length < filteredResults.length,
                      onChange: handleSelectAll,
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "状态" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件名" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件大小" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "分享链接" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "提取码" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "信息" })
                ] }) }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableBody, { children: filteredResults.map((result) => /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.includes(result.id),
                      onChange: () => handleItemSelect(result.id),
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { align: "center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StatusIcon, { status: result.status }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    TableCell,
                    {
                      sx: {
                        maxWidth: "200px",
                        overflow: "hidden",
                        textOverflow: "ellipsis",
                        whiteSpace: "nowrap"
                      },
                      title: result.fileName,
                      children: result.fileName
                    }
                  ),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.fileSize }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.shareLink ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex items-center gap-1", children: [
                    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[150px]", children: result.shareLink }),
                    /* @__PURE__ */ jsxRuntimeExports.jsx(
                      IconButton,
                      {
                        size: "small",
                        onClick: () => copyLink(result.shareLink ?? ""),
                        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                      }
                    )
                  ] }) : "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.extractCode || "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusText,
                    {
                      status: result.status,
                      message: result.message
                    }
                  ) })
                ] }, result.id)) })
              ] }) })
            ] })
          ] })
        ] }) })
      }
    );
  });
  const Uc = () => {
    const shareDOM = React.useRef(null);
    const handleClick = () => {
      var _a;
      (_a = shareDOM.current) == null ? void 0 : _a.open();
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "outlined",
          startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ShareIcon, {}),
          onClick: handleClick,
          children: "批量分享"
        }
      ),
      /* @__PURE__ */ jsxRuntimeExports.jsx(ShareDrawer$8, { ref: shareDOM })
    ] });
  };
  var ExpireTimeEnum$6 = /* @__PURE__ */ ((ExpireTimeEnum2) => {
    ExpireTimeEnum2[ExpireTimeEnum2["oneDay"] = 1] = "oneDay";
    ExpireTimeEnum2[ExpireTimeEnum2["sevenDay"] = 7] = "sevenDay";
    ExpireTimeEnum2[ExpireTimeEnum2["thirtyDay"] = 30] = "thirtyDay";
    ExpireTimeEnum2[ExpireTimeEnum2["oneYear"] = 365] = "oneYear";
    ExpireTimeEnum2[ExpireTimeEnum2["forever"] = 0] = "forever";
    return ExpireTimeEnum2;
  })(ExpireTimeEnum$6 || {});
  const ExpireTimeEnumMap$6 = {
    [
      1
      /* oneDay */
    ]: "1天",
    [
      7
      /* sevenDay */
    ]: "7天",
    [
      30
      /* thirtyDay */
    ]: "30天",
    [
      365
      /* oneYear */
    ]: "1年",
    [
      0
      /* forever */
    ]: "永久"
  };
  const expireOptions$1 = [
    { value: ExpireTimeEnum$6.oneDay, label: "1天" },
    { value: ExpireTimeEnum$6.sevenDay, label: "7天" },
    { value: ExpireTimeEnum$6.thirtyDay, label: "30天" },
    { value: ExpireTimeEnum$6.oneYear, label: "1年" },
    { value: ExpireTimeEnum$6.forever, label: "永久" }
  ];
  const getBaiduShareListInfo$1 = () => {
    var _a, _b, _c, _d;
    const tempDOM = document.querySelector("tbody");
    const instance = tempDOM == null ? void 0 : tempDOM.__vue__;
    if (!instance)
      return {
        list: []
      };
    return {
      list: ((_d = (_c = (_b = (_a = instance == null ? void 0 : instance.$store) == null ? void 0 : _a.state) == null ? void 0 : _b.detail) == null ? void 0 : _c.view) == null ? void 0 : _d.fileMeta) ?? []
    };
  };
  const transformShareInfo$4 = (list) => {
    if (!list || list.length === 0) return [];
    return list.map((item) => ({
      id: item.fs_id,
      fileName: item.formatName,
      fileSize: bytesToSize(item.size),
      status: "ready"
    }));
  };
  const getBaiduBaseShareParams$1 = () => {
    var _a, _b;
    return {
      //@ts-ignore
      bdstoken: (_b = (_a = _unsafeWindow == null ? void 0 : _unsafeWindow.locals) == null ? void 0 : _a.userInfo) == null ? void 0 : _b.bdstoken,
      version: window.localStorage.getItem("cdp_checkVersionTime")
    };
  };
  const formatStringForCopyAndDownload$7 = (list) => {
    return list.map((item) => `${item.fileName} ${item.shareLink} ${item.extractCode}`).join("\n");
  };
  const transformShareInfoForXlsx$7 = (list) => {
    return list.map((item) => ({
      文件名: item.fileName,
      文件大小: item.fileSize,
      分享链接: item.shareLink,
      提取码: item.extractCode,
      有效期: ExpireTimeEnumMap$6[item.expireTime]
    }));
  };
  const ShareDrawer$7 = React.forwardRef((props, ref) => {
    React.useImperativeHandle(ref, () => {
      return {
        open() {
          setOpen(true);
        }
      };
    });
    const { name: cloudName } = useBaseCloudInfo();
    const [selectedItems, setSelectedItems] = React.useState([]);
    const {
      notifications,
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback
    } = useShare({ cloudName });
    const [shareConfig, setShareConfig] = React.useState({
      shareDelay: defaultGlobalSetting.defaultShareDelay,
      // 分享延迟
      expireTime: ExpireTimeEnum$6.forever,
      // 有效期
      enableCustomCode: false,
      // 是否启用自定义提取码
      customCode: "",
      // 自定义提取码
      autoFillCode: false
      // 是否自动填充提取码
    });
    const filteredResults = shareResults.filter((result) => {
      if (filterStatus === "all") return true;
      return result.status === filterStatus;
    });
    const handleCancelClose = () => {
      handleDefaultCloseDrawerCallback();
    };
    const handlePrepareShare = async () => {
      try {
        setLoadingShareData(true);
        const { list } = getBaiduShareListInfo$1();
        setShareResults(transformShareInfo$4(list));
        setIsPreparingShare(false);
        setIsPrepared(true);
      } catch (e) {
        notifications.show("获取分享文件列表失败" + e, {
          autoHideDuration: 1500,
          severity: "error"
        });
        console.error(e);
      } finally {
        setLoadingShareData(false);
      }
    };
    const handleCancelShare = () => {
      setIsCancelling(true);
      isCancellingRef.current = true;
    };
    const handleShare = async () => {
      setIsCancelling(false);
      setIsSharing(true);
      const { bdstoken, version } = getBaiduBaseShareParams$1();
      for (let i = 0; i < shareResults.length; i++) {
        if (isCancellingRef.current) {
          setIsSharing(false);
          break;
        }
        try {
          const pwd = shareConfig.enableCustomCode ? shareConfig.customCode ? shareConfig.customCode : generateRandomString() : generateRandomString();
          const res = await shareLogicMap[cloudEnum.baidu].share(
            window.location.origin + "/share/set",
            {
              period: shareConfig.expireTime,
              pwd,
              eflag_disable: true,
              //不知道是什么参数,好像是分享类型eflag_disable: "personal" === e.shareType
              channel_list: [],
              //未知
              schannel: 4,
              //未知-貌似是一个定制
              fid_list: `[${shareResults[i].id}]`
              //文件id
            },
            {
              bdstoken,
              version
            },
            {
              headers: {
                accept: "application/json;charset=UTF-8",
                "Content-Type": " application/x-www-form-urlencoded"
              }
            }
          );
          const { link } = res || {};
          setShareResults((prev2) => {
            const updated = [...prev2];
            if (link) {
              updated[i] = {
                ...updated[i],
                expireTime: shareConfig.expireTime,
                status: FileShareStatusEnum.success,
                shareLink: shareConfig.autoFillCode ? `${link}?pwd=${pwd}` : link,
                extractCode: pwd
              };
            } else {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.error,
                message: "分享失败"
              };
            }
            return updated;
          });
        } catch (error) {
          console.log(error, "分享失败");
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = {
              ...updated[i],
              status: FileShareStatusEnum.error,
              message: "分享失败"
            };
            return updated;
          });
        } finally {
          setIsPreparingShare(true);
          setIsSharing(false);
          isCancellingRef.current = false;
          await sleep(shareConfig.shareDelay);
        }
      }
      resetShareStatus();
    };
    const handleItemSelect = (id) => {
      setSelectedItems(
        (prev2) => prev2.includes(id) ? prev2.filter((item) => item !== id) : [...prev2, id]
      );
    };
    const handleSelectAll = () => {
      if (selectedItems.length === filteredResults.length) {
        setSelectedItems([]);
      } else {
        setSelectedItems(filteredResults.map((item) => item.id));
      }
    };
    const handleDeleteSelected = () => {
      setShareResults(
        (prev2) => prev2.filter((item) => !selectedItems.includes(item.id))
      );
      setSelectedItems([]);
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      BaseDrawer,
      {
        open: open2,
        onClose: handleCancelClose,
        headerProps: {
          title: `${cloudName} 批量分享`,
          handleCancelClose
        },
        footerProps: {
          handleCancelClose,
          isPreparingShare,
          isSharing,
          isPrepared,
          isCancelling,
          handlePrepareShare,
          handleShare,
          handleCancelShare,
          copyToClipboard: () => {
            handleCopy(formatStringForCopyAndDownload$7(filteredResults));
          },
          downloadLinksToTxt: () => {
            handleDownloadLinks(formatStringForCopyAndDownload$7(filteredResults));
          },
          downloadLinksToExcel: () => {
            handleDownloadExcel(transformShareInfoForXlsx$7(filteredResults));
          },
          disabledCopy: isSharing,
          disabledDownloadLinks: isSharing,
          disabledDownloadExcel: isSharing
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex flex-col h-full p-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex-1 flex flex-col overflow-y-auto", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "border rounded-md bg-gray-50 mb-3", children: [
            /* @__PURE__ */ jsxRuntimeExports.jsxs(
              Box,
              {
                className: "flex justify-between items-center px-3 py-2 cursor-pointer",
                onClick: () => setConfigExpanded(!configExpanded),
                children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base m-0", children: "分享配置" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", children: configExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, {}) })
                ]
              }
            ),
            /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: configExpanded, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "p-3 pt-0 border-t", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "grid grid-cols-2 gap-3", children: [
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "分享延迟",
                  size: "small",
                  type: "number",
                  value: shareConfig.shareDelay,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareDelay: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 1,
                      step: 100
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, size: "small", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "有效期" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    label: "有效期",
                    value: shareConfig.expireTime,
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      expireTime: Number(e.target.value)
                    })),
                    size: "small",
                    children: expireOptions$1.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                  }
                )
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      checked: shareConfig.autoFillCode,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        autoFillCode: e.target.checked
                      })),
                      size: "small"
                    }
                  ),
                  label: "自动填充提取码"
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      checked: shareConfig.enableCustomCode,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        enableCustomCode: e.target.checked
                      })),
                      size: "small"
                    }
                  ),
                  label: "自定义提取码"
                }
              ) }),
              shareConfig.enableCustomCode && /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  size: "small",
                  value: shareConfig.customCode,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    customCode: e.target.value
                  })),
                  placeholder: "(可空)只能包含大小写英文+数字)",
                  slotProps: {
                    htmlInput: {
                      maxLength: 4
                    }
                  }
                }
              ) })
            ] }) }) })
          ] }),
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-3 h-0 flex-1", children: [
            loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex justify-center items-center mt-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 50 }) }),
            shareResults.length > 0 && !loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base", children: "分享结果" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusCount,
                    {
                      shareResults,
                      selectedItems
                    }
                  )
                ] }),
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex gap-2", children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "删除已选项", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    IconButton,
                    {
                      size: "small",
                      onClick: handleDeleteSelected,
                      disabled: selectedItems.length === 0 || isSharing,
                      color: "error",
                      children: /* @__PURE__ */ jsxRuntimeExports.jsx(DeleteIcon, { fontSize: "small" })
                    }
                  ) }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Select,
                    {
                      value: filterStatus,
                      size: "small",
                      onChange: (e) => setFilterStatus(e.target.value),
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "all", children: "全部" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "ready", children: "准备分享" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "sharing", children: "分享中" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "success", children: "分享成功" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "error", children: "分享失败" })
                      ]
                    }
                  ) })
                ] })
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(TableContainer, { component: Paper, variant: "outlined", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table, { size: "small", className: "text-sm", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.length === filteredResults.length && filteredResults.length > 0,
                      indeterminate: selectedItems.length > 0 && selectedItems.length < filteredResults.length,
                      onChange: handleSelectAll,
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "状态" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件名" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件大小" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "分享链接" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "提取码" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "信息" })
                ] }) }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableBody, { children: filteredResults.map((result) => /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.includes(result.id),
                      onChange: () => handleItemSelect(result.id),
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { align: "center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StatusIcon, { status: result.status }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    TableCell,
                    {
                      sx: {
                        maxWidth: "200px",
                        overflow: "hidden",
                        textOverflow: "ellipsis",
                        whiteSpace: "nowrap"
                      },
                      title: result.fileName,
                      children: result.fileName
                    }
                  ),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.fileSize }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.shareLink ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex items-center gap-1", children: [
                    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[150px]", children: result.shareLink }),
                    /* @__PURE__ */ jsxRuntimeExports.jsx(
                      IconButton,
                      {
                        size: "small",
                        onClick: () => copyLink(result.shareLink ?? ""),
                        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                      }
                    )
                  ] }) : "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.extractCode || "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusText,
                    {
                      status: result.status,
                      message: result.message
                    }
                  ) })
                ] }, result.id)) })
              ] }) })
            ] })
          ] })
        ] }) })
      }
    );
  });
  const Baidu = () => {
    const shareDOM = React.useRef(null);
    const handleClick = () => {
      var _a;
      (_a = shareDOM.current) == null ? void 0 : _a.open();
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "outlined",
          startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ShareIcon, {}),
          onClick: handleClick,
          children: "批量分享"
        }
      ),
      /* @__PURE__ */ jsxRuntimeExports.jsx(ShareDrawer$7, { ref: shareDOM })
    ] });
  };
  var ExpireTimeEnum$5 = /* @__PURE__ */ ((ExpireTimeEnum2) => {
    ExpireTimeEnum2[ExpireTimeEnum2["oneDay"] = 1] = "oneDay";
    ExpireTimeEnum2[ExpireTimeEnum2["sevenDay"] = 7] = "sevenDay";
    ExpireTimeEnum2[ExpireTimeEnum2["forever"] = 2099] = "forever";
    return ExpireTimeEnum2;
  })(ExpireTimeEnum$5 || {});
  const ExpireTimeEnumMap$5 = {
    [
      1
      /* oneDay */
    ]: "1天",
    [
      7
      /* sevenDay */
    ]: "7天",
    [
      2099
      /* forever */
    ]: "永久"
  };
  const shareOptions = [
    {
      label: "1天",
      value: ExpireTimeEnum$5.oneDay
    },
    {
      label: "7天",
      value: ExpireTimeEnum$5.sevenDay
    },
    {
      label: "永久",
      value: ExpireTimeEnum$5.forever
    }
  ];
  const getSelectList = () => {
    const dom = document.querySelector(".c-file-list");
    if (!dom) return { list: [] };
    const vueInstance = dom.__vue__;
    if (vueInstance) {
      const { selectedList } = vueInstance;
      return {
        list: selectedList == null ? void 0 : selectedList.map((item) => ({
          id: item.fileId,
          fileName: item.fileName,
          //已经格式化好了的
          fileSize: item.fileSize,
          isFolder: item.isFolder,
          status: FileShareStatusEnum.ready
        }))
      };
    }
    return {
      list: []
    };
  };
  const formatStringForCopyAndDownload$6 = (list) => {
    return list.map((item) => `${item.fileName} ${item.shareLink} ${item.extractCode}`).join("\n");
  };
  const transformShareInfoForXlsx$6 = (list) => {
    return list.map((item) => ({
      文件名: item.fileName,
      文件大小: item.fileSize,
      分享链接: item.shareLink,
      提取码: item.extractCode,
      有效期: ExpireTimeEnumMap$5[item.expireTime]
    }));
  };
  const ShareDrawer$6 = React.forwardRef((props, ref) => {
    React.useImperativeHandle(ref, () => {
      return {
        open() {
          setOpen(true);
        }
      };
    });
    const { name: cloudName } = useBaseCloudInfo();
    const [selectedItems, setSelectedItems] = React.useState([]);
    const {
      notifications,
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback
    } = useShare({ cloudName });
    const [shareConfig, setShareConfig] = React.useState({
      shareDelay: defaultGlobalSetting.defaultShareDelay,
      // 分享延迟
      expireTime: ExpireTimeEnum$5.forever
      // 有效期
    });
    const filteredResults = shareResults.filter((result) => {
      if (filterStatus === "all") return true;
      return result.status === filterStatus;
    });
    const handleCancelClose = () => {
      handleDefaultCloseDrawerCallback();
    };
    const handlePrepareShare = async () => {
      try {
        setLoadingShareData(true);
        const { list } = getSelectList();
        setShareResults(list);
        setIsPreparingShare(false);
        setIsPrepared(true);
      } catch (e) {
        notifications.show("获取分享文件列表失败" + e, {
          autoHideDuration: 1500,
          severity: "error"
        });
        console.error(e);
      } finally {
        setLoadingShareData(false);
      }
    };
    const handleCancelShare = () => {
      setIsCancelling(true);
      isCancellingRef.current = true;
    };
    const handleShare = async () => {
      setIsCancelling(false);
      setIsSharing(true);
      for (let i = 0; i < shareResults.length; i++) {
        if (isCancellingRef.current) {
          setIsSharing(false);
          break;
        }
        try {
          const res = await shareLogicMap[cloudEnum.tianyi].share({
            noCache: Math.random(),
            fileId: shareResults[i].id,
            shareType: 3,
            //固定值
            expireTime: shareConfig.expireTime
          });
          setShareResults((prev2) => {
            const updated = [...prev2];
            if (res.res_code === 0) {
              const { shareLinkList } = res || {};
              const shareInfo = (shareLinkList == null ? void 0 : shareLinkList[0]) || {};
              updated[i] = {
                ...updated[i],
                expireTime: shareConfig.expireTime,
                status: FileShareStatusEnum.success,
                shareLink: shareInfo.accessUrl || shareInfo.url,
                extractCode: shareInfo.accessCode
              };
            } else {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.error,
                message: "分享失败" + (res.res_message ?? "")
              };
            }
            return updated;
          });
        } catch (error) {
          console.log(error, "分享失败");
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = {
              ...updated[i],
              status: FileShareStatusEnum.error,
              message: "分享失败"
            };
            return updated;
          });
        } finally {
          setIsPreparingShare(true);
          setIsSharing(false);
          isCancellingRef.current = false;
          await sleep(shareConfig.shareDelay);
        }
      }
      resetShareStatus();
    };
    const handleItemSelect = (id) => {
      setSelectedItems(
        (prev2) => prev2.includes(id) ? prev2.filter((item) => item !== id) : [...prev2, id]
      );
    };
    const handleSelectAll = () => {
      if (selectedItems.length === filteredResults.length) {
        setSelectedItems([]);
      } else {
        setSelectedItems(filteredResults.map((item) => item.id));
      }
    };
    const handleDeleteSelected = () => {
      setShareResults(
        (prev2) => prev2.filter((item) => !selectedItems.includes(item.id))
      );
      setSelectedItems([]);
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      BaseDrawer,
      {
        open: open2,
        onClose: handleCancelClose,
        headerProps: {
          title: `${cloudName} 批量分享`,
          handleCancelClose
        },
        footerProps: {
          handleCancelClose,
          isPreparingShare,
          isSharing,
          isPrepared,
          isCancelling,
          handlePrepareShare,
          handleShare,
          handleCancelShare,
          copyToClipboard: () => {
            handleCopy(formatStringForCopyAndDownload$6(filteredResults));
          },
          downloadLinksToTxt: () => {
            handleDownloadLinks(formatStringForCopyAndDownload$6(filteredResults));
          },
          downloadLinksToExcel: () => {
            handleDownloadExcel(transformShareInfoForXlsx$6(filteredResults));
          },
          disabledCopy: isSharing,
          disabledDownloadLinks: isSharing,
          disabledDownloadExcel: isSharing
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex flex-col h-full p-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex-1 flex flex-col overflow-y-auto", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "border rounded-md bg-gray-50 mb-3", children: [
            /* @__PURE__ */ jsxRuntimeExports.jsxs(
              Box,
              {
                className: "flex justify-between items-center px-3 py-2 cursor-pointer",
                onClick: () => setConfigExpanded(!configExpanded),
                children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base m-0", children: "分享配置" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", children: configExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, {}) })
                ]
              }
            ),
            /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: configExpanded, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "p-3 pt-0 border-t", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "grid grid-cols-2 gap-3", children: [
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "分享延迟",
                  size: "small",
                  type: "number",
                  value: shareConfig.shareDelay,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareDelay: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 1,
                      step: 100
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, size: "small", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "有效期" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    label: "有效期",
                    value: shareConfig.expireTime,
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      expireTime: Number(e.target.value)
                    })),
                    size: "small",
                    children: shareOptions.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                  }
                )
              ] })
            ] }) }) })
          ] }),
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-3 h-0 flex-1", children: [
            loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex justify-center items-center mt-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 50 }) }),
            shareResults.length > 0 && !loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base", children: "分享结果" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusCount,
                    {
                      shareResults,
                      selectedItems
                    }
                  )
                ] }),
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex gap-2", children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "删除已选项", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    IconButton,
                    {
                      size: "small",
                      onClick: handleDeleteSelected,
                      disabled: selectedItems.length === 0 || isSharing,
                      color: "error",
                      children: /* @__PURE__ */ jsxRuntimeExports.jsx(DeleteIcon, { fontSize: "small" })
                    }
                  ) }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Select,
                    {
                      value: filterStatus,
                      size: "small",
                      onChange: (e) => setFilterStatus(e.target.value),
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "all", children: "全部" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "ready", children: "准备分享" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "sharing", children: "分享中" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "success", children: "分享成功" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "error", children: "分享失败" })
                      ]
                    }
                  ) })
                ] })
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(TableContainer, { component: Paper, variant: "outlined", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table, { size: "small", className: "text-sm", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.length === filteredResults.length && filteredResults.length > 0,
                      indeterminate: selectedItems.length > 0 && selectedItems.length < filteredResults.length,
                      onChange: handleSelectAll,
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "状态" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件名" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "分享链接" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "提取码" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "信息" })
                ] }) }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableBody, { children: filteredResults.map((result) => /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.includes(result.id),
                      onChange: () => handleItemSelect(result.id),
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { align: "center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StatusIcon, { status: result.status }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    TableCell,
                    {
                      sx: {
                        maxWidth: "200px",
                        overflow: "hidden",
                        textOverflow: "ellipsis",
                        whiteSpace: "nowrap"
                      },
                      title: result.fileName,
                      children: result.fileName
                    }
                  ),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.shareLink ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex items-center gap-1", children: [
                    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[150px]", children: result.shareLink }),
                    /* @__PURE__ */ jsxRuntimeExports.jsx(
                      IconButton,
                      {
                        size: "small",
                        onClick: () => copyLink(result.shareLink ?? ""),
                        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                      }
                    )
                  ] }) : "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.extractCode || "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusText,
                    {
                      status: result.status,
                      message: result.message
                    }
                  ) })
                ] }, result.id)) })
              ] }) })
            ] })
          ] })
        ] }) })
      }
    );
  });
  const Tianyi = () => {
    const shareDOM = React.useRef(null);
    const handleClick = () => {
      var _a;
      (_a = shareDOM.current) == null ? void 0 : _a.open();
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "outlined",
          startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ShareIcon, {}),
          onClick: handleClick,
          children: "批量分享"
        }
      ),
      /* @__PURE__ */ jsxRuntimeExports.jsx(ShareDrawer$6, { ref: shareDOM })
    ] });
  };
  var ExpireTimeEnum$4 = /* @__PURE__ */ ((ExpireTimeEnum2) => {
    ExpireTimeEnum2[ExpireTimeEnum2["forever"] = 1] = "forever";
    ExpireTimeEnum2[ExpireTimeEnum2["oneDay"] = 2] = "oneDay";
    ExpireTimeEnum2[ExpireTimeEnum2["sevenDay"] = 3] = "sevenDay";
    ExpireTimeEnum2[ExpireTimeEnum2["thirtyDay"] = 4] = "thirtyDay";
    return ExpireTimeEnum2;
  })(ExpireTimeEnum$4 || {});
  const ExpireTimeEnumMap$4 = {
    [
      2
      /* oneDay */
    ]: "1天",
    [
      3
      /* sevenDay */
    ]: "7天",
    [
      4
      /* thirtyDay */
    ]: "30天",
    [
      1
      /* forever */
    ]: "永久"
  };
  var UrlTypeEnum = /* @__PURE__ */ ((UrlTypeEnum2) => {
    UrlTypeEnum2[UrlTypeEnum2["noPwd"] = 1] = "noPwd";
    UrlTypeEnum2[UrlTypeEnum2["hasPwd"] = 2] = "hasPwd";
    return UrlTypeEnum2;
  })(UrlTypeEnum || {});
  const transformShareInfo$3 = (list) => {
    if (!list || list.length === 0) return [];
    return list.map((item) => ({
      id: item.fid,
      // 文件id
      fileName: item.file_name,
      // 文件名
      fileSize: bytesToSize(item.size),
      // 文件大小
      fileType: item.file_type,
      // 文件类型
      status: FileShareStatusEnum.ready
      // 状态
    }));
  };
  const formatStringForCopyAndDownload$5 = (list) => {
    return list.map((item) => `${item.fileName} ${item.shareLink} ${item.extractCode}`).join("\n");
  };
  const transformShareInfoForXlsx$5 = (list) => {
    return list.map((item) => ({
      文件名: item.fileName,
      文件大小: item.fileSize,
      分享链接: item.shareLink,
      提取码: item.extractCode,
      有效期: ExpireTimeEnumMap$4[item.expireTime]
    }));
  };
  const expireTimeOptions$3 = [
    { value: ExpireTimeEnum$4.oneDay, label: "1天" },
    { value: ExpireTimeEnum$4.sevenDay, label: "7天" },
    { value: ExpireTimeEnum$4.thirtyDay, label: "30天" },
    { value: ExpireTimeEnum$4.forever, label: "永久" }
  ];
  const ShareDrawer$5 = React.forwardRef((props, ref) => {
    React.useImperativeHandle(ref, () => {
      return {
        open() {
          setOpen(true);
        }
      };
    });
    const { name: cloudName } = useBaseCloudInfo();
    const [selectedItems, setSelectedItems] = React.useState([]);
    const {
      notifications,
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback
    } = useShare({ cloudName });
    const [shareConfig, setShareConfig] = React.useState({
      shareDelay: defaultGlobalSetting.defaultShareDelay,
      // 分享延迟
      expireTime: ExpireTimeEnum$4.forever,
      // 有效期
      enablePassword: false,
      // 是否启用提取码
      customCode: ""
      // 提取码
    });
    const filteredResults = shareResults.filter((result) => {
      if (filterStatus === "all") return true;
      return result.status === filterStatus;
    });
    const handleCancelClose = () => {
      handleDefaultCloseDrawerCallback();
    };
    const handlePrepareShare = async () => {
      var _a;
      try {
        setLoadingShareData(true);
        const result = findNodeReact(".section-main", [
          "selectedRowKeys",
          "list"
        ]);
        setShareResults(
          (_a = transformShareInfo$3(result.list)) == null ? void 0 : _a.filter(
            (item) => result.selectedRowKeys.includes(item.id)
          )
        );
        setIsPreparingShare(false);
        setIsPrepared(true);
      } catch (e) {
        notifications.show("获取分享文件列表失败" + e, {
          autoHideDuration: 1500,
          severity: "error"
        });
        console.error(e);
      } finally {
        setLoadingShareData(false);
      }
    };
    const handleCancelShare = () => {
      setIsCancelling(true);
      isCancellingRef.current = true;
    };
    const handleShare = async () => {
      setIsCancelling(false);
      setIsSharing(true);
      for (let i = 0; i < shareResults.length; i++) {
        if (isCancellingRef.current) {
          setIsSharing(false);
          break;
        }
        try {
          let password = "";
          if (shareConfig.enablePassword) {
            password = shareConfig.customCode ? shareConfig.customCode : generateRandomString();
          }
          const sendData = {
            expired_type: shareConfig.expireTime,
            //有效期
            fid_list: [shareResults[i].id],
            //文件id
            title: shareResults[i].fileName,
            //标题
            url_type: shareConfig.enablePassword ? UrlTypeEnum.hasPwd : UrlTypeEnum.noPwd,
            //url类型
            passcode: password
          };
          const { task_id } = await shareLogicMap[cloudEnum.quark].getTaskId(sendData);
          let shareIdInfo = await shareLogicMap[cloudEnum.quark].getShareId(task_id);
          if (!shareIdInfo.share_id) {
            await sleep(shareConfig.shareDelay);
            shareIdInfo = await shareLogicMap[cloudEnum.quark].getShareId(
              task_id,
              1
            );
          }
          const { share_url, passcode } = await shareLogicMap[cloudEnum.quark].getShareInfo(shareIdInfo.share_id);
          console.log(share_url, passcode);
          setShareResults((prev2) => {
            const updated = [...prev2];
            if (share_url) {
              updated[i] = {
                ...updated[i],
                expireTime: shareConfig.expireTime,
                status: FileShareStatusEnum.success,
                shareLink: share_url,
                extractCode: passcode
              };
            } else {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.error,
                message: "分享失败"
              };
            }
            return updated;
          });
        } catch (error) {
          console.log(error, "分享失败");
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = {
              ...updated[i],
              status: FileShareStatusEnum.error,
              message: "分享失败"
            };
            return updated;
          });
        } finally {
          setIsPreparingShare(true);
          setIsSharing(false);
          isCancellingRef.current = false;
          await sleep(shareConfig.shareDelay);
        }
      }
      resetShareStatus();
    };
    const handleItemSelect = (id) => {
      setSelectedItems(
        (prev2) => prev2.includes(id) ? prev2.filter((item) => item !== id) : [...prev2, id]
      );
    };
    const handleSelectAll = () => {
      if (selectedItems.length === filteredResults.length) {
        setSelectedItems([]);
      } else {
        setSelectedItems(filteredResults.map((item) => item.id));
      }
    };
    const handleDeleteSelected = () => {
      setShareResults(
        (prev2) => prev2.filter((item) => !selectedItems.includes(item.id))
      );
      setSelectedItems([]);
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      BaseDrawer,
      {
        open: open2,
        onClose: handleCancelClose,
        headerProps: {
          title: `${cloudName} 批量分享`,
          handleCancelClose
        },
        footerProps: {
          handleCancelClose,
          isPreparingShare,
          isSharing,
          isPrepared,
          isCancelling,
          handlePrepareShare,
          handleShare,
          handleCancelShare,
          copyToClipboard: () => {
            handleCopy(formatStringForCopyAndDownload$5(filteredResults));
          },
          downloadLinksToTxt: () => {
            handleDownloadLinks(formatStringForCopyAndDownload$5(filteredResults));
          },
          downloadLinksToExcel: () => {
            handleDownloadExcel(transformShareInfoForXlsx$5(filteredResults));
          },
          disabledCopy: isSharing,
          disabledDownloadLinks: isSharing,
          disabledDownloadExcel: isSharing
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex flex-col h-full p-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex-1 flex flex-col overflow-y-auto", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "border rounded-md bg-gray-50 mb-3", children: [
            /* @__PURE__ */ jsxRuntimeExports.jsxs(
              Box,
              {
                className: "flex justify-between items-center px-3 py-2 cursor-pointer",
                onClick: () => setConfigExpanded(!configExpanded),
                children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base m-0", children: "分享配置" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", children: configExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, {}) })
                ]
              }
            ),
            /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: configExpanded, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "p-3 pt-0 border-t", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "grid grid-cols-2 gap-3", children: [
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "分享延迟",
                  size: "small",
                  type: "number",
                  value: shareConfig.shareDelay,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareDelay: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 1,
                      step: 100
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, size: "small", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "有效期" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    label: "有效期",
                    value: shareConfig.expireTime,
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      expireTime: Number(e.target.value)
                    })),
                    size: "small",
                    children: expireTimeOptions$3.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                  }
                )
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      checked: shareConfig.enablePassword,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        enablePassword: e.target.checked
                      })),
                      size: "small"
                    }
                  ),
                  label: "开启提取码"
                }
              ) }),
              shareConfig.enablePassword && /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  size: "small",
                  value: shareConfig.customCode,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    customCode: e.target.value
                  })),
                  placeholder: "(可空)只能包含大小写英文+数字)",
                  slotProps: {
                    htmlInput: {
                      maxLength: 4
                    }
                  }
                }
              ) })
            ] }) }) })
          ] }),
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-3 h-0 flex-1", children: [
            loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex justify-center items-center mt-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 50 }) }),
            shareResults.length > 0 && !loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base", children: "分享结果" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusCount,
                    {
                      shareResults,
                      selectedItems
                    }
                  )
                ] }),
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex gap-2", children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "删除已选项", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    IconButton,
                    {
                      size: "small",
                      onClick: handleDeleteSelected,
                      disabled: selectedItems.length === 0 || isSharing,
                      color: "error",
                      children: /* @__PURE__ */ jsxRuntimeExports.jsx(DeleteIcon, { fontSize: "small" })
                    }
                  ) }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Select,
                    {
                      value: filterStatus,
                      size: "small",
                      onChange: (e) => setFilterStatus(e.target.value),
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "all", children: "全部" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "ready", children: "准备分享" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "sharing", children: "分享中" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "success", children: "分享成功" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "error", children: "分享失败" })
                      ]
                    }
                  ) })
                ] })
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(TableContainer, { component: Paper, variant: "outlined", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table, { size: "small", className: "text-sm", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.length === filteredResults.length && filteredResults.length > 0,
                      indeterminate: selectedItems.length > 0 && selectedItems.length < filteredResults.length,
                      onChange: handleSelectAll,
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "状态" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件名" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件大小" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "分享链接" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "提取码" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "信息" })
                ] }) }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableBody, { children: filteredResults.map((result) => /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.includes(result.id),
                      onChange: () => handleItemSelect(result.id),
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { align: "center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StatusIcon, { status: result.status }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    TableCell,
                    {
                      sx: {
                        maxWidth: "200px",
                        overflow: "hidden",
                        textOverflow: "ellipsis",
                        whiteSpace: "nowrap"
                      },
                      title: result.fileName,
                      children: result.fileName
                    }
                  ),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.fileSize }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.shareLink ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex items-center gap-1", children: [
                    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[150px]", children: result.shareLink }),
                    /* @__PURE__ */ jsxRuntimeExports.jsx(
                      IconButton,
                      {
                        size: "small",
                        onClick: () => copyLink(result.shareLink ?? ""),
                        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                      }
                    )
                  ] }) : "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.extractCode || "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusText,
                    {
                      status: result.status,
                      message: result.message
                    }
                  ) })
                ] }, result.id)) })
              ] }) })
            ] })
          ] })
        ] }) })
      }
    );
  });
  const Quark = () => {
    const shareDOM = React.useRef(null);
    const handleClick = () => {
      var _a;
      (_a = shareDOM.current) == null ? void 0 : _a.open();
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "outlined",
          startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ShareIcon, {}),
          onClick: handleClick,
          children: "批量分享"
        }
      ),
      /* @__PURE__ */ jsxRuntimeExports.jsx(ShareDrawer$5, { ref: shareDOM })
    ] });
  };
  var ExpireTimeEnum$3 = /* @__PURE__ */ ((ExpireTimeEnum2) => {
    ExpireTimeEnum2[ExpireTimeEnum2["forever"] = -1] = "forever";
    ExpireTimeEnum2[ExpireTimeEnum2["sevenDay"] = 7] = "sevenDay";
    ExpireTimeEnum2[ExpireTimeEnum2["thirtyDay"] = 30] = "thirtyDay";
    return ExpireTimeEnum2;
  })(ExpireTimeEnum$3 || {});
  const ExpireTimeEnumMap$3 = {
    [
      7
      /* sevenDay */
    ]: "7天",
    [
      30
      /* thirtyDay */
    ]: "30天",
    [
      -1
      /* forever */
    ]: "永久"
  };
  const expireTimeOptions$2 = [
    { value: ExpireTimeEnum$3.sevenDay, label: "7天" },
    { value: ExpireTimeEnum$3.thirtyDay, label: "30天" },
    { value: ExpireTimeEnum$3.forever, label: "永久" }
  ];
  const transformShareInfo$2 = (list) => {
    if (!list || list.length === 0) return [];
    return list.map((item) => ({
      id: item.fileId,
      //文件id
      fileName: item.name,
      //文件名
      fileSize: bytesToSize(item.size),
      //文件大小
      status: FileShareStatusEnum.ready,
      //状态
      driveId: item.driveId
      //网盘id
    }));
  };
  const formatStringForCopyAndDownload$4 = (list) => {
    return list.map((item) => `${item.fileName} ${item.shareLink} ${item.extractCode}`).join("\n");
  };
  const transformShareInfoForXlsx$4 = (list) => {
    return list.map((item) => ({
      文件名: item.fileName,
      文件大小: item.fileSize,
      分享链接: item.shareLink,
      提取码: item.extractCode,
      有效期: ExpireTimeEnumMap$3[item.expireTime]
    }));
  };
  const ShareDrawer$4 = React.forwardRef((props, ref) => {
    React.useImperativeHandle(ref, () => {
      return {
        open() {
          setOpen(true);
        }
      };
    });
    const { name: cloudName } = useBaseCloudInfo();
    const [selectedItems, setSelectedItems] = React.useState([]);
    const {
      notifications,
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback
    } = useShare({ cloudName });
    const [shareConfig, setShareConfig] = React.useState({
      shareDelay: defaultGlobalSetting.defaultShareDelay,
      // 分享延迟
      expireTime: ExpireTimeEnum$3.forever,
      // 有效期
      enablePassword: false,
      // 是否启用提取码
      customCode: ""
      // 自定义提取码
    });
    const filteredResults = shareResults.filter((result) => {
      if (filterStatus === "all") return true;
      return result.status === filterStatus;
    });
    const handleCancelClose = () => {
      handleDefaultCloseDrawerCallback();
    };
    const handlePrepareShare = async () => {
      try {
        setLoadingShareData(true);
        const result = findNodeReact("div[class^='node-list--']", [
          "selectedItems"
        ]);
        setShareResults(transformShareInfo$2(result.selectedItems));
        setIsPreparingShare(false);
        setIsPrepared(true);
      } catch (e) {
        notifications.show("获取分享文件列表失败" + e, {
          autoHideDuration: 1500,
          severity: "error"
        });
        console.error(e);
      } finally {
        setLoadingShareData(false);
      }
    };
    const handleCancelShare = () => {
      setIsCancelling(true);
      isCancellingRef.current = true;
    };
    const handleShare = async () => {
      setIsCancelling(false);
      setIsSharing(true);
      for (let i = 0; i < shareResults.length; i++) {
        if (isCancellingRef.current) {
          setIsSharing(false);
          break;
        }
        try {
          let password = "";
          if (shareConfig.enablePassword) {
            password = shareConfig.customCode ? shareConfig.customCode : generateRandomString();
          }
          const shareData = {
            drive_id: shareResults[i].driveId,
            expiration: shareResults[i].expireTime,
            file_id_list: [shareResults[i].id],
            sync_to_homepage: false,
            share_pwd: password
          };
          const res = await shareLogicMap[cloudEnum.alipan].share(shareData);
          setShareResults((prev2) => {
            const { share_url, share_msg, share_pwd, display_message } = res || {};
            const updated = [...prev2];
            if (share_url) {
              updated[i] = {
                ...updated[i],
                expireTime: shareConfig.expireTime,
                status: FileShareStatusEnum.success,
                shareLink: share_url,
                extractCode: share_pwd
              };
            } else {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.error,
                message: `分享失败:${share_msg || display_message}`
              };
            }
            return updated;
          });
        } catch (error) {
          console.log(error, "分享失败");
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = {
              ...updated[i],
              status: FileShareStatusEnum.error,
              message: "分享失败"
            };
            return updated;
          });
        } finally {
          setIsPreparingShare(true);
          setIsSharing(false);
          isCancellingRef.current = false;
          await sleep(shareConfig.shareDelay);
        }
      }
      resetShareStatus();
    };
    const handleItemSelect = (id) => {
      setSelectedItems(
        (prev2) => prev2.includes(id) ? prev2.filter((item) => item !== id) : [...prev2, id]
      );
    };
    const handleSelectAll = () => {
      if (selectedItems.length === filteredResults.length) {
        setSelectedItems([]);
      } else {
        setSelectedItems(filteredResults.map((item) => item.id));
      }
    };
    const handleDeleteSelected = () => {
      setShareResults(
        (prev2) => prev2.filter((item) => !selectedItems.includes(item.id))
      );
      setSelectedItems([]);
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      BaseDrawer,
      {
        open: open2,
        onClose: handleCancelClose,
        headerProps: {
          title: `${cloudName} 批量分享`,
          handleCancelClose
        },
        footerProps: {
          handleCancelClose,
          isPreparingShare,
          isSharing,
          isPrepared,
          isCancelling,
          handlePrepareShare,
          handleShare,
          handleCancelShare,
          copyToClipboard: () => {
            handleCopy(formatStringForCopyAndDownload$4(filteredResults));
          },
          downloadLinksToTxt: () => {
            handleDownloadLinks(formatStringForCopyAndDownload$4(filteredResults));
          },
          downloadLinksToExcel: () => {
            handleDownloadExcel(transformShareInfoForXlsx$4(filteredResults));
          },
          disabledCopy: isSharing,
          disabledDownloadLinks: isSharing,
          disabledDownloadExcel: isSharing
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex flex-col h-full p-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex-1 flex flex-col overflow-y-auto", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "border rounded-md bg-gray-50 mb-3", children: [
            /* @__PURE__ */ jsxRuntimeExports.jsxs(
              Box,
              {
                className: "flex justify-between items-center px-3 py-2 cursor-pointer",
                onClick: () => setConfigExpanded(!configExpanded),
                children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base m-0", children: "分享配置" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", children: configExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, {}) })
                ]
              }
            ),
            /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: configExpanded, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "p-3 pt-0 border-t", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "grid grid-cols-2 gap-3", children: [
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "分享延迟",
                  size: "small",
                  type: "number",
                  value: shareConfig.shareDelay,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareDelay: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 1,
                      step: 100
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, size: "small", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "有效期" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    label: "有效期",
                    value: shareConfig.expireTime,
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      expireTime: Number(e.target.value)
                    })),
                    size: "small",
                    children: expireTimeOptions$2.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                  }
                )
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      checked: shareConfig.enablePassword,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        enablePassword: e.target.checked
                      })),
                      size: "small"
                    }
                  ),
                  label: "开启提取码"
                }
              ) }),
              shareConfig.enablePassword && /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  size: "small",
                  value: shareConfig.customCode,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    customCode: e.target.value
                  })),
                  placeholder: "(可空)只能包含大小写英文+数字)",
                  slotProps: {
                    htmlInput: {
                      maxLength: 4
                    }
                  }
                }
              ) })
            ] }) }) })
          ] }),
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-3 h-0 flex-1", children: [
            loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex justify-center items-center mt-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 50 }) }),
            shareResults.length > 0 && !loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base", children: "分享结果" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusCount,
                    {
                      shareResults,
                      selectedItems
                    }
                  )
                ] }),
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex gap-2", children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "删除已选项", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    IconButton,
                    {
                      size: "small",
                      onClick: handleDeleteSelected,
                      disabled: selectedItems.length === 0 || isSharing,
                      color: "error",
                      children: /* @__PURE__ */ jsxRuntimeExports.jsx(DeleteIcon, { fontSize: "small" })
                    }
                  ) }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Select,
                    {
                      value: filterStatus,
                      size: "small",
                      onChange: (e) => setFilterStatus(e.target.value),
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "all", children: "全部" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "ready", children: "准备分享" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "sharing", children: "分享中" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "success", children: "分享成功" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "error", children: "分享失败" })
                      ]
                    }
                  ) })
                ] })
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(TableContainer, { component: Paper, variant: "outlined", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table, { size: "small", className: "text-sm", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.length === filteredResults.length && filteredResults.length > 0,
                      indeterminate: selectedItems.length > 0 && selectedItems.length < filteredResults.length,
                      onChange: handleSelectAll,
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "状态" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件名" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件大小" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "分享链接" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "提取码" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "信息" })
                ] }) }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableBody, { children: filteredResults.map((result) => /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.includes(result.id),
                      onChange: () => handleItemSelect(result.id),
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { align: "center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StatusIcon, { status: result.status }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    TableCell,
                    {
                      sx: {
                        maxWidth: "200px",
                        overflow: "hidden",
                        textOverflow: "ellipsis",
                        whiteSpace: "nowrap"
                      },
                      title: result.fileName,
                      children: result.fileName
                    }
                  ),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.fileSize }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.shareLink ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex items-center gap-1", children: [
                    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[150px]", children: result.shareLink }),
                    /* @__PURE__ */ jsxRuntimeExports.jsx(
                      IconButton,
                      {
                        size: "small",
                        onClick: () => copyLink(result.shareLink ?? ""),
                        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                      }
                    )
                  ] }) : "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.extractCode || "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusText,
                    {
                      status: result.status,
                      message: result.message
                    }
                  ) })
                ] }, result.id)) })
              ] }) })
            ] })
          ] })
        ] }) })
      }
    );
  });
  const Alipan = () => {
    const shareDOM = React.useRef(null);
    const handleClick = () => {
      var _a;
      (_a = shareDOM.current) == null ? void 0 : _a.open();
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsxs(
        "div",
        {
          onClick: handleClick,
          style: {
            display: "flex",
            flexDirection: "column",
            alignItems: "center",
            cursor: "pointer",
            padding: "8px",
            color: "#666"
          },
          children: [
            /* @__PURE__ */ jsxRuntimeExports.jsx(ShareIcon, { style: { fontSize: "20px" } }),
            /* @__PURE__ */ jsxRuntimeExports.jsx(
              "span",
              {
                style: {
                  fontSize: "12px",
                  marginTop: "4px"
                },
                children: "分享"
              }
            )
          ]
        }
      ),
      /* @__PURE__ */ jsxRuntimeExports.jsx(ShareDrawer$4, { ref: shareDOM })
    ] });
  };
  var ExpireTimeEnum$2 = /* @__PURE__ */ ((ExpireTimeEnum2) => {
    ExpireTimeEnum2[ExpireTimeEnum2["oneDay"] = 1] = "oneDay";
    ExpireTimeEnum2[ExpireTimeEnum2["sevenDay"] = 2] = "sevenDay";
    ExpireTimeEnum2[ExpireTimeEnum2["forever"] = 4] = "forever";
    return ExpireTimeEnum2;
  })(ExpireTimeEnum$2 || {});
  const ExpireTimeEnumMap$2 = {
    [
      1
      /* oneDay */
    ]: "1天",
    [
      2
      /* sevenDay */
    ]: "7天",
    [
      4
      /* forever */
    ]: "永久"
  };
  const ExpireTimeEnumMapVersion2 = {
    [
      1
      /* oneDay */
    ]: 1,
    [
      2
      /* sevenDay */
    ]: 7,
    [
      4
      /* forever */
    ]: null
  };
  var CatalogTypeEnum = /* @__PURE__ */ ((CatalogTypeEnum2) => {
    CatalogTypeEnum2[CatalogTypeEnum2["file"] = 0] = "file";
    CatalogTypeEnum2[CatalogTypeEnum2["folder"] = 1] = "folder";
    return CatalogTypeEnum2;
  })(CatalogTypeEnum || {});
  const expireTimeOptions$1 = [
    { value: ExpireTimeEnum$2.oneDay, label: "1天" },
    { value: ExpireTimeEnum$2.sevenDay, label: "7天" },
    { value: ExpireTimeEnum$2.forever, label: "永久" }
  ];
  const getShareList = () => {
    const tempDOM = document.querySelector(".main_file_list");
    const instance = tempDOM == null ? void 0 : tempDOM.__vue__;
    if (!instance)
      return {
        list: []
      };
    return {
      list: (instance == null ? void 0 : instance.selectList) ?? []
    };
  };
  const transformShareInfo$1 = (list) => {
    if (!list || list.length === 0) return [];
    return list.map(({ item }) => ({
      id: (item == null ? void 0 : item.contentID) ? item == null ? void 0 : item.contentID : item == null ? void 0 : item.catalogID,
      //文件id (文件夹id)
      fileName: (item == null ? void 0 : item.contentName) ? item == null ? void 0 : item.contentName : item == null ? void 0 : item.catalogName,
      //文件名 (文件夹名称)
      owner: (item == null ? void 0 : item.owner) ?? "",
      //分享用得到
      status: FileShareStatusEnum.ready,
      //状态
      catalogType: (item == null ? void 0 : item.contentID) ? CatalogTypeEnum.file : CatalogTypeEnum.folder
      //0代表文件分享 1代表文件夹分享
    }));
  };
  const formatStringForCopyAndDownload$3 = (list) => {
    return list.map((item) => `${item.fileName} ${item.shareLink} ${item.extractCode}`).join("\n");
  };
  const transformShareInfoForXlsx$3 = (list) => {
    return list.map((item) => ({
      文件名: item.fileName,
      分享链接: item.shareLink,
      提取码: item.extractCode,
      有效期: ExpireTimeEnumMap$2[item.expireTime]
    }));
  };
  const ShareDrawer$3 = React.forwardRef((props, ref) => {
    React.useImperativeHandle(ref, () => {
      return {
        open() {
          setOpen(true);
        }
      };
    });
    const [userInfo, setUserInfo] = React.useState(() => {
      var _a, _b, _c, _d;
      return (_d = (_c = (_b = (_a = document.querySelector(".body_main")) == null ? void 0 : _a.__vue__) == null ? void 0 : _b.$store) == null ? void 0 : _c.state) == null ? void 0 : _d.auth;
    });
    const [authInfo] = React.useState(() => {
      const regex = /authorization=Basic\s([A-Za-z0-9+/=]+)/;
      const match2 = document.cookie.match(regex);
      if (match2) {
        return "Basic " + (match2 == null ? void 0 : match2[1]);
      } else {
        return "";
      }
    });
    const { name: cloudName } = useBaseCloudInfo();
    const [selectedItems, setSelectedItems] = React.useState([]);
    const {
      notifications,
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback
    } = useShare({ cloudName });
    const [shareConfig, setShareConfig] = React.useState({
      shareDelay: defaultGlobalSetting.defaultShareDelay,
      // 分享延迟
      expireTime: ExpireTimeEnum$2.forever
      // 有效期
    });
    const filteredResults = shareResults.filter((result) => {
      if (filterStatus === "all") return true;
      return result.status === filterStatus;
    });
    const handleCancelClose = () => {
      handleDefaultCloseDrawerCallback();
    };
    const handlePrepareShare = async () => {
      try {
        setLoadingShareData(true);
        const { list } = getShareList();
        setShareResults(transformShareInfo$1(list));
        setIsPreparingShare(false);
        setIsPrepared(true);
      } catch (e) {
        notifications.show("获取分享文件列表失败" + e, {
          autoHideDuration: 1500,
          severity: "error"
        });
        console.error(e);
      } finally {
        setLoadingShareData(false);
      }
    };
    const handleCancelShare = () => {
      setIsCancelling(true);
      isCancellingRef.current = true;
    };
    const handleShare = async () => {
      setIsCancelling(false);
      setIsSharing(true);
      for (let i = 0; i < shareResults.length; i++) {
        if (isCancellingRef.current) {
          setIsSharing(false);
          break;
        }
        try {
          const { userPhone, accountPhone } = userInfo;
          const currentShare = shareResults[i];
          const res = await shareLogicMap[cloudEnum.yidong139].share(
            {
              getOutLinkReq: {
                period: ExpireTimeEnumMapVersion2[shareConfig.expireTime],
                caIDLst: currentShare.catalogType === CatalogTypeEnum.folder ? [currentShare.id] : [],
                //分享的文件夹
                coIDLst: currentShare.catalogType === CatalogTypeEnum.file ? [currentShare.id] : [],
                //分享的文件
                commonAccountInfo: {
                  //新建文件夹可能无法获取,就存储了下用户的手机,无法获取再从用户那边读取
                  account: currentShare.owner ? currentShare.owner : accountPhone || userPhone,
                  //账户名,一般是手机号
                  accountType: 1
                },
                dedicatedName: currentShare.fileName,
                //文件或文件夹名称
                encrypt: 1,
                extInfo: {
                  isWatermark: 0,
                  shareChannel: "3001"
                },
                periodUnit: 1,
                pubType: 1,
                subLinkType: 0,
                viewerLst: []
              }
            },
            authInfo
          );
          setShareResults((prev2) => {
            const updated = [...prev2];
            const { code, data } = res;
            if (code === "0") {
              const { getOutLinkRes: { getOutLinkResSet = [] } = {} } = data;
              const resultInfo = (getOutLinkResSet == null ? void 0 : getOutLinkResSet[0]) ?? {};
              updated[i] = {
                ...updated[i],
                expireTime: shareConfig.expireTime,
                status: FileShareStatusEnum.success,
                shareLink: resultInfo == null ? void 0 : resultInfo.linkUrl,
                extractCode: resultInfo == null ? void 0 : resultInfo.passwd
              };
            } else {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.error,
                message: `分享失败` + ((data == null ? void 0 : data.message) ?? "")
              };
            }
            return updated;
          });
        } catch (error) {
          console.log(error, "分享失败");
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = {
              ...updated[i],
              status: FileShareStatusEnum.error,
              message: "分享失败"
            };
            return updated;
          });
        } finally {
          setIsPreparingShare(true);
          setIsSharing(false);
          isCancellingRef.current = false;
          await sleep(shareConfig.shareDelay);
        }
      }
      resetShareStatus();
    };
    const handleItemSelect = (id) => {
      setSelectedItems(
        (prev2) => prev2.includes(id) ? prev2.filter((item) => item !== id) : [...prev2, id]
      );
    };
    const handleSelectAll = () => {
      if (selectedItems.length === filteredResults.length) {
        setSelectedItems([]);
      } else {
        setSelectedItems(filteredResults.map((item) => item.id));
      }
    };
    const handleDeleteSelected = () => {
      setShareResults(
        (prev2) => prev2.filter((item) => !selectedItems.includes(item.id))
      );
      setSelectedItems([]);
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      BaseDrawer,
      {
        open: open2,
        onClose: handleCancelClose,
        headerProps: {
          title: `${cloudName} 批量分享`,
          handleCancelClose
        },
        footerProps: {
          handleCancelClose,
          isPreparingShare,
          isSharing,
          isPrepared,
          isCancelling,
          handlePrepareShare,
          handleShare,
          handleCancelShare,
          copyToClipboard: () => {
            handleCopy(formatStringForCopyAndDownload$3(filteredResults));
          },
          downloadLinksToTxt: () => {
            handleDownloadLinks(formatStringForCopyAndDownload$3(filteredResults));
          },
          downloadLinksToExcel: () => {
            handleDownloadExcel(transformShareInfoForXlsx$3(filteredResults));
          },
          disabledCopy: isSharing,
          disabledDownloadLinks: isSharing,
          disabledDownloadExcel: isSharing
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex flex-col h-full p-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex-1 flex flex-col overflow-y-auto", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "border rounded-md bg-gray-50 mb-3", children: [
            /* @__PURE__ */ jsxRuntimeExports.jsxs(
              Box,
              {
                className: "flex justify-between items-center px-3 py-2 cursor-pointer",
                onClick: () => setConfigExpanded(!configExpanded),
                children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base m-0", children: "分享配置" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", children: configExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, {}) })
                ]
              }
            ),
            /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: configExpanded, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "p-3 pt-0 border-t", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "grid grid-cols-2 gap-3", children: [
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "分享延迟",
                  size: "small",
                  type: "number",
                  value: shareConfig.shareDelay,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareDelay: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 1,
                      step: 100
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, size: "small", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "有效期" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    label: "有效期",
                    value: shareConfig.expireTime,
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      expireTime: Number(e.target.value)
                    })),
                    size: "small",
                    children: expireTimeOptions$1.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                  }
                )
              ] })
            ] }) }) })
          ] }),
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-3 h-0 flex-1", children: [
            loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex justify-center items-center mt-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 50 }) }),
            shareResults.length > 0 && !loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base", children: "分享结果" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusCount,
                    {
                      shareResults,
                      selectedItems
                    }
                  )
                ] }),
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex gap-2", children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "删除已选项", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    IconButton,
                    {
                      size: "small",
                      onClick: handleDeleteSelected,
                      disabled: selectedItems.length === 0 || isSharing,
                      color: "error",
                      children: /* @__PURE__ */ jsxRuntimeExports.jsx(DeleteIcon, { fontSize: "small" })
                    }
                  ) }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Select,
                    {
                      value: filterStatus,
                      size: "small",
                      onChange: (e) => setFilterStatus(e.target.value),
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "all", children: "全部" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "ready", children: "准备分享" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "sharing", children: "分享中" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "success", children: "分享成功" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "error", children: "分享失败" })
                      ]
                    }
                  ) })
                ] })
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(TableContainer, { component: Paper, variant: "outlined", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table, { size: "small", className: "text-sm", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.length === filteredResults.length && filteredResults.length > 0,
                      indeterminate: selectedItems.length > 0 && selectedItems.length < filteredResults.length,
                      onChange: handleSelectAll,
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "状态" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件名" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "分享链接" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "提取码" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "信息" })
                ] }) }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableBody, { children: filteredResults.map((result) => /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.includes(result.id),
                      onChange: () => handleItemSelect(result.id),
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { align: "center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StatusIcon, { status: result.status }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    TableCell,
                    {
                      sx: {
                        maxWidth: "200px",
                        overflow: "hidden",
                        textOverflow: "ellipsis",
                        whiteSpace: "nowrap"
                      },
                      title: result.fileName,
                      children: result.fileName
                    }
                  ),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.shareLink ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex items-center gap-1", children: [
                    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[150px]", children: result.shareLink }),
                    /* @__PURE__ */ jsxRuntimeExports.jsx(
                      IconButton,
                      {
                        size: "small",
                        onClick: () => copyLink(result.shareLink ?? ""),
                        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                      }
                    )
                  ] }) : "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.extractCode ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex items-center gap-1", children: [
                    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[150px]", children: result.extractCode }),
                    /* @__PURE__ */ jsxRuntimeExports.jsx(
                      IconButton,
                      {
                        size: "small",
                        onClick: () => copyLink(result.extractCode ?? ""),
                        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                      }
                    )
                  ] }) : "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusText,
                    {
                      status: result.status,
                      message: result.message
                    }
                  ) })
                ] }, result.id)) })
              ] }) })
            ] })
          ] })
        ] }) })
      }
    );
  });
  const Xunlei = () => {
    const shareDOM = React.useRef(null);
    const handleClick = () => {
      var _a;
      (_a = shareDOM.current) == null ? void 0 : _a.open();
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "outlined",
          startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ShareIcon, {}),
          onClick: handleClick,
          children: "批量分享"
        }
      ),
      /* @__PURE__ */ jsxRuntimeExports.jsx(ShareDrawer$3, { ref: shareDOM })
    ] });
  };
  var FileTypeEnum$1 = /* @__PURE__ */ ((FileTypeEnum2) => {
    FileTypeEnum2["FOLDER"] = "folder";
    FileTypeEnum2["FILE"] = "file";
    return FileTypeEnum2;
  })(FileTypeEnum$1 || {});
  const FileTypeMap = {
    [
      "folder"
      /* FOLDER */
    ]: "文件夹",
    [
      "file"
      /* FILE */
    ]: "文件"
  };
  var TaskEnum = /* @__PURE__ */ ((TaskEnum2) => {
    TaskEnum2[TaskEnum2["file"] = 18] = "file";
    TaskEnum2[TaskEnum2["share"] = 22] = "share";
    TaskEnum2[TaskEnum2["setCodeFile"] = 23] = "setCodeFile";
    TaskEnum2[TaskEnum2["setCodeFolder"] = 16] = "setCodeFolder";
    TaskEnum2[TaskEnum2["reqFolderList"] = 47] = "reqFolderList";
    TaskEnum2[TaskEnum2["reqFileList"] = 5] = "reqFileList";
    return TaskEnum2;
  })(TaskEnum || {});
  const getFileList = () => {
    const temp = document.querySelector("iframe");
    const iframeWindow = temp.contentWindow;
    if (!iframeWindow) {
      return { folderList: [], fileList: [] };
    }
    if (iframeWindow) {
      const folderListDOM = iframeWindow == null ? void 0 : iframeWindow.document.querySelectorAll(
        "#sub_folder_list > .f_tb"
      );
      const fileListDOM = iframeWindow == null ? void 0 : iframeWindow.document.querySelectorAll("#filelist > .f_tb");
      const folderList = Array.from(folderListDOM).map((item) => {
        var _a;
        const id = item.getAttribute("id");
        return {
          id: (id == null ? void 0 : id.startsWith("fol")) ? id.slice(3) : "",
          //文件id
          fileName: (_a = item.querySelector("[class^='f_name'] [id^=folname]")) == null ? void 0 : _a.textContent,
          //文件夹名
          fileType: FileTypeEnum$1.FOLDER,
          status: FileShareStatusEnum.ready
        };
      });
      const fileList = Array.from(fileListDOM).map((item) => {
        var _a, _b, _c;
        const id = item.getAttribute("id");
        return {
          id: (id == null ? void 0 : id.startsWith("f")) ? id.slice(1) : "",
          //文件id
          fileName: (_a = item.querySelector(".f_name .f_name_title")) == null ? void 0 : _a.textContent,
          //文件名
          fileSize: (_b = item.querySelector(".f_size")) == null ? void 0 : _b.textContent,
          //文件大小
          fileTime: (_c = item.querySelector(".f_time")) == null ? void 0 : _c.textContent,
          //文件时间
          status: FileShareStatusEnum.ready,
          fileType: FileTypeEnum$1.FILE
        };
      });
      return {
        folderList,
        fileList
      };
    } else {
      return {
        folderList: [],
        fileList: []
      };
    }
  };
  const formatStringForCopyAndDownload$2 = (list) => {
    return list.map((item) => `${item.fileName} ${item.shareLink} ${item.extractCode}`).join("\n");
  };
  const transformShareInfoForXlsx$2 = (list) => {
    return list.map((item) => ({
      文件类型: FileTypeMap[item.fileType],
      文件名: item.fileName,
      文件大小: item.fileSize,
      文件时间: item.fileTime,
      分享链接: item.shareLink,
      提取码: item.extractCode
    }));
  };
  const FolderIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"
  }));
  const FileIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
    d: "M15 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V7zM6 20V4h8v4h4v12zm10-10v5c0 2.21-1.79 4-4 4s-4-1.79-4-4V8.5c0-1.47 1.26-2.64 2.76-2.49 1.3.13 2.24 1.32 2.24 2.63V15h-2V8.5c0-.28-.22-.5-.5-.5s-.5.22-.5.5V15c0 1.1.9 2 2 2s2-.9 2-2v-5z"
  }));
  const ShareDrawer$2 = React.forwardRef((props, ref) => {
    React.useImperativeHandle(ref, () => {
      return {
        open() {
          setOpen(true);
        }
      };
    });
    const { name: cloudName } = useBaseCloudInfo();
    const [selectedItems, setSelectedItems] = React.useState([]);
    const {
      notifications,
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback
    } = useShare({ cloudName });
    const [shareConfig, setShareConfig] = React.useState({
      shareDelay: defaultGlobalSetting.defaultShareDelay,
      // 分享延迟
      enableCustomCode: false,
      // 是否启用自定义提取码
      customCode: ""
      // 自定义提取码
    });
    const filteredResults = shareResults.filter((result) => {
      if (filterStatus === "all") return true;
      return result.status === filterStatus;
    });
    const handleCancelClose = () => {
      handleDefaultCloseDrawerCallback();
    };
    const handlePrepareShare = async () => {
      try {
        setLoadingShareData(true);
        const { folderList, fileList } = getFileList();
        setShareResults([...folderList, ...fileList]);
        setIsPreparingShare(false);
        setIsPrepared(true);
      } catch (e) {
        notifications.show("获取分享文件列表失败" + e, {
          autoHideDuration: 1500,
          severity: "error"
        });
        console.error(e);
      } finally {
        setLoadingShareData(false);
      }
    };
    const handleCancelShare = () => {
      setIsCancelling(true);
      isCancellingRef.current = true;
    };
    const handleShare = async () => {
      setIsCancelling(false);
      setIsSharing(true);
      for (let i = 0; i < shareResults.length; i++) {
        if (isCancellingRef.current) {
          setIsSharing(false);
          break;
        }
        try {
          const shareItem = shareResults[i];
          let sendDataOne = {};
          if (shareItem.fileType === FileTypeEnum$1.FILE) {
            sendDataOne = {
              task: TaskEnum.share,
              file_id: shareItem.id
            };
          } else {
            sendDataOne = {
              task: TaskEnum.file,
              folder_id: shareItem.id
            };
          }
          const resOne = await shareLogicMap[cloudEnum.lanzou].share(sendDataOne);
          await sleep(shareConfig.shareDelay);
          let password = "";
          if (shareConfig.enableCustomCode) {
            password = shareConfig.customCode ? shareConfig.customCode : generateRandomString(4);
            sendDataOne.shownames = password;
            if (shareItem.fileType === FileTypeEnum$1.FILE) {
              sendDataOne.task = TaskEnum.setCodeFile;
            } else {
              sendDataOne.task = TaskEnum.setCodeFolder;
            }
            sendDataOne.shows = "1";
          }
          const resTwo = await shareLogicMap[cloudEnum.lanzou].share(sendDataOne);
          setShareResults((prev2) => {
            const updated = [...prev2];
            let share_url = null;
            if (shareItem.fileType === FileTypeEnum$1.FILE) {
              share_url = `${resOne.info.is_newd}/${resOne.info.f_id}`;
            } else {
              share_url = resOne.info.new_url;
            }
            if (share_url) {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.success,
                shareLink: share_url,
                extractCode: password ? password : resOne.info.pwd
              };
            } else {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.error,
                message: "分享失败"
              };
            }
            return updated;
          });
        } catch (error) {
          console.log(error, "分享失败");
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = {
              ...updated[i],
              status: FileShareStatusEnum.error,
              message: "分享失败"
            };
            return updated;
          });
        } finally {
          setIsPreparingShare(true);
          setIsSharing(false);
          isCancellingRef.current = false;
          await sleep(shareConfig.shareDelay);
        }
      }
      resetShareStatus();
    };
    const handleItemSelect = (id) => {
      setSelectedItems(
        (prev2) => prev2.includes(id) ? prev2.filter((item) => item !== id) : [...prev2, id]
      );
    };
    const handleSelectAll = () => {
      if (selectedItems.length === filteredResults.length) {
        setSelectedItems([]);
      } else {
        setSelectedItems(filteredResults.map((item) => item.id));
      }
    };
    const handleDeleteSelected = () => {
      setShareResults(
        (prev2) => prev2.filter((item) => !selectedItems.includes(item.id))
      );
      setSelectedItems([]);
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      BaseDrawer,
      {
        open: open2,
        onClose: handleCancelClose,
        width: "60vw",
        headerProps: {
          title: `${cloudName} 批量分享`,
          handleCancelClose
        },
        footerProps: {
          handleCancelClose,
          isPreparingShare,
          isSharing,
          isPrepared,
          isCancelling,
          handlePrepareShare,
          handleShare,
          handleCancelShare,
          copyToClipboard: () => {
            handleCopy(formatStringForCopyAndDownload$2(filteredResults));
          },
          downloadLinksToTxt: () => {
            handleDownloadLinks(formatStringForCopyAndDownload$2(filteredResults));
          },
          downloadLinksToExcel: () => {
            handleDownloadExcel(transformShareInfoForXlsx$2(filteredResults));
          },
          disabledCopy: isSharing,
          disabledDownloadLinks: isSharing,
          disabledDownloadExcel: isSharing
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex flex-col h-full p-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex-1 flex flex-col overflow-y-auto", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "border rounded-md bg-gray-50 mb-3", children: [
            /* @__PURE__ */ jsxRuntimeExports.jsxs(
              Box,
              {
                className: "flex justify-between items-center px-3 py-2 cursor-pointer",
                onClick: () => setConfigExpanded(!configExpanded),
                children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base m-0", children: "分享配置" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", children: configExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, {}) })
                ]
              }
            ),
            /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: configExpanded, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "p-3 pt-0 border-t", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "grid grid-cols-2 gap-3", children: [
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "分享延迟",
                  size: "small",
                  type: "number",
                  value: shareConfig.shareDelay,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareDelay: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 1,
                      step: 100
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      checked: shareConfig.enableCustomCode,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        enableCustomCode: e.target.checked
                      })),
                      size: "small"
                    }
                  ),
                  label: "开启提取码"
                }
              ) }),
              shareConfig.enableCustomCode && /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  size: "small",
                  value: shareConfig.customCode,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    customCode: e.target.value
                  })),
                  placeholder: "(可空)只能包含大小写英文+数字)",
                  slotProps: {
                    htmlInput: {
                      maxLength: 4
                    }
                  }
                }
              ) })
            ] }) }) })
          ] }),
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-3 h-0 flex-1", children: [
            loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex justify-center items-center mt-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 50 }) }),
            shareResults.length > 0 && !loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base", children: "分享结果" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusCount,
                    {
                      shareResults,
                      selectedItems
                    }
                  )
                ] }),
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex gap-2", children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "删除已选项", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    IconButton,
                    {
                      size: "small",
                      onClick: handleDeleteSelected,
                      disabled: selectedItems.length === 0 || isSharing,
                      color: "error",
                      children: /* @__PURE__ */ jsxRuntimeExports.jsx(DeleteIcon, { fontSize: "small" })
                    }
                  ) }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Select,
                    {
                      value: filterStatus,
                      size: "small",
                      onChange: (e) => setFilterStatus(e.target.value),
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "all", children: "全部" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "ready", children: "准备分享" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "sharing", children: "分享中" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "success", children: "分享成功" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "error", children: "分享失败" })
                      ]
                    }
                  ) })
                ] })
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(TableContainer, { component: Paper, variant: "outlined", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table, { size: "small", className: "text-sm", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.length === filteredResults.length && filteredResults.length > 0,
                      indeterminate: selectedItems.length > 0 && selectedItems.length < filteredResults.length,
                      onChange: handleSelectAll,
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "状态" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件类型" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件名" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件大小" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件时间" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "分享链接" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "提取码" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "信息" })
                ] }) }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableBody, { children: filteredResults.map((result) => /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.includes(result.id),
                      onChange: () => handleItemSelect(result.id),
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { align: "center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StatusIcon, { status: result.status }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.fileType === FileTypeEnum$1.FOLDER ? /* @__PURE__ */ jsxRuntimeExports.jsx(FolderIcon, { fontSize: "small" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(FileIcon, { fontSize: "small" }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    TableCell,
                    {
                      sx: {
                        maxWidth: "200px",
                        overflow: "hidden",
                        textOverflow: "ellipsis",
                        whiteSpace: "nowrap"
                      },
                      title: result.fileName,
                      children: result.fileName
                    }
                  ),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.fileSize }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.fileTime }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.shareLink ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex items-center gap-1", children: [
                    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[150px]", children: result.shareLink }),
                    /* @__PURE__ */ jsxRuntimeExports.jsx(
                      IconButton,
                      {
                        size: "small",
                        onClick: () => copyLink(result.shareLink ?? ""),
                        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                      }
                    )
                  ] }) : "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.extractCode || "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusText,
                    {
                      status: result.status,
                      message: result.message
                    }
                  ) })
                ] }, result.id)) })
              ] }) })
            ] })
          ] })
        ] }) })
      }
    );
  });
  const Lanzou = () => {
    const shareDOM = React.useRef(null);
    const handleClick = () => {
      var _a;
      (_a = shareDOM.current) == null ? void 0 : _a.open();
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "outlined",
          startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ShareIcon, {}),
          onClick: handleClick,
          children: "批量分享"
        }
      ),
      /* @__PURE__ */ jsxRuntimeExports.jsx(ShareDrawer$2, { ref: shareDOM })
    ] });
  };
  var ExpireTimeEnum$1 = /* @__PURE__ */ ((ExpireTimeEnum2) => {
    ExpireTimeEnum2[ExpireTimeEnum2["oneDay"] = 1] = "oneDay";
    ExpireTimeEnum2[ExpireTimeEnum2["threeDay"] = 3] = "threeDay";
    ExpireTimeEnum2[ExpireTimeEnum2["fiveDay"] = 5] = "fiveDay";
    ExpireTimeEnum2[ExpireTimeEnum2["sevenDay"] = 7] = "sevenDay";
    ExpireTimeEnum2[ExpireTimeEnum2["fifteen"] = 15] = "fifteen";
    ExpireTimeEnum2[ExpireTimeEnum2["forever"] = -1] = "forever";
    return ExpireTimeEnum2;
  })(ExpireTimeEnum$1 || {});
  const ExpireTimeEnumMap$1 = {
    [
      1
      /* oneDay */
    ]: "1天",
    [
      3
      /* threeDay */
    ]: "3天",
    [
      5
      /* fiveDay */
    ]: "5天",
    [
      7
      /* sevenDay */
    ]: "7天",
    [
      15
      /* fifteen */
    ]: "15天",
    [
      -1
      /* forever */
    ]: "永久"
  };
  var FileTypeEnum = /* @__PURE__ */ ((FileTypeEnum2) => {
    FileTypeEnum2["folder"] = "folder";
    FileTypeEnum2["file"] = "file";
    return FileTypeEnum2;
  })(FileTypeEnum || {});
  const expireTimeOptions = [
    { value: ExpireTimeEnum$1.oneDay, label: "1天" },
    { value: ExpireTimeEnum$1.threeDay, label: "3天" },
    { value: ExpireTimeEnum$1.fiveDay, label: "5天" },
    { value: ExpireTimeEnum$1.sevenDay, label: "7天" },
    { value: ExpireTimeEnum$1.fifteen, label: "15天" },
    { value: ExpireTimeEnum$1.forever, label: "永久" }
  ];
  const getShareInfo = () => {
    const iframe = document.querySelector("iframe");
    const iframeWindow = iframe.contentWindow ?? _unsafeWindow;
    const selectDOM = iframeWindow.document.querySelectorAll(
      "div.list-contents > ul li.selected"
    );
    if (selectDOM.length === 0) {
      return Promise.resolve([]);
    }
    const result = Array.from(selectDOM).map(async (itemDOM) => {
      const fileType = itemDOM.getAttribute("file_type") === "0" ? FileTypeEnum.folder : FileTypeEnum.file;
      const id = fileType === FileTypeEnum.folder ? itemDOM.getAttribute("cate_id") : itemDOM.getAttribute("file_id");
      let fileSize = "";
      if (fileType === FileTypeEnum.folder) {
        fileSize = await shareLogicMap[cloudEnum.yun115].getFolderSize(
          id
        );
        console.log(fileSize, "文件夹大小");
      } else {
        fileSize = itemDOM.getAttribute("file_size");
        fileSize = fileSize ? bytesToSize(Number(fileSize)) : "";
      }
      return {
        id,
        status: FileShareStatusEnum.ready,
        //分享状态
        fileType,
        //文件类型
        fileSize,
        fileName: itemDOM.getAttribute("title")
      };
    });
    return Promise.all(result);
  };
  const formatStringForCopyAndDownload$1 = (list) => {
    return list.map((item) => `${item.fileName} ${item.shareLink} ${item.extractCode}`).join("\n");
  };
  const formatStringForCopyAndDownload2 = (list) => {
    return list.map(
      (item) => `${item.fileName}[${item.fileSize}]$${item.shareLink}?password=${item.extractCode}`
    ).join("\n");
  };
  const transformShareInfoForXlsx$1 = (list) => {
    return list.map((item) => ({
      文件名: item.fileName,
      文件大小: item.fileSize,
      分享链接: item.shareLink,
      提取码: item.extractCode,
      有效期: ExpireTimeEnumMap$1[item.expireTime],
      接受次数限制: !item.acceptLimit ? "不限制" : item.acceptLimit,
      免登录下载流量限制: !item.anonymousDownloadTraffic ? "不限制" : `${item.anonymousDownloadTraffic}KB`
    }));
  };
  const getShareFirstInfo = (currentShareItem) => {
    const formData = new FormData();
    const { user_id } = _unsafeWindow || {};
    formData.append("user_id", user_id);
    const file_ids = currentShareItem.id + "";
    formData.append("file_ids", file_ids);
    formData.append("ignore_warn", "1");
    formData.append("is_asc", "0");
    formData.append("order", "user_ptime");
    return {
      formData,
      info: {
        user_id,
        file_ids,
        ignore_warn: "1",
        is_asc: "0",
        order: "user_ptime"
      }
    };
  };
  const getShareSecondInfo = (resultOne, shareConfig) => {
    const formDataUpdate = new FormData();
    const info2 = {
      auto_fill_recvcode: shareConfig.autoFillAccessCode,
      //分享链接自动填充访问码-传入0则关闭,1则开启
      receive_user_limit: shareConfig.acceptLimit ? shareConfig.acceptLimit : "",
      //接收次数-不传则不限制,传入数字则限制
      skip_login: shareConfig.allowAnonymousDownload,
      //允许免登录下载 传入0关闭 1开启,
      skip_login_down_flow_limit: shareConfig.allowAnonymousDownload ? shareConfig.anonymousDownloadTraffic * 1024 : "",
      //免登录下载限制 - 大小  * 1024 B 不传则不限制
      share_duration: shareConfig.expireTime
    };
    const share_code = resultOne.data.share_code;
    formDataUpdate.append("share_code", share_code);
    formDataUpdate.append("auto_fill_recvcode", info2.auto_fill_recvcode);
    formDataUpdate.append("receive_user_limit", info2.receive_user_limit);
    formDataUpdate.append("share_duration", info2.share_duration);
    if (shareConfig.customCode && shareConfig.customCode !== "") {
      formDataUpdate.append("receive_code", shareConfig.customCode);
      formDataUpdate.append("is_custom_code", "1");
    }
    return {
      formData: formDataUpdate,
      info: {
        ...info2,
        share_code,
        receive_code: shareConfig.customCode
      }
    };
  };
  const getShareThirdInfo = (info2, resultOne) => {
    const skipLoginForm = new FormData();
    skipLoginForm.append("share_code", resultOne.data.share_code);
    if (info2.skip_login * 1 === 1) {
      skipLoginForm.append("skip_login", "1");
      skipLoginForm.append(
        "skip_login_down_flow_limit",
        info2.skip_login_down_flow_limit
      );
    } else {
      skipLoginForm.append("skip_login", "0");
    }
    return {
      formData: skipLoginForm
    };
  };
  const ShareDrawer$1 = React.forwardRef((props, ref) => {
    React.useImperativeHandle(ref, () => {
      return {
        open() {
          setOpen(true);
        }
      };
    });
    const { name: cloudName } = useBaseCloudInfo();
    const [selectedItems, setSelectedItems] = React.useState([]);
    const {
      notifications,
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback
    } = useShare({ cloudName });
    const [userInfo, setUserInfo] = React.useState(() => {
      const { USER_PERMISSION } = _unsafeWindow;
      return {
        //是否是VIP 为0则不是vip,为1则是vip
        is_vip: USER_PERMISSION.is_vip
      };
    });
    const [shareConfig, setShareConfig] = React.useState({
      shareDelay: defaultGlobalSetting.defaultShareDelay,
      // 分享延迟
      expireTime: ExpireTimeEnum$1.forever,
      // 有效期
      customCode: "",
      // 自定义提取码
      autoFillAccessCode: false,
      // 自动填充访问码
      allowAnonymousDownload: false,
      // 允许免登录下载
      anonymousDownloadTraffic: 0,
      // 免登录下载流量限制(KB)
      acceptLimit: 0
      // 接受次数限制
    });
    React.useEffect(() => {
      if (userInfo.is_vip) {
        setShareConfig((prev2) => ({
          ...prev2,
          expireTime: ExpireTimeEnum$1.forever
        }));
      } else {
        setShareConfig((prev2) => ({
          ...prev2,
          expireTime: ExpireTimeEnum$1.fifteen
        }));
      }
    }, [userInfo.is_vip]);
    const filteredResults = shareResults.filter((result) => {
      if (filterStatus === "all") return true;
      return result.status === filterStatus;
    });
    const handleCancelClose = () => {
      handleDefaultCloseDrawerCallback();
    };
    const handlePrepareShare = async () => {
      try {
        setLoadingShareData(true);
        const result = await getShareInfo();
        setShareResults(result);
        setIsPreparingShare(false);
        setIsPrepared(true);
      } catch (e) {
        notifications.show("获取分享文件列表失败" + e, {
          autoHideDuration: 1500,
          severity: "error"
        });
        console.error(e);
      } finally {
        setLoadingShareData(false);
      }
    };
    const handleCancelShare = () => {
      setIsCancelling(true);
      isCancellingRef.current = true;
    };
    const handleShare = async () => {
      setIsCancelling(false);
      setIsSharing(true);
      for (let i = 0; i < shareResults.length; i++) {
        if (isCancellingRef.current) {
          setIsSharing(false);
          break;
        }
        try {
          const currentShareItem = filteredResults[i];
          const { formData: formDataFirst, info: infoFirst } = getShareFirstInfo(currentShareItem);
          const resultOne = await shareLogicMap[cloudEnum.yun115].share(formDataFirst);
          console.log(resultOne, "resultOne");
          await sleep(shareConfig.shareDelay);
          const { formData: formDataSecond, info: infoSecond } = getShareSecondInfo(resultOne, shareConfig);
          await sleep(shareConfig.shareDelay);
          const resultTwo = await shareLogicMap[cloudEnum.yun115].updateSetting(formDataSecond);
          console.log(resultTwo, "resultTwo");
          await sleep(shareConfig.shareDelay);
          if (userInfo.is_vip) {
            console.log(infoSecond, "infoSecond");
            const { formData: formDataThird } = getShareThirdInfo(
              infoSecond,
              resultOne
            );
            const resultThree = await shareLogicMap[cloudEnum.yun115].updateAnonymousDownloadLimit(
              formDataThird
            );
            console.log(resultThree, "resultThree");
          }
          console.log(resultOne, "resultOne");
          console.log(resultTwo, "resultTwo");
          setShareResults((prev2) => {
            const updated = [...prev2];
            const { data = {} } = resultOne || {};
            if (data.share_url) {
              updated[i] = {
                ...updated[i],
                expireTime: shareConfig.expireTime,
                //有效期
                status: FileShareStatusEnum.success,
                //状态
                shareLink: data.share_url,
                //分享链接
                //如果是VIP设置了提取码则使用VIP的提取码,否则使用分享的提取码
                extractCode: infoSecond.receive_code ? infoSecond.receive_code : data.receive_code,
                //提取码
                acceptLimit: shareConfig.acceptLimit,
                //接受次数限制
                anonymousDownloadTraffic: shareConfig.anonymousDownloadTraffic
                //免登录下载流量限制
              };
            } else {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.error,
                message: "分享失败" + (data.error || "")
              };
            }
            return updated;
          });
        } catch (error) {
          console.log(error, "分享失败");
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = {
              ...updated[i],
              status: FileShareStatusEnum.error,
              message: "分享失败-" + ((error == null ? void 0 : error.error) || "")
            };
            return updated;
          });
        } finally {
          setIsPreparingShare(true);
          setIsSharing(false);
          isCancellingRef.current = false;
          await sleep(shareConfig.shareDelay);
        }
      }
      resetShareStatus();
    };
    const handleItemSelect = (id) => {
      setSelectedItems(
        (prev2) => prev2.includes(id) ? prev2.filter((item) => item !== id) : [...prev2, id]
      );
    };
    const handleSelectAll = () => {
      if (selectedItems.length === filteredResults.length) {
        setSelectedItems([]);
      } else {
        setSelectedItems(filteredResults.map((item) => item.id));
      }
    };
    const handleDeleteSelected = () => {
      setShareResults(
        (prev2) => prev2.filter((item) => !selectedItems.includes(item.id))
      );
      setSelectedItems([]);
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      BaseDrawer,
      {
        open: open2,
        onClose: handleCancelClose,
        headerProps: {
          title: `${cloudName} 批量分享`,
          handleCancelClose
        },
        footerProps: {
          handleCancelClose,
          isPreparingShare,
          isSharing,
          isPrepared,
          isCancelling,
          handlePrepareShare,
          handleShare,
          handleCancelShare,
          copyToClipboard: () => {
            handleCopy(formatStringForCopyAndDownload$1(filteredResults));
          },
          downloadLinksToTxt: () => {
            handleDownloadLinks(formatStringForCopyAndDownload$1(filteredResults));
          },
          downloadLinksToExcel: () => {
            handleDownloadExcel(transformShareInfoForXlsx$1(filteredResults));
          },
          disabledCopy: isSharing,
          disabledDownloadLinks: isSharing,
          disabledDownloadExcel: isSharing
        },
        extraButtons: /* @__PURE__ */ jsxRuntimeExports.jsx(
          Button,
          {
            variant: "contained",
            color: "primary",
            size: "small",
            onClick: () => {
              handleDownloadLinks(
                formatStringForCopyAndDownload2(filteredResults)
              );
            },
            children: "下载格式2"
          }
        ),
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex flex-col h-full p-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex-1 flex flex-col overflow-y-auto", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "border rounded-md bg-gray-50 mb-3", children: [
            /* @__PURE__ */ jsxRuntimeExports.jsxs(
              Box,
              {
                className: "flex justify-between items-center px-3 py-2 cursor-pointer",
                onClick: () => setConfigExpanded(!configExpanded),
                children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base m-0", children: "分享配置" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", children: configExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, {}) })
                ]
              }
            ),
            /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: configExpanded, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "p-3 pt-0 border-t", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "grid grid-cols-2 gap-3", children: [
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "分享延迟",
                  size: "small",
                  type: "number",
                  value: shareConfig.shareDelay,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareDelay: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 1,
                      step: 100
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, size: "small", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "有效期" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    label: `有效期(${userInfo.is_vip ? "VIP用户" : "非VIP用户"})`,
                    value: shareConfig.expireTime,
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      expireTime: Number(e.target.value)
                    })),
                    size: "small",
                    children: userInfo.is_vip ? expireTimeOptions.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value)) : (
                      //排除永久
                      expireTimeOptions.filter(
                        (option) => option.value !== ExpireTimeEnum$1.forever
                      ).map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                    )
                  }
                )
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      checked: shareConfig.autoFillAccessCode,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        autoFillAccessCode: e.target.checked
                      })),
                      size: "small"
                    }
                  ),
                  label: "自动填充访问码"
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: `提取码 (${userInfo.is_vip ? "VIP用户可自定义" : "非VIP用户不可自定义"})`,
                  size: "small",
                  value: shareConfig.customCode,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    customCode: e.target.value
                  })),
                  placeholder: "(可空)只能包含大小写英文+数字)",
                  disabled: shareConfig.autoFillAccessCode || !userInfo.is_vip,
                  slotProps: {
                    htmlInput: {
                      maxLength: 4
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "接受次数限制(为0则表示无限制)",
                  size: "small",
                  type: "number",
                  value: shareConfig.acceptLimit,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    acceptLimit: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 0,
                      step: 1
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      disabled: !userInfo.is_vip,
                      checked: shareConfig.allowAnonymousDownload,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        allowAnonymousDownload: e.target.checked
                      })),
                      size: "small"
                    }
                  ),
                  label: `允许免登录下载${userInfo.is_vip ? "" : " (VIP用户才可用)"}`
                }
              ) }),
              shareConfig.allowAnonymousDownload && /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "免登录下载流量限制(为0则表示无限制)KB",
                  size: "small",
                  type: "number",
                  value: shareConfig.anonymousDownloadTraffic,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    anonymousDownloadTraffic: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 0,
                      step: 100
                    }
                  }
                }
              ) })
            ] }) }) })
          ] }),
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-3 h-0 flex-1", children: [
            loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex justify-center items-center mt-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 50 }) }),
            shareResults.length > 0 && !loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base", children: "分享结果" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusCount,
                    {
                      shareResults,
                      selectedItems
                    }
                  )
                ] }),
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex gap-2", children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "删除已选项", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    IconButton,
                    {
                      size: "small",
                      onClick: handleDeleteSelected,
                      disabled: selectedItems.length === 0 || isSharing,
                      color: "error",
                      children: /* @__PURE__ */ jsxRuntimeExports.jsx(DeleteIcon, { fontSize: "small" })
                    }
                  ) }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Select,
                    {
                      value: filterStatus,
                      size: "small",
                      onChange: (e) => setFilterStatus(e.target.value),
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "all", children: "全部" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "ready", children: "准备分享" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "sharing", children: "分享中" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "success", children: "分享成功" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "error", children: "分享失败" })
                      ]
                    }
                  ) })
                ] })
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(TableContainer, { component: Paper, variant: "outlined", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table, { size: "small", className: "text-sm", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.length === filteredResults.length && filteredResults.length > 0,
                      indeterminate: selectedItems.length > 0 && selectedItems.length < filteredResults.length,
                      onChange: handleSelectAll,
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "状态" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件类型" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件名" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件大小" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "分享链接" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "提取码" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "信息" })
                ] }) }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableBody, { children: filteredResults.map((result) => /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.includes(result.id),
                      onChange: () => handleItemSelect(result.id),
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { align: "center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StatusIcon, { status: result.status }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.fileType === FileTypeEnum.folder ? /* @__PURE__ */ jsxRuntimeExports.jsx(FolderIcon, { fontSize: "small" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(FileIcon, { fontSize: "small" }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    TableCell,
                    {
                      sx: {
                        maxWidth: "200px",
                        overflow: "hidden",
                        textOverflow: "ellipsis",
                        whiteSpace: "nowrap"
                      },
                      title: result.fileName,
                      children: result.fileName
                    }
                  ),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.fileSize }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.shareLink ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex items-center gap-1", children: [
                    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[150px]", children: result.shareLink }),
                    /* @__PURE__ */ jsxRuntimeExports.jsx(
                      IconButton,
                      {
                        size: "small",
                        onClick: () => copyLink(result.shareLink ?? ""),
                        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                      }
                    )
                  ] }) : "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.extractCode || "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusText,
                    {
                      status: result.status,
                      message: result.message
                    }
                  ) })
                ] }, result.id)) })
              ] }) })
            ] })
          ] })
        ] }) })
      }
    );
  });
  const Yun115 = () => {
    const shareDOM = React.useRef(null);
    const handleClick = () => {
      var _a;
      (_a = shareDOM.current) == null ? void 0 : _a.open();
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "contained",
          startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ShareIcon, {}),
          onClick: handleClick,
          children: "批量分享"
        }
      ),
      /* @__PURE__ */ jsxRuntimeExports.jsx(ShareDrawer$1, { ref: shareDOM })
    ] });
  };
  var ExpireTimeEnum = /* @__PURE__ */ ((ExpireTimeEnum2) => {
    ExpireTimeEnum2[ExpireTimeEnum2["oneDay"] = 1] = "oneDay";
    ExpireTimeEnum2[ExpireTimeEnum2["sevenDay"] = 7] = "sevenDay";
    ExpireTimeEnum2[ExpireTimeEnum2["thirtyDay"] = 30] = "thirtyDay";
    ExpireTimeEnum2[ExpireTimeEnum2["oneYear"] = 365] = "oneYear";
    ExpireTimeEnum2[ExpireTimeEnum2["forever"] = 0] = "forever";
    return ExpireTimeEnum2;
  })(ExpireTimeEnum || {});
  const ExpireTimeEnumMap = {
    [
      1
      /* oneDay */
    ]: "1天",
    [
      7
      /* sevenDay */
    ]: "7天",
    [
      30
      /* thirtyDay */
    ]: "30天",
    [
      365
      /* oneYear */
    ]: "1年",
    [
      0
      /* forever */
    ]: "永久"
  };
  const expireOptions = [
    { value: ExpireTimeEnum.oneDay, label: "1天" },
    { value: ExpireTimeEnum.sevenDay, label: "7天" },
    { value: ExpireTimeEnum.thirtyDay, label: "30天" },
    { value: ExpireTimeEnum.oneYear, label: "1年" },
    { value: ExpireTimeEnum.forever, label: "永久" }
  ];
  const getBaiduShareListInfo = () => {
    const tempDOM = document.querySelector(".nd-main-layout__body .nd-main-list");
    const instance = tempDOM == null ? void 0 : tempDOM.__vue__;
    if (!instance)
      return {
        list: []
      };
    return {
      list: (instance == null ? void 0 : instance.selectedList) ?? []
    };
  };
  const transformShareInfo = (list) => {
    if (!list || list.length === 0) return [];
    return list.map((item) => ({
      id: item.fs_id,
      fileName: item.formatName,
      fileSize: bytesToSize(item.size),
      status: "ready"
    }));
  };
  const getBaiduBaseShareParams = () => {
    var _a, _b;
    return {
      //@ts-ignore
      bdstoken: (_b = (_a = _unsafeWindow == null ? void 0 : _unsafeWindow.locals) == null ? void 0 : _a.userInfo) == null ? void 0 : _b.bdstoken,
      version: window.localStorage.getItem("cdp_checkVersionTime")
    };
  };
  const formatStringForCopyAndDownload = (list) => {
    return list.map((item) => `${item.fileName} ${item.shareLink} ${item.extractCode}`).join("\n");
  };
  const transformShareInfoForXlsx = (list) => {
    return list.map((item) => ({
      文件名: item.fileName,
      文件大小: item.fileSize,
      分享链接: item.shareLink,
      提取码: item.extractCode,
      有效期: ExpireTimeEnumMap[item.expireTime]
    }));
  };
  const ShareDrawer = React.forwardRef((props, ref) => {
    React.useImperativeHandle(ref, () => {
      return {
        open() {
          setOpen(true);
        }
      };
    });
    const { name: cloudName } = useBaseCloudInfo();
    const [selectedItems, setSelectedItems] = React.useState([]);
    const {
      notifications,
      loadingShareData,
      isSharing,
      isPreparingShare,
      isPrepared,
      isCancelling,
      isCancellingRef,
      filterStatus,
      shareResults,
      configExpanded,
      open: open2,
      setLoadingShareData,
      setIsSharing,
      setIsPreparingShare,
      setIsPrepared,
      setIsCancelling,
      setFilterStatus,
      setShareResults,
      setConfigExpanded,
      setOpen,
      handleCopy,
      handleDownloadLinks,
      handleDownloadExcel,
      copyLink,
      resetShareStatus,
      handleDefaultCloseDrawerCallback
    } = useShare({ cloudName });
    const [shareConfig, setShareConfig] = React.useState({
      shareDelay: defaultGlobalSetting.defaultShareDelay,
      // 分享延迟
      expireTime: ExpireTimeEnum.forever,
      // 有效期
      enableCustomCode: false,
      // 是否启用自定义提取码
      customCode: "",
      // 自定义提取码
      autoFillCode: false
      // 是否自动填充提取码
    });
    const filteredResults = shareResults.filter((result) => {
      if (filterStatus === "all") return true;
      return result.status === filterStatus;
    });
    const handleCancelClose = () => {
      handleDefaultCloseDrawerCallback();
    };
    const handlePrepareShare = async () => {
      try {
        setLoadingShareData(true);
        const { list } = getBaiduShareListInfo();
        setShareResults(transformShareInfo(list));
        setIsPreparingShare(false);
        setIsPrepared(true);
      } catch (e) {
        notifications.show("获取分享文件列表失败" + e, {
          autoHideDuration: 1500,
          severity: "error"
        });
        console.error(e);
      } finally {
        setLoadingShareData(false);
      }
    };
    const handleCancelShare = () => {
      setIsCancelling(true);
      isCancellingRef.current = true;
    };
    const handleShare = async () => {
      setIsCancelling(false);
      setIsSharing(true);
      const { bdstoken, version } = getBaiduBaseShareParams();
      for (let i = 0; i < shareResults.length; i++) {
        if (isCancellingRef.current) {
          setIsSharing(false);
          break;
        }
        try {
          const pwd = shareConfig.enableCustomCode ? shareConfig.customCode ? shareConfig.customCode : generateRandomString() : generateRandomString();
          const res = await shareLogicMap[cloudEnum.baidu].share(
            window.location.origin + "/share/set",
            {
              period: shareConfig.expireTime,
              pwd,
              eflag_disable: true,
              //不知道是什么参数,好像是分享类型eflag_disable: "personal" === e.shareType
              channel_list: [],
              //未知
              schannel: 4,
              //未知-貌似是一个定制
              fid_list: `[${shareResults[i].id}]`
              //文件id
            },
            {
              bdstoken,
              version
            },
            {
              headers: {
                accept: "application/json;charset=UTF-8",
                "Content-Type": " application/x-www-form-urlencoded"
              }
            }
          );
          const { link } = res || {};
          setShareResults((prev2) => {
            const updated = [...prev2];
            if (link) {
              updated[i] = {
                ...updated[i],
                expireTime: shareConfig.expireTime,
                status: FileShareStatusEnum.success,
                shareLink: shareConfig.autoFillCode ? `${link}?pwd=${pwd}` : link,
                extractCode: pwd
              };
            } else {
              updated[i] = {
                ...updated[i],
                status: FileShareStatusEnum.error,
                message: "分享失败"
              };
            }
            return updated;
          });
        } catch (error) {
          console.log(error, "分享失败");
          setShareResults((prev2) => {
            const updated = [...prev2];
            updated[i] = {
              ...updated[i],
              status: FileShareStatusEnum.error,
              message: "分享失败"
            };
            return updated;
          });
        } finally {
          setIsPreparingShare(true);
          setIsSharing(false);
          isCancellingRef.current = false;
          await sleep(shareConfig.shareDelay);
        }
      }
      resetShareStatus();
    };
    const handleItemSelect = (id) => {
      setSelectedItems(
        (prev2) => prev2.includes(id) ? prev2.filter((item) => item !== id) : [...prev2, id]
      );
    };
    const handleSelectAll = () => {
      if (selectedItems.length === filteredResults.length) {
        setSelectedItems([]);
      } else {
        setSelectedItems(filteredResults.map((item) => item.id));
      }
    };
    const handleDeleteSelected = () => {
      setShareResults(
        (prev2) => prev2.filter((item) => !selectedItems.includes(item.id))
      );
      setSelectedItems([]);
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsx(
      BaseDrawer,
      {
        open: open2,
        onClose: handleCancelClose,
        headerProps: {
          title: `${cloudName} 批量分享`,
          handleCancelClose
        },
        footerProps: {
          handleCancelClose,
          isPreparingShare,
          isSharing,
          isPrepared,
          isCancelling,
          handlePrepareShare,
          handleShare,
          handleCancelShare,
          copyToClipboard: () => {
            handleCopy(formatStringForCopyAndDownload(filteredResults));
          },
          downloadLinksToTxt: () => {
            handleDownloadLinks(formatStringForCopyAndDownload(filteredResults));
          },
          downloadLinksToExcel: () => {
            handleDownloadExcel(transformShareInfoForXlsx(filteredResults));
          },
          disabledCopy: isSharing,
          disabledDownloadLinks: isSharing,
          disabledDownloadExcel: isSharing
        },
        children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex flex-col h-full p-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex-1 flex flex-col overflow-y-auto", children: [
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "border rounded-md bg-gray-50 mb-3", children: [
            /* @__PURE__ */ jsxRuntimeExports.jsxs(
              Box,
              {
                className: "flex justify-between items-center px-3 py-2 cursor-pointer",
                onClick: () => setConfigExpanded(!configExpanded),
                children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base m-0", children: "分享配置" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", children: configExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, {}) })
                ]
              }
            ),
            /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: configExpanded, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "p-3 pt-0 border-t", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "grid grid-cols-2 gap-3", children: [
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  label: "分享延迟",
                  size: "small",
                  type: "number",
                  value: shareConfig.shareDelay,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    shareDelay: Number(e.target.value)
                  })),
                  slotProps: {
                    htmlInput: {
                      min: 1,
                      step: 100
                    }
                  }
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, size: "small", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { children: "有效期" }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(
                  Select,
                  {
                    label: "有效期",
                    value: shareConfig.expireTime,
                    onChange: (e) => setShareConfig((prev2) => ({
                      ...prev2,
                      expireTime: Number(e.target.value)
                    })),
                    size: "small",
                    children: expireOptions.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: option.value, children: option.label }, option.value))
                  }
                )
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      checked: shareConfig.autoFillCode,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        autoFillCode: e.target.checked
                      })),
                      size: "small"
                    }
                  ),
                  label: "自动填充提取码"
                }
              ) }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                FormControlLabel,
                {
                  control: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Switch,
                    {
                      checked: shareConfig.enableCustomCode,
                      onChange: (e) => setShareConfig((prev2) => ({
                        ...prev2,
                        enableCustomCode: e.target.checked
                      })),
                      size: "small"
                    }
                  ),
                  label: "自定义提取码"
                }
              ) }),
              shareConfig.enableCustomCode && /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { fullWidth: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                TextField,
                {
                  size: "small",
                  value: shareConfig.customCode,
                  onChange: (e) => setShareConfig((prev2) => ({
                    ...prev2,
                    customCode: e.target.value
                  })),
                  placeholder: "(可空)只能包含大小写英文+数字)",
                  slotProps: {
                    htmlInput: {
                      maxLength: 4
                    }
                  }
                }
              ) })
            ] }) }) })
          ] }),
          /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "mt-3 h-0 flex-1", children: [
            loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { className: "flex justify-center items-center mt-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 50 }) }),
            shareResults.length > 0 && !loadingShareData && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
              /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex justify-between items-center mb-2", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-medium text-base", children: "分享结果" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusCount,
                    {
                      shareResults,
                      selectedItems
                    }
                  )
                ] }),
                /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex gap-2", children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "删除已选项", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    IconButton,
                    {
                      size: "small",
                      onClick: handleDeleteSelected,
                      disabled: selectedItems.length === 0 || isSharing,
                      color: "error",
                      children: /* @__PURE__ */ jsxRuntimeExports.jsx(DeleteIcon, { fontSize: "small" })
                    }
                  ) }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(FormControl, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
                    Select,
                    {
                      value: filterStatus,
                      size: "small",
                      onChange: (e) => setFilterStatus(e.target.value),
                      children: [
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "all", children: "全部" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "ready", children: "准备分享" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "sharing", children: "分享中" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "success", children: "分享成功" }),
                        /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "error", children: "分享失败" })
                      ]
                    }
                  ) })
                ] })
              ] }),
              /* @__PURE__ */ jsxRuntimeExports.jsx(TableContainer, { component: Paper, variant: "outlined", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table, { size: "small", className: "text-sm", children: [
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.length === filteredResults.length && filteredResults.length > 0,
                      indeterminate: selectedItems.length > 0 && selectedItems.length < filteredResults.length,
                      onChange: handleSelectAll,
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "状态" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件名" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "文件大小" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "分享链接" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "提取码" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: "信息" })
                ] }) }),
                /* @__PURE__ */ jsxRuntimeExports.jsx(TableBody, { children: filteredResults.map((result) => /* @__PURE__ */ jsxRuntimeExports.jsxs(TableRow, { children: [
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { padding: "checkbox", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    Checkbox,
                    {
                      size: "small",
                      checked: selectedItems.includes(result.id),
                      onChange: () => handleItemSelect(result.id),
                      disabled: isSharing
                    }
                  ) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { align: "center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StatusIcon, { status: result.status }) }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(
                    TableCell,
                    {
                      sx: {
                        maxWidth: "200px",
                        overflow: "hidden",
                        textOverflow: "ellipsis",
                        whiteSpace: "nowrap"
                      },
                      title: result.fileName,
                      children: result.fileName
                    }
                  ),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.fileSize }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.shareLink ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { className: "flex items-center gap-1", children: [
                    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[150px]", children: result.shareLink }),
                    /* @__PURE__ */ jsxRuntimeExports.jsx(
                      IconButton,
                      {
                        size: "small",
                        onClick: () => copyLink(result.shareLink ?? ""),
                        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ContentCopyIcon, { fontSize: "small" })
                      }
                    )
                  ] }) : "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: result.extractCode || "-" }),
                  /* @__PURE__ */ jsxRuntimeExports.jsx(TableCell, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
                    StatusText,
                    {
                      status: result.status,
                      message: result.message
                    }
                  ) })
                ] }, result.id)) })
              ] }) })
            ] })
          ] })
        ] }) })
      }
    );
  });
  const BaiduSync = () => {
    const shareDOM = React.useRef(null);
    const handleClick = () => {
      var _a;
      (_a = shareDOM.current) == null ? void 0 : _a.open();
    };
    return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
      /* @__PURE__ */ jsxRuntimeExports.jsx(
        Button,
        {
          variant: "outlined",
          startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(ShareIcon, {}),
          onClick: handleClick,
          children: "批量分享"
        }
      ),
      /* @__PURE__ */ jsxRuntimeExports.jsx(ShareDrawer, { ref: shareDOM })
    ] });
  };
  const cloudsRegister = {
    [cloudEnum.xunlei]: Xunlei$1,
    [cloudEnum.uc]: Uc,
    [cloudEnum.baidu]: Baidu,
    [cloudEnum.tianyi]: Tianyi,
    [cloudEnum.quark]: Quark,
    [cloudEnum.alipan]: Alipan,
    [cloudEnum.yidong139]: Xunlei,
    [cloudEnum.lanzou]: Lanzou,
    [cloudEnum.yun115]: Yun115,
    [cloudEnum.baiduSync]: BaiduSync
  };
  const mountCloudInfo = (url) => {
    const cloudInfo = getCloudInfo();
    if (cloudInfo) {
      return cloudInfo;
    }
    return {
      name: "",
      type: "",
      rootElementId: "",
      mountFn: () => {
        return document.createElement("div");
      }
    };
  };
  function App() {
    const { type } = useBaseCloudInfo();
    const Component = cloudsRegister[type];
    return /* @__PURE__ */ jsxRuntimeExports.jsx(Component, {});
  }
  const tailwindCss = '/*! tailwindcss v4.1.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:rotateX(0);--tw-rotate-y:rotateY(0);--tw-rotate-z:rotateZ(0);--tw-skew-x:skewX(0);--tw-skew-y:skewY(0);--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-gray-50:oklch(98.5% .002 247.839);--spacing:2px;--text-sm:14px;--text-sm--line-height:calc(1.25/.875);--text-base:16px;--text-base--line-height: 1.5 ;--font-weight-medium:500;--font-weight-bold:700;--radius-md:.375rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\\@container{container-type:inline-size}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.isolate{isolation:isolate}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-10{margin-top:calc(var(--spacing)*10)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-0{height:calc(var(--spacing)*0)}.h-full{height:100%}.max-w-\\[150px\\]{max-width:150px}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.bg-gray-50{background-color:var(--color-gray-50)}.p-3{padding:calc(var(--spacing)*3)}.px-3{padding-inline:calc(var(--spacing)*3)}.py-2{padding-block:calc(var(--spacing)*2)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-3{padding-top:calc(var(--spacing)*3)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}';
  const initTheme = (shadowRootElement) => {
    const theme = createTheme({
      typography: {
        //@ts-ignore
        pxToRem: (size) => `${size}px`
        // 永远返回px
      },
      components: {
        MuiPopover: {
          defaultProps: {
            container: shadowRootElement
          }
        },
        MuiPopper: {
          defaultProps: {
            container: shadowRootElement
          }
        },
        MuiModal: {
          defaultProps: {
            container: shadowRootElement
          }
        }
      }
    });
    return theme;
  };
  const mountInfo = mountCloudInfo();
  const info = {
    name: mountInfo.name,
    type: mountInfo.type
  };
  let count = 20;
  let timer = setInterval(() => {
    const rootElementId = document.getElementById(mountInfo.rootElementId);
    if (rootElementId) {
      clearInterval(timer);
    } else {
      count--;
      if (count <= 0) {
        clearInterval(timer);
      }
      const result = mountInfo.mountFn();
      if (!result.shadowContainer) {
        console.error("挂载失败: 没有找到shadowContainer");
        return;
      }
      const styleTailwindCss = document.createElement("style");
      styleTailwindCss.textContent = tailwindCss;
      styleTailwindCss.setAttribute("data-tailwind", "true");
      result.shadowContainer.appendChild(styleTailwindCss);
      const cache = createCache({
        key: "css",
        prepend: true,
        container: result.shadowContainer
      });
      ReactDOM.createRoot(result.appContainer).render(
        /* @__PURE__ */ jsxRuntimeExports.jsx(CacheProvider, { value: cache, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeProvider, { theme: initTheme(result.appContainer), children: /* @__PURE__ */ jsxRuntimeExports.jsx(BaseCloudInfo.Provider, { value: info, children: /* @__PURE__ */ jsxRuntimeExports.jsx(React.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
          NotificationsProvider,
          {
            slotProps: {
              snackbar: {
                anchorOrigin: { vertical: "top", horizontal: "center" }
              }
            },
            children: /* @__PURE__ */ jsxRuntimeExports.jsx(App, {})
          }
        ) }) }) }) })
      );
    }
  }, 500);

})(React, ReactDOM, XLSX);