From ca52abdb333f73729f8b724646fb1e8fe288472a Mon Sep 17 00:00:00 2001 From: pip-install-python Date: Sat, 1 Aug 2026 19:27:03 -0500 Subject: [PATCH 01/22] Satellite analytics: SPA-aware traffic recorder, hourly rollup, /healthz MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lib/analytics.py — append-only per-day hit log; doc rows from a before_request hook (crawlers), spa rows from the url.pathname callback (rendered page views). lib/traffic_report.py — hourly signed rollup to the 2plot.ai hub (HMAC, prod-gated), /healthz liveness probe, hub-rule sessions/median/pages/countries. verify_traffic.py — headless verification incl. the hub's own ingest verifier (loads the hub's real lib.network_directory by path so its app-id folding import resolves). app.py wires the recorder + reporter + healthz; render.yaml declares CROSS_APP_WEBHOOK_SECRET / ANALYTICS_DIR and moves healthCheckPath to /healthz; .gitignore excludes the local analytics/ hit log. Co-Authored-By: Claude Fable 5 --- .gitignore | 4 +- app.py | 68 ++++++++- lib/analytics.py | 197 ++++++++++++++++++++++++ lib/traffic_report.py | 341 ++++++++++++++++++++++++++++++++++++++++++ render.yaml | 14 +- verify_traffic.py | 249 ++++++++++++++++++++++++++++++ 6 files changed, 870 insertions(+), 3 deletions(-) create mode 100644 lib/analytics.py create mode 100644 lib/traffic_report.py create mode 100644 verify_traffic.py diff --git a/.gitignore b/.gitignore index 9bd24bc..db01b6e 100644 --- a/.gitignore +++ b/.gitignore @@ -61,4 +61,6 @@ htmlcov/ .env.*.local # Dash -# Note: .min.js.map files ARE committed — needed for production deployment \ No newline at end of file +# Note: .min.js.map files ARE committed — needed for production deployment +# Satellite analytics hit log (lib/analytics.py) — local, ephemeral +analytics/ diff --git a/app.py b/app.py index e46d3d2..8a886bd 100644 --- a/app.py +++ b/app.py @@ -7,12 +7,15 @@ import dash import dash_mantine_components as dmc -from dash import Dash, html, dcc, callback, Input, Output, State, page_container, clientside_callback +from dash import (Dash, html, dcc, callback, Input, Output, State, no_update, + page_container, clientside_callback) from dash_iconify import DashIconify from dash_mui_charts import SimpleTreeView +from lib import analytics from lib.ad_client import create_ad_component, register_shell_ad +from lib.traffic_report import register_healthz, start_traffic_reporter # Load .env if available try: @@ -56,6 +59,38 @@ # Store license key for pages app.server.config['MUI_LICENSE_KEY'] = MUI_LICENSE_KEY +# --------------------------------------------------------------------------- +# 2plot.ai satellite analytics — /healthz for the hub's hourly health sweep, +# a document-request recorder for crawlers, and the hourly traffic reporter. +# Page views themselves come from the url.pathname callback further down: +# this is a single-page app, so document requests alone would report one hit +# per visitor. See lib/traffic_report for the full counting rule. +# --------------------------------------------------------------------------- +register_healthz(server) + + +@server.before_request +def _track_document_request(): + """Record every document request. Crawlers only ever land here (they run + no JS), which is exactly what `bot_hits` counts.""" + try: + from flask import request as freq + + if freq.method != 'GET': + return + analytics.record( + freq.path, + freq.headers.get('User-Agent', ''), + analytics.client_ip(freq.headers, freq.remote_addr), + source='doc', + country=analytics.cf_country(freq.headers), + ) + except Exception: + pass + + +start_traffic_reporter() + # --------------------------------------------------------------------------- # Navigation tree items — groups use "group-*" ids, leaves use page paths # --------------------------------------------------------------------------- @@ -251,6 +286,9 @@ ), dcc.Location(id="url", refresh="callback-nav"), dcc.Store(id="license-key-store", data=MUI_LICENSE_KEY), + # Sink for the page-view recorder below (it only ever returns + # no_update — the callback exists for its side effect). + dcc.Store(id="analytics-sink"), # 2plot.dev ad network: floating card anchored top-right, below the # 60px header. Desktop only — a fixed card would cover content on # small screens. @@ -277,6 +315,34 @@ # pages, which stay ad-free. register_shell_ad("url", exclude_paths=("/", "/changelog")) + +# Page views for the satellite rollup. Fires on hard load AND on every +# sidebar navigation, so `pages`, `sessions` and `median_session_s` describe +# the doc pages people actually read — a request-level tracker would only +# ever see the one document GET this SPA makes. It runs inside the Flask +# request context of /_dash-update-component, so the forwarded IP and the +# real user agent are both available. +@callback( + Output("analytics-sink", "data"), + Input("url", "pathname"), + prevent_initial_call=False, +) +def track_page_view(pathname): + try: + from flask import request as freq + + analytics.record( + pathname or "/", + freq.headers.get("User-Agent", ""), + analytics.client_ip(freq.headers, freq.remote_addr), + source="spa", + country=analytics.cf_country(freq.headers), + ) + except Exception: + pass + return no_update + + # 1. Tree selection → SPA navigate via dcc.Location clientside_callback( """ diff --git a/lib/analytics.py b/lib/analytics.py new file mode 100644 index 0000000..57326d4 --- /dev/null +++ b/lib/analytics.py @@ -0,0 +1,197 @@ +"""Local traffic recorder — the data source for the satellite rollup. + +Every hit lands as one JSON line in a per-day file; ``lib/traffic_report`` +folds those files into the hourly rollup this app POSTs to the 2plot.ai +hub (contract: 2plotai/docs/network/satellite-analytics.md). + +Two kinds of row, and the distinction is the whole point: + +- ``source="doc"`` — an HTTP document request, written by the + ``before_request`` hook in app.py. Crawlers only ever appear here: they + do not run JavaScript, so they never reach a Dash callback. +- ``source="spa"`` — a RENDERED PAGE VIEW, written by the ``url.pathname`` + callback in app.py. This app is a single-page app (every doc page is a + ``dcc.Location`` navigation), so document requests alone would report + one hit per visitor with ``/`` as the only page and no measurable + session. The spa rows are the real page-view stream. + +Definitions are kept identical to the hub's (2plotai/lib/traffic_insights) +so the numbers compare across the network: a visitor is an (IP, user-agent) +pair, and the bot pattern list below is copied verbatim. + +Storage is append-only on purpose: render.yaml runs gunicorn with two +workers, and a single ``O_APPEND`` line write under the pipe-buffer size is +atomic, whereas a read-modify-write of one JSON blob would lose hits +between processes. Both workers write the same day file and read all of it. + +Env: + ANALYTICS_DIR — where day files live (default ``/analytics``). + Point it at a mounted disk to survive deploys. +""" +from __future__ import annotations + +import hashlib +import json +import logging +import os +import threading +from datetime import datetime, timedelta +from pathlib import Path + +logger = logging.getLogger(__name__) + +RETENTION_DAYS = 3 # the rollup only ever reads today + yesterday + +# Copied verbatim from 2plotai/lib/traffic_insights._BOT_NAMES so this app's +# human/bot split matches the hub's. First match wins — specific → generic. +_BOT_NAMES = [ + ('gptbot', 'GPTBot'), ('chatgpt-user', 'ChatGPT-User'), ('oai-searchbot', 'OAI-SearchBot'), + ('claudebot', 'ClaudeBot'), ('claude-web', 'Claude-Web'), ('anthropic', 'Anthropic'), + ('perplexitybot', 'PerplexityBot'), ('youbot', 'YouBot'), + ('google-extended', 'Google-Extended'), ('googlebot', 'Googlebot'), + ('bingbot', 'Bingbot'), ('duckduckbot', 'DuckDuckBot'), ('slurp', 'Yahoo Slurp'), + ('yandex', 'Yandex'), ('baidu', 'Baidu'), ('ccbot', 'CCBot'), ('facebookbot', 'FacebookBot'), + ('python-requests', 'python-requests'), ('curl', 'curl'), ('wget', 'wget'), + ('scraper', 'Scraper'), ('spider', 'Spider'), ('crawler', 'Crawler'), ('bot', 'Other bot'), +] + +# Paths that are never a page view: Dash plumbing, static assets, probes. +_SKIP_FRAGMENTS = ( + '/assets/', '/_dash', '/_reload-hash', '/_favicon', 'favicon', + '/healthz', '/robots.txt', '/sitemap', '/llms.txt', '[]', +) +_SKIP_SUFFIXES = ('.css', '.js', '.map', '.png', '.jpg', '.jpeg', '.gif', '.ico', + '.svg', '.webp', '.woff', '.woff2', '.ttf', '.eot', '.txt', '.xml') + +_write_lock = threading.Lock() # orders writes within a process; across + # processes O_APPEND does the ordering + + +def analytics_dir() -> Path: + return Path(os.environ.get("ANALYTICS_DIR") + or Path(__file__).resolve().parent.parent / "analytics") + + +def day_file(date: str | None = None) -> Path: + """Path of one day's hit log (the app's own local day — consistent is + all the contract asks).""" + date = date or datetime.now().strftime("%Y-%m-%d") + return analytics_dir() / f"hits-{date}.jsonl" + + +def is_bot(user_agent: str | None) -> bool: + ua = (user_agent or "").lower() + return any(pat in ua for pat, _ in _BOT_NAMES) + + +def bot_name(user_agent: str | None) -> str: + ua = (user_agent or "").lower() + for pat, name in _BOT_NAMES: + if pat in ua: + return name + return "Unknown bot" + + +def visitor_key(ip: str | None, user_agent: str | None) -> str: + """The hub's visitor identity: an (IP, browser) pair. Shared IPs can + merge people and private windows can split them — stated, not hidden.""" + ua = hashlib.md5((user_agent or "?").encode()).hexdigest()[:8] + return f"{ip or '?'}|{ua}" + + +def client_ip(headers=None, remote_addr: str | None = None) -> str | None: + """The real client address behind Render's proxy (and Cloudflare, if a + CF-fronted domain is ever put in front).""" + try: + get = headers.get if headers is not None else (lambda _k, _d=None: None) + cf = (get("CF-Connecting-IP") or "").strip() + if cf: + return cf + fwd = (get("X-Forwarded-For") or "").strip() + if fwd: + return fwd.split(",")[0].strip() + except Exception: + pass + return remote_addr + + +def cf_country(headers=None) -> str | None: + """ISO country from Cloudflare's free header when present. This app is + on onrender.com today (no CF), so lib/traffic_report falls back to an + IP lookup — but the day a CF-fronted domain fronts it, geo gets free + and accurate with no code change.""" + try: + cc = (headers.get("CF-IPCountry") or "").strip().upper() if headers else "" + except Exception: + return None + return cc if len(cc) == 2 and cc != "XX" else None + + +def trackable_path(path: str | None) -> bool: + """True for paths that represent a page a person could read.""" + if not path or not path.startswith("/") or path.startswith("//"): + return False + low = path.lower() + return not (any(f in low for f in _SKIP_FRAGMENTS) + or low.endswith(_SKIP_SUFFIXES)) + + +def record(path: str | None, user_agent: str | None, ip: str | None, + source: str = "doc", country: str | None = None) -> None: + """Append one hit. Never raises — analytics must not break a page view.""" + try: + if not trackable_path(path): + return + row = { + "ts": datetime.now().isoformat(timespec="seconds"), + "path": path[:160], + "ua": (user_agent or "")[:300], + "ip": ip or "", + "bot": is_bot(user_agent), + "source": source, + } + if country: + row["country"] = country + line = json.dumps(row, separators=(",", ":")) + "\n" + target = day_file() + with _write_lock: + target.parent.mkdir(parents=True, exist_ok=True) + # O_APPEND: two gunicorn workers can share this file safely. + with open(target, "a", encoding="utf-8") as fh: + fh.write(line) + except Exception: # noqa: BLE001 — recording is best-effort, always + logger.debug("analytics record failed", exc_info=True) + + +def load_day(date: str | None = None) -> list[dict]: + """Every row of one day, oldest first. Corrupt lines are skipped.""" + out: list[dict] = [] + try: + with open(day_file(date), encoding="utf-8") as fh: + for line in fh: + line = line.strip() + if not line: + continue + try: + out.append(json.loads(line)) + except ValueError: + continue + except FileNotFoundError: + return [] + except Exception: # noqa: BLE001 + logger.debug("analytics read failed", exc_info=True) + return out + return out + + +def prune(keep_days: int = RETENTION_DAYS) -> None: + """Drop day files older than the retention window (called from the + reporter thread, never from a request).""" + try: + keep = {(datetime.now() - timedelta(days=i)).strftime("%Y-%m-%d") + for i in range(keep_days + 1)} + for f in analytics_dir().glob("hits-*.jsonl"): + if f.stem.replace("hits-", "") not in keep: + f.unlink(missing_ok=True) + except Exception: # noqa: BLE001 + logger.debug("analytics prune failed", exc_info=True) diff --git a/lib/traffic_report.py b/lib/traffic_report.py new file mode 100644 index 0000000..c7662b3 --- /dev/null +++ b/lib/traffic_report.py @@ -0,0 +1,341 @@ +"""Satellite traffic reporting — dash-mui-charts → the 2plot.ai hub. + +2plot.ai is the analytics home for the whole network: its owner-only +/traffic dashboard charts every app's daily humans/bots, visitors, +sessions, top pages and countries. Each satellite POSTs a signed rollup to +``POST {hub}/api/satellite/traffic`` hourly; re-POSTing the same +(app, date) overwrites, so today's numbers just firm up through the day. +Contract: 2plotai/docs/network/satellite-analytics.md (v1 required fields +plus every v2 optional field are sent). + +Pieces here: +- ``build_rollup(date)`` — fold lib/analytics' per-day hit log into the + payload. Session rule matches the hub's: hits grouped per unique + (ip, user-agent) human visitor, split on 30-minute gaps; + median_session_s covers MULTI-HIT sessions only (never padded). +- ``report_traffic(rollup)`` — HMAC-SHA256 sender (the wallet-provision + scheme: ``X-AI-Canvas-Timestamp`` + ``X-AI-Canvas-Signature`` over + ``f"{ts}." + raw_body`` keyed by CROSS_APP_WEBHOOK_SECRET). The secret is + never logged. +- ``start_traffic_reporter()`` — hourly daemon thread. Reports today AND + yesterday each cycle so a deploy near midnight can't strand yesterday's + tail. GATED to prod (``RENDER`` env) unless ``TRAFFIC_REPORT=1`` — local + dev holds the same shared secret, and a dev POST would OVERWRITE the + hub's real (charts, date) row with dev counts. +- ``register_healthz(server)`` — the tiny Flask liveness probe the hub's + hourly satellite sweep GETs (it must not render the whole Dash index). + +THE COUNTING RULE (this app is a single-page app — see lib/analytics): + + human_hits = "spa" rows with a human UA (one per rendered page, + initial load included) + bot_hits = "doc" rows with a bot UA (crawlers run no JS, so + they never produce a spa row) + +Human "doc" rows and bot "spa" rows are recorded but deliberately left out +of the sums. That is what stops a human's first page load being counted +twice — once as the document request, once as the page view — and it is +also what keeps a JS-executing crawler out of the human sessions. Every +other field (visitors, sessions, median, pages, countries) derives from the +human spa rows, which is why `pages` shows the real doc pages people read +instead of a single `/`. + +Known limitation: Render gives this service no persistent disk, so a deploy +or restart wipes the day's hit log and the next hourly POST overwrites the +hub row with a smaller number for that day (the hub is last-report-wins and +offers no read-back). Point ``ANALYTICS_DIR`` at a mounted disk to fix it. +""" +from __future__ import annotations + +import hashlib +import hmac +import ipaddress +import json +import logging +import os +import random +import threading +import time +import urllib.request +from datetime import datetime, timedelta +from statistics import median + +from lib import analytics + +logger = logging.getLogger(__name__) + +APP_KEY = "charts" # our key in the hub's network directory +SESSION_GAP_S = 30 * 60 # the hub's session-split rule — keep in sync +REPORT_INTERVAL_S = 60 * 60 +_STARTUP_DELAY_S = 90 # let the app settle before the first POST +_GEO_LOOKUPS_PER_PASS = 60 # ip-api.com is free at ~45 req/min + +_started = False + + +def _secret() -> str: + return (os.environ.get("CROSS_APP_WEBHOOK_SECRET") or "").strip() + + +def hub_url() -> str: + """TRAFFIC_HUB_URL → PRIMARY_HOST → the hub's canonical domain.""" + base = (os.environ.get("TRAFFIC_HUB_URL") + or os.environ.get("PRIMARY_HOST") + or "https://2plot.ai") + return base.rstrip("/") + + +def reporting_enabled() -> bool: + """Prod-only unless forced: dev machines hold the same shared secret, and + the hub OVERWRITES per (app, date) — a local run must never clobber the + real numbers. TRAFFIC_REPORT=0 is the prod kill switch.""" + if not _secret(): + return False + forced = os.environ.get("TRAFFIC_REPORT") + if forced is not None: + return forced == "1" + return bool(os.environ.get("RENDER")) + + +# --------------------------------------------------------------------------- # +# Geo — resolved off the request path, in the reporter thread # +# --------------------------------------------------------------------------- # + +def _geo_cache_path(): + return analytics.analytics_dir() / "geo_cache.json" + + +def _load_geo_cache() -> dict: + try: + with open(_geo_cache_path(), encoding="utf-8") as fh: + data = json.load(fh) + return data if isinstance(data, dict) else {} + except Exception: # noqa: BLE001 — missing/corrupt cache → start empty + return {} + + +def _save_geo_cache(cache: dict) -> None: + try: + path = _geo_cache_path() + path.parent.mkdir(parents=True, exist_ok=True) + tmp = path.with_suffix(".tmp") + tmp.write_text(json.dumps(cache), encoding="utf-8") + tmp.replace(path) + except Exception: # noqa: BLE001 + logger.debug("geo cache write failed", exc_info=True) + + +def _is_public_ip(ip: str) -> bool: + try: + addr = ipaddress.ip_address(ip) + except ValueError: + return False + return not (addr.is_private or addr.is_loopback or addr.is_link_local + or addr.is_reserved or addr.is_multicast) + + +def _lookup_country(ip: str) -> str | None: + """One ip-api.com lookup (free, no key). Failures cache as unknown so a + dead lookup isn't retried every hour.""" + try: + import requests + + r = requests.get(f"http://ip-api.com/json/{ip}", + params={"fields": "status,countryCode"}, timeout=2) + if r.status_code == 200: + data = r.json() + if data.get("status") == "success": + cc = (data.get("countryCode") or "").strip().upper() + return cc if len(cc) == 2 else None + except Exception: # noqa: BLE001 — geo is optional, never fatal + logger.debug("geo lookup failed for %s", ip, exc_info=True) + return None + + +def resolve_countries(ips, budget: int = _GEO_LOOKUPS_PER_PASS) -> dict: + """ip → ISO country for the given addresses, cached on disk. Only public + IPs are looked up, and at most ``budget`` new ones per call.""" + cache = _load_geo_cache() + dirty = False + for ip in ips: + if not ip or ip in cache or not _is_public_ip(ip): + continue + if budget <= 0: + break + budget -= 1 + cache[ip] = _lookup_country(ip) or "" # "" = looked up, unknown + dirty = True + if dirty: + _save_geo_cache(cache) + return cache + + +# --------------------------------------------------------------------------- # +# Rollup # +# --------------------------------------------------------------------------- # + +def build_rollup(date: str | None = None, rows: list[dict] | None = None, + geo: bool = True) -> dict: + """The full v1+v2 payload for one local day (default: today). + + ``rows`` (test seam) defaults to that day's hit log; ``geo=False`` skips + the ip-api enrichment so unit checks stay offline. + """ + if date is None: + date = datetime.now().strftime("%Y-%m-%d") + if rows is None: + rows = analytics.load_day(date) + + # See THE COUNTING RULE in the module docstring. + humans = [r for r in rows if r.get("source") == "spa" and not r.get("bot")] + bot_hits = sum(1 for r in rows if r.get("source") == "doc" and r.get("bot")) + + rollup: dict = { + "app": APP_KEY, + "date": date, + "human_hits": len(humans), + "bot_hits": bot_hits, + } + + # visitors — unique (ip, browser) pairs, humans only + by_visitor: dict[str, list[float]] = {} + for r in humans: + try: + ts = datetime.fromisoformat(r["ts"]).timestamp() + except (KeyError, ValueError): + continue + by_visitor.setdefault( + analytics.visitor_key(r.get("ip"), r.get("ua")), []).append(ts) + rollup["visitors"] = len(by_visitor) + + # sessions — per-visitor hit groups split on 30-minute gaps (hub rule); + # median_session_s from multi-hit sessions ONLY. + session_count = 0 + spans: list[float] = [] + for stamps in by_visitor.values(): + stamps.sort() + start = prev = stamps[0] + hits = 1 + for ts in stamps[1:]: + if ts - prev > SESSION_GAP_S: + session_count += 1 + if hits > 1: + spans.append(prev - start) + start, hits = ts, 1 + else: + hits += 1 + prev = ts + session_count += 1 + if hits > 1: + spans.append(prev - start) + rollup["sessions"] = session_count + if spans: + rollup["median_session_s"] = round(median(spans), 1) + + # pages — human page views per path, top 20 + page_hits: dict[str, int] = {} + for r in humans: + p = r.get("path") or "/" + page_hits[p] = page_hits.get(p, 0) + 1 + rollup["pages"] = [{"path": p, "hits": n} for p, n in + sorted(page_hits.items(), key=lambda kv: -kv[1])[:20]] + + # countries — humans only, top 20. CF-IPCountry when a Cloudflare-fronted + # domain ever supplies it; otherwise the cached ip-api lookup. + cache = resolve_countries({r.get("ip") for r in humans}) if geo else {} + country_hits: dict[str, int] = {} + for r in humans: + cc = (r.get("country") or cache.get(r.get("ip") or "") or "").upper() + if len(cc) == 2: + country_hits[cc] = country_hits.get(cc, 0) + 1 + if country_hits: + rollup["countries"] = dict( + sorted(country_hits.items(), key=lambda kv: -kv[1])[:20]) + + return rollup + + +# --------------------------------------------------------------------------- # +# Sender # +# --------------------------------------------------------------------------- # + +def sign(body: bytes, ts: str, secret: str) -> str: + """HMAC_SHA256(secret, f"{ts}." + raw_body) — the network's shared scheme.""" + return hmac.new(secret.encode(), f"{ts}.".encode() + body, + hashlib.sha256).hexdigest() + + +def report_traffic(rollup: dict, *, secret: str | None = None, + hub: str | None = None, timeout: float = 10.0) -> dict: + """POST one rollup to the hub. Returns the hub's JSON reply; raises on + network/HTTP errors (the daemon catches — a down hub must never hurt us).""" + secret = secret or _secret() + if not secret: + raise RuntimeError("CROSS_APP_WEBHOOK_SECRET unset") + body = json.dumps(rollup).encode() + ts = str(int(time.time())) + req = urllib.request.Request( + f"{hub or hub_url()}/api/satellite/traffic", data=body, + headers={"Content-Type": "application/json", + "X-AI-Canvas-Timestamp": ts, + "X-AI-Canvas-Signature": sign(body, ts, secret)}) + with urllib.request.urlopen(req, timeout=timeout) as r: + return json.load(r) + + +def report_pass() -> None: + """One reporting cycle: today + yesterday (self-heals deploy gaps and the + midnight rollover — re-POSTs overwrite on the hub).""" + today = datetime.now() + for day in (today, today - timedelta(days=1)): + date = day.strftime("%Y-%m-%d") + try: + rollup = build_rollup(date) + res = report_traffic(rollup) + logger.info("traffic report %s: %s human / %s bot → %s", + date, rollup["human_hits"], rollup["bot_hits"], + res.get("ok")) + except Exception as e: # noqa: BLE001 — reporting must never crash us + logger.warning("traffic report %s failed: %r", date, e) + analytics.prune() + + +def start_traffic_reporter() -> None: + """Hourly reporter daemon. No-op when gated off. + + Both gunicorn workers run one: they read the same shared hit log, so the + rollups are identical and last-write-wins makes the duplicate harmless. + The jitter just keeps the two POSTs from landing at the same instant. + """ + global _started + if _started: + return + if not reporting_enabled(): + print("[traffic] satellite reporting OFF " + "(needs CROSS_APP_WEBHOOK_SECRET + RENDER, or TRAFFIC_REPORT=1)") + return + _started = True + + def _loop(): + time.sleep(_STARTUP_DELAY_S + random.uniform(0, 60)) + while True: + report_pass() + time.sleep(REPORT_INTERVAL_S) + + threading.Thread(target=_loop, daemon=True, name="traffic-report").start() + print(f"[traffic] satellite reporter ON → {hub_url()}/api/satellite/traffic " + f"(hourly, app={APP_KEY!r})") + + +# --------------------------------------------------------------------------- # +# Health probe # +# --------------------------------------------------------------------------- # + +def register_healthz(server) -> None: + """GET /healthz — the network liveness convention the hub's hourly + satellite sweep polls. Tiny JSON, no Dash render, untracked by analytics.""" + from flask import jsonify + + @server.get("/healthz") + def healthz(): + return jsonify({"ok": True, "app": APP_KEY}) diff --git a/render.yaml b/render.yaml index aca5196..3ca29a9 100644 --- a/render.yaml +++ b/render.yaml @@ -9,7 +9,19 @@ services: envVars: - key: MUI_PRO_API_KEY sync: false + # Shared network secret — signs the hourly traffic rollup this app + # POSTs to https://2plot.ai/api/satellite/traffic (lib/traffic_report). + # Unset = reporting silently OFF. + - key: CROSS_APP_WEBHOOK_SECRET + sync: false + # Where the hit log lives. Default is /analytics, which Render + # wipes on every deploy; point this at a mounted disk to keep a day's + # numbers across deploys. + - key: ANALYTICS_DIR + sync: false - key: PYTHON_VERSION value: "3.11.12" - healthCheckPath: / + # /healthz is the network liveness convention the hub's hourly sweep + # polls; "/" would render the whole Dash index on every probe. + healthCheckPath: /healthz autoDeploy: true diff --git a/verify_traffic.py b/verify_traffic.py new file mode 100644 index 0000000..cc53754 --- /dev/null +++ b/verify_traffic.py @@ -0,0 +1,249 @@ +"""Headless verification for the satellite-analytics pipeline +(lib/analytics + lib/traffic_report + the app.py wiring). No server boot, +no outbound network. + +Three things are checked, in order of how badly they'd bite: + +1. THE COUNTING RULE — this app is a single-page app, so page views come + from the url.pathname callback and document requests only supply the + crawlers. The rollup must not double-count a human's first load. +2. THE APP WIRING — the Flask test client proves /healthz answers, that a + document GET is recorded, and that the real Dash callback round-trip + (POST /_dash-update-component) writes a page view. +3. THE SIGNATURE — the signed request our sender emits is fed through the + HUB's own verifier (2plotai/lib/satellite_ingest.verify_and_record, + loaded by file path). A pass there means 2plot.ai accepts our rollups + verbatim. Without the sibling repo it degrades to a local recompute. + +Run: python verify_traffic.py +""" +import importlib.util +import json +import os +import sys +import tempfile +from datetime import datetime, timedelta +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).resolve().parent)) + +# Isolate every write from the real hit log, and keep the reporter asleep. +os.environ["ANALYTICS_DIR"] = tempfile.mkdtemp(prefix="charts-analytics-") +os.environ.pop("CROSS_APP_WEBHOOK_SECRET", None) + +PASS, FAIL = "\033[32m✓\033[0m", "\033[31m✗\033[0m" +failures = [] + + +def check(name, cond, detail=""): + print(f"{PASS if cond else FAIL} {name}" + + (f" — {detail}" if detail and not cond else "")) + if not cond: + failures.append(name) + + +# --------------------------------------------------------------------------- # +# 1. Recorder: skip rules, bot detection, proxied client IP # +# --------------------------------------------------------------------------- # +from lib import analytics # noqa: E402 + +for noisy in ("/healthz", "/assets/app.css", "/_dash-update-component", + "/_reload-hash", "/favicon.ico", "/robots.txt"): + analytics.record(noisy, "Mozilla/5.0", "1.2.3.4", source="doc") +check("recorder skips probes, assets and Dash plumbing", + analytics.load_day() == [], analytics.load_day()) + +check("bot UAs classified like the hub", + all(analytics.is_bot(ua) for ua in + ("Googlebot/2.1", "ClaudeBot/1.0", "python-requests/2.31", "curl/8")) + and not analytics.is_bot("Mozilla/5.0 (Macintosh) Safari/605")) + +check("client_ip prefers CF-Connecting-IP, then X-Forwarded-For", + analytics.client_ip({"CF-Connecting-IP": "203.0.113.9"}, "10.0.0.1") + == "203.0.113.9" + and analytics.client_ip({"X-Forwarded-For": "198.51.100.7, 10.0.0.2"}, + "10.0.0.1") == "198.51.100.7") + +check("visitor identity is the hub's (ip, browser) pair", + analytics.visitor_key("1.2.3.4", "UA-a") + == analytics.visitor_key("1.2.3.4", "UA-a") + != analytics.visitor_key("1.2.3.4", "UA-b")) + + +# --------------------------------------------------------------------------- # +# 2. Rollup: the counting rule, sessions, median, pages # +# --------------------------------------------------------------------------- # +from lib import traffic_report as tr # noqa: E402 + +TODAY = datetime.now().replace(hour=9, minute=0, second=0, microsecond=0) + + +def row(minutes, path, source="spa", ua="Mozilla/5.0 (Macintosh)", + ip="203.0.113.9"): + return {"ts": (TODAY + timedelta(minutes=minutes)).isoformat( + timespec="seconds"), + "path": path, "ua": ua, "ip": ip, + "bot": analytics.is_bot(ua), "source": source} + + +rows = [ + # one human: a hard load on / (doc + spa), then three SPA navigations + row(0, "/", source="doc"), + row(0, "/"), + row(2, "/scatter"), + row(5, "/heatmap"), + row(9, "/tree-pro"), + # …returns after a 45-minute gap: a second session, single hit + row(54, "/candlestick"), + # a second human, one page + row(20, "/pie", ip="198.51.100.7", ua="Mozilla/5.0 (Windows)"), + # a crawler: document requests only, never a page view + row(30, "/", source="doc", ua="Googlebot/2.1", ip="66.249.66.1"), + row(31, "/linechart-basic", source="doc", ua="Googlebot/2.1", + ip="66.249.66.1"), + # a JS-executing crawler: recorded, but kept out of the human numbers + row(40, "/scatter", ua="ClaudeBot/1.0", ip="160.79.104.10"), +] +r = tr.build_rollup(TODAY.strftime("%Y-%m-%d"), rows=rows, geo=False) + +check("human_hits counts page views, not the duplicate document request", + r["human_hits"] == 6, r["human_hits"]) +check("bot_hits counts crawler document requests only", + r["bot_hits"] == 2, r["bot_hits"]) +check("visitors = unique human (ip, browser) pairs", + r["visitors"] == 2, r["visitors"]) +check("sessions split on the hub's 30-minute gap", + r["sessions"] == 3, r["sessions"]) +check("median_session_s from multi-hit sessions only " + "(single-hit visits never padded in)", + r["median_session_s"] == 9 * 60, r.get("median_session_s")) +check("pages lists the real doc pages, not just /", + [p["path"] for p in r["pages"]][:1] == ["/"] + and {"/scatter", "/heatmap", "/tree-pro", "/pie"} + <= {p["path"] for p in r["pages"]}, + r["pages"]) +check("bot page views stay out of pages", + all(p["path"] != "/scatter" or p["hits"] == 1 for p in r["pages"]), + r["pages"]) +check("payload carries app=charts and a YYYY-MM-DD date", + r["app"] == "charts" and len(r["date"]) == 10, r) + +empty = tr.build_rollup("1999-01-01", geo=False) +check("a day with no traffic is a valid zero rollup", + empty["human_hits"] == 0 and empty["bot_hits"] == 0 + and "median_session_s" not in empty and "countries" not in empty) + +check("reporting is OFF without the shared secret (dev can't clobber prod)", + tr.reporting_enabled() is False) + + +# --------------------------------------------------------------------------- # +# 3. App wiring: healthz, document hit, and the real callback round-trip # +# --------------------------------------------------------------------------- # +import app as demo_app # noqa: E402 (boots the Dash app; reporter stays off) + +client = demo_app.server.test_client() + +hz = client.get("/healthz") +check("GET /healthz answers the hub's sweep without a Dash render", + hz.status_code == 200 and hz.get_json() == {"ok": True, "app": "charts"}, + hz.data[:80]) + +before = len(analytics.load_day()) +client.get("/", headers={"User-Agent": "Googlebot/2.1", + "X-Forwarded-For": "66.249.66.1"}) +docs = [h for h in analytics.load_day()[before:] if h["source"] == "doc"] +check("a crawler's document GET is recorded as a bot doc hit", + len(docs) == 1 and docs[0]["bot"] and docs[0]["ip"] == "66.249.66.1", + docs) + +before = len(analytics.load_day()) +resp = client.post( + "/_dash-update-component", + json={"output": "analytics-sink.data", + "outputs": {"id": "analytics-sink", "property": "data"}, + "inputs": [{"id": "url", "property": "pathname", + "value": "/tree-pro"}], + "changedPropIds": ["url.pathname"]}, + headers={"User-Agent": "Mozilla/5.0 (Macintosh)", + "X-Forwarded-For": "198.51.100.7"}) +spa = [h for h in analytics.load_day()[before:] if h["source"] == "spa"] +check("the url.pathname callback records a real SPA page view", + resp.status_code == 200 and len(spa) == 1 + and spa[0]["path"] == "/tree-pro" and spa[0]["ip"] == "198.51.100.7", + (resp.status_code, spa)) + +check("the /healthz probe itself never lands in the traffic numbers", + all(h["path"] != "/healthz" for h in analytics.load_day())) + + +# --------------------------------------------------------------------------- # +# 4. Signature: fed through the hub's own verifier # +# --------------------------------------------------------------------------- # +SECRET = "verify-only-secret" +body = json.dumps(r).encode() +ts = str(int(datetime.now().timestamp())) +sig = tr.sign(body, ts, SECRET) + +hub_ingest = Path("/Users/pip/PycharmProjects/2plotai/lib/satellite_ingest.py") +if hub_ingest.exists(): + import types + + os.environ["CROSS_APP_WEBHOOK_SECRET"] = SECRET + # Stand in for the hub's heartbeat store (its real one needs Postgres / + # the JSONL event dir) and capture what it would persist. + stored = {} + pulse = types.ModuleType("lib.pulse") + hb_stub = types.ModuleType("lib.pulse.heartbeat") + hb_stub.record_note = lambda *a, **k: None + hb_stub.record_api_call = lambda **kw: stored.update(kw.get("extras") or {}) + pulse.heartbeat = hb_stub + sys.modules.setdefault("lib.pulse", pulse) + sys.modules.setdefault("lib.pulse.heartbeat", hb_stub) + + # The ingest folds app ids through the hub's OWN lib.network_directory — + # an absolute import that would otherwise resolve to THIS repo's lib + # package and turn every payload into "bad payload". Load the real one + # (pure data, no further imports) under the name the hub expects. + nd_spec = importlib.util.spec_from_file_location( + "lib.network_directory", hub_ingest.parent / "network_directory.py") + nd_mod = importlib.util.module_from_spec(nd_spec) + nd_spec.loader.exec_module(nd_mod) + sys.modules["lib.network_directory"] = nd_mod + + spec = importlib.util.spec_from_file_location("hub_ingest", hub_ingest) + hub = importlib.util.module_from_spec(spec) + spec.loader.exec_module(hub) + + reply, status = hub.verify_and_record( + body, {"X-AI-Canvas-Timestamp": ts, "X-AI-Canvas-Signature": sig}) + check("the hub's verifier accepts our signed rollup", + status == 200 and reply.get("ok"), (status, reply)) + check("every v2 field survives the hub's validation and caps", + stored.get("app") == "charts" + and stored.get("human_hits") == r["human_hits"] + and stored.get("visitors") == r["visitors"] + and stored.get("sessions") == r["sessions"] + and stored.get("median_session_s") == r["median_session_s"] + and len(stored.get("pages") or []) == len(r["pages"]), + stored) + + bad_reply, bad_status = hub.verify_and_record( + body, {"X-AI-Canvas-Timestamp": ts, "X-AI-Canvas-Signature": "deadbeef"}) + check("the hub rejects a bad signature (the check is real)", + bad_status == 400, (bad_status, bad_reply)) + del os.environ["CROSS_APP_WEBHOOK_SECRET"] +else: + import hashlib + import hmac + check("signature matches the documented scheme (hub repo absent)", + hmac.new(SECRET.encode(), f"{ts}.".encode() + body, + hashlib.sha256).hexdigest() == sig) + + +print() +if failures: + print(f"\033[31m{len(failures)} check(s) failed:\033[0m " + + ", ".join(failures)) + sys.exit(1) +print("\033[32mAll satellite-analytics checks passed.\033[0m") From 812a48bc1fd14f84d2860b3d31029aae3bd910f5 Mon Sep 17 00:00:00 2001 From: pip-install-python Date: Sat, 1 Aug 2026 19:27:14 -0500 Subject: [PATCH 02/22] [1.4.0] TreeViewPro kebab submenus, dividers, per-node menus kebabMenuItems entries may now be a leaf {label, value, icon?}, a {divider: true} rule, or a submenu {label, icon?, children} (recursive; a leaf anywhere in the chain closes the menu and fires kebabAction). kebabMenuItemsById overrides the global menu per node. Rebuilt bundle + regenerated wrappers; version 1.3.0 -> 1.4.0. Not published to PyPI. Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 17 +++ dash_mui_charts/TreeViewPro.py | 33 +++-- dash_mui_charts/dash_mui_charts.min.js | 4 +- dash_mui_charts/dash_mui_charts.min.js.map | 2 +- dash_mui_charts/metadata.json | 2 +- dash_mui_charts/package-info.json | 2 +- package.json | 2 +- src/lib/components/TreeViewPro.react.js | 146 +++++++++++++++++---- 8 files changed, 169 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e98f1c7..ae52e96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 --- +## [1.4.0] - 2026-07-19 + +### Added + +- **TreeViewPro kebab submenus + dividers.** `kebabMenuItems` entries may now be + a leaf `{label, value, icon?}`, a `{divider: true}` rule, or a submenu + `{label, icon?, children: [entries]}` that opens on hover/click (recursive + nesting; a leaf anywhere in the chain closes the whole menu and fires + `kebabAction`). +- **`kebabMenuItemsById`** — per-node kebab menus: `{itemId: [entries]}` + overrides the global `kebabMenuItems` for that node (same entry shape, + submenus/dividers included). Lets one tree carry different action sets for + different node types (channel nodes vs media nodes vs viewport nodes — the + 2plot.media /360-broadcast use case that motivated this). + +--- + ## [1.3.0] - 2026-06-05 ### Added diff --git a/dash_mui_charts/TreeViewPro.py b/dash_mui_charts/TreeViewPro.py index 90fb239..297b38d 100644 --- a/dash_mui_charts/TreeViewPro.py +++ b/dash_mui_charts/TreeViewPro.py @@ -144,17 +144,29 @@ class TreeViewPro(Component): - event_timestamp (number; optional) - kebabMenuItems (list of dicts; optional): - Kebab menu options: [{label, value, icon?}]. `value` is sent back - as `action`. + Kebab menu entries. Each entry is one of: a LEAF {label, value, + icon?} — picking it fires `kebabAction` with `action` = its + `value`; a DIVIDER {divider: True}; or a SUBMENU {label, icon?, + children: [entries]} that opens on hover/click (nesting is + recursive). `kebabMenuItems` is a list of dicts with keys: - - label (string; required) + - label (string; optional) - - value (string; required) + - value (string; optional) - icon (string; optional) + - divider (boolean; optional) + + - children (list; optional) + +- kebabMenuItemsById (dict with strings as keys and values of type list; optional): + Per-node kebab menus: {itemId: [entries]} (same entry shape as + `kebabMenuItems`, submenus/dividers included). A node listed here + gets its own menu; all other nodes fall back to `kebabMenuItems`. + - lazyLoadRequest (dict; optional): Output: Fired when unloaded node is expanded. {itemId, event_timestamp}. @@ -261,9 +273,11 @@ class TreeViewPro(Component): KebabMenuItems = TypedDict( "KebabMenuItems", { - "label": str, - "value": str, - "icon": NotRequired[str] + "label": NotRequired[str], + "value": NotRequired[str], + "icon": NotRequired[str], + "divider": NotRequired[bool], + "children": NotRequired[typing.Sequence] } ) @@ -355,6 +369,7 @@ def __init__( sliderStep: typing.Optional[NumberType] = None, sliderColor: typing.Optional[str] = None, kebabMenuItems: typing.Optional[typing.Sequence["KebabMenuItems"]] = None, + kebabMenuItemsById: typing.Optional[typing.Dict[typing.Union[str, float, int], typing.Sequence]] = None, sliderChange: typing.Optional["SliderChange"] = None, kebabAction: typing.Optional["KebabAction"] = None, clickedItem: typing.Optional["ClickedItem"] = None, @@ -362,9 +377,9 @@ def __init__( editedItemLabel: typing.Optional["EditedItemLabel"] = None, **kwargs ): - self._prop_names = ['id', 'ariaLabel', 'ariaLabelledBy', 'checkboxSelection', 'clickedItem', 'collapseIcon', 'controlsItems', 'defaultExpandedItems', 'defaultSelectedItems', 'disableSelection', 'disabledItems', 'disabledItemsFocusable', 'editableItems', 'editedItemLabel', 'endIcon', 'expandIcon', 'expandedItems', 'expansionTrigger', 'focusedItem', 'getItemChildren', 'getItemId', 'getItemLabel', 'height', 'isItemEditable', 'itemChildrenIndentation', 'itemPositionChanged', 'items', 'itemsReordering', 'kebabAction', 'kebabMenuItems', 'lazyLoadRequest', 'lazyLoadedChildren', 'lazyLoading', 'licenseKey', 'multiSelect', 'orderedItems', 'reorderableItems', 'selectedItems', 'selectionPropagation', 'showItemControls', 'sliderChange', 'sliderColor', 'sliderMax', 'sliderMin', 'sliderStep', 'sliderValues', 'sx'] + self._prop_names = ['id', 'ariaLabel', 'ariaLabelledBy', 'checkboxSelection', 'clickedItem', 'collapseIcon', 'controlsItems', 'defaultExpandedItems', 'defaultSelectedItems', 'disableSelection', 'disabledItems', 'disabledItemsFocusable', 'editableItems', 'editedItemLabel', 'endIcon', 'expandIcon', 'expandedItems', 'expansionTrigger', 'focusedItem', 'getItemChildren', 'getItemId', 'getItemLabel', 'height', 'isItemEditable', 'itemChildrenIndentation', 'itemPositionChanged', 'items', 'itemsReordering', 'kebabAction', 'kebabMenuItems', 'kebabMenuItemsById', 'lazyLoadRequest', 'lazyLoadedChildren', 'lazyLoading', 'licenseKey', 'multiSelect', 'orderedItems', 'reorderableItems', 'selectedItems', 'selectionPropagation', 'showItemControls', 'sliderChange', 'sliderColor', 'sliderMax', 'sliderMin', 'sliderStep', 'sliderValues', 'sx'] self._valid_wildcard_attributes = [] - self.available_properties = ['id', 'ariaLabel', 'ariaLabelledBy', 'checkboxSelection', 'clickedItem', 'collapseIcon', 'controlsItems', 'defaultExpandedItems', 'defaultSelectedItems', 'disableSelection', 'disabledItems', 'disabledItemsFocusable', 'editableItems', 'editedItemLabel', 'endIcon', 'expandIcon', 'expandedItems', 'expansionTrigger', 'focusedItem', 'getItemChildren', 'getItemId', 'getItemLabel', 'height', 'isItemEditable', 'itemChildrenIndentation', 'itemPositionChanged', 'items', 'itemsReordering', 'kebabAction', 'kebabMenuItems', 'lazyLoadRequest', 'lazyLoadedChildren', 'lazyLoading', 'licenseKey', 'multiSelect', 'orderedItems', 'reorderableItems', 'selectedItems', 'selectionPropagation', 'showItemControls', 'sliderChange', 'sliderColor', 'sliderMax', 'sliderMin', 'sliderStep', 'sliderValues', 'sx'] + self.available_properties = ['id', 'ariaLabel', 'ariaLabelledBy', 'checkboxSelection', 'clickedItem', 'collapseIcon', 'controlsItems', 'defaultExpandedItems', 'defaultSelectedItems', 'disableSelection', 'disabledItems', 'disabledItemsFocusable', 'editableItems', 'editedItemLabel', 'endIcon', 'expandIcon', 'expandedItems', 'expansionTrigger', 'focusedItem', 'getItemChildren', 'getItemId', 'getItemLabel', 'height', 'isItemEditable', 'itemChildrenIndentation', 'itemPositionChanged', 'items', 'itemsReordering', 'kebabAction', 'kebabMenuItems', 'kebabMenuItemsById', 'lazyLoadRequest', 'lazyLoadedChildren', 'lazyLoading', 'licenseKey', 'multiSelect', 'orderedItems', 'reorderableItems', 'selectedItems', 'selectionPropagation', 'showItemControls', 'sliderChange', 'sliderColor', 'sliderMax', 'sliderMin', 'sliderStep', 'sliderValues', 'sx'] self.available_wildcard_properties = [] _explicit_args = kwargs.pop('_explicit_args') _locals = locals() diff --git a/dash_mui_charts/dash_mui_charts.min.js b/dash_mui_charts/dash_mui_charts.min.js index 4f8c78f..4623c47 100644 --- a/dash_mui_charts/dash_mui_charts.min.js +++ b/dash_mui_charts/dash_mui_charts.min.js @@ -1,5 +1,5 @@ /*! For license information please see dash_mui_charts.min.js.LICENSE.txt */ -(()=>{var e,t,n,r,i={445(e){e.exports=function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,r=/\d\d/,i=/\d\d?/,o=/\d*[^-_:/,()\s\d]+/,a={},s=function(e){return(e=+e)+(e>68?1900:2e3)},l=function(e){return function(t){this[e]=+t}},c=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(e)}],u=function(e){var t=a[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=a.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?"pm":"PM");return n},p={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[i,l("seconds")],ss:[i,l("seconds")],m:[i,l("minutes")],mm:[i,l("minutes")],H:[i,l("hours")],h:[i,l("hours")],HH:[i,l("hours")],hh:[i,l("hours")],D:[i,l("day")],DD:[r,l("day")],Do:[o,function(e){var t=a.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,"")===e&&(this.day=r)}],w:[i,l("week")],ww:[r,l("week")],M:[i,l("month")],MM:[r,l("month")],MMM:[o,function(e){var t=u("months"),n=(u("monthsShort")||t.map(function(e){return e.slice(0,3)})).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u("months").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\d+/,l("year")],YY:[r,function(e){this.year=s(e)}],YYYY:[/\d{4}/,l("year")],Z:c,ZZ:c};function h(n){var r,i;r=n,i=a&&a.formats;for(var o=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(e,t,n){return t||n.slice(1)})})).match(t),s=o.length,l=0;l-1)return new Date(("X"===t?1e3:1)*e);var i=h(t)(e),o=i.year,a=i.month,s=i.day,l=i.hours,c=i.minutes,u=i.seconds,d=i.milliseconds,p=i.zone,m=i.week,f=new Date,g=s||(o||a?1:f.getDate()),y=o||f.getFullYear(),v=0;o&&!a||(v=a>0?a-1:f.getMonth());var b,x=l||0,I=c||0,w=u||0,k=d||0;return p?new Date(Date.UTC(y,v,g,x,I,w,k+60*p.offset*1e3)):n?new Date(Date.UTC(y,v,g,x,I,w,k)):(b=new Date(y,v,g,x,I,w,k),m&&(b=r(b).week(m).toDate()),b)}catch(e){return new Date("")}}(t,s,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(s)&&(this.$d=new Date("")),a={}}else if(s instanceof Array)for(var p=s.length,m=1;m<=p;m+=1){o[1]=s[m-1];var f=n.apply(this,o);if(f.isValid()){this.$d=f.$d,this.$L=f.$L,this.init();break}m===p&&(this.$d=new Date(""))}else i.call(this,e)}}}()},1020(e,t,n){"use strict";var r=n(1609),i=Symbol.for("react.element"),o=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,n){var r,l={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)o.call(t,r)&&!s.hasOwnProperty(r)&&(l[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===l[r]&&(l[r]=t[r]);return{$$typeof:i,type:e,key:c,ref:u,props:l,_owner:a.current}}t.jsx=l,t.jsxs=l},1609(e){"use strict";e.exports=window.React},2162(e,t,n){"use strict";var r=n(1609),i=n(9888),o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=i.useSyncExternalStore,s=r.useRef,l=r.useEffect,c=r.useMemo,u=r.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var d=s(null);if(null===d.current){var p={hasValue:!1,value:null};d.current=p}else p=d.current;d=c(function(){function e(e){if(!l){if(l=!0,a=e,e=r(e),void 0!==i&&p.hasValue){var t=p.value;if(i(t,e))return s=t}return s=e}if(t=s,o(a,e))return t;var n=r(e);return void 0!==i&&i(t,n)?(a=e,t):(a=e,s=n)}var a,s,l=!1,c=void 0===n?null:n;return[function(){return e(t())},null===c?void 0:function(){return e(c())}]},[t,n,r,i]);var h=a(e,d[0],d[1]);return l(function(){p.hasValue=!0,p.value=h},[h]),u(h),h}},3072(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,h=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,f=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,x=n?Symbol.for("react.scope"):60119;function I(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case o:case s:case a:case h:return e;default:switch(e=e&&e.$$typeof){case c:case p:case g:case f:case l:return e;default:return t}}case i:return t}}}function w(e){return I(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=l,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=g,t.Memo=f,t.Portal=i,t.Profiler=s,t.StrictMode=a,t.Suspense=h,t.isAsyncMode=function(e){return w(e)||I(e)===u},t.isConcurrentMode=w,t.isContextConsumer=function(e){return I(e)===c},t.isContextProvider=function(e){return I(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return I(e)===p},t.isFragment=function(e){return I(e)===o},t.isLazy=function(e){return I(e)===g},t.isMemo=function(e){return I(e)===f},t.isPortal=function(e){return I(e)===i},t.isProfiler=function(e){return I(e)===s},t.isStrictMode=function(e){return I(e)===a},t.isSuspense=function(e){return I(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===s||e===a||e===h||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===f||e.$$typeof===l||e.$$typeof===c||e.$$typeof===p||e.$$typeof===v||e.$$typeof===b||e.$$typeof===x||e.$$typeof===y)},t.typeOf=I},3404(e,t,n){"use strict";e.exports=n(3072)},4146(e,t,n){"use strict";var r=n(3404),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?a:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=a;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,h=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var i=h(n);i&&i!==m&&e(t,i,r)}var a=u(n);d&&(a=a.concat(d(n)));for(var s=l(t),f=l(n),g=0;g=t?e:""+Array(t+1-r.length).join(n)+e},y={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(i,2,"0")},m:function e(t,n){if(t.date()1)return e(a[0])}else{var s=t.name;b[s]=t,i=s}return!r&&i&&(v=i),i||!r&&v},k=function(e,t){if(I(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new M(n)},S=y;S.l=w,S.i=I,S.w=function(e,t){return k(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var M=function(){function f(e){this.$L=w(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var g=f.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(S.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(h);if(r){var i=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return S},g.isValid=function(){return!(this.$d.toString()===p)},g.isSame=function(e,t){var n=k(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return k(e)25){var o=i(this).startOf(t).add(1,t).date(r),a=i(this).endOf(e);if(o.isBefore(a))return 1}var s=i(this).startOf(t).date(r).startOf(e).subtract(1,"millisecond"),l=this.diff(s,e,!0);return l<0?i(this).startOf("week").week():Math.ceil(l)},o.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}()},8493(e,t,n){"use strict";var r=n(1609),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,a=r.useEffect,s=r.useLayoutEffect,l=r.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch(e){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),i=r[0].inst,u=r[1];return s(function(){i.value=n,i.getSnapshot=t,c(i)&&u({inst:i})},[e,n,t]),a(function(){return c(i)&&u({inst:i}),e(function(){c(i)&&u({inst:i})})},[e]),l(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:u},9242(e,t,n){"use strict";e.exports=n(2162)},9853(e){var t=.1,n="function"==typeof Float32Array;function r(e,t){return 1-3*t+3*e}function i(e,t){return 3*t-6*e}function o(e){return 3*e}function a(e,t,n){return((r(t,n)*e+i(t,n))*e+o(t))*e}function s(e,t,n){return 3*r(t,n)*e*e+2*i(t,n)*e+o(t)}function l(e){return e}e.exports=function(e,r,i,o){if(!(0<=e&&e<=1&&0<=i&&i<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===r&&i===o)return l;for(var c=n?new Float32Array(11):new Array(11),u=0;u<11;++u)c[u]=a(u*t,e,i);return function(n){return 0===n?0:1===n?1:a(function(n){for(var r=0,o=1;10!==o&&c[o]<=n;++o)r+=t;--o;var l=r+(n-c[o])/(c[o+1]-c[o])*t,u=s(l,e,i);return u>=.001?function(e,t,n,r){for(var i=0;i<4;++i){var o=s(t,n,r);if(0===o)return t;t-=(a(t,n,r)-e)/o}return t}(n,l,e,i):0===u?l:function(e,t,n,r,i){var o,s,l=0;do{(o=a(s=t+(n-t)/2,r,i)-e)>0?n=s:t=s}while(Math.abs(o)>1e-7&&++l<10);return s}(n,r,r+t,e,i)}(n),r,o)}}},9888(e,t,n){"use strict";e.exports=n(8493)}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=i,a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var i=Object.create(null);a.r(i);var o={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;("object"==typeof s||"function"==typeof s)&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach(e=>o[e]=()=>n[e]);return o.default=()=>n,a.d(i,o),i},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce((t,n)=>(a.f[n](e,t),t),[])),a.u=e=>e+".dash_mui_charts.min.js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},r="dash_mui_charts:",a.l=(e,t,i,o)=>{if(n[e])n[e].push(t);else{var s,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),u=0;u{s.onerror=s.onload=null,clearTimeout(h);var i=n[e];if(delete n[e],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach(e=>e(r)),t)return t(r)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=p.bind(null,s.onerror),s.onload=p.bind(null,s.onload),l&&document.head.appendChild(s)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})();var s,l=function(){var e=document.currentScript;if(!e){for(var t=document.getElementsByTagName("script"),n=[],r=0;r{var e={57:0};a.f.j=(t,n)=>{var r=a.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise((n,i)=>r=e[t]=[n,i]);n.push(r[2]=i);var o=a.p+a.u(t),s=new Error;a.l(o,n=>{if(a.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",s.name="ChunkLoadError",s.type=i,s.request=o,r[1](s)}},"chunk-"+t,t)}};var t=(t,n)=>{var r,i,[o,s,l]=n,c=0;if(o.some(t=>0!==e[t])){for(r in s)a.o(s,r)&&(a.m[r]=s[r]);l&&l(a)}for(t&&t(n);c{"use strict";a.r(u),a.d(u,{BarChart:()=>YR,CandlestickChart:()=>iD,CompositeChart:()=>dR,Heatmap:()=>Nj,LineChart:()=>$A,LiveTradingChart:()=>ER,PieChart:()=>PL,ScatterChart:()=>KL,SimpleTreeView:()=>x_,SparklineChart:()=>DO,TimeClock:()=>xU,TreeView:()=>o_,TreeViewPro:()=>wB});var e=a(1609),t=a.t(e,2),n=a.n(e);const r=window.PropTypes;var i=a.n(r);const o="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();o.__MUI_LICENSE_INFO__=o.__MUI_LICENSE_INFO__||{key:void 0};class s{static getLicenseInfo(){return o.__MUI_LICENSE_INFO__}static getLicenseKey(){return s.getLicenseInfo().key}static setLicenseKey(e){s.getLicenseInfo().key=e}}function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{},h={licenseVerification:()=>null},m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",f=e=>{let t,n,r,i,o,a,s,l="",c=0;for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");c>4,n=(15&o)<<4|a>>2,r=(3&a)<<6|s,l+=String.fromCharCode(t),64!=a&&(l+=String.fromCharCode(n)),64!=s&&(l+=String.fromCharCode(r));return l},g=[];let y=0;for(;y<64;)g[y]=0|4294967296*Math.sin(++y%Math.PI);let v=function(e){return e.NotFound="NotFound",e.Invalid="Invalid",e.ExpiredAnnual="ExpiredAnnual",e.ExpiredAnnualGrace="ExpiredAnnualGrace",e.ExpiredVersion="ExpiredVersion",e.Valid="Valid",e.OutOfScope="OutOfScope",e.NotAvailableInInitialProPlan="NotAvailableInInitialProPlan",e}({});const b=["pro","premium"],x=["perpetual","annual","subscription"],I=/^.*EXPIRY=([0-9]+),.*$/,w=/^.*ORDER:([0-9]+),.*$/,k=["x-data-grid-pro","x-date-pickers-pro"];function S({releaseInfo:e,licenseKey:t,packageName:n}){if(!e)throw new Error("MUI X: The release information is missing. Not able to validate license.");if(!t)return{status:v.NotFound};const r=t.substr(0,32),i=t.substr(32);if(r!==function(e){const t=[];let n,r,i,o=unescape(encodeURI(e))+"€",a=o.length;const s=[n=1732584193,r=4023233417,~n,~r];for(e=--a/4+2|15,t[--e]=8*a;~a;)t[a>>2]|=o.charCodeAt(a)<<8*a--;for(y=o=0;y>4]+g[o]+~~t[y|15&[o,5*o+1,3*o+5,7*o][a]])<<(a=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*a+o++%4])|i>>>-a),n,r])n=0|a[1],r=a[2];for(o=4;o;)s[--o]+=a[o]}for(e="";o<32;)e+=(s[o>>3]>>4*(1^o++)&15).toString(16);return e}(i))return{status:v.Invalid};const o=function(e){const t=f(e);return t.includes("KEYVERSION=1")?function(e){let t,n;try{t=parseInt(e.match(I)[1],10),t&&!Number.isNaN(t)||(t=null),n=parseInt(e.match(w)[1],10),n&&!Number.isNaN(n)||(n=null)}catch(e){t=null,n=null}return{version:1,licenseModel:"perpetual",planScope:"pro",planVersion:"initial",expiryTimestamp:t,expiryDate:t?new Date(t):null,orderId:n}}(t):t.includes("KV=2")?function(e){const t={version:2,licenseModel:null,planScope:null,planVersion:"initial",expiryTimestamp:null,expiryDate:null,orderId:null};return e.split(",").map(e=>e.split("=")).filter(e=>2===e.length).forEach(([e,n])=>{if("S"===e&&(t.planScope=n),"LM"===e&&(t.licenseModel=n),"E"===e){const e=parseInt(n,10);e&&!Number.isNaN(e)&&(t.expiryTimestamp=e,t.expiryDate=new Date(e))}if("PV"===e&&(t.planVersion=n),"O"===e){const e=parseInt(n,10);e&&!Number.isNaN(e)&&(t.orderId=e)}}),t}(t):null}(i);if(null==o)return console.error("MUI X: Error checking license. Key version not found!"),{status:v.Invalid};if(null==o.licenseModel||!x.includes(o.licenseModel))return console.error("MUI X: Error checking license. License model not found or invalid!"),{status:v.Invalid};if(null==o.expiryTimestamp)return console.error("MUI X: Error checking license. Expiry timestamp not found or invalid!"),{status:v.Invalid};o.licenseModel;{const t=parseInt(f(e),10);if(Number.isNaN(t))throw new Error("MUI X: The release information is invalid. Not able to validate license.");if(o.expiryTimestamp{const e=r??M.getLicenseKey();if(T[t]&&T[t].key===e)return T[t].licenseVerifier;const i=t.includes("premium")?"Premium":"Pro",o=S({releaseInfo:n,licenseKey:e,packageName:t}),a=`@mui/${t}`;return p(h.licenseVerification({licenseKey:e},{packageName:t,packageReleaseInfo:n,licenseStatus:o?.status})),o.status===v.Valid||(o.status===v.Invalid?P(["MUI X: Invalid license key.","","Your MUI X license key format isn't valid. It could be because the license key is missing a character or has a typo.","","To solve the issue, you need to double check that `setLicenseKey()` is called with the right argument","Please check the license key installation https://mui.com/r/x-license-key-installation."]):o.status===v.NotAvailableInInitialProPlan?P(["MUI X: Component not included in your license.","","The component you are trying to use is not included in the Pro Plan you purchased.","","Your license is from an old version of the Pro Plan that is only compatible with the `@mui/x-data-grid-pro` and `@mui/x-date-pickers-pro` commercial packages.","","To start using another Pro package, please consider reaching to our sales team to upgrade your license or visit https://mui.com/r/x-get-license to get a new license key."]):o.status===v.OutOfScope?function({packageName:e}){const t=e.replace(/-(premium|pro)$/,"");P(["MUI X: License key plan mismatch.","","Your use of MUI X is not compatible with the plan of your license key. The feature you are trying to use is not included in the plan of your license key. This happens if you try to use Data Grid Premium with a license key for the Pro plan.","","To solve the issue, you can upgrade your plan from Pro to Premium at https://mui.com/r/x-get-license?scope=premium.",`Or if you didn't intend to use Premium features, you can replace the import of \`${t}-premium\` with \`${t}-pro\`.`])}({packageName:a}):o.status===v.NotFound?function({plan:e,packageName:t}){P(["MUI X: Missing license key.","",`The license key is missing. You might not be allowed to use \`${t}\` which is part of MUI X ${e}.`,"","To solve the issue, you can check the free trial conditions: https://mui.com/r/x-license-trial.","If you are eligible no actions are required. If you are not eligible to the free trial, you need to purchase a license https://mui.com/r/x-get-license or stop using the software immediately."])}({plan:i,packageName:a}):o.status===v.ExpiredAnnualGrace?function({plan:e,licenseKey:t,expiryTimestamp:n}){P(["MUI X: Expired license key.","",`Your annual license key to use MUI X ${e} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${e} component (more details in https://mui.com/r/x-license-annual).`,"","To solve the problem you can either:","","- Renew your license https://mui.com/r/x-get-license and use the new key",`- Stop making changes to code depending directly or indirectly on MUI X ${e}'s APIs`,"","Note that your license is perpetual in production environments with any version released before your license term ends.","",`- License key expiry timestamp: ${new Date(n)}`,`- Installed license key: ${t}`,""])}(l({plan:i},o.meta)):o.status===v.ExpiredAnnual?function({plan:e,licenseKey:t,expiryTimestamp:n}){throw new Error(["MUI X: Expired license key.","",`Your annual license key to use MUI X ${e} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${e} component (more details in https://mui.com/r/x-license-annual).`,"","To solve the problem you can either:","","- Renew your license https://mui.com/r/x-get-license and use the new key",`- Stop making changes to code depending directly or indirectly on MUI X ${e}'s APIs`,"","Note that your license is perpetual in production environments with any version released before your license term ends.","",`- License key expiry timestamp: ${new Date(n)}`,`- Installed license key: ${t}`,""].join("\n"))}(l({plan:i},o.meta)):o.status===v.ExpiredVersion&&function({packageName:e}){P(["MUI X: Expired package version.","",`You have installed a version of \`${e}\` that is outside of the maintenance plan of your license key. By default, commercial licenses provide access to new versions released during the first year after the purchase.`,"","To solve the issue, you can renew your license https://mui.com/r/x-get-license or install an older version of the npm package that is compatible with your license key."])}({packageName:a})),T[t]={key:e,licenseVerifier:o},o},[t,n,r])}var O=a(4848);function j(e){switch(e){case v.ExpiredAnnualGrace:case v.ExpiredAnnual:return"MUI X Expired license key";case v.ExpiredVersion:return"MUI X Expired package version";case v.Invalid:return"MUI X Invalid license key";case v.OutOfScope:return"MUI X License key plan mismatch";case v.NotAvailableInInitialProPlan:return"MUI X Product not covered by plan";case v.NotFound:return"MUI X Missing license key";default:throw new Error("Unhandled MUI X license status.")}}const L=(R=function(e){const{packageName:t,releaseInfo:n}=e,r=A(t,n);return r.status===v.Valid?null:(0,O.jsx)("div",{style:{position:"absolute",pointerEvents:"none",color:"#8282829e",zIndex:1e5,width:"100%",textAlign:"center",bottom:"50%",right:0,letterSpacing:5,fontSize:24},children:j(r.status)})},e.memo(R,d));var R;let D=0;const $={...t}.useId;function z(t){if(void 0!==$){const e=$();return t??e}return function(t){const[n,r]=e.useState(t),i=t||n;return e.useEffect(()=>{null==n&&(D+=1,r(`mui-${D}`))},[n]),i}(t)}var N=a(9888),_=a(9242);const F=parseInt(e.version,10),H=F>=19?function(t,n,r,i,o){const a=e.useCallback(()=>n(t.getSnapshot(),r,i,o),[t,n,r,i,o]);return(0,N.useSyncExternalStore)(t.subscribe,a,a)}:function(e,t,n,r,i){return(0,_.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,e=>t(e,n,r,i))};class B{static create(e){return new B(e)}constructor(e){this.state=e,this.listeners=new Set,this.updateTick=0}subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.state;setState(e){this.state=e,this.updateTick+=1;const t=this.updateTick,n=this.listeners.values();let r;for(;r=n.next(),!r.done;){if(t!==this.updateTick)return;(0,r.value)(e)}}update(e){for(const t in e)if(!Object.is(this.state[t],e[t]))return void this.setState(l({},this.state,e))}set(e,t){Object.is(this.state[e],t)||this.setState(l({},this.state,{[e]:t}))}use=(()=>(e,t,n,r)=>function(e,t,n,r,i){return H(e,t,n,r,i)}(this,e,t,n,r))()}const V="undefined"!=typeof window?e.useLayoutEffect:e.useEffect,U=({params:t,store:n})=>{e.useEffect(()=>{n.set("animation",l({},n.state.animation,{skip:t.skipAnimation}))},[n,t.skipAnimation]);const r=e.useCallback(()=>{let e=!1;return n.set("animation",l({},n.state.animation,{skipAnimationRequests:n.state.animation.skipAnimationRequests+1})),()=>{e||(e=!0,n.set("animation",l({},n.state.animation,{skipAnimationRequests:n.state.animation.skipAnimationRequests-1})))}},[n]);return V(()=>{if("undefined"==typeof window||!window?.matchMedia)return;let e;const t=t=>{t.matches?e=r():e?.()},n=window.matchMedia("(prefers-reduced-motion)");return t(n),n.addEventListener("change",t),()=>{n.removeEventListener("change",t)}},[r,n]),{instance:{disableAnimation:r}}};function Y(t,n){const r=e.useRef(!0);e.useEffect(()=>{if(!r.current)return t();r.current=!1},n)}U.params={skipAnimation:!0},U.getDefaultizedParams=({params:e})=>l({},e,{skipAnimation:e.skipAnimation??!1}),U.getInitialState=({skipAnimation:e})=>("undefined"==typeof window||window,{animation:{skip:e,skipAnimationRequests:0}});const W="DEFAULT_X_AXIS_KEY",G="DEFAULT_Y_AXIS_KEY",K={top:20,bottom:20,left:20,right:20};var q=Symbol("NOT_FOUND");var X=e=>Array.isArray(e)?e:[e];Symbol(),Object.getPrototypeOf({});var Z=(e,t)=>e===t;function J(e,t){const n="object"==typeof t?t:{equalityCheck:t},{equalityCheck:r=Z,maxSize:i=1,resultEqualityCheck:o}=n,a=function(e){return function(t,n){if(null===t||null===n||t.length!==n.length)return!1;const{length:r}=t;for(let i=0;it&&e(t.key,n)?t.value:q,put(e,n){t={key:e,value:n}},getEntries:()=>t?[t]:[],clear(){t=void 0}}}(a):function(e,t){let n=[];function r(e){const r=n.findIndex(n=>t(e,n.key));if(r>-1){const e=n[r];return r>0&&(n.splice(r,1),n.unshift(e)),e.value}return q}return{get:r,put:function(t,i){r(t)===q&&(n.unshift({key:t,value:i}),n.length>e&&n.pop())},getEntries:function(){return n},clear:function(){n=[]}}}(i,a);function c(){let t=l.get(arguments);if(t===q){if(t=e.apply(null,arguments),s++,o){const e=l.getEntries().find(e=>o(e.value,t));e&&(t=e.value,0!==s&&s--)}l.put(arguments,t)}return t}return c.clearCache=()=>{l.clear(),c.resetResultsCount()},c.resultsCount=()=>s,c.resetResultsCount=()=>{s=0},c}var Q="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}};function ee(){return{s:0,v:void 0,o:null,p:null}}function te(e,t={}){let n={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:r}=t;let i,o=0;function a(){let t=n;const{length:a}=arguments;for(let e=0,n=a;e{n={s:0,v:void 0,o:null,p:null},a.resetResultsCount()},a.resultsCount=()=>o,a.resetResultsCount=()=>{o=0},a}function ne(e,...t){const n="function"==typeof e?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t,r=0,i=0,o={},a=e.pop();"object"==typeof a&&(o=a,a=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(a,`createSelector expects an output function after the inputs, but received: [${typeof a}]`);const s={...n,...o},{memoize:l,memoizeOptions:c=[],argsMemoize:u=te,argsMemoizeOptions:d=[],devModeChecks:p={}}=s,h=X(c),m=X(d),f=function(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(e=>"function"==typeof e)){const n=e.map(e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e).join(", ");throw new TypeError(`${t}[${n}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}(e),g=l(function(){return r++,a.apply(null,arguments)},...h),y=u(function(){i++;const e=function(e,t){const n=[],{length:r}=e;for(let i=0;ii,resetDependencyRecomputations:()=>{i=0},lastResult:()=>t,recomputations:()=>r,resetRecomputations:()=>{r=0},memoize:l,argsMemoize:u})};return Object.assign(r,{withTypes:()=>r}),r}var re=ne(te),ie=Object.assign((e,t=re)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const n=Object.keys(e),r=t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}));return r},{withTypes:()=>ie});const oe=ne({memoize:J,memoizeOptions:{maxSize:1,equalityCheck:Object.is}}),ae=(e,t,n,r,i,o,a,s,...l)=>{if(l.length>0)throw new Error("Unsupported number of selectors");let c;if(e&&t&&n&&r&&i&&o&&a&&s)c=(l,c,u,d)=>{const p=e(l,c,u,d),h=t(l,c,u,d),m=n(l,c,u,d),f=r(l,c,u,d),g=i(l,c,u,d),y=o(l,c,u,d),v=a(l,c,u,d);return s(p,h,m,f,g,y,v,c,u,d)};else if(e&&t&&n&&r&&i&&o&&a)c=(s,l,c,u)=>{const d=e(s,l,c,u),p=t(s,l,c,u),h=n(s,l,c,u),m=r(s,l,c,u),f=i(s,l,c,u),g=o(s,l,c,u);return a(d,p,h,m,f,g,l,c,u)};else if(e&&t&&n&&r&&i&&o)c=(a,s,l,c)=>{const u=e(a,s,l,c),d=t(a,s,l,c),p=n(a,s,l,c),h=r(a,s,l,c),m=i(a,s,l,c);return o(u,d,p,h,m,s,l,c)};else if(e&&t&&n&&r&&i)c=(o,a,s,l)=>{const c=e(o,a,s,l),u=t(o,a,s,l),d=n(o,a,s,l),p=r(o,a,s,l);return i(c,u,d,p,a,s,l)};else if(e&&t&&n&&r)c=(i,o,a,s)=>{const l=e(i,o,a,s),c=t(i,o,a,s),u=n(i,o,a,s);return r(l,c,u,o,a,s)};else if(e&&t&&n)c=(r,i,o,a)=>{const s=e(r,i,o,a),l=t(r,i,o,a);return n(s,l,i,o,a)};else if(e&&t)c=(n,r,i,o)=>{const a=e(n,r,i,o);return t(a,r,i,o)};else{if(!e)throw new Error("Missing arguments");c=e}return c},se=e=>(...t)=>{const n=new WeakMap;let r=1;const i=t[t.length-1],o=t.length-1||1,a=Math.max(i.length-o,0);if(a>3)throw new Error("Unsupported number of arguments");return(o,s,l,c)=>{let u=o.__cacheKey__;u||(u={id:r},o.__cacheKey__=u,r+=1);let d=n.get(u);if(!d){const r=1===t.length?[e=>e,i]:t;let o=t;const s=[void 0,void 0,void 0];switch(a){case 0:break;case 1:o=[...r.slice(0,-1),()=>s[0],i];break;case 2:o=[...r.slice(0,-1),()=>s[0],()=>s[1],i];break;case 3:o=[...r.slice(0,-1),()=>s[0],()=>s[1],()=>s[2],i];break;default:throw new Error("Unsupported number of arguments")}e&&(o=[...o,e]),d=oe(...o),d.selectorArgs=s,n.set(u,d)}switch(a){case 3:d.selectorArgs[2]=c;case 2:d.selectorArgs[1]=l;case 1:d.selectorArgs[0]=s}switch(a){case 0:return d(o);case 1:return d(o,s);case 2:return d(o,s,l);case 3:return d(o,s,l,c);default:throw new Error("unreachable")}}},le=se(),ce=e=>e.cartesianAxis?.x,ue=e=>e.cartesianAxis?.y,de=le(ae(ue,function(e){return(e??[]).reduce((e,t)=>"left"===t.position?e+(t.width||0)+(t.zoom?.slider.enabled?t.zoom.slider.size:0):e,0)}),ae(ue,function(e){return(e??[]).reduce((e,t)=>"right"===t.position?e+(t.width||0)+(t.zoom?.slider.enabled?t.zoom.slider.size:0):e,0)}),ae(ce,function(e){return(e??[]).reduce((e,t)=>"top"===t.position?e+(t.height||0)+(t.zoom?.slider.enabled?t.zoom.slider.size:0):e,0)}),ae(ce,function(e){return(e??[]).reduce((e,t)=>"bottom"===t.position?e+(t.height||0)+(t.zoom?.slider.enabled?t.zoom.slider.size:0):e,0)}),function(e,t,n,r){return{left:e,right:t,top:n,bottom:r}}),pe=e=>e.dimensions,he=le(pe,e=>e.dimensions.margin,de,function({width:e,height:t},{top:n,right:r,bottom:i,left:o},{left:a,right:s,top:l,bottom:c}){return{width:e-o-r-a-s,left:o+a,right:r+s,height:t-n-i-l-c,top:n+l,bottom:i+c}}),me=ae(pe,e=>e.width),fe=ae(pe,e=>e.height),ge=ae(pe,e=>e.propsWidth),ye=ae(pe,e=>e.propsHeight);function ve(e,t){return"number"==typeof e?{top:e,bottom:e,left:e,right:e}:t?l({},t,e):e}const be=({params:t,store:n,svgRef:r})=>{const i=void 0!==t.width&&void 0!==t.height,o=e.useRef({displayError:!1,initialCompute:!0,computeRun:0}),[a,s]=e.useState(0),[l,c]=e.useState(0),u=e.useCallback(()=>{const e=r?.current;if(!e)return{};const i=function(e){const t=function(e){return e&&e.ownerDocument||document}(e);return t.defaultView||window}(e).getComputedStyle(e),o=Math.floor(parseFloat(i.height))||0,a=Math.floor(parseFloat(i.width))||0;return n.state.dimensions.width===a&&n.state.dimensions.height===o||n.set("dimensions",{margin:{top:t.margin.top,right:t.margin.right,bottom:t.margin.bottom,left:t.margin.left},width:t.width??a,height:t.height??o,propsWidth:t.width,propsHeight:t.height}),{height:o,width:a}},[n,r,t.height,t.width,t.margin.left,t.margin.right,t.margin.top,t.margin.bottom]);Y(()=>{const e=t.width??n.state.dimensions.width,r=t.height??n.state.dimensions.height;n.set("dimensions",{margin:{top:t.margin.top,right:t.margin.right,bottom:t.margin.bottom,left:t.margin.left},width:e,height:r,propsHeight:t.height,propsWidth:t.width})},[n,t.height,t.width,t.margin.left,t.margin.right,t.margin.top,t.margin.bottom]),e.useEffect(()=>{o.current.displayError=!0},[]),V(()=>{if(i||!o.current.initialCompute||o.current.computeRun>10)return;const e=u();e.width!==a||e.height!==l?(o.current.computeRun+=1,void 0!==e.width&&s(e.width),void 0!==e.height&&c(e.height)):o.current.initialCompute&&(o.current.initialCompute=!1)},[l,a,u,i]),V(()=>{if(i)return()=>{};u();const e=r.current;if("undefined"==typeof ResizeObserver)return()=>{};let t;const n=new ResizeObserver(()=>{t=requestAnimationFrame(()=>{u()})});return e&&n.observe(e),()=>{t&&cancelAnimationFrame(t),e&&n.unobserve(e)}},[u,i,r]);const d=n.use(he),p=e.useCallback(e=>e>=d.left-1&&e<=d.left+d.width,[d.left,d.width]),h=e.useCallback(e=>e>=d.top-1&&e<=d.top+d.height,[d.height,d.top]);return{instance:{isPointInside:e.useCallback((e,t,n)=>!!(n&&"closest"in n&&n.closest("[data-drawing-container]"))||p(e)&&h(t),[p,h]),isXInside:p,isYInside:h}}};be.params={width:!0,height:!0,margin:!0},be.getDefaultizedParams=({params:e})=>l({},e,{margin:ve(e.margin,K)}),be.getInitialState=({width:e,height:t,margin:n})=>({dimensions:{margin:n,width:e??0,height:t??0,propsWidth:e,propsHeight:t}});const xe=({params:e,store:t})=>(V(()=>{t.set("experimentalFeatures",e.experimentalFeatures)},[t,e.experimentalFeatures]),{});xe.params={experimentalFeatures:!0},xe.getInitialState=({experimentalFeatures:e})=>({experimentalFeatures:e});let Ie=0;const we=({params:t,store:n})=>(e.useEffect(()=>{void 0===t.id||t.id===n.state.id.providedChartId&&void 0!==n.state.id.chartId||n.set("id",l({},n.state.id,{chartId:t.id??(Ie+=1,`mui-chart-${Ie}`)}))},[n,t.id]),{});we.params={id:!0},we.getInitialState=({id:e})=>({id:{chartId:e,providedChartId:e}});const ke=function(t){const n=e.useRef(t);return V(()=>{n.current=t}),e.useRef((...e)=>(0,n.current)(...e)).current},Se=["#4254FB","#FFB422","#FA4F58","#0DBEFF","#22BF75","#FA83B4","#FF7511"],Me=["#495AFB","#FFC758","#F35865","#30C8FF","#44CE8D","#F286B3","#FF8C39"],Ce=e=>"dark"===e?Me:Se,Pe=({series:e,colors:t,seriesConfig:n})=>{const r={};return e.forEach((e,i)=>{const o=n[e.type].getSeriesWithDefaultValues(e,i,t),a=o.id;if(void 0===r[e.type]&&(r[e.type]={series:{},seriesOrder:[]}),void 0!==r[e.type]?.series[a])throw new Error(`MUI X Charts: series' id "${a}" is not unique.`);r[e.type].series[a]=o,r[e.type].seriesOrder.push(a)}),r},Ee=(e,t)=>{const n=e[t.type]?.identifierSerializer;if(!n)throw new Error(`MUI X Charts: No identifier serializer found for series type "${t.type}".`);return n(t)},Te=({params:e,store:t,seriesConfig:n})=>{const{series:r,dataset:i,theme:o,colors:a}=e;Y(()=>{t.set("series",l({},t.state.series,{defaultizedSeries:Pe({series:r,colors:"function"==typeof a?a(o):a,seriesConfig:n}),dataset:i}))},[a,i,r,o,n,t]);const s=ke(e=>Ee(n,e));return{instance:{serializeIdentifier:s}}};Te.params={dataset:!0,series:!0,colors:!0,theme:!0};const Ae=[];Te.getDefaultizedParams=({params:e})=>l({},e,{series:e.series?.length?e.series:Ae,colors:e.colors??Ce,theme:e.theme??"light"}),Te.getInitialState=({series:e=[],colors:t,theme:n,dataset:r},i,o)=>({series:{seriesConfig:o,defaultizedSeries:Pe({series:e,colors:"function"==typeof t?t(n):t,seriesConfig:o}),dataset:r}});class Oe{activeGestures=(()=>new Map)();registerActiveGesture(e,t){this.activeGestures.has(e)||this.activeGestures.set(e,new Set);const n={gesture:t,element:e};this.activeGestures.get(e).add(n)}unregisterActiveGesture(e,t){const n=this.activeGestures.get(e);n&&(n.forEach(e=>{e.gesture===t&&n.delete(e)}),0===n.size&&this.activeGestures.delete(e))}getActiveGestures(e){const t=this.activeGestures.get(e);return t?Array.from(t).reduce((e,t)=>(e[t.gesture.name]=!0,e),{}):{}}isGestureActive(e,t){const n=this.activeGestures.get(e);return!!n&&Array.from(n).some(e=>e.gesture===t)}destroy(){this.activeGestures.clear()}unregisterElement(e){this.activeGestures.delete(e)}}class je{pressedKeys=(()=>new Set)();constructor(){this.initialize()}initialize(){"undefined"!=typeof window&&(window.addEventListener("keydown",this.handleKeyDown),window.addEventListener("keyup",this.handleKeyUp),window.addEventListener("blur",this.clearKeys))}handleKeyDown=e=>{this.pressedKeys.add(e.key)};handleKeyUp=e=>{this.pressedKeys.delete(e.key)};clearKeys=()=>{this.pressedKeys.clear()};areKeysPressed(e){return!e||0===e.length||e.every(e=>"ControlOrMeta"===e?navigator.platform.includes("Mac")?this.pressedKeys.has("Meta"):this.pressedKeys.has("Control"):this.pressedKeys.has(e))}destroy(){"undefined"!=typeof window&&(window.removeEventListener("keydown",this.handleKeyDown),window.removeEventListener("keyup",this.handleKeyUp),window.removeEventListener("blur",this.clearKeys)),this.clearKeys()}}class Le{preventEventInterruption=!0;pointers=(()=>new Map)();gestureHandlers=(()=>new Set)();constructor(e){this.root=e.root??document.getRootNode({composed:!0})??document.body,this.touchAction=e.touchAction||"auto",this.passive=e.passive??!1,this.preventEventInterruption=e.preventEventInterruption??!0,this.setupEventListeners()}registerGestureHandler(e){return this.gestureHandlers.add(e),()=>{this.gestureHandlers.delete(e)}}getPointers(){return new Map(this.pointers)}setupEventListeners(){"auto"!==this.touchAction&&(this.root.style.touchAction=this.touchAction),this.root.addEventListener("pointerdown",this.handlePointerEvent,{passive:this.passive}),this.root.addEventListener("pointermove",this.handlePointerEvent,{passive:this.passive}),this.root.addEventListener("pointerup",this.handlePointerEvent,{passive:this.passive}),this.root.addEventListener("pointercancel",this.handlePointerEvent,{passive:this.passive}),this.root.addEventListener("forceCancel",this.handlePointerEvent,{passive:this.passive}),this.root.addEventListener("blur",this.handleInterruptEvents),this.root.addEventListener("contextmenu",this.handleInterruptEvents)}handleInterruptEvents=e=>{if(this.preventEventInterruption&&"pointerType"in e&&"touch"===e.pointerType)return void e.preventDefault();const t=new PointerEvent("forceCancel",{bubbles:!1,cancelable:!1}),n=this.pointers.values().next().value;if(this.pointers.size>0&&n){Object.defineProperties(t,{clientX:{value:n.clientX},clientY:{value:n.clientY},pointerId:{value:n.pointerId},pointerType:{value:n.pointerType}});for(const[e,t]of this.pointers.entries()){const n=l({},t,{type:"forceCancel"});this.pointers.set(e,n)}}this.notifyHandlers(t),this.pointers.clear()};handlePointerEvent=e=>{const{type:t,pointerId:n}=e;if("pointerdown"===t||"pointermove"===t)this.pointers.set(n,this.createPointerData(e));else if("pointerup"===t||"pointercancel"===t||"forceCancel"===t)return this.pointers.set(n,this.createPointerData(e)),this.notifyHandlers(e),void this.pointers.delete(n);this.notifyHandlers(e)};notifyHandlers(e){this.gestureHandlers.forEach(t=>t(this.pointers,e))}createPointerData(e){return{pointerId:e.pointerId,clientX:e.clientX,clientY:e.clientY,pageX:e.pageX,pageY:e.pageY,target:e.target,timeStamp:e.timeStamp,type:e.type,isPrimary:e.isPrimary,pressure:e.pressure,width:e.width,height:e.height,pointerType:e.pointerType,srcEvent:e}}destroy(){this.root.removeEventListener("pointerdown",this.handlePointerEvent),this.root.removeEventListener("pointermove",this.handlePointerEvent),this.root.removeEventListener("pointerup",this.handlePointerEvent),this.root.removeEventListener("pointercancel",this.handlePointerEvent),this.root.removeEventListener("forceCancel",this.handlePointerEvent),this.root.removeEventListener("blur",this.handleInterruptEvents),this.root.removeEventListener("contextmenu",this.handleInterruptEvents),this.pointers.clear(),this.gestureHandlers.clear()}}class Re{gestureTemplates=(()=>new Map)();elementGestureMap=(()=>new Map)();activeGesturesRegistry=(()=>new Oe)();keyboardManager=(()=>new je)();constructor(e){this.pointerManager=new Le({root:e.root,touchAction:e.touchAction,passive:e.passive}),e.gestures&&e.gestures.length>0&&e.gestures.forEach(e=>{this.addGestureTemplate(e)})}addGestureTemplate(e){this.gestureTemplates.has(e.name)&&console.warn(`Gesture template with name "${e.name}" already exists. It will be overwritten.`),this.gestureTemplates.set(e.name,e)}setGestureOptions(e,t,n){const r=this.elementGestureMap.get(t);if(!r||!r.has(e))return void console.error(`Gesture "${e}" not found on the provided element.`);const i=new CustomEvent(`${e}ChangeOptions`,{detail:n,bubbles:!1,cancelable:!1,composed:!1});t.dispatchEvent(i)}setGestureState(e,t,n){const r=this.elementGestureMap.get(t);if(!r||!r.has(e))return void console.error(`Gesture "${e}" not found on the provided element.`);const i=new CustomEvent(`${e}ChangeState`,{detail:n,bubbles:!1,cancelable:!1,composed:!1});t.dispatchEvent(i)}registerElement(e,t,n){return Array.isArray(e)||(e=[e]),e.forEach(e=>{const r=n?.[e];this.registerSingleGesture(e,t,r)}),t}registerSingleGesture(e,t,n){const r=this.gestureTemplates.get(e);if(!r)return console.error(`Gesture template "${e}" not found.`),!1;this.elementGestureMap.has(t)||this.elementGestureMap.set(t,new Map);const i=this.elementGestureMap.get(t);i.has(e)&&(console.warn(`Element already has gesture "${e}" registered. It will be replaced.`),this.unregisterElement(e,t));const o=r.clone(n);return o.init(t,this.pointerManager,this.activeGesturesRegistry,this.keyboardManager),i.set(e,o),!0}unregisterElement(e,t){const n=this.elementGestureMap.get(t);return!(!n||!n.has(e))&&(n.get(e).destroy(),n.delete(e),this.activeGesturesRegistry.unregisterElement(t),0===n.size&&this.elementGestureMap.delete(t),!0)}unregisterAllGestures(e){const t=this.elementGestureMap.get(e);if(t){for(const[,n]of t)n.destroy(),this.activeGesturesRegistry.unregisterElement(e);this.elementGestureMap.delete(e)}}destroy(){for(const[e]of this.elementGestureMap)this.unregisterAllGestures(e);this.gestureTemplates.clear(),this.elementGestureMap.clear(),this.activeGesturesRegistry.destroy(),this.keyboardManager.destroy(),this.pointerManager.destroy()}}const De={abort:!0,animationcancel:!0,animationend:!0,animationiteration:!0,animationstart:!0,auxclick:!0,beforeinput:!0,beforetoggle:!0,blur:!0,cancel:!0,canplay:!0,canplaythrough:!0,change:!0,click:!0,close:!0,compositionend:!0,compositionstart:!0,compositionupdate:!0,contextlost:!0,contextmenu:!0,contextrestored:!0,copy:!0,cuechange:!0,cut:!0,dblclick:!0,drag:!0,dragend:!0,dragenter:!0,dragleave:!0,dragover:!0,dragstart:!0,drop:!0,durationchange:!0,emptied:!0,ended:!0,error:!0,focus:!0,focusin:!0,focusout:!0,formdata:!0,gotpointercapture:!0,input:!0,invalid:!0,keydown:!0,keypress:!0,keyup:!0,load:!0,loadeddata:!0,loadedmetadata:!0,loadstart:!0,lostpointercapture:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,paste:!0,pause:!0,play:!0,playing:!0,pointercancel:!0,pointerdown:!0,pointerenter:!0,pointerleave:!0,pointermove:!0,pointerout:!0,pointerover:!0,pointerup:!0,progress:!0,ratechange:!0,reset:!0,resize:!0,scroll:!0,scrollend:!0,securitypolicyviolation:!0,seeked:!0,seeking:!0,select:!0,selectionchange:!0,selectstart:!0,slotchange:!0,stalled:!0,submit:!0,suspend:!0,timeupdate:!0,toggle:!0,touchcancel:!0,touchend:!0,touchmove:!0,touchstart:!0,transitioncancel:!0,transitionend:!0,transitionrun:!0,transitionstart:!0,volumechange:!0,waiting:!0,webkitanimationend:!0,webkitanimationiteration:!0,webkitanimationstart:!0,webkittransitionend:!0,wheel:!0,beforematch:!0,pointerrawupdate:!0};class $e{customData={};constructor(e){if(!e||!e.name)throw new Error("Gesture must be initialized with a valid name.");if(e.name in De)throw new Error(`Gesture can't be created with a native event name. Tried to use "${e.name}". Please use a custom name instead.`);this.name=e.name,this.preventDefault=e.preventDefault??!1,this.stopPropagation=e.stopPropagation??!1,this.preventIf=e.preventIf??[],this.requiredKeys=e.requiredKeys??[],this.pointerMode=e.pointerMode??[],this.pointerOptions=e.pointerOptions??{}}init(e,t,n,r){this.element=e,this.pointerManager=t,this.gesturesRegistry=n,this.keyboardManager=r;const i=`${this.name}ChangeOptions`;this.element.addEventListener(i,this.handleOptionsChange);const o=`${this.name}ChangeState`;this.element.addEventListener(o,this.handleStateChange)}handleOptionsChange=e=>{e&&e.detail&&this.updateOptions(e.detail)};updateOptions(e){this.preventDefault=e.preventDefault??this.preventDefault,this.stopPropagation=e.stopPropagation??this.stopPropagation,this.preventIf=e.preventIf??this.preventIf,this.requiredKeys=e.requiredKeys??this.requiredKeys,this.pointerMode=e.pointerMode??this.pointerMode,this.pointerOptions=e.pointerOptions??this.pointerOptions}getBaseConfig(){return{requiredKeys:this.requiredKeys}}getEffectiveConfig(e,t){if("mouse"!==e&&"touch"!==e&&"pen"!==e)return t;const n=this.pointerOptions[e];return n?l({},t,n):t}handleStateChange=e=>{e&&e.detail&&this.updateState(e.detail)};updateState(e){Object.assign(this.state,e)}getTargetElement(e){return this.isActive||this.element===e.target||"contains"in this.element&&this.element.contains(e.target)||"getRootNode"in this.element&&this.element.getRootNode()instanceof ShadowRoot&&e.composedPath().includes(this.element)?this.element:null}set isActive(e){e?this.gesturesRegistry.registerActiveGesture(this.element,this):this.gesturesRegistry.unregisterActiveGesture(this.element,this)}get isActive(){return this.gesturesRegistry.isGestureActive(this.element,this)??!1}shouldPreventGesture(e,t){const n=this.getEffectiveConfig(t,this.getBaseConfig());if(!this.keyboardManager.areKeysPressed(n.requiredKeys))return!0;if(0===this.preventIf.length)return!1;const r=this.gesturesRegistry.getActiveGestures(e);return this.preventIf.some(e=>r[e])}isPointerTypeAllowed(e){return!this.pointerMode||0===this.pointerMode.length||this.pointerMode.includes(e)}destroy(){const e=`${this.name}ChangeOptions`;this.element.removeEventListener(e,this.handleOptionsChange);const t=`${this.name}ChangeState`;this.element.removeEventListener(t,this.handleStateChange)}}class ze extends $e{unregisterHandler=null;originalTarget=null;constructor(e){super(e),this.minPointers=e.minPointers??1,this.maxPointers=e.maxPointers??1/0}init(e,t,n,r){super.init(e,t,n,r),this.unregisterHandler=this.pointerManager.registerGestureHandler(this.handlePointerEvent)}updateOptions(e){super.updateOptions(e),this.minPointers=e.minPointers??this.minPointers,this.maxPointers=e.maxPointers??this.maxPointers}getBaseConfig(){return{requiredKeys:this.requiredKeys,minPointers:this.minPointers,maxPointers:this.maxPointers}}isWithinPointerCount(e,t){const n=this.getEffectiveConfig(t,this.getBaseConfig());return e.length>=n.minPointers&&e.length<=n.maxPointers}getRelevantPointers(e,t){return e.filter(e=>this.isPointerTypeAllowed(e.pointerType)&&(t===e.target||e.target===this.originalTarget||t===this.originalTarget||"contains"in t&&t.contains(e.target))||"getRootNode"in t&&t.getRootNode()instanceof ShadowRoot&&e.srcEvent.composedPath().includes(t))}destroy(){this.unregisterHandler&&(this.unregisterHandler(),this.unregisterHandler=null),super.destroy()}}function Ne(e){if(0===e.length)return{x:0,y:0};const t=e.reduce((e,t)=>(e.x+=t.clientX,e.y+=t.clientY,e),{x:0,y:0});return{x:t.x/e.length,y:t.y/e.length}}const _e=1e-5;function Fe(e,t){return`${e}${"ongoing"===t?"":t.charAt(0).toUpperCase()+t.slice(1)}`}class He extends ze{state=(()=>({startPointers:new Map,startCentroid:null,lastCentroid:null,movementThresholdReached:!1,totalDeltaX:0,totalDeltaY:0,activeDeltaX:0,activeDeltaY:0,lastDirection:{vertical:null,horizontal:null,mainAxis:null},lastDeltas:null}))();constructor(e){super(e),this.direction=e.direction||["up","down","left","right"],this.threshold=e.threshold||0}clone(e){return new He(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,threshold:this.threshold,minPointers:this.minPointers,maxPointers:this.maxPointers,direction:[...this.direction],requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}destroy(){this.resetState(),super.destroy()}updateOptions(e){super.updateOptions(e),this.direction=e.direction||this.direction,this.threshold=e.threshold??this.threshold}resetState(){this.isActive=!1,this.state=l({},this.state,{startPointers:new Map,startCentroid:null,lastCentroid:null,lastDeltas:null,activeDeltaX:0,activeDeltaY:0,movementThresholdReached:!1,lastDirection:{vertical:null,horizontal:null,mainAxis:null}})}handlePointerEvent=(e,t)=>{const n=Array.from(e.values());if("forceCancel"===t.type)return void this.cancel(t.target,n,t);const r=this.getTargetElement(t);if(!r)return;if(this.shouldPreventGesture(r,t.pointerType))return void this.cancel(r,n,t);const i=this.getRelevantPointers(n,r);if(this.isWithinPointerCount(i,t.pointerType))switch(t.type){case"pointerdown":if(this.isActive||this.state.startCentroid){if(this.state.startCentroid&&this.state.lastCentroid){const e=this.state.lastCentroid,t=Ne(i),n=t.x-e.x,r=t.y-e.y;this.state.startCentroid={x:this.state.startCentroid.x+n,y:this.state.startCentroid.y+r},this.state.lastCentroid=t,i.forEach(e=>{this.state.startPointers.has(e.pointerId)||this.state.startPointers.set(e.pointerId,e)})}}else i.forEach(e=>{this.state.startPointers.set(e.pointerId,e)}),this.originalTarget=r,this.state.startCentroid=Ne(i),this.state.lastCentroid=l({},this.state.startCentroid);break;case"pointermove":if(this.state.startCentroid&&this.isWithinPointerCount(n,t.pointerType)){const e=Ne(i),n=e.x-this.state.startCentroid.x,o=e.y-this.state.startCentroid.y,a=Math.sqrt(n*n+o*o),s=function(e,t){const n=t.x-e.x,r=t.y-e.y,i={vertical:null,horizontal:null,mainAxis:null},o=function(e,t){const n=t.x-e.x,r=t.y-e.y,i=180*Math.atan2(r,n)/Math.PI;return i>=-44.99999&&i<=-22.49999||i>=22.50001&&i<=45.00001||i>=135.00001&&i<=157.50001||i>=-157.49999&&i<=-134.99999}(t,e),a=Math.abs(n)>Math.abs(r)?"horizontal":"vertical",s=o||"horizontal"===a?_e:.15,l=o?_e:"horizontal"===a?.15:_e;return Math.abs(n)>s&&(i.horizontal=n>0?"right":"left"),Math.abs(r)>l&&(i.vertical=r>0?"down":"up"),i.mainAxis=o?"diagonal":a,i}(this.state.lastCentroid??this.state.startCentroid,e),l=this.state.lastCentroid?e.x-this.state.lastCentroid.x:0,c=this.state.lastCentroid?e.y-this.state.lastCentroid.y:0;!this.state.movementThresholdReached&&a>=this.threshold&&function(e,t){if(!e.vertical&&!e.horizontal)return!1;if(0===t.length)return!0;const n=null===e.vertical||t.includes(e.vertical),r=null===e.horizontal||t.includes(e.horizontal);return n&&r}(s,this.direction)?(this.state.movementThresholdReached=!0,this.isActive=!0,this.state.lastDeltas={x:l,y:c},this.state.totalDeltaX+=l,this.state.totalDeltaY+=c,this.state.activeDeltaX+=l,this.state.activeDeltaY+=c,this.emitPanEvent(r,"start",i,t,e),this.emitPanEvent(r,"ongoing",i,t,e)):this.state.movementThresholdReached&&this.isActive&&(this.state.lastDeltas={x:l,y:c},this.state.totalDeltaX+=l,this.state.totalDeltaY+=c,this.state.activeDeltaX+=l,this.state.activeDeltaY+=c,this.emitPanEvent(r,"ongoing",i,t,e)),this.state.lastCentroid=e,this.state.lastDirection=s}break;case"pointerup":case"pointercancel":case"forceCancel":if(this.isActive&&this.state.movementThresholdReached){const e=i.filter(e=>"pointerup"!==e.type&&"pointercancel"!==e.type);if(this.isWithinPointerCount(e,t.pointerType)){if(e.length>=1&&this.state.lastCentroid){const t=Ne(e),n=t.x-this.state.lastCentroid.x,r=t.y-this.state.lastCentroid.y;this.state.startCentroid={x:this.state.startCentroid.x+n,y:this.state.startCentroid.y+r},this.state.lastCentroid=t;const o=i.find(e=>"pointerup"===e.type||"pointercancel"===e.type)?.pointerId;void 0!==o&&this.state.startPointers.delete(o)}}else{const e=this.state.lastCentroid||this.state.startCentroid;"pointercancel"===t.type&&this.emitPanEvent(r,"cancel",i,t,e),this.emitPanEvent(r,"end",i,t,e),this.resetState()}}else this.resetState()}else this.cancel(r,i,t)};emitPanEvent(e,t,n,r,i){if(!this.state.startCentroid)return;const o=this.state.lastDeltas?.x??0,a=this.state.lastDeltas?.y??0,s=this.state.startPointers.values().next().value,l=s?(r.timeStamp-s.timeStamp)/1e3:0,c=l>0?o/l:0,u=l>0?a/l:0,d=Math.sqrt(c*c+u*u),p=this.gesturesRegistry.getActiveGestures(e),h={gestureName:this.name,initialCentroid:this.state.startCentroid,centroid:i,target:r.target,srcEvent:r,phase:t,pointers:n,timeStamp:r.timeStamp,deltaX:o,deltaY:a,direction:this.state.lastDirection,velocityX:c,velocityY:u,velocity:d,totalDeltaX:this.state.totalDeltaX,totalDeltaY:this.state.totalDeltaY,activeDeltaX:this.state.activeDeltaX,activeDeltaY:this.state.activeDeltaY,activeGestures:p,customData:this.customData},m=Fe(this.name,t),f=new CustomEvent(m,{bubbles:!0,cancelable:!0,composed:!0,detail:h});e.dispatchEvent(f),this.preventDefault&&r.preventDefault(),this.stopPropagation&&r.stopPropagation()}cancel(e,t,n){if(this.isActive){const r=e??this.element;this.emitPanEvent(r,"cancel",t,n,this.state.lastCentroid),this.emitPanEvent(r,"end",t,n,this.state.lastCentroid)}this.resetState()}}class Be extends ze{state={lastPosition:null};constructor(e){super(e),this.threshold=e.threshold||0}clone(e){return new Be(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,threshold:this.threshold,minPointers:this.minPointers,maxPointers:this.maxPointers,requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}init(e,t,n,r){super.init(e,t,n,r),this.element.addEventListener("pointerenter",this.handleElementEnter),this.element.addEventListener("pointerleave",this.handleElementLeave)}destroy(){this.element.removeEventListener("pointerenter",this.handleElementEnter),this.element.removeEventListener("pointerleave",this.handleElementLeave),this.resetState(),super.destroy()}updateOptions(e){super.updateOptions(e)}resetState(){this.isActive=!1,this.state={lastPosition:null}}handleElementEnter=e=>{if("mouse"!==e.pointerType&&"pen"!==e.pointerType)return;const t=this.pointerManager.getPointers()||new Map,n=Array.from(t.values());if(this.isWithinPointerCount(n,e.pointerType)){this.isActive=!0;const t={x:e.clientX,y:e.clientY};this.state.lastPosition=t,this.emitMoveEvent(this.element,"start",n,e),this.emitMoveEvent(this.element,"ongoing",n,e)}};handleElementLeave=e=>{if("mouse"!==e.pointerType&&"pen"!==e.pointerType)return;if(!this.isActive)return;const t=this.pointerManager.getPointers()||new Map,n=Array.from(t.values());this.emitMoveEvent(this.element,"end",n,e),this.resetState()};handlePointerEvent=(e,t)=>{if("pointermove"!==t.type||"mouse"!==t.pointerType&&"pen"!==t.pointerType)return;this.preventDefault&&t.preventDefault(),this.stopPropagation&&t.stopPropagation();const n=Array.from(e.values()),r=this.getTargetElement(t);if(!r)return;if(!this.isWithinPointerCount(n,t.pointerType))return;if(this.shouldPreventGesture(r,t.pointerType)){if(!this.isActive)return;return this.resetState(),void this.emitMoveEvent(r,"end",n,t)}const i={x:t.clientX,y:t.clientY};this.state.lastPosition=i,this.isActive||(this.isActive=!0,this.emitMoveEvent(r,"start",n,t)),this.emitMoveEvent(r,"ongoing",n,t)};emitMoveEvent(e,t,n,r){const i=this.state.lastPosition||Ne(n),o=this.gesturesRegistry.getActiveGestures(e),a={gestureName:this.name,centroid:i,target:r.target,srcEvent:r,phase:t,pointers:n,timeStamp:r.timeStamp,activeGestures:o,customData:this.customData},s=Fe(this.name,t),l=new CustomEvent(s,{bubbles:!0,cancelable:!0,composed:!0,detail:a});e.dispatchEvent(l)}}class Ve extends ze{state={startCentroid:null,currentTapCount:0,lastTapTime:0,lastPosition:null};constructor(e){super(e),this.maxDistance=e.maxDistance??10,this.taps=e.taps??1}clone(e){return new Ve(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,minPointers:this.minPointers,maxPointers:this.maxPointers,maxDistance:this.maxDistance,taps:this.taps,requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}destroy(){this.resetState(),super.destroy()}updateOptions(e){super.updateOptions(e),this.maxDistance=e.maxDistance??this.maxDistance,this.taps=e.taps??this.taps}resetState(){this.isActive=!1,this.state={startCentroid:null,currentTapCount:0,lastTapTime:0,lastPosition:null}}handlePointerEvent=(e,t)=>{const n=Array.from(e.values()),r=this.getTargetElement(t);if(!r)return;const i=this.getRelevantPointers(n,r);if(!this.shouldPreventGesture(r,t.pointerType)&&this.isWithinPointerCount(i,t.pointerType))switch(t.type){case"pointerdown":this.isActive||(this.state.startCentroid=Ne(i),this.state.lastPosition=l({},this.state.startCentroid),this.isActive=!0,this.originalTarget=r);break;case"pointermove":if(this.isActive&&this.state.startCentroid){const e=Ne(i);this.state.lastPosition=e;const n=e.x-this.state.startCentroid.x,o=e.y-this.state.startCentroid.y;Math.sqrt(n*n+o*o)>this.maxDistance&&this.cancelTap(r,i,t)}break;case"pointerup":if(this.isActive){this.state.currentTapCount+=1;const e=this.state.lastPosition||this.state.startCentroid;if(!e)return void this.cancelTap(r,i,t);this.state.currentTapCount>=this.taps?(this.fireTapEvent(r,i,t,e),this.resetState()):(this.state.lastTapTime=t.timeStamp,this.isActive=!1,this.state.startCentroid=null,setTimeout(()=>{this.state&&this.state.currentTapCount>0&&this.state.currentTapCount{const n=Array.from(e.values());if("forceCancel"===t.type)return void this.cancelPress(t.target,n,t);const r=this.getTargetElement(t);if(!r)return;if(this.shouldPreventGesture(r,t.pointerType))return void(this.isActive&&this.cancelPress(r,n,t));const i=this.getRelevantPointers(n,r);if(this.isWithinPointerCount(i,t.pointerType))switch(t.type){case"pointerdown":this.isActive||this.state.startCentroid||(this.state.startCentroid=Ne(i),this.state.lastPosition=l({},this.state.startCentroid),this.state.startTime=t.timeStamp,this.isActive=!0,this.originalTarget=r,this.clearPressTimer(),this.state.timerId=setTimeout(()=>{if(this.isActive&&this.state.startCentroid){this.state.pressThresholdReached=!0;const e=this.state.lastPosition;this.emitPressEvent(r,"start",i,t,e),this.emitPressEvent(r,"ongoing",i,t,e)}},this.duration));break;case"pointermove":if(this.isActive&&this.state.startCentroid){const e=Ne(i);this.state.lastPosition=e;const n=e.x-this.state.startCentroid.x,o=e.y-this.state.startCentroid.y;Math.sqrt(n*n+o*o)>this.maxDistance&&this.cancelPress(r,i,t)}break;case"pointerup":if(this.isActive){if(this.state.pressThresholdReached){const e=this.state.lastPosition||this.state.startCentroid;this.emitPressEvent(r,"end",i,t,e)}this.resetState()}break;case"pointercancel":case"forceCancel":this.cancelPress(r,i,t)}else this.isActive&&this.cancelPress(r,i,t)};emitPressEvent(e,t,n,r,i){const o=this.gesturesRegistry.getActiveGestures(e),a=r.timeStamp-this.state.startTime,s={gestureName:this.name,centroid:i,target:r.target,srcEvent:r,phase:t,pointers:n,timeStamp:r.timeStamp,x:i.x,y:i.y,duration:a,activeGestures:o,customData:this.customData},l=Fe(this.name,t),c=new CustomEvent(l,{bubbles:!0,cancelable:!0,composed:!0,detail:s});e.dispatchEvent(c),this.preventDefault&&r.preventDefault(),this.stopPropagation&&r.stopPropagation()}cancelPress(e,t,n){if(this.isActive&&this.state.pressThresholdReached){const r=this.state.lastPosition||this.state.startCentroid;this.emitPressEvent(e??this.element,"cancel",t,n,r),this.emitPressEvent(e??this.element,"end",t,n,r)}this.resetState()}}function Ye(e,t){const n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)}function We(e){if(e.length<2)return 0;let t=0,n=0;for(let r=0;r0?t/n:0}class Ge extends ze{state={startDistance:0,lastDistance:0,lastScale:1,lastTime:0,velocity:0,totalScale:1,deltaScale:0};constructor(e){super(l({},e,{minPointers:e.minPointers??2})),this.threshold=e.threshold??0}clone(e){return new Ge(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,threshold:this.threshold,minPointers:this.minPointers,maxPointers:this.maxPointers,requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}destroy(){this.resetState(),super.destroy()}updateOptions(e){super.updateOptions(e)}resetState(){this.isActive=!1,this.state=l({},this.state,{startDistance:0,lastDistance:0,lastScale:1,lastTime:0,velocity:0,deltaScale:0})}handlePointerEvent=(e,t)=>{const n=Array.from(e.values()),r=this.getTargetElement(t);if(!r)return;if(this.shouldPreventGesture(r,t.pointerType))return void(this.isActive&&(this.emitPinchEvent(r,"cancel",n,t),this.resetState()));const i=this.getRelevantPointers(n,r);switch(t.type){case"pointerdown":if(i.length>=2&&!this.isActive){const e=We(i);this.state.startDistance=e,this.state.lastDistance=e,this.state.lastTime=t.timeStamp,this.originalTarget=r}else if(this.isActive&&i.length>=2){const e=We(i);this.state.startDistance=e/this.state.lastScale,this.state.lastDistance=e,this.state.lastTime=t.timeStamp}break;case"pointermove":if(this.state.startDistance&&this.isWithinPointerCount(i,t.pointerType)){const e=We(i),n=Math.abs(e-this.state.lastDistance);if(0!==n&&n>=this.threshold){const n=this.state.startDistance?e/this.state.startDistance:1,o=n/this.state.lastScale;this.state.totalScale*=o;const a=(t.timeStamp-this.state.lastTime)/1e3;if(this.state.lastDistance){const t=(e-this.state.lastDistance)/a;this.state.velocity=Number.isNaN(t)?0:t}this.state.lastDistance=e,this.state.deltaScale=n-this.state.lastScale,this.state.lastScale=n,this.state.lastTime=t.timeStamp,this.isActive||(this.isActive=!0,this.emitPinchEvent(r,"start",i,t)),this.emitPinchEvent(r,"ongoing",i,t)}}break;case"pointerup":case"pointercancel":case"forceCancel":if(this.isActive){const e=i.filter(e=>"pointerup"!==e.type&&"pointercancel"!==e.type);if(this.isWithinPointerCount(e,t.pointerType)){if(e.length>=2){const n=We(e);this.state.startDistance=n/this.state.lastScale,this.state.lastDistance=n,this.state.lastTime=t.timeStamp}}else"pointercancel"===t.type&&this.emitPinchEvent(r,"cancel",i,t),this.emitPinchEvent(r,"end",i,t),this.resetState()}}};emitPinchEvent(e,t,n,r){const i=Ne(n),o=this.state.lastDistance,a=this.state.lastScale,s=this.gesturesRegistry.getActiveGestures(e),l={gestureName:this.name,centroid:i,target:r.target,srcEvent:r,phase:t,pointers:n,timeStamp:r.timeStamp,scale:a,deltaScale:this.state.deltaScale,totalScale:this.state.totalScale,distance:o,velocity:this.state.velocity,activeGestures:s,direction:(c=this.state.velocity,c>0?1:c<-0?-1:0),customData:this.customData};var c;this.preventDefault&&r.preventDefault(),this.stopPropagation&&r.stopPropagation();const u=Fe(this.name,t),d=new CustomEvent(u,{bubbles:!0,cancelable:!0,composed:!0,detail:l});e.dispatchEvent(d)}}class Ke extends $e{state={totalDeltaX:0,totalDeltaY:0,totalDeltaZ:0};constructor(e){super(e),this.sensitivity=e.sensitivity??1,this.max=e.max??Number.MAX_SAFE_INTEGER,this.min=e.min??Number.MIN_SAFE_INTEGER,this.initialDelta=e.initialDelta??0,this.invert=e.invert??!1,this.state.totalDeltaX=this.initialDelta,this.state.totalDeltaY=this.initialDelta,this.state.totalDeltaZ=this.initialDelta}clone(e){return new Ke(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,sensitivity:this.sensitivity,max:this.max,min:this.min,initialDelta:this.initialDelta,invert:this.invert,requiredKeys:[...this.requiredKeys],preventIf:[...this.preventIf]},e))}init(e,t,n,r){super.init(e,t,n,r),this.element.addEventListener("wheel",this.handleWheelEvent)}destroy(){this.element.removeEventListener("wheel",this.handleWheelEvent),this.resetState(),super.destroy()}resetState(){this.isActive=!1,this.state={totalDeltaX:0,totalDeltaY:0,totalDeltaZ:0}}updateOptions(e){super.updateOptions(e),this.sensitivity=e.sensitivity??this.sensitivity,this.max=e.max??this.max,this.min=e.min??this.min,this.initialDelta=e.initialDelta??this.initialDelta,this.invert=e.invert??this.invert}handleWheelEvent=e=>{if(this.shouldPreventGesture(this.element,"mouse"))return;const t=this.pointerManager.getPointers()||new Map,n=Array.from(t.values());this.state.totalDeltaX+=e.deltaX*this.sensitivity*(this.invert?-1:1),this.state.totalDeltaY+=e.deltaY*this.sensitivity*(this.invert?-1:1),this.state.totalDeltaZ+=e.deltaZ*this.sensitivity*(this.invert?-1:1),["totalDeltaX","totalDeltaY","totalDeltaZ"].forEach(e=>{this.state[e]this.max&&(this.state[e]=this.max)}),this.emitWheelEvent(n,e)};emitWheelEvent(e,t){const n=e.length>0?Ne(e):{x:t.clientX,y:t.clientY},r=this.gesturesRegistry.getActiveGestures(this.element),i={gestureName:this.name,centroid:n,target:t.target,srcEvent:t,phase:"ongoing",pointers:e,timeStamp:t.timeStamp,deltaX:t.deltaX*this.sensitivity*(this.invert?-1:1),deltaY:t.deltaY*this.sensitivity*(this.invert?-1:1),deltaZ:t.deltaZ*this.sensitivity*(this.invert?-1:1),deltaMode:t.deltaMode,totalDeltaX:this.state.totalDeltaX,totalDeltaY:this.state.totalDeltaY,totalDeltaZ:this.state.totalDeltaZ,activeGestures:r,customData:this.customData};this.preventDefault&&t.preventDefault(),this.stopPropagation&&t.stopPropagation();const o=Fe(this.name,"ongoing"),a=new CustomEvent(o,{bubbles:!0,cancelable:!0,composed:!0,detail:i});this.element.dispatchEvent(a)}}const qe=e=>{e.cancelable&&e.preventDefault()};class Xe extends ze{state={phase:"waitingForTap",dragTimeoutId:null};constructor(e){super(e),this.tapMaxDistance=e.tapMaxDistance??10,this.dragTimeout=e.dragTimeout??1e3,this.dragThreshold=e.dragThreshold??0,this.dragDirection=e.dragDirection||["up","down","left","right"],this.tapGesture=new Ve({name:`${this.name}-tap`,maxDistance:this.tapMaxDistance,maxPointers:this.maxPointers,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}),this.panGesture=new He({name:`${this.name}-pan`,minPointers:this.minPointers,maxPointers:this.maxPointers,threshold:this.dragThreshold,direction:this.dragDirection,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)})}clone(e){return new Xe(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,minPointers:this.minPointers,maxPointers:this.maxPointers,tapMaxDistance:this.tapMaxDistance,dragTimeout:this.dragTimeout,dragThreshold:this.dragThreshold,dragDirection:[...this.dragDirection],requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}init(e,t,n,r){super.init(e,t,n,r),this.tapGesture.init(e,t,n,r),this.panGesture.init(e,t,n,r),this.element.addEventListener(this.tapGesture.name,this.tapHandler),this.element.addEventListener(`${this.panGesture.name}Start`,this.dragStartHandler),this.element.addEventListener(this.panGesture.name,this.dragMoveHandler),this.element.addEventListener(`${this.panGesture.name}End`,this.dragEndHandler),this.element.addEventListener(`${this.panGesture.name}Cancel`,this.dragEndHandler)}destroy(){this.resetState(),this.tapGesture.destroy(),this.panGesture.destroy(),this.element.removeEventListener(this.tapGesture.name,this.tapHandler),this.element.removeEventListener(`${this.panGesture.name}Start`,this.dragStartHandler),this.element.removeEventListener(this.panGesture.name,this.dragMoveHandler),this.element.removeEventListener(`${this.panGesture.name}End`,this.dragEndHandler),this.element.removeEventListener(`${this.panGesture.name}Cancel`,this.dragEndHandler),super.destroy()}updateOptions(e){super.updateOptions(e),this.tapMaxDistance=e.tapMaxDistance??this.tapMaxDistance,this.dragTimeout=e.dragTimeout??this.dragTimeout,this.dragThreshold=e.dragThreshold??this.dragThreshold,this.dragDirection=e.dragDirection||this.dragDirection,this.element.dispatchEvent(new CustomEvent(`${this.panGesture.name}ChangeOptions`,{detail:{minPointers:this.minPointers,maxPointers:this.maxPointers,threshold:this.dragThreshold,direction:this.dragDirection,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}})),this.element.dispatchEvent(new CustomEvent(`${this.tapGesture.name}ChangeOptions`,{detail:{maxDistance:this.tapMaxDistance,maxPointers:this.maxPointers,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}}))}resetState(){null!==this.state.dragTimeoutId&&clearTimeout(this.state.dragTimeoutId),this.restoreTouchAction(),this.isActive=!1,this.state={phase:"waitingForTap",dragTimeoutId:null}}handlePointerEvent(){}tapHandler=()=>{"waitingForTap"===this.state.phase&&(this.state.phase="tapDetected",this.setTouchAction(),this.state.dragTimeoutId=setTimeout(()=>{this.resetState()},this.dragTimeout))};dragStartHandler=e=>{"tapDetected"===this.state.phase&&(null!==this.state.dragTimeoutId&&(clearTimeout(this.state.dragTimeoutId),this.state.dragTimeoutId=null),this.restoreTouchAction(),this.state.phase="dragging",this.isActive=!0,this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e)))};dragMoveHandler=e=>{"dragging"===this.state.phase&&this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e))};dragEndHandler=e=>{"dragging"===this.state.phase&&(this.resetState(),this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e)))};setTouchAction(){this.element.addEventListener("touchstart",qe,{passive:!1})}restoreTouchAction(){this.element.removeEventListener("touchstart",qe)}}class Ze extends ze{state={phase:"waitingForPress",dragTimeoutId:null};constructor(e){super(e),this.pressDuration=e.pressDuration??500,this.pressMaxDistance=e.pressMaxDistance??10,this.dragTimeout=e.dragTimeout??1e3,this.dragThreshold=e.dragThreshold??0,this.dragDirection=e.dragDirection||["up","down","left","right"],this.pressGesture=new Ue({name:`${this.name}-press`,duration:this.pressDuration,maxDistance:this.pressMaxDistance,maxPointers:this.maxPointers,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}),this.panGesture=new He({name:`${this.name}-pan`,minPointers:this.minPointers,maxPointers:this.maxPointers,threshold:this.dragThreshold,direction:this.dragDirection,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)})}clone(e){return new Ze(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,minPointers:this.minPointers,maxPointers:this.maxPointers,pressDuration:this.pressDuration,pressMaxDistance:this.pressMaxDistance,dragTimeout:this.dragTimeout,dragThreshold:this.dragThreshold,dragDirection:[...this.dragDirection],requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}init(e,t,n,r){super.init(e,t,n,r),this.pressGesture.init(e,t,n,r),this.panGesture.init(e,t,n,r),this.element.addEventListener(this.pressGesture.name,this.pressHandler),this.element.addEventListener(`${this.panGesture.name}Start`,this.dragStartHandler),this.element.addEventListener(this.panGesture.name,this.dragMoveHandler),this.element.addEventListener(`${this.panGesture.name}End`,this.dragEndHandler),this.element.addEventListener(`${this.panGesture.name}Cancel`,this.dragEndHandler)}destroy(){this.resetState(),this.pressGesture.destroy(),this.panGesture.destroy(),this.element.removeEventListener(this.pressGesture.name,this.pressHandler),this.element.removeEventListener(`${this.panGesture.name}Start`,this.dragStartHandler),this.element.removeEventListener(this.panGesture.name,this.dragMoveHandler),this.element.removeEventListener(`${this.panGesture.name}End`,this.dragEndHandler),this.element.removeEventListener(`${this.panGesture.name}Cancel`,this.dragEndHandler),super.destroy()}updateOptions(e){super.updateOptions(e),this.pressDuration=e.pressDuration??this.pressDuration,this.pressMaxDistance=e.pressMaxDistance??this.pressMaxDistance,this.dragTimeout=e.dragTimeout??this.dragTimeout,this.dragThreshold=e.dragThreshold??this.dragThreshold,this.dragDirection=e.dragDirection||this.dragDirection,this.element.dispatchEvent(new CustomEvent(`${this.panGesture.name}ChangeOptions`,{detail:{minPointers:this.minPointers,maxPointers:this.maxPointers,threshold:this.dragThreshold,direction:this.dragDirection,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}})),this.element.dispatchEvent(new CustomEvent(`${this.pressGesture.name}ChangeOptions`,{detail:{duration:this.pressDuration,maxDistance:this.pressMaxDistance,maxPointers:this.maxPointers,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}}))}resetState(){null!==this.state.dragTimeoutId&&clearTimeout(this.state.dragTimeoutId),this.restoreTouchAction(),this.isActive=!1,this.state={phase:"waitingForPress",dragTimeoutId:null}}handlePointerEvent(){}pressHandler=()=>{"waitingForPress"===this.state.phase&&(this.state.phase="pressDetected",this.setTouchAction(),this.state.dragTimeoutId=setTimeout(()=>{this.resetState()},this.dragTimeout))};dragStartHandler=e=>{"pressDetected"===this.state.phase&&(null!==this.state.dragTimeoutId&&(clearTimeout(this.state.dragTimeoutId),this.state.dragTimeoutId=null),this.restoreTouchAction(),this.state.phase="dragging",this.isActive=!0,this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e)))};dragMoveHandler=e=>{"dragging"===this.state.phase&&this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e))};dragEndHandler=e=>{"dragging"===this.state.phase&&(this.resetState(),this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e)))};setTouchAction(){this.element.addEventListener("touchstart",qe,{passive:!1}),this.element.addEventListener("touchmove",qe,{passive:!1}),this.element.addEventListener("touchend",qe,{passive:!1})}restoreTouchAction(){this.element.removeEventListener("touchstart",qe),this.element.removeEventListener("touchmove",qe),this.element.removeEventListener("touchend",qe)}}const Je=e=>e.preventDefault(),Qe=({svgRef:t})=>{const n=e.useRef(null);e.useEffect(()=>{const e=t.current;n.current||(n.current=new Re({gestures:[new He({name:"pan",threshold:0,maxPointers:1}),new Be({name:"move",preventIf:["pan","zoomPinch","zoomPan"]}),new Ve({name:"tap",preventIf:["pan","zoomPinch","zoomPan"]}),new Ue({name:"quickPress",duration:50}),new He({name:"brush",threshold:0,maxPointers:1}),new He({name:"zoomPan",threshold:0,preventIf:["zoomTapAndDrag","zoomPressAndDrag"]}),new Ge({name:"zoomPinch",threshold:5}),new Ke({name:"zoomTurnWheel",sensitivity:.01,initialDelta:1}),new Ke({name:"panTurnWheel",sensitivity:.5}),new Xe({name:"zoomTapAndDrag",dragThreshold:10}),new Ze({name:"zoomPressAndDrag",dragThreshold:10,preventIf:["zoomPinch"]}),new Ve({name:"zoomDoubleTapReset",taps:2})]}));const r=n.current;if(e&&r)return r.registerElement(["pan","move","zoomPinch","zoomPan","zoomTurnWheel","panTurnWheel","tap","quickPress","zoomTapAndDrag","zoomPressAndDrag","zoomDoubleTapReset","brush"],e),()=>{r.unregisterAllGestures(e)}},[t,n]);const r=e.useCallback((e,n,r)=>{const i=t.current;return i?.addEventListener(e,n,r),{cleanup:()=>i?.removeEventListener(e,n)}},[t]),i=e.useCallback((e,r)=>{const i=t.current,o=n.current;o&&i&&o.setGestureOptions(e,i,r??{})},[t,n]);return e.useEffect(()=>{const e=t.current;return e?.addEventListener("gesturestart",Je),e?.addEventListener("gesturechange",Je),e?.addEventListener("gestureend",Je),()=>{e?.removeEventListener("gesturestart",Je),e?.removeEventListener("gesturechange",Je),e?.removeEventListener("gestureend",Je)}},[t]),{instance:{addInteractionListener:r,updateZoomInteractionListeners:i}}};Qe.params={},Qe.getInitialState=()=>({});const et=[we,xe,be,Te,Qe,U];function tt(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}const nt=["apiRef"],rt=e=>{let{plugins:t}=e,n=tt(e.props,nt);const r={};t.forEach(e=>{Object.assign(r,e.params)});const i={};return Object.keys(n).forEach(e=>{const t=n[e];r[e]&&(i[e]=t)}),t.reduce((e,t)=>t.getDefaultizedParams?t.getDefaultizedParams({params:e}):e,i)};let it=0;const ot=e.createContext(null),at={};function st(t,n){const r=e.useRef(at);return r.current===at&&(r.current=t(n)),r}const lt=[],ct=()=>{};function ut(e){const{store:t,selector:n}=e;let r=n(t.state);const i={effect:ct,dispose:null,subscribe:()=>{i.dispose??=t.subscribe(e=>{const t=n(e);if(!Object.is(r,t)){const e=r;r=t,i.effect(e,t)}})},onMount:()=>(i.subscribe(),()=>{i.dispose?.(),i.dispose=null})};return i.subscribe(),i}const dt=e=>e.series,pt=ae(dt,e=>e.defaultizedSeries),ht=ae(dt,e=>e.seriesConfig),mt=ae(dt,e=>e.dataset),ft=le(pt,ht,mt,function(e,t,n){return((e,t,n)=>{const r={};return Object.keys(t).forEach(i=>{const o=e[i];void 0!==o&&(r[i]=t[i]?.seriesProcessor?.(o,n)??o)}),r})(e,t,n)}),gt=le(ft,ht,he,function(e,t,n){return((e,t,n)=>{let r=!1;const i={};return Object.keys(e).forEach(o=>{const a=t[o]?.seriesLayout,s=e[o];if(void 0!==a&&void 0!==s){const t=a(s,n);t&&t!==e[o]&&(r=!0,i[o]=t)}}),r?i:{}})(e,t,n)}),yt=4,vt=40,bt=20+2*yt,xt=40+2*yt,It="hover",wt={top:5,bottom:5,left:5,right:5},kt={minStart:0,maxEnd:100,step:5,minSpan:10,maxSpan:100,panning:!0,filterMode:"keep",reverse:!1,slider:{enabled:!1,preview:!1,size:bt,showTooltip:It}},St=(e,t,n,r)=>{if(e)return!0===e?l({axisId:t,axisDirection:n},kt,{reverse:r??!1}):l({axisId:t,axisDirection:n},kt,{reverse:r??!1},e,{slider:l({},kt.slider,{size:e.slider?.preview??kt.slider.preview?xt:bt},e.slider)})};function Mt(e,t){const n={top:0,bottom:0,none:0},r=(e&&e.length>0?e:[{id:W,scaleType:"linear"}]).map((e,r)=>{const i=e.dataKey,o=0===r?"bottom":"none",a=e.position??o,s=25+(e.label?20:0),c=e.id??`defaultized-x-axis-${r}`,u=l({offset:n[a]},e,{id:c,position:a,height:e.height??s,zoom:St(e.zoom,c,"x",e.reverse)});if("none"!==a&&(n[a]+=u.height,u.zoom?.slider.enabled&&(n[a]+=u.zoom.slider.size)),void 0===i||void 0!==e.data)return u;if(void 0===t)throw new Error("MUI X Charts: x-axis uses `dataKey` but no `dataset` is provided.");return l({},u,{data:t.map(e=>e[i])})});return r}function Ct(e,t){const n={right:0,left:0,none:0},r=(e&&e.length>0?e:[{id:G,scaleType:"linear"}]).map((e,r)=>{const i=e.dataKey,o=0===r?"left":"none",a=e.position??o,s=45+(e.label?20:0),c=e.id??`defaultized-y-axis-${r}`,u=l({offset:n[a]},e,{id:c,position:a,width:e.width??s,zoom:St(e.zoom,c,"y",e.reverse)});if("none"!==a&&(n[a]+=u.width,u.zoom?.slider.enabled&&(n[a]+=u.zoom.slider.size)),void 0===i||void 0!==e.data)return u;if(void 0===t)throw new Error("MUI X Charts: y-axis uses `dataKey` but no `dataset` is provided.");return l({},u,{data:t.map(e=>e[i])})});return r}function Pt(e,t){return function(n,r){if("tick"===r.location){const t=r.scale.domain();return t[0]===t[1]?r.scale.tickFormat(1)(n):r.scale.tickFormat(e)(n)}return"zoom-slider-tooltip"===r.location?t.tickFormat(2)(n):`${n}`}}function Et(e){return"band"===e.scaleType}function Tt(e){return"point"===e.scaleType}function At(e,t){return null==e||null==t?NaN:et?1:e>=t?0:NaN}function Ot(e,t){return null==e||null==t?NaN:te?1:t>=e?0:NaN}function jt(e){let t,n,r;function i(e,r,i=0,o=e.length){if(i>>1;n(e[t],r)<0?i=t+1:o=t}while(iAt(e(t),n),r=(t,n)=>e(t)-n):(t=e===At||e===Ot?e:Lt,n=e,r=e),{left:i,center:function(e,t,n=0,o=e.length){const a=i(e,t,n,o-1);return a>n&&r(e[a-1],t)>-r(e[a],t)?a-1:a},right:function(e,r,i=0,o=e.length){if(i>>1;n(e[t],r)<=0?i=t+1:o=t}while(i>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?sn(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?sn(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=qt.exec(e))?new cn(t[1],t[2],t[3],1):(t=Xt.exec(e))?new cn(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=Zt.exec(e))?sn(t[1],t[2],t[3],t[4]):(t=Jt.exec(e))?sn(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=Qt.exec(e))?fn(t[1],t[2]/100,t[3]/100,1):(t=en.exec(e))?fn(t[1],t[2]/100,t[3]/100,t[4]):tn.hasOwnProperty(e)?an(tn[e]):"transparent"===e?new cn(NaN,NaN,NaN,0):null}function an(e){return new cn(e>>16&255,e>>8&255,255&e,1)}function sn(e,t,n,r){return r<=0&&(e=t=n=NaN),new cn(e,t,n,r)}function ln(e,t,n,r){return 1===arguments.length?((i=e)instanceof Bt||(i=on(i)),i?new cn((i=i.rgb()).r,i.g,i.b,i.opacity):new cn):new cn(e,t,n,null==r?1:r);var i}function cn(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function un(){return`#${mn(this.r)}${mn(this.g)}${mn(this.b)}`}function dn(){const e=pn(this.opacity);return`${1===e?"rgb(":"rgba("}${hn(this.r)}, ${hn(this.g)}, ${hn(this.b)}${1===e?")":`, ${e})`}`}function pn(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function hn(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function mn(e){return((e=hn(e))<16?"0":"")+e.toString(16)}function fn(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new yn(e,t,n,r)}function gn(e){if(e instanceof yn)return new yn(e.h,e.s,e.l,e.opacity);if(e instanceof Bt||(e=on(e)),!e)return new yn;if(e instanceof yn)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),o=Math.max(t,n,r),a=NaN,s=o-i,l=(o+i)/2;return s?(a=t===o?(n-r)/s+6*(n0&&l<1?0:a,new yn(a,s,l,e.opacity)}function yn(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function vn(e){return(e=(e||0)%360)<0?e+360:e}function bn(e){return Math.max(0,Math.min(1,e||0))}function xn(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}function In(e,t,n,r,i){var o=e*e,a=o*e;return((1-3*e+3*o-a)*t+(4-6*o+3*a)*n+(1+3*e+3*o-3*a)*r+a*i)/6}Ft(Bt,on,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:nn,formatHex:nn,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return gn(this).formatHsl()},formatRgb:rn,toString:rn}),Ft(cn,ln,Ht(Bt,{brighter(e){return e=null==e?Ut:Math.pow(Ut,e),new cn(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?Vt:Math.pow(Vt,e),new cn(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new cn(hn(this.r),hn(this.g),hn(this.b),pn(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:un,formatHex:un,formatHex8:function(){return`#${mn(this.r)}${mn(this.g)}${mn(this.b)}${mn(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:dn,toString:dn})),Ft(yn,function(e,t,n,r){return 1===arguments.length?gn(e):new yn(e,t,n,null==r?1:r)},Ht(Bt,{brighter(e){return e=null==e?Ut:Math.pow(Ut,e),new yn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?Vt:Math.pow(Vt,e),new yn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new cn(xn(e>=240?e-240:e+120,i,r),xn(e,i,r),xn(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new yn(vn(this.h),bn(this.s),bn(this.l),pn(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=pn(this.opacity);return`${1===e?"hsl(":"hsla("}${vn(this.h)}, ${100*bn(this.s)}%, ${100*bn(this.l)}%${1===e?")":`, ${e})`}`}}));const wn=e=>()=>e;function kn(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):wn(isNaN(e)?t:e)}const Sn=function e(t){var n=function(e){return 1===(e=+e)?kn:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):wn(isNaN(t)?n:t)}}(t);function r(e,t){var r=n((e=ln(e)).r,(t=ln(t)).r),i=n(e.g,t.g),o=n(e.b,t.b),a=kn(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=o(t),e.opacity=a(t),e+""}}return r.gamma=e,r}(1);function Mn(e){return function(t){var n,r,i=t.length,o=new Array(i),a=new Array(i),s=new Array(i);for(n=0;n=1?(n=1,t-1):Math.floor(n*t),i=e[r],o=e[r+1],a=r>0?e[r-1]:2*i-o,s=ro&&(i=t.slice(o,i),s[a]?s[a]+=i:s[++a]=i),(n=n[0])===(r=r[0])?s[a]?s[a]+=r:s[++a]=r:(s[++a]=null,l.push({i:a,x:Tn(n,r)})),o=jn.lastIndex;return ot&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}(a[0],a[e-1])),r=e>2?Bn:Hn,i=o=null,d}function d(t){return null==t||isNaN(t=+t)?n:(i||(i=r(a.map(e),s,l)))(e(c(t)))}return d.invert=function(n){return c(t((o||(o=r(s,a.map(e),Tn)))(n)))},d.domain=function(e){return arguments.length?(a=Array.from(e,zn),u()):a.slice()},d.range=function(e){return arguments.length?(s=Array.from(e),u()):s.slice()},d.rangeRound=function(e){return s=Array.from(e),l=$n,u()},d.clamp=function(e){return arguments.length?(c=!!e||_n,u()):c!==_n},d.interpolate=function(e){return arguments.length?(l=e,u()):l},d.unknown=function(e){return arguments.length?(n=e,d):n},function(n,r){return e=n,t=r,u()}}function Yn(){return Un()(_n,_n)}const Wn=Math.sqrt(50),Gn=Math.sqrt(10),Kn=Math.sqrt(2);function qn(e,t,n){const r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=Wn?10:o>=Gn?5:o>=Kn?2:1;let s,l,c;return i<0?(c=Math.pow(10,-i)/a,s=Math.round(e*c),l=Math.round(t*c),s/ct&&--l,c=-c):(c=Math.pow(10,i)*a,s=Math.round(e/c),l=Math.round(t/c),s*ct&&--l),l0))return[];if((e=+e)===(t=+t))return[e];const r=t=i))return[];const s=o-i+1,l=new Array(s);if(r)if(a<0)for(let e=0;e=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function tr(e){if(!(t=er.exec(e)))throw new Error("invalid format: "+e);var t;return new nr({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function nr(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function rr(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var n,r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function ir(e){return(e=rr(Math.abs(e)))?e[1]:NaN}function or(e,t){var n=rr(e,t);if(!n)return e+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}tr.prototype=nr.prototype,nr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const ar={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>or(100*e,t),r:or,s:function(e,t){var n=rr(e,t);if(!n)return e+"";var r=n[0],i=n[1],o=i-(Qn=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+rr(e,Math.max(0,t+o-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function sr(e){return e}var lr,cr,ur,dr=Array.prototype.map,pr=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function hr(e){var t=e.domain;return e.ticks=function(e){var n=t();return Xn(n[0],n[n.length-1],null==e?10:e)},e.tickFormat=function(e,n){var r=t();return function(e,t,n,r){var i,o=Jn(e,t,n);switch((r=tr(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(e),Math.abs(t));return null!=r.precision||isNaN(i=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(ir(t)/3)))-ir(Math.abs(e)))}(o,a))||(r.precision=i),ur(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,ir(t)-ir(e))+1}(o,Math.max(Math.abs(e),Math.abs(t))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(e){return Math.max(0,-ir(Math.abs(e)))}(o))||(r.precision=i-2*("%"===r.type))}return cr(r)}(r[0],r[r.length-1],null==e?10:e,n)},e.nice=function(n){null==n&&(n=10);var r,i,o=t(),a=0,s=o.length-1,l=o[a],c=o[s],u=10;for(c0;){if((i=Zn(l,c,n))===r)return o[a]=l,o[s]=c,t(o);if(i>0)l=Math.floor(l/i)*i,c=Math.ceil(c/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,c=Math.floor(c*i)/i}r=i}return e},e}function mr(){var e=Yn();return e.copy=function(){return Vn(e,mr())},zt.apply(e,arguments),hr(e)}function fr(){var e=hr(function(){var e,t,n,r,i,o=0,a=1,s=_n,l=!1;function c(t){return null==t||isNaN(t=+t)?i:s(0===n?.5:(t=(r(t)-e)*n,l?Math.max(0,Math.min(1,t)):t))}function u(e){return function(t){var n,r;return arguments.length?([n,r]=t,s=e(n,r),c):[s(0),s(1)]}}return c.domain=function(i){return arguments.length?([o,a]=i,e=r(o=+o),t=r(a=+a),n=e===t?0:1/(t-e),c):[o,a]},c.clamp=function(e){return arguments.length?(l=!!e,c):l},c.interpolator=function(e){return arguments.length?(s=e,c):s},c.range=u(Dn),c.rangeRound=u($n),c.unknown=function(e){return arguments.length?(i=e,c):i},function(i){return r=i,e=i(o),t=i(a),n=e===t?0:1/(t-e),c}}()(_n));return e.copy=function(){return t=e,fr().domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown());var t},Nt.apply(e,arguments)}lr=function(e){var t,n,r=void 0===e.grouping||void 0===e.thousands?sr:(t=dr.call(e.grouping,Number),n=e.thousands+"",function(e,r){for(var i=e.length,o=[],a=0,s=t[0],l=0;i>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),o.push(e.substring(i-=s,i+s)),!((l+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(n)}),i=void 0===e.currency?"":e.currency[0]+"",o=void 0===e.currency?"":e.currency[1]+"",a=void 0===e.decimal?".":e.decimal+"",s=void 0===e.numerals?sr:function(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}(dr.call(e.numerals,String)),l=void 0===e.percent?"%":e.percent+"",c=void 0===e.minus?"−":e.minus+"",u=void 0===e.nan?"NaN":e.nan+"";function d(e){var t=(e=tr(e)).fill,n=e.align,d=e.sign,p=e.symbol,h=e.zero,m=e.width,f=e.comma,g=e.precision,y=e.trim,v=e.type;"n"===v?(f=!0,v="g"):ar[v]||(void 0===g&&(g=12),y=!0,v="g"),(h||"0"===t&&"="===n)&&(h=!0,t="0",n="=");var b="$"===p?i:"#"===p&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",x="$"===p?o:/[%p]/.test(v)?l:"",I=ar[v],w=/[defgprs%]/.test(v);function k(e){var i,o,l,p=b,k=x;if("c"===v)k=I(e)+k,e="";else{var S=(e=+e)<0||1/e<0;if(e=isNaN(e)?u:I(Math.abs(e),g),y&&(e=function(e){e:for(var t,n=e.length,r=1,i=-1;r0&&(i=0)}return i>0?e.slice(0,i)+e.slice(t+1):e}(e)),S&&0===+e&&"+"!==d&&(S=!1),p=(S?"("===d?d:c:"-"===d||"("===d?"":d)+p,k=("s"===v?pr[8+Qn/3]:"")+k+(S&&"("===d?")":""),w)for(i=-1,o=e.length;++i(l=e.charCodeAt(i))||l>57){k=(46===l?a+e.slice(i+1):e.slice(i))+k,e=e.slice(0,i);break}}f&&!h&&(e=r(e,1/0));var M=p.length+e.length+k.length,C=M>1)+p+e+k+C.slice(M);break;default:e=C+p+e+k}return s(e)}return g=void 0===g?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),k.toString=function(){return e+""},k}return{format:d,formatPrefix:function(e,t){var n=d(((e=tr(e)).type="f",e)),r=3*Math.max(-8,Math.min(8,Math.floor(ir(t)/3))),i=Math.pow(10,-r),o=pr[8+r/3];return function(e){return n(i*e)+o}}}}({thousands:",",grouping:[3],currency:["$",""]}),cr=lr.format,ur=lr.formatPrefix;class gr extends Map{constructor(e,t=vr){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const[t,n]of e)this.set(t,n)}get(e){return super.get(yr(this,e))}has(e){return super.has(yr(this,e))}set(e,t){return super.set(function({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}(this,e),t)}delete(e){return super.delete(function({_intern:e,_key:t},n){const r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}(this,e))}}function yr({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):n}function vr(e){return null!==e&&"object"==typeof e?e.valueOf():e}Set;const br=Symbol("implicit");function xr(){var e=new gr,t=[],n=[],r=br;function i(i){let o=e.get(i);if(void 0===o){if(r!==br)return r;e.set(i,o=t.push(i)-1)}return n[o%n.length]}return i.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new gr;for(const r of n)e.has(r)||e.set(r,t.push(r)-1);return i},i.range=function(e){return arguments.length?(n=Array.from(e),i):n.slice()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return xr(t,n).unknown(r)},zt.apply(i,arguments),i}function Ir(e){return"piecewise"===e.type?_t(e.thresholds,e.colors):fr([e.min??0,e.max??100],e.color)}function wr(e){return e.values?xr(e.values,e.colors).unknown(e.unknownColor??null):xr(e.colors.map((e,t)=>t),e.colors).unknown(e.unknownColor??null)}function kr(e){return"ordinal"===e.type?wr(e):Ir(e)}function Sr(e,t,n){const{tickMaxStep:r,tickMinStep:i,tickNumber:o}=e,a=void 0===i?999:Math.floor(Math.abs(t[1]-t[0])/i),s=void 0===r?2:Math.ceil(Math.abs(t[1]-t[0])/r),l=o??n;return Math.min(a,Math.max(s,l))}function Mr(e,t){return 0===t[1]-t[0]?1:e/((t[1]-t[0])/100)}function Cr(e){return Math.floor(Math.abs(e)/50)}function Pr(e,t){var n,r=0,i=(e=e.slice()).length-1,o=e[r],a=e[i];return a-e(-t,n)}function Rr(){const e=function(e){const t=e(Er,Tr),n=t.domain;let r,i,o=10;function a(){return r=function(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}(o),i=function(e){return 10===e?jr:e===Math.E?Math.exp:t=>Math.pow(e,t)}(o),n()[0]<0?(r=Lr(r),i=Lr(i),e(Ar,Or)):e(Er,Tr),t}return t.base=function(e){return arguments.length?(o=+e,a()):o},t.domain=function(e){return arguments.length?(n(e),a()):n()},t.ticks=e=>{const t=n();let a=t[0],s=t[t.length-1];const l=s0){for(;d<=p;++d)for(c=1;cs)break;m.push(u)}}else for(;d<=p;++d)for(c=o-1;c>=1;--c)if(u=d>0?c/i(-d):c*i(d),!(us)break;m.push(u)}2*m.length{if(null==e&&(e=10),null==n&&(n=10===o?"s":","),"function"!=typeof n&&(o%1||null!=(n=tr(n)).precision||(n.trim=!0),n=cr(n)),e===1/0)return n;const a=Math.max(1,o*e/t.ticks().length);return e=>{let t=e/i(Math.round(r(e)));return t*on(Pr(n(),{floor:e=>i(Math.floor(r(e))),ceil:e=>i(Math.ceil(r(e)))})),t}(Un()).domain([1,10]);return e.copy=()=>Vn(e,Rr()).base(e.base()),zt.apply(e,arguments),e}function Dr(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function $r(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function zr(e){return e<0?-e*e:e*e}function Nr(){var e=function(e){var t=e(_n,_n),n=1;return t.exponent=function(t){return arguments.length?1===(n=+t)?e(_n,_n):.5===n?e($r,zr):e(Dr(n),Dr(1/n)):n},hr(t)}(Un());return e.copy=function(){return Vn(e,Nr()).exponent(e.exponent())},zt.apply(e,arguments),e}const _r=1e3,Fr=6e4,Hr=36e5,Br=864e5,Vr=6048e5,Ur=31536e6,Yr=new Date,Wr=new Date;function Gr(e,t,n,r){function i(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{const t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),null==n?1:Math.floor(n)),e),i.range=(n,r,o)=>{const a=[];if(n=i.ceil(n),o=null==o?1:Math.floor(o),!(n0))return a;let s;do{a.push(s=new Date(+n)),t(n,o),e(n)}while(sGr(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(Yr.setTime(+t),Wr.setTime(+r),e(Yr),e(Wr),Math.floor(n(Yr,Wr))),i.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i:null)),i}const Kr=Gr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Kr.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?Gr(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):Kr:null),Kr.range;const qr=Gr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*_r)},(e,t)=>(t-e)/_r,e=>e.getUTCSeconds()),Xr=(qr.range,Gr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r)},(e,t)=>{e.setTime(+e+t*Fr)},(e,t)=>(t-e)/Fr,e=>e.getMinutes())),Zr=(Xr.range,Gr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*Fr)},(e,t)=>(t-e)/Fr,e=>e.getUTCMinutes())),Jr=(Zr.range,Gr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r-e.getMinutes()*Fr)},(e,t)=>{e.setTime(+e+t*Hr)},(e,t)=>(t-e)/Hr,e=>e.getHours())),Qr=(Jr.range,Gr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*Hr)},(e,t)=>(t-e)/Hr,e=>e.getUTCHours())),ei=(Qr.range,Gr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Fr)/Br,e=>e.getDate()-1)),ti=(ei.range,Gr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Br,e=>e.getUTCDate()-1)),ni=(ti.range,Gr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Br,e=>Math.floor(e/Br)));function ri(e){return Gr(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+7*t)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Fr)/Vr)}ni.range;const ii=ri(0),oi=ri(1),ai=ri(2),si=ri(3),li=ri(4),ci=ri(5),ui=ri(6);function di(e){return Gr(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)},(e,t)=>(t-e)/Vr)}ii.range,oi.range,ai.range,si.range,li.range,ci.range,ui.range;const pi=di(0),hi=di(1),mi=di(2),fi=di(3),gi=di(4),yi=di(5),vi=di(6),bi=(pi.range,hi.range,mi.range,fi.range,gi.range,yi.range,vi.range,Gr(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear()),e=>e.getMonth())),xi=(bi.range,Gr(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear()),e=>e.getUTCMonth())),Ii=(xi.range,Gr(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear()));Ii.every=e=>isFinite(e=Math.floor(e))&&e>0?Gr(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}):null,Ii.range;const wi=Gr(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());function ki(e,t,n,r,i,o){const a=[[qr,1,_r],[qr,5,5e3],[qr,15,15e3],[qr,30,3e4],[o,1,Fr],[o,5,3e5],[o,15,9e5],[o,30,18e5],[i,1,Hr],[i,3,108e5],[i,6,216e5],[i,12,432e5],[r,1,Br],[r,2,1728e5],[n,1,Vr],[t,1,2592e6],[t,3,7776e6],[e,1,Ur]];function s(t,n,r){const i=Math.abs(n-t)/r,o=jt(([,,e])=>e).right(a,i);if(o===a.length)return e.every(Jn(t/Ur,n/Ur,r));if(0===o)return Kr.every(Math.max(Jn(t,n,r),1));const[s,l]=a[i/a[o-1][2]isFinite(e=Math.floor(e))&&e>0?Gr(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}):null,wi.range;const[Si,Mi]=ki(wi,xi,pi,ni,Qr,Zr),[Ci,Pi]=ki(Ii,bi,ii,ei,Jr,Xr);function Ei(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Ti(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Ai(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}var Oi,ji,Li,Ri={"-":"",_:" ",0:"0"},Di=/^\s*\d+/,$i=/^%/,zi=/[\\^$*+?|[\]().{}]/g;function Ni(e,t,n){var r=e<0?"-":"",i=(r?-e:e)+"",o=i.length;return r+(o[e.toLowerCase(),t]))}function Bi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Vi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Ui(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Yi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Wi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Gi(e,t,n){var r=Di.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Ki(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function qi(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Xi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.q=3*r[0]-3,n+r[0].length):-1}function Zi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Ji(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Qi(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function eo(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function to(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function no(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function ro(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function io(e,t,n){var r=Di.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function oo(e,t,n){var r=$i.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function ao(e,t,n){var r=Di.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function so(e,t,n){var r=Di.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function lo(e,t){return Ni(e.getDate(),t,2)}function co(e,t){return Ni(e.getHours(),t,2)}function uo(e,t){return Ni(e.getHours()%12||12,t,2)}function po(e,t){return Ni(1+ei.count(Ii(e),e),t,3)}function ho(e,t){return Ni(e.getMilliseconds(),t,3)}function mo(e,t){return ho(e,t)+"000"}function fo(e,t){return Ni(e.getMonth()+1,t,2)}function go(e,t){return Ni(e.getMinutes(),t,2)}function yo(e,t){return Ni(e.getSeconds(),t,2)}function vo(e){var t=e.getDay();return 0===t?7:t}function bo(e,t){return Ni(ii.count(Ii(e)-1,e),t,2)}function xo(e){var t=e.getDay();return t>=4||0===t?li(e):li.ceil(e)}function Io(e,t){return e=xo(e),Ni(li.count(Ii(e),e)+(4===Ii(e).getDay()),t,2)}function wo(e){return e.getDay()}function ko(e,t){return Ni(oi.count(Ii(e)-1,e),t,2)}function So(e,t){return Ni(e.getFullYear()%100,t,2)}function Mo(e,t){return Ni((e=xo(e)).getFullYear()%100,t,2)}function Co(e,t){return Ni(e.getFullYear()%1e4,t,4)}function Po(e,t){var n=e.getDay();return Ni((e=n>=4||0===n?li(e):li.ceil(e)).getFullYear()%1e4,t,4)}function Eo(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Ni(t/60|0,"0",2)+Ni(t%60,"0",2)}function To(e,t){return Ni(e.getUTCDate(),t,2)}function Ao(e,t){return Ni(e.getUTCHours(),t,2)}function Oo(e,t){return Ni(e.getUTCHours()%12||12,t,2)}function jo(e,t){return Ni(1+ti.count(wi(e),e),t,3)}function Lo(e,t){return Ni(e.getUTCMilliseconds(),t,3)}function Ro(e,t){return Lo(e,t)+"000"}function Do(e,t){return Ni(e.getUTCMonth()+1,t,2)}function $o(e,t){return Ni(e.getUTCMinutes(),t,2)}function zo(e,t){return Ni(e.getUTCSeconds(),t,2)}function No(e){var t=e.getUTCDay();return 0===t?7:t}function _o(e,t){return Ni(pi.count(wi(e)-1,e),t,2)}function Fo(e){var t=e.getUTCDay();return t>=4||0===t?gi(e):gi.ceil(e)}function Ho(e,t){return e=Fo(e),Ni(gi.count(wi(e),e)+(4===wi(e).getUTCDay()),t,2)}function Bo(e){return e.getUTCDay()}function Vo(e,t){return Ni(hi.count(wi(e)-1,e),t,2)}function Uo(e,t){return Ni(e.getUTCFullYear()%100,t,2)}function Yo(e,t){return Ni((e=Fo(e)).getUTCFullYear()%100,t,2)}function Wo(e,t){return Ni(e.getUTCFullYear()%1e4,t,4)}function Go(e,t){var n=e.getUTCDay();return Ni((e=n>=4||0===n?gi(e):gi.ceil(e)).getUTCFullYear()%1e4,t,4)}function Ko(){return"+0000"}function qo(){return"%"}function Xo(e){return+e}function Zo(e){return Math.floor(+e/1e3)}function Jo(e){return new Date(e)}function Qo(e){return e instanceof Date?+e:+new Date(+e)}function ea(e,t,n,r,i,o,a,s,l,c){var u=Yn(),d=u.invert,p=u.domain,h=c(".%L"),m=c(":%S"),f=c("%I:%M"),g=c("%I %p"),y=c("%a %d"),v=c("%b %d"),b=c("%B"),x=c("%Y");function I(e){return(l(e){const a=n(e),s=t.constant();let l=0,c=0,u=0;a.forEach(e=>{e>-s&&e=s&&(u+=1)});const d=[];if(l>0&&d.push(...r.ticks(l)),c>0){const e=i.ticks(c);d.at(-1)===e[0]?d.push(...e.slice(1)):d.push(...e)}if(u>0){const e=o.ticks(u);d.at(-1)===e[0]?d.push(...e.slice(1)):d.push(...e)}return d},t.tickFormat=(e=10,n)=>{const a=t.constant(),[s,l]=t.domain(),c=l-s,u=r.domain(),d=u[1]-u[0],p=(0===c?0:d/c)*e,h=i.domain(),m=h[1]-h[0],f=(0===c?0:m/c)*e,g=o.domain(),y=g[1]-g[0],v=(0===c?0:y/c)*e,b=r.tickFormat(p,n),x=i.tickFormat(f,n),I=o.tickFormat(v,n);return e=>(e.valueOf()<=-a?b:e.valueOf()>=a?I:x)(e)},t.copy=()=>oa(t.domain(),t.range()).constant(t.constant()),t}function aa(e,t,n){switch(e){case"log":return Rr(t,n);case"pow":return Nr(t,n);case"sqrt":return function(){return Nr.apply(null,arguments).exponent(.5)}(t,n);case"time":return ta(t,n);case"utc":return function(){return zt.apply(ea(Si,Mi,wi,xi,pi,ti,Qr,Zr,qr,Li).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}(t,n);case"symlog":return oa(t,n);default:return mr(t,n)}}Oi=function(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,o=e.days,a=e.shortDays,s=e.months,l=e.shortMonths,c=Fi(i),u=Hi(i),d=Fi(o),p=Hi(o),h=Fi(a),m=Hi(a),f=Fi(s),g=Hi(s),y=Fi(l),v=Hi(l),b={a:function(e){return a[e.getDay()]},A:function(e){return o[e.getDay()]},b:function(e){return l[e.getMonth()]},B:function(e){return s[e.getMonth()]},c:null,d:lo,e:lo,f:mo,g:Mo,G:Po,H:co,I:uo,j:po,L:ho,m:fo,M:go,p:function(e){return i[+(e.getHours()>=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:Xo,s:Zo,S:yo,u:vo,U:bo,V:Io,w:wo,W:ko,x:null,X:null,y:So,Y:Co,Z:Eo,"%":qo},x={a:function(e){return a[e.getUTCDay()]},A:function(e){return o[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return s[e.getUTCMonth()]},c:null,d:To,e:To,f:Ro,g:Yo,G:Go,H:Ao,I:Oo,j:jo,L:Lo,m:Do,M:$o,p:function(e){return i[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:Xo,s:Zo,S:zo,u:No,U:_o,V:Ho,w:Bo,W:Vo,x:null,X:null,y:Uo,Y:Wo,Z:Ko,"%":qo},I={a:function(e,t,n){var r=h.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(e,t,n){var r=y.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(e,t,n){var r=f.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(e,n,r){return S(e,t,n,r)},d:Ji,e:Ji,f:io,g:Ki,G:Gi,H:eo,I:eo,j:Qi,L:ro,m:Zi,M:to,p:function(e,t,n){var r=c.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1},q:Xi,Q:ao,s:so,S:no,u:Vi,U:Ui,V:Yi,w:Bi,W:Wi,x:function(e,t,r){return S(e,n,t,r)},X:function(e,t,n){return S(e,r,t,n)},y:Ki,Y:Gi,Z:qi,"%":oo};function w(e,t){return function(n){var r,i,o,a=[],s=-1,l=0,c=e.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=Ti(Ai(o.y,0,1))).getUTCDay(),r=i>4||0===i?hi.ceil(r):hi(r),r=ti.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=Ei(Ai(o.y,0,1))).getDay(),r=i>4||0===i?oi.ceil(r):oi(r),r=ei.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?Ti(Ai(o.y,0,1)).getUTCDay():Ei(Ai(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,Ti(o)):Ei(o)}}function S(e,t,n,r){for(var i,o,a=0,s=t.length,l=n.length;a=l)return-1;if(37===(i=t.charCodeAt(a++))){if(i=t.charAt(a++),!(o=I[i in Ri?t.charAt(a++):i])||(r=o(e,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(t,b),x.x=w(n,x),x.X=w(r,x),x.c=w(t,x),{format:function(e){var t=w(e+="",b);return t.toString=function(){return e},t},parse:function(e){var t=k(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=w(e+="",x);return t.toString=function(){return e},t},utcParse:function(e){var t=k(e+="",!0);return t.toString=function(){return e},t}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),ji=Oi.format,Oi.parse,Li=Oi.utcFormat,Oi.utcParse;const sa=e=>e?.[0]instanceof Date;function la(e,t,n){const r=ta(e,t);return(e,{location:t})=>"tick"===t?r.tickFormat(n)(e):`${e.toLocaleString()}`}let ca,ua;const da=new class{types=(()=>new Set)();constructor(){if(ca)throw new Error("You can only create one instance!");ca=this.types}addType(e){this.types.add(e)}getTypes(){return this.types}};da.addType("bar"),da.addType("line"),da.addType("scatter");const pa=new class{types=(()=>new Set)();constructor(){if(ua)throw new Error("You can only create one instance!");ua=this.types}addType(e){this.types.add(e)}getTypes(){return this.types}};function ha(e){return da.getTypes().has(e)}function ma(e){return ha(e.type)}function fa(e){return void 0!==e.bandwidth}function ga(e){return fa(e)&&void 0!==e.paddingOuter}function ya({scales:e,drawingArea:t,formattedSeries:n,axis:r,seriesConfig:i,axisDirection:o,zoomMap:a,domains:s}){if(void 0===r)return{axis:{},axisIds:[]};const c=((e,t,n,r)=>{const i=new Set;return Object.keys(t).filter(ha).forEach(o=>{const a=n[o]?.series??{},s=t[o].axisTooltipGetter?.(a);void 0!==s&&s.forEach(({axisId:t,direction:n})=>{n===e&&i.add(t??r)})}),i})(o,i,n,r[0].id),u={};return r.forEach(n=>{const r=n,i=e[r.id],d=a?.get(r.id),p=d?[d.start,d.end]:[0,100],h=function(e,t,n){const r="x"===t?[e.left,e.left+e.width]:[e.top+e.height,e.top];return n?[r[1],r[0]]:r}(t,o,r.reverse??!1),m=s[r.id].tickNumber,f=!r.ignoreTooltip&&c.has(r.id),g=Mr(m,p),y=r.data??[];if(fa(i)){const e="y"===o?[h[1],h[0]]:h;if(ga(i)&&Et(r)){const e=r.categoryGapRatio??.2,t=function(e,t){return e.step()*t<.1}(i,e),n=t?0:e,o=t?0:r.barGapRatio??.1;u[r.id]=l({offset:0,height:0,categoryGapRatio:n,barGapRatio:o,triggerTooltip:f},r,{data:y,scale:t?i.copy().padding(0):i,tickNumber:g,colorScale:r.colorMap&&("ordinal"===r.colorMap.type?wr(l({values:r.data},r.colorMap)):kr(r.colorMap))})}if(Tt(r)&&(u[r.id]=l({offset:0,height:0,triggerTooltip:f},r,{data:y,scale:i,tickNumber:g,colorScale:r.colorMap&&("ordinal"===r.colorMap.type?wr(l({values:r.data},r.colorMap)):kr(r.colorMap))})),sa(r.data)){const t=la(r.data,e,r.tickNumber);u[r.id].valueFormatter=r.valueFormatter??t}return}if("band"===r.scaleType||"point"===r.scaleType)return;const v=r,b=v.scaleType??"linear";u[r.id]=l({offset:0,height:0,triggerTooltip:f},v,{data:y,scaleType:b,scale:i,tickNumber:g,colorScale:v.colorMap&&Ir(v.colorMap),valueFormatter:r.valueFormatter??Pt(g,aa(b,h.map(e=>i.invert(e)),h))})}),{axis:u,axisIds:r.map(({id:e})=>e)}}function va(e){return null!=e}function ba(e,t,n,r){const i=e?.length??0,o=Math.floor(t*i/100),a=Math.ceil(n*i/100);return function(t,n){return null==(t[r]??e?.[n])||n>=o&&n=s&&n<=l}}pa.addType("radar");const Ia=e=>(t=[])=>t.reduce((t,n)=>{const{zoom:r,id:i,reverse:o}=n,a=St(r,i,e,o);return a&&(t[i]=a),t},{}),wa=ae(e=>e.experimentalFeatures,e=>Boolean(e?.preferStrictDomainInLineCharts));function ka(e){return Array.isArray(e)?JSON.stringify(e):"object"==typeof e&&null!==e?e.valueOf():e}function Sa(...e){let t,n,r=new gr(void 0,ka),i=[],o=[],a=0,s=1,l=!1,c=0,u=0,d=.5;const p=e=>{const t=r.get(e);if(void 0!==t)return o[t%o.length]},h=()=>{const e=i.length,r=sg+t*e);return o=r?v.reverse():v,p};p.domain=function(e){if(!arguments.length)return i.slice();i=[],r=new gr(void 0,ka);for(const t of e)r.has(t)||r.set(t,i.push(t)-1);return h()},p.range=function(e){if(!arguments.length)return[a,s];const[t,n]=e;return a=+t,s=+n,h()},p.rangeRound=function(e){const[t,n]=e;return a=+t,s=+n,l=!0,h()},p.bandwidth=function(){return n},p.step=function(){return t},p.round=function(e){return arguments.length?(l=!!e,h()):l},p.padding=function(e){return arguments.length?(c=Math.min(1,u=+e),h()):c},p.paddingInner=function(e){return arguments.length?(c=Math.min(1,e),h()):c},p.paddingOuter=function(e){return arguments.length?(u=+e,h()):u},p.align=function(e){return arguments.length?(d=Math.max(0,Math.min(1,e)),h()):d},p.copy=()=>Sa(i,[a,s]).round(l).paddingInner(c).paddingOuter(u).align(d);const[m,f]=e;return e.length>1?(p.domain(m),p.range(f)):m?p.range(m):h(),p}function Ma(...e){const t=Sa(...e).paddingInner(1),n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=()=>{const e=n();return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=t.copy,e},t}function Ca(e,t,n){const r="x"===t?[e.left,e.left+e.width]:[e.top+e.height,e.top];return n.reverse?[r[1],r[0]]:r}function Pa(e,t){const n=[0,1];if(Et(e)){const r=e.categoryGapRatio??.2;return Sa(t,n).paddingInner(r).paddingOuter(r/2)}if(Tt(e))return Ma(t,n);const r=aa(e.scaleType??"linear",t,n);return"symlog"===e.scaleType&&null!=e.constant&&r.constant(e.constant),r}const Ea=(e,t)=>{const n=e[1]-e[0],r=t[1]-t[0];return[e[0]-t[0]*n/r,e[1]+(100-t[1])*n/r]},Ta=(e,t,n,r,i,o,a)=>{const s="x"===n?r[e].xExtremumGetter:r[e].yExtremumGetter,l=o[e]?.series??{};return s?.({series:l,axis:t,axisIndex:i,isDefaultAxis:0===i,getFilters:a})??[1/0,-1/0]};function Aa(e,t,n,r,i,o){const a=Object.keys(n).filter(ha);let s=[1/0,-1/0];for(const l of a){const[a,c]=Ta(l,e,t,n,r,i,o);s=[Math.min(s[0],a),Math.max(s[1],c)]}return Number.isNaN(s[0])||Number.isNaN(s[1])?[1/0,-1/0]:s}function Oa(e,t,n){return aa(e??"linear",t,[0,1]).nice(n).domain()}function ja(e,t,n,r,[i,o],a,s){const l=Ra(e,t,n,r,s);let c=Da(e,i,o);if("function"==typeof l){const{min:e,max:t}=l(i.valueOf(),o.valueOf());c[0]=e,c[1]=t}const u=Sr(e,c,a);return"nice"===l&&(c=Oa(e.scaleType,c,u)),c=["min"in e?e.min??c[0]:c[0],"max"in e?e.max??c[1]:c[1]],{domain:c,tickNumber:u}}function La(e,t,n,r,[i,o],a,s){const l=Ra(e,t,n,r,s);let c=Da(e,i,o);if("function"==typeof l){const{min:e,max:t}=l(i.valueOf(),o.valueOf());c[0]=e,c[1]=t}return"nice"===l&&(c=Oa(e.scaleType,c,a)),[e.min??c[0],e.max??c[1]]}function Ra(e,t,n,r,i){return i?((e,t,n,r)=>{if(void 0!==e.domainLimit)return e.domainLimit;if("x"===t)for(const t of r.line?.seriesOrder??[]){const i=r.line.series[t];if(i.xAxisId===e.id||void 0===i.xAxisId&&0===n)return"strict"}return"nice"})(e,t,n,r):e.domainLimit??"nice"}function Da(e,t,n){let r=t,i=n;return"max"in e&&null!=e.max&&e.maxt&&(i=e.min),"min"in e||"max"in e?[e.min??r,e.max??i]:[r,i]}class $a{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,t){let n=this.length++;for(;n>0;){const e=n-1>>1,r=this.values[e];if(t>=r)break;this.ids[n]=this.ids[e],this.values[n]=r,n=e}this.ids[n]=e,this.values[n]=t}pop(){if(0===this.length)return;const e=this.ids,t=this.values,n=e[0],r=--this.length;if(r>0){const n=e[r],i=t[r];let o=0;const a=r>>1;for(;o=i)break;e[o]=e[s],t[o]=t[s],o=s}e[o]=n,t[o]=i}return n}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}}const za=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class Na{static from(e,t=0){if(t%8!=0)throw new Error("byteOffset must be 8-byte aligned.");if(!e||void 0===e.byteLength||e.buffer)throw new Error("Data must be an instance of ArrayBuffer or SharedArrayBuffer.");const[n,r]=new Uint8Array(e,t+0,2);if(251!==n)throw new Error("Data does not appear to be in a Flatbush format.");const i=r>>4;if(3!==i)throw new Error(`Got v${i} data when expected v3.`);const o=za[15&r];if(!o)throw new Error("Unrecognized array type.");const[a]=new Uint16Array(e,t+2,1),[s]=new Uint32Array(e,t+4,1);return new Na(s,a,o,void 0,e,t)}constructor(e,t=16,n=Float64Array,r=ArrayBuffer,i,o=0){if(void 0===e)throw new Error("Missing required argument: numItems.");if(isNaN(e)||e<=0)throw new Error(`Unexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+t,2),65535),this.byteOffset=o;let a=e,s=a;this._levelBounds=[4*a];do{a=Math.ceil(a/this.nodeSize),s+=a,this._levelBounds.push(4*s)}while(1!==a);this.ArrayType=n,this.IndexArrayType=s<16384?Uint16Array:Uint32Array;const l=za.indexOf(n),c=4*s*n.BYTES_PER_ELEMENT;if(l<0)throw new Error(`Unexpected typed array class: ${n}.`);if(i)this.data=i,this._boxes=new n(i,o+8,4*s),this._indices=new this.IndexArrayType(i,o+8+c,s),this._pos=4*s,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1];else{const i=this.data=new r(8+c+s*this.IndexArrayType.BYTES_PER_ELEMENT);this._boxes=new n(i,8,4*s),this._indices=new this.IndexArrayType(i,8+c,s),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(i,0,2).set([251,48+l]),new Uint16Array(i,2,1)[0]=t,new Uint32Array(i,4,1)[0]=e}this._queue=new $a}add(e,t,n=e,r=t){const i=this._pos>>2,o=this._boxes;return this._indices[i]=i,o[this._pos++]=e,o[this._pos++]=t,o[this._pos++]=n,o[this._pos++]=r,ethis.maxX&&(this.maxX=n),r>this.maxY&&(this.maxY=r),i}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);const e=this._boxes;if(this.numItems<=this.nodeSize)return e[this._pos++]=this.minX,e[this._pos++]=this.minY,e[this._pos++]=this.maxX,void(e[this._pos++]=this.maxY);const t=this.maxX-this.minX||1,n=this.maxY-this.minY||1,r=new Uint32Array(this.numItems);for(let i=0,o=0;i>2]=t,e[this._pos++]=i,e[this._pos++]=o,e[this._pos++]=a,e[this._pos++]=s}}}search(e,t,n,r,i){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let o=this._boxes.length-4;const a=[],s=[];for(;void 0!==o;){const l=Math.min(o+4*this.nodeSize,Fa(o,this._levelBounds));for(let c=o;cthis._boxes[c+2])continue;if(t>this._boxes[c+3])continue;const l=0|this._indices[c>>2];o>=4*this.numItems?a.push(l):(void 0===i||i(l))&&(s.push(l),s.push(this._boxes[c]),s.push(this._boxes[c+1]))}o=a.pop()}return s}neighbors(e,t,n=1/0,r=1/0,i,o=_a){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let a=this._boxes.length-4;const s=this._queue,l=[];e:for(;void 0!==a;){const c=Math.min(a+4*this.nodeSize,Fa(a,this._levelBounds));for(let n=a;n>2],c=this._boxes[n],u=this._boxes[n+1],d=this._boxes[n+2],p=this._boxes[n+3],h=o(ed?e-d:0,tp?t-p:0);h>r||(a>=4*this.numItems?s.push(l<<1,h):(void 0===i||i(l))&&s.push(1+(l<<1),h))}for(;s.length&&1&s.peek();){if(s.peekValue()>r)break e;if(l.push(s.pop()>>1),l.length===n)break e}a=s.length?s.pop()>>1:void 0}return s.clear(),l}}function _a(e,t){return e*e+t*t}function Fa(e,t){let n=0,r=t.length-1;for(;n>1;t[i]>e?r=i:n=i+1}return t[n]}function Ha(e,t,n,r,i,o){if(Math.floor(r/o)>=Math.floor(i/o))return;const a=e[r],s=e[r+i>>1],l=e[i];let c=l;const u=Math.max(a,s);l>u?c=u:u===a?c=Math.max(s,l):u===s&&(c=Math.max(a,l));let d=r-1,p=i+1;for(;;){do{d++}while(e[d]c);if(d>=p)break;Ba(e,t,n,d,p)}Ha(e,t,n,r,p,o),Ha(e,t,n,p+1,i,o)}function Ba(e,t,n,r,i){const o=e[r];e[r]=e[i],e[i]=o;const a=4*r,s=4*i,l=t[a],c=t[a+1],u=t[a+2],d=t[a+3];t[a]=t[s],t[a+1]=t[s+1],t[a+2]=t[s+2],t[a+3]=t[s+3],t[s]=l,t[s+1]=c,t[s+2]=u,t[s+3]=d;const p=n[r];n[r]=n[i],n[i]=p}function Va(e,t){let n=e^t,r=65535^n,i=65535^(e|t),o=e&(65535^t),a=n|r>>1,s=n>>1^n,l=i>>1^r&o>>1^i,c=n&i>>1^o>>1^o;n=a,r=s,i=l,o=c,a=n&n>>2^r&r>>2,s=n&r>>2^r&(n^r)>>2,l^=n&i>>2^r&o>>2,c^=r&i>>2^(n^r)&o>>2,n=a,r=s,i=l,o=c,a=n&n>>4^r&r>>4,s=n&r>>4^r&(n^r)>>4,l^=n&i>>4^r&o>>4,c^=r&i>>4^(n^r)&o>>4,n=a,r=s,i=l,o=c,l^=n&i>>8^r&o>>8,c^=r&i>>8^(n^r)&o>>8,n=l^l>>1,r=c^c>>1;let u=e^t,d=r|65535^(u|n);return u=16711935&(u|u<<8),u=252645135&(u|u<<4),u=858993459&(u|u<<2),u=1431655765&(u|u<<1),d=16711935&(d|d<<8),d=252645135&(d|d<<4),d=858993459&(d|d<<2),d=1431655765&(d|d<<1),(d<<1|u)>>>0}const Ua=e=>e.zoom,Ya=ae(ce,ue,(e,t)=>e?.some(e=>Boolean(e.zoom))||t?.some(e=>Boolean(e.zoom))||!1),Wa=ae(Ua,e=>e?.isInteracting),Ga=le(Ua,function(e){return e?.zoomData&&(e=>{const t=new Map;return e.forEach(e=>{t.set(e.axisId,e)}),t})(e?.zoomData)}),Ka=ae(Ga,(e,t)=>e?.get(t)),qa=le(ce,ue,function(e,t){return l({},Ia("x")(e),Ia("y")(t))}),Xa=ae(qa,(e,t)=>e[t]),Za=ae(he,function(e){return Cr(e.width)}),Ja=ae(he,function(e){return Cr(e.height)}),Qa=le(ce,ft,ht,wa,Za,function(e,t,n,r,i){const o={};return e?.forEach((e,a)=>{const s=e;if(Et(s)||Tt(s))return o[s.id]={domain:s.data},void(void 0!==s.ordinalTimeTicks&&(o[s.id].tickNumber=Sr(s,[s.data?.find(e=>null!==e),s.data?.findLast(e=>null!==e)],i)));const l=Aa(s,"x",n,a,t);o[s.id]=ja(s,"x",a,t,l,i,r)}),{axes:e,domains:o}}),es=le(ue,ft,ht,wa,Ja,function(e,t,n,r,i){const o={};return e?.forEach((e,a)=>{const s=e;if(Et(s)||Tt(s))return o[s.id]={domain:s.data},void(void 0!==s.ordinalTimeTicks&&(o[s.id].tickNumber=Sr(s,[s.data?.find(e=>null!==e),s.data?.findLast(e=>null!==e)],i)));const l=Aa(s,"y",n,a,t);o[s.id]=ja(s,"y",a,t,l,i,r)}),{axes:e,domains:o}}),ts=le(Ga,qa,Qa,es,function(e,t,{axes:n,domains:r},{axes:i,domains:o}){if(!e||!t)return;let a=!1;const s={},l=[...n??[],...i??[]];for(let i=0;i=100)continue;const d=i<(n?.length??0)?"x":"y";if("band"===c.scaleType||"point"===c.scaleType)s[c.id]=ba(c.data,u.start,u.end,d);else{const{domain:e}="x"===d?r[c.id]:o[c.id];s[c.id]=xa(e,u.start,u.end,d,c.data)}a=!0}return a?(e=>({currentAxisId:t,seriesXAxisId:n,seriesYAxisId:r,isDefaultAxis:i})=>(o,a)=>!(t===n?r:n)||i?Object.values(e??{})[0]?.(o,a)??!0:[r,n].filter(e=>e!==t).map(t=>e[t??""]).filter(va).every(e=>e(o,a)))(s):void 0}),ns=le(ft,ht,Ga,qa,ts,wa,Qa,function(e,t,n,r,i,o,{axes:a,domains:s}){const l={};return a?.forEach((a,c)=>{const u=s[a.id].domain;if(Et(a)||Tt(a))return void(l[a.id]=u);const d=n?.get(a.id),p=r?.[a.id],h=void 0!==d||p?void 0:i;if(!h)return void(l[a.id]=u);const m=s[a.id].tickNumber,f=Aa(a,"x",t,c,e,h);l[a.id]=La(a,"x",c,e,f,m,o)}),l}),rs=le(ft,ht,Ga,qa,ts,wa,es,function(e,t,n,r,i,o,{axes:a,domains:s}){const l={};return a?.forEach((a,c)=>{const u=s[a.id].domain;if(Et(a)||Tt(a))return void(l[a.id]=u);const d=n?.get(a.id),p=r?.[a.id],h=void 0!==d||p?void 0:i;if(!h)return void(l[a.id]=u);const m=s[a.id].tickNumber,f=Aa(a,"y",t,c,e,h);l[a.id]=La(a,"y",c,e,f,m,o)}),l}),is=le(ce,ns,function(e,t){const n={};return e?.forEach(e=>{const r=e,i=t[r.id];n[r.id]=Pa(r,i)}),n}),os=le(ue,rs,function(e,t){const n={};return e?.forEach(e=>{const r=e,i=t[r.id];n[r.id]=Pa(r,i)}),n}),as=le(ce,is,he,Ga,function(e,t,n,r){const i={};return e?.forEach(e=>{const o=e,a=r?.get(o.id),s=a?[a.start,a.end]:[0,100],l=Ca(n,"x",o),c=t[o.id].copy(),u=Ea(l,s);c.range(u),i[o.id]=c}),i}),ss=le(ue,os,he,Ga,function(e,t,n,r){const i={};return e?.forEach(e=>{const o=e,a=r?.get(o.id),s=a?[a.start,a.end]:[0,100],l=Ca(n,"y",o),c=t[o.id].copy(),u=fa(c)?l.reverse():l,d=Ea(u,s);c.range(d),i[o.id]=c}),i}),ls=le(he,ft,ht,Ga,Qa,as,function(e,t,n,r,{axes:i,domains:o},a){return ya({scales:a,drawingArea:e,formattedSeries:t,axis:i,seriesConfig:n,axisDirection:"x",zoomMap:r,domains:o})}),cs=le(he,ft,ht,Ga,es,ss,function(e,t,n,r,{axes:i,domains:o},a){return ya({scales:a,drawingArea:e,formattedSeries:t,axis:i,seriesConfig:n,axisDirection:"y",zoomMap:r,domains:o})}),us=ae(ls,cs,(e,t,n)=>e?.axis[n]??t?.axis[n]),ds=ae(ce,ue,(e,t,n)=>{const r=e?.find(e=>e.id===n)??t?.find(e=>e.id===n)??null;if(r)return r}),ps=ae(ce,e=>e[0].id),hs=ae(ue,e=>e[0].id),ms=new Map,fs=()=>ms,gs=le(ft,is,os,ps,hs,function(e,t,n,r,i){const o=e.scatter,a=new Map;return o?(o.seriesOrder.forEach(e=>{const{data:s,xAxisId:l=r,yAxisId:c=i}=o.series[e],u=new Na(s.length),d=t[l],p=n[c];for(const e of s)u.add(d(e.x),p(e.y));u.finish(),a.set(e,u)}),a):a});function ys(e){return e instanceof Date?e.getTime():e}function vs(e,t){const{scale:n,data:r,reverse:i}=e;if(!fa(n)){const e=n.invert(t);if(void 0===r)return-1;const i=ys(e),o=r?.findIndex((t,n)=>{const o=ys(t);return o>i&&(0===n||Math.abs(i-o)<=Math.abs(i-ys(r[n-1])))||o<=i&&(n===r.length-1||Math.abs(ys(e)-o)=r.length?-1:i?r.length-1-o:o}function bs(e,t,n,r){if(!fa(e)){if(null===r){const t=e.invert(n);return Number.isNaN(t)?null:t}return t[r]}return null===r||r<0||r>=t.length?null:t[r]}function xs(e,t){const n=e.createSVGPoint();return n.x=t.clientX,n.y=t.clientY,n.matrixTransform(e.getScreenCTM().inverse())}const Is=e=>e.interaction,ws=ae(Is,e=>void 0!==e),ks=ae(Is,e=>e?.pointer??null),Ss=ae(ks,e=>e&&e.x),Ms=ae(ks,e=>e&&e.y),Cs=ae(Is,e=>e?.lastUpdate);function Ps(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)){const n=e.length;if(n!==t.length)return!1;for(let r=0;rvs(t.axis[n],e)):vs(t.axis[n],e)}const Ts=(e,t,n)=>{if(null===e)return null;const r=Es(e,t,n);return-1===r?null:r},As=ae(Ss,ls,Ts),Os=ae(Ms,cs,Ts),js=ae(Ss,Ms,ls,cs,(e,t,n,r)=>[...null===e?[]:n.axisIds.map(t=>({axisId:t,dataIndex:Es(e,n,t)})),...null===t?[]:r.axisIds.map(e=>({axisId:e,dataIndex:Es(t,r,e)}))].filter(e=>null!==e.dataIndex&&e.dataIndex>=0));function Ls(e,t,n,r=t.axisIds[0]){return Array.isArray(r)?r.map((r,i)=>{const o=t.axis[r];return bs(o.scale,o.data,e,n[i])}):bs(t.axis[r].scale,t.axis[r].data,e,n)}const Rs=ae(Ss,ls,As,(e,t,n,r)=>null===e||0===t.axisIds.length?null:Ls(e,t,n,r)),Ds=ae(Ms,cs,Os,(e,t,n,r)=>null===e||0===t.axisIds.length?null:Ls(e,t,n,r)),$s=[],zs=se({memoizeOptions:{resultEqualityCheck:Ps}})(Ss,ls,(e,t)=>null===e?$s:t.axisIds.filter(e=>t.axis[e].triggerTooltip).map(n=>({axisId:n,dataIndex:vs(t.axis[n],e)})).filter(({dataIndex:e})=>e>=0)),Ns=se({memoizeOptions:{resultEqualityCheck:Ps}})(Ms,cs,(e,t)=>null===e?$s:t.axisIds.filter(e=>t.axis[e].triggerTooltip).map(n=>({axisId:n,dataIndex:vs(t.axis[n],e)})).filter(({dataIndex:e})=>e>=0)),_s=ae(zs,Ns,(e,t)=>e.length>0||t.length>0);function Fs(e){return void 0!==e.setPointerCoordinate}const Hs=new Set(["bar","rangeBar","line"]),Bs=({params:t,store:n,seriesConfig:r,svgRef:i,instance:o})=>{const{xAxis:a,yAxis:s,dataset:l,onHighlightedAxisChange:c}=t,u=n.use(he),d=n.use(ft),p=n.use(ws),{axis:h,axisIds:m}=n.use(ls),{axis:f,axisIds:g}=n.use(cs);t.highlightedAxis,V(()=>{void 0!==t.highlightedAxis&&n.set("controlledCartesianAxisHighlight",t.highlightedAxis)},[n,t.highlightedAxis]);const y=e.useRef(!0);e.useEffect(()=>{y.current?y.current=!1:n.set("cartesianAxis",{x:Mt(a,l),y:Ct(s,l)})},[r,u,a,s,l,n]);const v=m[0],b=g[0];!function(t,n,r){const i=st(ut,{store:t,selector:n}).current;var o;i.effect=r,o=i.onMount,e.useEffect(o,lt)}(n,js,(e,t)=>{c&&(Object.is(e,t)||(e.length===t.length?e?.some(({axisId:e,dataIndex:n},r)=>t[r].axisId!==e||t[r].dataIndex!==n)&&c(t):c(t)))});const x=Fs(o);return e.useEffect(()=>{const e=i.current;if(!p||!x||!e||t.disableAxisListener)return()=>{};const n=o.addInteractionListener("moveEnd",e=>{e.detail.activeGestures.pan||o.cleanInteraction()}),r=o.addInteractionListener("panEnd",e=>{e.detail.activeGestures.move||o.cleanInteraction()}),a=o.addInteractionListener("quickPressEnd",e=>{e.detail.activeGestures.move||e.detail.activeGestures.pan||o.cleanInteraction()}),s=t=>{const n=t.detail.srcEvent,r=t.detail.target,i=xs(e,n);t.detail.srcEvent.buttons>=1&&r?.hasPointerCapture(t.detail.srcEvent.pointerId)&&!r?.closest("[data-charts-zoom-slider]")&&r?.releasePointerCapture(t.detail.srcEvent.pointerId),o.isPointInside(i.x,i.y,r)?o.setPointerCoordinate(i):o.cleanInteraction?.()},l=o.addInteractionListener("move",s),c=o.addInteractionListener("pan",s),u=o.addInteractionListener("quickPress",s);return()=>{l.cleanup(),n.cleanup(),c.cleanup(),r.cleanup(),u.cleanup(),a.cleanup()}},[i,n,h,v,f,b,o,t.disableAxisListener,p,x]),e.useEffect(()=>{const e=i.current,n=t.onAxisClick;if(null===e||!n)return()=>{};const r=o.addInteractionListener("tap",t=>{let r=null,i=!1;const o=xs(e,t.detail.srcEvent),a=vs(h[v],o.x);i=-1!==a,r=i?a:vs(f[b],o.y);const s=i?m[0]:g[0];if(null==r||-1===r)return;const l=(i?h:f)[s].data[r],c={};Object.keys(d).filter(e=>Hs.has(e)).forEach(e=>{const t=d[e];t?.seriesOrder.forEach(e=>{const n=t.series[e],o=n.xAxisId,a=n.yAxisId,l=i?o:a;void 0!==l&&l!==s||(c[e]=n.data[r])})}),n(t.detail.srcEvent,{dataIndex:r,axisValue:l,seriesValues:c})});return()=>{r.cleanup()}},[t.onAxisClick,d,i,h,m,f,g,v,b,o]),{}};Bs.params={xAxis:!0,yAxis:!0,dataset:!0,onAxisClick:!0,disableAxisListener:!0,onHighlightedAxisChange:!0,highlightedAxis:!0},Bs.getDefaultizedParams=({params:e})=>l({},e,{colors:e.colors??Ce,theme:e.theme??"light",defaultizedXAxis:Mt(e.xAxis,e.dataset),defaultizedYAxis:Ct(e.yAxis,e.dataset)}),Bs.getInitialState=e=>l({cartesianAxis:{x:e.defaultizedXAxis,y:e.defaultizedYAxis}},void 0===e.highlightedAxis?{}:{controlledCartesianAxisHighlight:e.highlightedAxis});const Vs=Object.is;function Us(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;let n=0,r=0;for(const r in e){if(n+=1,!Vs(e[r],t[r]))return!1;if(!(r in t))return!1}for(const e in t)r+=1;return n===r}const Ys=({store:e})=>{const t=ke(function(t){const n=e.state.tooltip.item;t?null!==n&&Us(n,t)&&e.set("tooltip",{item:null}):null!==n&&e.set("tooltip",{item:null})});return{instance:{setTooltipItem:ke(function(t){Us(e.state.tooltip.item,t)||e.set("tooltip",{item:t})}),removeTooltipItem:t}}};Ys.getInitialState=()=>({tooltip:{item:null}}),Ys.params={};const Ws=({store:e})=>({instance:{cleanInteraction:ke(function(){e.update({interaction:l({},e.state.interaction,{pointer:null})})}),setLastUpdateSource:ke(function(t){e.state.interaction.lastUpdate!==t&&e.set("interaction",l({},e.state.interaction,{lastUpdate:t}))}),setPointerCoordinate:ke(function(t){e.set("interaction",l({},e.state.interaction,{pointer:t,lastUpdate:null!==t?"pointer":e.state.interaction.lastUpdate}))})}});function Gs(e,t){return void 0!==e.id?e:l({id:t},e)}function Ks(e){return e.colorMap?l({},e,{colorScale:"ordinal"===e.colorMap.type&&e.data?wr(l({values:e.data},e.colorMap)):kr("continuous"===e.colorMap.type?l({min:e.min,max:e.max},e.colorMap):e.colorMap)}):e}function qs(e,t){if(!e||0===e.length)return{axis:{},axisIds:[]};const n={},r=[];return e.forEach((e,i)=>{const o=e.dataKey,a=e.id??`defaultized-z-axis-${i}`;if(void 0===o||void 0!==e.data)return n[a]=Ks(Gs(e,a)),void r.push(a);if(void 0===t)throw new Error("MUI X Charts: z-axis uses `dataKey` but no `dataset` is provided.");n[a]=Ks(Gs(l({},e,{data:t.map(e=>e[o])}),a)),r.push(a)}),{axis:n,axisIds:r}}Ws.getInitialState=()=>({interaction:{item:null,pointer:null,lastUpdate:"pointer"}}),Ws.params={};const Xs=({params:t,store:n})=>{const{zAxis:r,dataset:i}=t,o=e.useRef(!0);return e.useEffect(()=>{o.current?o.current=!1:n.set("zAxis",qs(r,i))},[r,i,n]),{}};Xs.params={zAxis:!0,dataset:!0},Xs.getInitialState=e=>({zAxis:qs(e.zAxis,e.dataset)});const Zs=({store:e,params:t})=>(t.highlightedItem,V(()=>{e.state.highlight.item!==t.highlightedItem&&e.set("highlight",l({},e.state.highlight,{item:t.highlightedItem}))},[e,t.highlightedItem]),{instance:{clearHighlight:ke(()=>{t.onHighlightChange?.(null);const n=e.state.highlight;null===n.item||n.isControlled||e.set("highlight",{item:null,lastUpdate:"pointer",isControlled:!1})}),setHighlight:ke(n=>{const r=e.state.highlight;Us(r.item,n)||(t.onHighlightChange?.(n),r.isControlled||e.set("highlight",{item:n,lastUpdate:"pointer",isControlled:!1}))})}});function Js(e){let t=1/0,n=-1/0;for(const r of e??[])rn&&(n=r);return[t,n]}Zs.getInitialState=e=>({highlight:{item:e.highlightedItem,lastUpdate:"pointer",isControlled:void 0!==e.highlightedItem}}),Zs.params={highlightedItem:!0,onHighlightChange:!0};const Qs=(e,t)=>"x"===t?{x:e,y:null}:{x:null,y:e},el=e=>{const{axis:t,getFilters:n,isDefaultAxis:r}=e,i=n?.({currentAxisId:t.id,isDefaultAxis:r}),o=i?t.data?.filter((e,t)=>i({x:null,y:null},t)):t.data;return Js(o??[])},tl=e=>t=>{const{series:n,axis:r,getFilters:i,isDefaultAxis:o}=t;return Object.keys(n).filter(t=>{const i="x"===e?n[t].xAxisId:n[t].yAxisId;return i===r.id||o&&void 0===i}).reduce((t,a)=>{const{stackedData:s}=n[a],l=i?.({currentAxisId:r.id,isDefaultAxis:o,seriesXAxisId:n[a].xAxisId,seriesYAxisId:n[a].yAxisId}),[c,u]=s?.reduce((t,n,r)=>!l||l(Qs(n[0],e),r)&&l(Qs(n[1],e),r)?[Math.min(...n,t[0]),Math.max(...n,t[1])]:t,[1/0,-1/0])??[1/0,-1/0];return[Math.min(c,t[0]),Math.max(u,t[1])]},[1/0,-1/0])};function nl(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function rl(e){return function(){return e}}function il(e,t){if((i=e.length)>1)for(var n,r,i,o=1,a=e[t[0]],s=a.length;o=0;)n[t]=t;return n}function al(e,t){return e[t]}function sl(e){const t=[];return t.key=e,t}function ll(){var e=rl([]),t=ol,n=il,r=al;function i(i){var o,a,s=Array.from(e.apply(this,arguments),sl),l=s.length,c=-1;for(const e of i)for(o=0,++c;oo&&(o=t,r=n);return r}function dl(e){var t=e.map(pl);return ol(e).sort(function(e,n){return t[e]-t[n]})}function pl(e){for(var t,n=0,r=-1,i=e.length;++r0){for(var n,r,i,o=0,a=e[0].length;o0?(s[0]=i,i+=l,s[1]=i):l<0?(s[1]=o,o+=l,s[0]=o):s.data[n.key]>0?(s[0]=i,s[1]=i):s.data[n.key]<0?(s[1]=o,s[0]=o):(s[0]=0,s[1]=0)}}},none:il,silhouette:function(e,t){if((n=e.length)>0){for(var n,r=0,i=e[t[0]],o=i.length;r0&&(r=(n=e[t[0]]).length)>0){for(var n,r,i,o=0,a=1;a{const{series:t,seriesOrder:n,defaultStrategy:r}=e,i=[],o={};return n.forEach(e=>{const{stack:n,stackOrder:a,stackOffset:s}=t[e];void 0===n?i.push({ids:[e],stackingOrder:hl.none,stackingOffset:ml.none}):void 0===o[n]?(o[n]=i.length,i.push({ids:[e],stackingOrder:hl[a??r?.stackOrder??"none"],stackingOffset:ml[s??r?.stackOffset??"diverging"]})):(i[o[n]].ids.push(e),void 0!==a&&(i[o[n]].stackingOrder=hl[a]),void 0!==s&&(i[o[n]].stackingOffset=ml[s]))}),i},gl=e=>null==e?"":e.toLocaleString();function yl(e,t){return"function"==typeof e?e(t):e}function vl(e){return e.colorGetter?e.colorGetter:()=>e.color}const bl=(e,t,n)=>{const r="vertical"===e.layout,i=r?t?.colorScale:n?.colorScale,o=r?n?.colorScale:t?.colorScale,a=r?t?.data:n?.data,s=vl(e);return o?t=>{if(void 0===t)return e.color;const n=e.data[t],r=null===n?s({value:n,dataIndex:t}):o(n);return null===r?s({value:n,dataIndex:t}):r}:i&&a?t=>{if(void 0===t)return e.color;const n=a[t],r=null===n?s({value:n,dataIndex:t}):i(n);return null===r?s({value:n,dataIndex:t}):r}:t=>{if(void 0===t)return e.color;const n=e.data[t];return s({value:n,dataIndex:t})}};function xl(e,t){return Object.keys(e).filter(e=>t.has(e)).flatMap(t=>{const n=e[t];return n.seriesOrder.filter(e=>n.series[e].data.length>0&&n.series[e].data.some(e=>null!=e)).map(e=>({type:t,seriesId:e}))})}function Il(e,t,n,r){const i=xl(e,t);if(0===i.length)return null;const o=void 0!==n&&void 0!==r?i.findIndex(e=>e.type===n&&e.seriesId===r):-1;return o<=0?i[i.length-1]:i[(o-1+i.length)%i.length]}function wl(e,t){return Object.keys(e).filter(e=>t.has(e)).flatMap(t=>{const n=e[t];return n.seriesOrder.filter(e=>n.series[e].data.length>0&&n.series[e].data.some(e=>null!=e)).map(e=>n.series[e].data.length)}).reduce((e,t)=>Math.max(e,t),0)}function kl(e,t,n,r){const i=xl(e,t);if(0===i.length)return null;const o=void 0!==n&&void 0!==r?i.findIndex(e=>e.type===n&&e.seriesId===r):-1;return i[(o+1)%i.length]}function Sl(e,t,n){if("sankey"===t)return!1;const r=e[t]?.series[n]?.data;return null!=r&&r.length>0}function Ml(e){return function(t,n){const r=ft(n);let i=t?.seriesId,o=t?.type;if(!o||null==i||!Sl(r,o,i)){const t=kl(r,e,o,i);if(null===t)return null;o=t.type,i=t.seriesId}const a=wl(r,e);return{type:o,seriesId:i,dataIndex:Math.min(a-1,null==t?.dataIndex?0:t.dataIndex+1)}}}function Cl(e){return function(t,n){const r=ft(n);let i=t?.seriesId,o=t?.type;if(!o||null==i||!Sl(r,o,i)){const t=Il(r,e,o,i);if(null===t)return null;o=t.type,i=t.seriesId}const a=wl(r,e);return{type:o,seriesId:i,dataIndex:Math.max(0,null==t?.dataIndex?a-1:t.dataIndex-1)}}}function Pl(e){return function(t,n){const r=ft(n);let i=t?.seriesId,o=t?.type;const a=kl(r,e,o,i);return null===a?null:(o=a.type,i=a.seriesId,{type:o,seriesId:i,dataIndex:null==t?.dataIndex?0:t.dataIndex})}}function El(e){return function(t,n){const r=ft(n);let i=t?.seriesId,o=t?.type;const a=Il(r,e,o,i);if(null===a)return null;o=a.type,i=a.seriesId;const s=r[o].series[i].data;return{type:o,seriesId:i,dataIndex:null==t?.dataIndex?s.length-1:t.dataIndex}}}const Tl=new Set(["bar","line","scatter"]);function Al(e,t,n){if(0===n)return{barWidth:e/t,offset:0};const r=e/(t+(t-1)*n);return{barWidth:r,offset:n*r}}function Ol(e){const{verticalLayout:t,xAxisConfig:n,yAxisConfig:r,series:i,dataIndex:o,numberOfGroups:a,groupIndex:s}=e,l=t?n:r,c=(t?r.reverse:n.reverse)??!1,{barWidth:u,offset:d}=Al(l.scale.bandwidth(),a,l.barGapRatio),p=s*(u+d),h=n.scale,m=r.scale,f=l.data[o],g=i.data[o];if(null==g)return null;const y=i.stackedData[o].map(e=>t?m(e):h(e)),v=Math.round(Math.min(...y)),b=Math.round(Math.max(...y)),x=0===g?0:Math.max(i.minBarSize,b-v),I=function(e,t,n){const r=e&&t>0||!e&&t<0;return n?!r:r}(t,g,c)?b-x:v;return{x:t?h(f)+p:I,y:t?I:m(f)+p,height:t?x:u,width:t?u:x}}const jl=e=>{return`${r=e.type,`Type(${r})`}${n=e.seriesId,`Series(${n})`}${t=e.dataIndex,void 0===t?"":`Index(${t})`}`;var t,n,r},Ll={seriesProcessor:(e,t)=>{const{seriesOrder:n,series:r}=e,i=fl(e),o=t??[];n.forEach(e=>{const n=r[e].data;if(void 0!==n)n.forEach((t,n)=>{o.length<=n?o.push({[e]:t}):o[n][e]=t});else if(void 0===t)throw new Error([`MUI X Charts: bar series with id='${e}' has no data.`,"Either provide a data property to the series or use the dataset prop."].join("\n"))});const a={};return i.forEach(e=>{const{ids:n,stackingOffset:i,stackingOrder:s}=e,c=ll().keys(n.map(e=>{const t=r[e].dataKey;return void 0===r[e].data&&void 0!==t?t:e})).value((e,t)=>e[t]??0).order(s).offset(i)(o);n.forEach((e,n)=>{const i=r[e].dataKey;a[e]=l({layout:"vertical",labelMarkType:"square",minBarSize:0,valueFormatter:r[e].valueFormatter??gl},r[e],{data:i?t.map(e=>{const t=e[i];return"number"==typeof t?t:null}):r[e].data,stackedData:c[n].map(([e,t])=>[e,t])})})}),{seriesOrder:n,stackingGroups:i,series:a}},colorProcessor:bl,legendGetter:e=>{const{seriesOrder:t,series:n}=e;return t.reduce((e,t)=>{const r=yl(n[t].label,"legend");return void 0===r||e.push({type:"bar",markType:n[t].labelMarkType,id:t,seriesId:t,color:n[t].color,label:r}),e},[])},tooltipGetter:e=>{const{series:t,getColor:n,identifier:r}=e;if(!r||void 0===r.dataIndex)return null;const i=yl(t.label,"tooltip"),o=t.data[r.dataIndex];if(null==o)return null;const a=t.valueFormatter(o,{dataIndex:r.dataIndex});return{identifier:r,color:n(r.dataIndex),label:i,value:o,formattedValue:a,markType:t.labelMarkType}},tooltipItemPositionGetter:e=>{const{series:t,identifier:n,axesConfig:r,placement:i}=e;if(!n||void 0===n.dataIndex)return null;const o=t.bar?.series[n.seriesId];if(null==t.bar||null==o)return null;if(void 0===r.x||void 0===r.y)return null;const a=Ol({verticalLayout:"vertical"===o.layout,xAxisConfig:r.x,yAxisConfig:r.y,series:o,dataIndex:n.dataIndex,numberOfGroups:t.bar.stackingGroups.length,groupIndex:t.bar.stackingGroups.findIndex(e=>e.ids.includes(o.id))});if(null==a)return null;const{x:s,y:l,width:c,height:u}=a;switch(i){case"right":return{x:s+c,y:l+u/2};case"bottom":return{x:s+c/2,y:l+u};case"left":return{x:s,y:l+u/2};default:return{x:s+c/2,y:l}}},axisTooltipGetter:e=>Object.values(e).map(e=>"horizontal"===e.layout?{direction:"y",axisId:e.yAxisId}:{direction:"x",axisId:e.xAxisId}),xExtremumGetter:e=>Object.keys(e.series).some(t=>"horizontal"===e.series[t].layout)?tl("x")(e):el(e),yExtremumGetter:e=>Object.keys(e.series).some(t=>"horizontal"===e.series[t].layout)?el(e):tl("y")(e),getSeriesWithDefaultValues:function(e,t,n){return l({},e,{id:e.id??`auto-generated-id-${t}`,color:e.color??n[t%n.length]})},keyboardFocusHandler:e=>{switch(e.key){case"ArrowRight":return Ml(Tl);case"ArrowLeft":return Cl(Tl);case"ArrowDown":return El(Tl);case"ArrowUp":return Pl(Tl);default:return null}},identifierSerializer:jl},Rl=new Set(["bar","line","scatter"]),Dl={seriesProcessor:({series:e,seriesOrder:t},n)=>({series:Object.fromEntries(Object.entries(e).map(([e,t])=>{const r=t?.datasetKeys,i=["x","y"].filter(e=>"string"!=typeof r?.[e]);if(t?.datasetKeys&&i.length>0)throw new Error([`MUI X Charts: scatter series with id='${e}' has incomplete datasetKeys.`,`Properties ${i.map(e=>`"${e}"`).join(", ")} are missing.`].join("\n"));const o=r?n?.map(e=>({x:e[r.x]??null,y:e[r.y]??null,z:r.z&&e[r.z],id:r.id&&e[r.id]}))??[]:t.data??[];return[e,l({labelMarkType:"circle",markerSize:4},t,{preview:l({markerSize:1},t?.preview),data:o,valueFormatter:t.valueFormatter??(e=>e&&`(${e.x}, ${e.y})`)})]})),seriesOrder:t}),colorProcessor:(e,t,n,r)=>{const i=r?.colorScale,o=n?.colorScale,a=t?.colorScale,s=vl(e);return i?t=>{if(void 0===t)return e.color;if(void 0!==r?.data?.[t]){const e=i(r?.data?.[t]);if(null!==e)return e}const n=e.data[t],o=null===n?s({value:n,dataIndex:t}):i(n.z);return null===o?s({value:n,dataIndex:t}):o}:o?t=>{if(void 0===t)return e.color;const n=e.data[t],r=null===n?s({value:n,dataIndex:t}):o(n.y);return null===r?s({value:n,dataIndex:t}):r}:a?t=>{if(void 0===t)return e.color;const n=e.data[t],r=null===n?s({value:n,dataIndex:t}):a(n.x);return null===r?s({value:n,dataIndex:t}):r}:t=>{if(void 0===t)return e.color;const n=e.data[t];return s({value:n,dataIndex:t})}},legendGetter:e=>{const{seriesOrder:t,series:n}=e;return t.reduce((e,t)=>{const r=yl(n[t].label,"legend");return void 0===r||e.push({type:"scatter",markType:n[t].labelMarkType,id:t,seriesId:t,color:n[t].color,label:r}),e},[])},tooltipGetter:e=>{const{series:t,getColor:n,identifier:r}=e;if(!r||void 0===r.dataIndex)return null;const i=yl(t.label,"tooltip"),o=t.data[r.dataIndex],a=t.valueFormatter(o,{dataIndex:r.dataIndex});return{identifier:r,color:n(r.dataIndex),label:i,value:o,formattedValue:a,markType:t.labelMarkType}},tooltipItemPositionGetter:e=>{const{series:t,identifier:n,axesConfig:r}=e;if(!n||void 0===n.dataIndex)return null;const i=t.scatter?.series[n.seriesId];if(null==i)return null;if(void 0===r.x||void 0===r.y)return null;const o=i.data?.[n.dataIndex].x,a=i.data?.[n.dataIndex].y;return null==o||null==a?null:{x:r.x.scale(o),y:r.y.scale(a)}},xExtremumGetter:e=>{const{series:t,axis:n,isDefaultAxis:r,getFilters:i}=e;let o=1/0,a=-1/0;for(const e in t){if(!Object.hasOwn(t,e))continue;const s=t[e].xAxisId;if(!(s===n.id||void 0===s&&r))continue;const l=i?.({currentAxisId:n.id,isDefaultAxis:r,seriesXAxisId:t[e].xAxisId,seriesYAxisId:t[e].yAxisId}),c=t[e].data??[];for(let e=0;ea&&(a=t.x))}}return[o,a]},yExtremumGetter:e=>{const{series:t,axis:n,isDefaultAxis:r,getFilters:i}=e;let o=1/0,a=-1/0;for(const e in t){if(!Object.hasOwn(t,e))continue;const s=t[e].yAxisId;if(!(s===n.id||void 0===s&&r))continue;const l=i?.({currentAxisId:n.id,isDefaultAxis:r,seriesXAxisId:t[e].xAxisId,seriesYAxisId:t[e].yAxisId}),c=t[e].data??[];for(let e=0;ea&&(a=t.y))}}return[o,a]},getSeriesWithDefaultValues:(e,t,n)=>l({},e,{id:e.id??`auto-generated-id-${t}`,color:e.color??n[t%n.length]}),keyboardFocusHandler:e=>{switch(e.key){case"ArrowRight":return Ml(Rl);case"ArrowLeft":return Cl(Rl);case"ArrowDown":return El(Rl);case"ArrowUp":return Pl(Rl);default:return null}},identifierSerializer:jl},$l=(e,t,n)=>{const r=n?.colorScale,i=t?.colorScale,o=vl(e);return r?t=>{if(void 0===t)return e.color;const n=e.data[t],i=null===n?o({value:n,dataIndex:t}):r(n);return null===i?o({value:n,dataIndex:t}):i}:i?n=>{if(void 0===n)return e.color;const r=t.data?.[n],a=null===r?o({value:r,dataIndex:n}):i(r);return null===a?o({value:r,dataIndex:n}):a}:t=>{if(void 0===t)return e.color;const n=e.data[t];return o({value:n,dataIndex:t})}},zl=new Set(["bar","line","scatter"]),Nl={colorProcessor:$l,seriesProcessor:(e,t)=>{const{seriesOrder:n,series:r}=e,i=fl(l({},e,{defaultStrategy:{stackOffset:"none"}})),o=t??[];n.forEach(e=>{const t=r[e].data;void 0!==t&&t.forEach((t,n)=>{o.length<=n?o.push({[e]:t}):o[n][e]=t})});const a={};return i.forEach(e=>{const{ids:n,stackingOrder:i,stackingOffset:s}=e,c=ll().keys(n.map(e=>{const t=r[e].dataKey;return void 0===r[e].data&&void 0!==t?t:e})).value((e,t)=>e[t]??0).order(i).offset(s)(o);n.forEach((e,n)=>{const i=r[e].dataKey;a[e]=l({labelMarkType:"line"},r[e],{data:i?t.map(e=>{const t=e[i];return"number"==typeof t?t:null}):r[e].data,stackedData:c[n].map(([e,t])=>[e,t]),valueFormatter:r[e]?.valueFormatter??(e=>null==e?"":e.toLocaleString())})})}),{seriesOrder:n,stackingGroups:i,series:a}},legendGetter:e=>{const{seriesOrder:t,series:n}=e;return t.reduce((e,t)=>{const r=yl(n[t].label,"legend");return void 0===r||e.push({type:"line",markType:n[t].labelMarkType,id:t,seriesId:t,color:n[t].color,label:r}),e},[])},tooltipGetter:e=>{const{series:t,getColor:n,identifier:r}=e;if(!r||void 0===r.dataIndex)return null;const i=yl(t.label,"tooltip"),o=t.data[r.dataIndex],a=t.valueFormatter(o,{dataIndex:r.dataIndex});return{identifier:r,color:n(r.dataIndex),label:i,value:o,formattedValue:a,markType:t.labelMarkType}},tooltipItemPositionGetter:e=>{const{series:t,identifier:n,axesConfig:r}=e;if(!n||void 0===n.dataIndex)return null;const i=t.line?.series[n.seriesId];if(null==i)return null;if(void 0===r.x||void 0===r.y)return null;const o=r.x.data?.[n.dataIndex],a=i.data[n.dataIndex];return null==o||null==a?null:{x:r.x.scale(o),y:r.y.scale(a)}},axisTooltipGetter:e=>Object.values(e).map(e=>({direction:"x",axisId:e.xAxisId})),xExtremumGetter:e=>{const{axis:t}=e;return Js(t.data??[])},yExtremumGetter:e=>{const{series:t,axis:n,isDefaultAxis:r,getFilters:i}=e;return Object.keys(t).filter(e=>{const i=t[e].yAxisId;return i===n.id||r&&void 0===i}).reduce((e,o)=>{const{area:a,stackedData:s,data:l}=t[o],c=void 0!==a,u=i?.({currentAxisId:n.id,isDefaultAxis:r,seriesXAxisId:t[o].xAxisId,seriesYAxisId:t[o].yAxisId}),d=function(e,t,n,r){return n.reduce((n,i,o)=>{if(null===t[o])return n;const[a,s]=e(i);return!r||r({y:a,x:null},o)&&r({y:s,x:null},o)?[Math.min(a,s,n[0]),Math.max(a,s,n[1])]:n},[1/0,-1/0])}(c&&"log"!==n.scaleType&&"string"!=typeof t[o].baseline?e=>e:e=>[e[1],e[1]],l,s,u),[p,h]=d;return[Math.min(p,e[0]),Math.max(h,e[1])]},[1/0,-1/0])},getSeriesWithDefaultValues:(e,t,n)=>l({},e,{id:e.id??`auto-generated-id-${t}`,color:e.color??n[t%n.length]}),keyboardFocusHandler:e=>{switch(e.key){case"ArrowRight":return Ml(zl);case"ArrowLeft":return Cl(zl);case"ArrowDown":return El(zl);case"ArrowUp":return Pl(zl);default:return null}},identifierSerializer:jl};function _l(e,t){return te?1:t>=e?0:NaN}function Fl(e){return e}const Hl=Math.abs,Bl=Math.atan2,Vl=Math.cos,Ul=Math.max,Yl=Math.min,Wl=Math.sin,Gl=Math.sqrt,Kl=1e-12,ql=Math.PI,Xl=ql/2,Zl=2*ql;function Jl(e){return e>=1?Xl:e<=-1?-Xl:Math.asin(e)}const Ql=(e,t)=>void 0===e?t:Math.PI*e/180;function ec(e,t){if("number"==typeof e)return e;if("100%"===e)return t;if(e.endsWith("%")){const n=Number.parseFloat(e.slice(0,e.length-1));if(!Number.isNaN(n))return n*t/100}if(e.endsWith("px")){const t=Number.parseFloat(e.slice(0,e.length-2));if(!Number.isNaN(t))return t}throw new Error(`MUI X Charts: Received an unknown value "${e}". It should be a number, or a string with a percentage value.`)}function tc(e,t){const{height:n,width:r}=t,{cx:i,cy:o}=e,a=Math.min(r,n)/2;return{cx:ec(i??"50%",r),cy:ec(o??"50%",n),availableRadius:a}}const nc=new Set(["pie"]),rc={bar:Ll,scatter:Dl,line:Nl,pie:{colorProcessor:e=>t=>e.data[t].color,seriesProcessor:e=>{const{seriesOrder:t,series:n}=e,r={};return t.forEach(e=>{const t=function(){var e=Fl,t=_l,n=null,r=rl(0),i=rl(Zl),o=rl(0);function a(a){var s,l,c,u,d,p=(a=nl(a)).length,h=0,m=new Array(p),f=new Array(p),g=+r.apply(this,arguments),y=Math.min(Zl,Math.max(-Zl,i.apply(this,arguments)-g)),v=Math.min(Math.abs(y)/p,o.apply(this,arguments)),b=v*(y<0?-1:1);for(s=0;s0&&(h+=d);for(null!=t?m.sort(function(e,n){return t(f[e],f[n])}):null!=n&&m.sort(function(e,t){return n(a[e],a[t])}),s=0,c=h?(y-p*b)/h:0;s0?d*c:0)+b,f[l]={data:a[l],index:s,value:d,startAngle:g,endAngle:u,padAngle:v};return f}return a.value=function(t){return arguments.length?(e="function"==typeof t?t:rl(+t),a):e},a.sortValues=function(e){return arguments.length?(t=e,n=null,a):t},a.sort=function(e){return arguments.length?(n=e,t=null,a):n},a.startAngle=function(e){return arguments.length?(r="function"==typeof e?e:rl(+e),a):r},a.endAngle=function(e){return arguments.length?(i="function"==typeof e?e:rl(+e),a):i},a.padAngle=function(e){return arguments.length?(o="function"==typeof e?e:rl(+e),a):o},a}().startAngle(Ql(n[e].startAngle??0)).endAngle(Ql(n[e].endAngle??360)).padAngle(Ql(n[e].paddingAngle??0)).sortValues(((e="none")=>{if("function"==typeof e)return e;switch(e){case"none":default:return null;case"desc":return(e,t)=>t-e;case"asc":return(e,t)=>e-t}})(n[e].sortingValues??"none"))(n[e].data.map(e=>e.value));r[e]=l({labelMarkType:"circle",valueFormatter:e=>e.value.toLocaleString()},n[e],{data:n[e].data.map((n,r)=>l({},n,{id:n.id??`auto-generated-pie-id-${e}-${r}`},t[r])).map((t,r)=>l({labelMarkType:"circle"},t,{formattedValue:n[e].valueFormatter?.(l({},t,{label:yl(t.label,"arc")}),{dataIndex:r})??t.value.toLocaleString()}))})}),{seriesOrder:t,series:r}},seriesLayout:(e,t)=>{const n={};for(const r of e.seriesOrder){const{innerRadius:i,outerRadius:o,arcLabelRadius:a,cx:s,cy:l}=e.series[r],{cx:c,cy:u,availableRadius:d}=tc({cx:s,cy:l},{width:t.width,height:t.height}),p=ec(o??d,d),h=ec(i??0,d),m=void 0===a?(h+p)/2:ec(a,d);n[r]={radius:{available:d,inner:h,outer:p,label:m},center:{x:t.left+c,y:t.top+u}}}return n},legendGetter:e=>{const{seriesOrder:t,series:n}=e;return t.reduce((e,t)=>(n[t].data.forEach((r,i)=>{const o=yl(r.label,"legend");if(void 0===o)return;const a=r.id??i;e.push({type:"pie",markType:r.labelMarkType??n[t].labelMarkType,seriesId:t,id:a,itemId:a,dataIndex:i,color:r.color,label:o})}),e),[])},tooltipGetter:e=>{const{series:t,getColor:n,identifier:r}=e;if(!r||void 0===r.dataIndex)return null;const i=t.data[r.dataIndex];if(null==i)return null;const o=yl(i.label,"tooltip"),a=l({},i,{label:o}),s=t.valueFormatter(a,{dataIndex:r.dataIndex});return{identifier:r,color:n(r.dataIndex),label:o,value:a,formattedValue:s,markType:i.labelMarkType??t.labelMarkType}},tooltipItemPositionGetter:e=>{const{series:t,identifier:n,placement:r,seriesLayout:i}=e;if(!n||void 0===n.dataIndex)return null;const o=t.pie?.series[n.seriesId],a=i.pie?.[n.seriesId];if(null==o||null==a)return null;const{center:s,radius:l}=a,{data:c}=o,u=c[n.dataIndex];if(!u)return null;const d=[[l.inner,u.startAngle],[l.inner,u.endAngle],[l.outer,u.startAngle],[l.outer,u.endAngle]].map(([e,t])=>({x:s.x+e*Math.sin(t),y:s.y-e*Math.cos(t)})),[p,h]=Js(d.map(e=>e.x)),[m,f]=Js(d.map(e=>e.y));switch(r){case"bottom":return{x:(h+p)/2,y:f};case"left":return{x:p,y:(f+m)/2};case"right":return{x:h,y:(f+m)/2};default:return{x:(h+p)/2,y:m}}},getSeriesWithDefaultValues:(e,t,n)=>l({},e,{id:e.id??`auto-generated-id-${t}`,data:e.data.map((e,t)=>l({},e,{color:e.color??n[t%n.length]}))}),keyboardFocusHandler:e=>{switch(e.key){case"ArrowRight":return Ml(nc);case"ArrowLeft":return Cl(nc);case"ArrowDown":return El(nc);case"ArrowUp":return Pl(nc);default:return null}},identifierSerializer:jl}},ic=[Xs,Ys,Ws,Bs,Zs];function oc(t){const{children:n,plugins:r=ic,pluginParams:i={},seriesConfig:o=rc}=t,{contextValue:a}=function(t,n,r){const i=z(),o=e.useMemo(()=>[...et,...t],[t]),a=rt({plugins:o,props:n});a.id=a.id??i;const s=e.useRef({}).current,l=function(t){const n=e.useRef({});return t?function(e){return null==e.current&&(e.current={}),e}(t):n}(n.apiRef),c=e.useRef(null),u=e.useRef(null),d=e.useRef(null);if(null==d.current){it+=1;const e={cacheKey:{id:it}};o.forEach(t=>{t.getInitialState&&Object.assign(e,t.getInitialState(a,e,r))}),d.current=new B(e)}return o.forEach(e=>{const t=e({instance:s,params:a,plugins:o,store:d.current,svgRef:u,chartRootRef:c,seriesConfig:r});t.publicAPI&&Object.assign(l.current,t.publicAPI),t.instance&&Object.assign(s,t.instance)}),{contextValue:e.useMemo(()=>({store:d.current,publicAPI:l.current,instance:s,svgRef:u,chartRootRef:c}),[s,l])}}(r,i,o);return(0,O.jsx)(ot.Provider,{value:a,children:n})}const ac=e.createContext(null);function sc(){const t=e.useContext(ac);if(null==t)throw new Error(["MUI X Charts: Could not find the Charts Slots context.","It looks like you rendered your component outside of a ChartDataProvider.","This can also happen if you are bundling multiple versions of the library."].join("\n"));return t}function lc(t){const{slots:n,slotProps:r={},defaultSlots:i,children:o}=t,a=e.useMemo(()=>({slots:l({},i,n),slotProps:r}),[i,n,r]);return(0,O.jsx)(ac.Provider,{value:a,children:o})}function cc(e,t){const n={...t};for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){const i=r;if("components"===i||"slots"===i)n[i]={...e[i],...n[i]};else if("componentsProps"===i||"slotProps"===i){const r=e[i],o=t[i];if(o)if(r){n[i]={...o};for(const e in r)if(Object.prototype.hasOwnProperty.call(r,e)){const t=e;n[i][t]=cc(r[t],o[t])}}else n[i]=o;else n[i]=r||{}}else void 0===n[i]&&(n[i]=e[i])}return n}function uc(e){const{theme:t,name:n,props:r}=e;return t&&t.components&&t.components[n]&&t.components[n].defaultProps?cc(t.components[n].defaultProps,r):r}var dc=a(4405);function pc(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function hc(t){if(e.isValidElement(t)||(0,dc.Hy)(t)||!pc(t))return t;const n={};return Object.keys(t).forEach(e=>{n[e]=hc(t[e])}),n}function mc(t,n,r={clone:!0}){const i=r.clone?{...t}:t;return pc(t)&&pc(n)&&Object.keys(n).forEach(o=>{e.isValidElement(n[o])||(0,dc.Hy)(n[o])?i[o]=n[o]:pc(n[o])&&Object.prototype.hasOwnProperty.call(t,o)&&pc(t[o])?i[o]=mc(t[o],n[o],r):r.clone?i[o]=pc(n[o])?hc(n[o]):n[o]:i[o]=n[o]}),i}function fc(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5,...i}=e,o=(e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})})(t),a=Object.keys(o);function s(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function l(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-r/100}${n})`}function c(e,i){const o=a.indexOf(i);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==o&&"number"==typeof t[a[o]]?t[a[o]]:i)-r/100}${n})`}return{keys:a,values:o,up:s,down:l,between:c,only:function(e){return a.indexOf(e)+1e.startsWith("@container")).sort((e,t)=>{const n=/min-width:\s*([0-9.]+)/;return+(e.match(n)?.[1]||0)-+(t.match(n)?.[1]||0)});return n.length?n.reduce((e,n)=>{const r=t[n];return delete e[n],e[n]=r,e},{...t}):t}const yc={borderRadius:4},vc={xs:0,sm:600,md:900,lg:1200,xl:1536},bc={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${vc[e]}px)`},xc={containerQueries:e=>({up:t=>{let n="number"==typeof t?t:vc[t]||t;return"number"==typeof n&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function Ic(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||bc;return t.reduce((r,i,o)=>(r[e.up(e.keys[o])]=n(t[o]),r),{})}if("object"==typeof t){const e=r.breakpoints||bc;return Object.keys(t).reduce((i,o)=>{if(function(e,t){return"@"===t||t.startsWith("@")&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}(e.keys,o)){const e=function(e,t){const n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,r,i]=n,o=Number.isNaN(+r)?r||0:+r;return e.containerQueries(i).up(o)}(r.containerQueries?r:xc,o);e&&(i[e]=n(t[o],o))}else if(Object.keys(e.values||vc).includes(o))i[e.up(o)]=n(t[o],o);else{const e=o;i[e]=t[e]}return i},{})}return n(t)}function wc(e,t){return e.reduce((e,t)=>{const n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e},t)}function kc(e,...t){const n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append("args[]",e)),`Minified MUI error #${e}; visit ${n} for the full message.`}function Sc(e){if("string"!=typeof e)throw new Error(kc(7));return e.charAt(0).toUpperCase()+e.slice(1)}function Mc(e,t,n=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&n){const n=`vars.${t}`.split(".").reduce((e,t)=>e&&e[t]?e[t]:null,e);if(null!=n)return n}return t.split(".").reduce((e,t)=>e&&null!=e[t]?e[t]:null,e)}function Cc(e,t,n,r=n){let i;return i="function"==typeof e?e(n):Array.isArray(e)?e[n]||r:Mc(e,n)||r,t&&(i=t(i,r,e)),i}const Pc=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:r,transform:i}=e,o=e=>{if(null==e[t])return null;const o=e[t],a=Mc(e.theme,r)||{};return Ic(e,o,e=>{let r=Cc(a,i,e);return e===r&&"string"==typeof e&&(r=Cc(a,i,`${t}${"default"===e?"":Sc(e)}`,e)),!1===n?r:{[n]:r}})};return o.propTypes={},o.filterProps=[t],o},Ec=function(e,t){return t?mc(e,t,{clone:!1}):e},Tc={m:"margin",p:"padding"},Ac={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},Oc={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},jc=function(){const e={};return t=>(void 0===e[t]&&(e[t]=(e=>{if(e.length>2){if(!Oc[e])return[e];e=Oc[e]}const[t,n]=e.split(""),r=Tc[t],i=Ac[n]||"";return Array.isArray(i)?i.map(e=>r+e):[r+i]})(t)),e[t])}(),Lc=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],Rc=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],Dc=[...Lc,...Rc];function $c(e,t,n,r){const i=Mc(e,t,!0)??n;return"number"==typeof i||"string"==typeof i?e=>"string"==typeof e?e:"string"==typeof i?`calc(${e} * ${i})`:i*e:Array.isArray(i)?e=>{if("string"==typeof e)return e;const t=Math.abs(e),n=i[t];return e>=0?n:"number"==typeof n?-n:`-${n}`}:"function"==typeof i?i:()=>{}}function zc(e){return $c(e,"spacing",8)}function Nc(e,t){return"string"==typeof t||null==t?t:e(t)}function _c(e,t){const n=zc(e.theme);return Object.keys(e).map(r=>function(e,t,n,r){if(!t.includes(n))return null;const i=function(e,t){return n=>e.reduce((e,r)=>(e[r]=Nc(t,n),e),{})}(jc(n),r);return Ic(e,e[n],i)}(e,t,r,n)).reduce(Ec,{})}function Fc(e){return _c(e,Lc)}function Hc(e){return _c(e,Rc)}function Bc(e){return _c(e,Dc)}function Vc(e=8,t=zc({spacing:e})){if(e.mui)return e;const n=(...e)=>(0===e.length?[1]:e).map(e=>{const n=t(e);return"number"==typeof n?`${n}px`:n}).join(" ");return n.mui=!0,n}Fc.propTypes={},Fc.filterProps=Lc,Hc.propTypes={},Hc.filterProps=Rc,Bc.propTypes={},Bc.filterProps=Dc;const Uc=function(...e){const t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),n=e=>Object.keys(e).reduce((n,r)=>t[r]?Ec(n,t[r](e)):n,{});return n.propTypes={},n.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),n};function Yc(e){return"number"!=typeof e?e:`${e}px solid`}function Wc(e,t){return Pc({prop:e,themeKey:"borders",transform:t})}const Gc=Wc("border",Yc),Kc=Wc("borderTop",Yc),qc=Wc("borderRight",Yc),Xc=Wc("borderBottom",Yc),Zc=Wc("borderLeft",Yc),Jc=Wc("borderColor"),Qc=Wc("borderTopColor"),eu=Wc("borderRightColor"),tu=Wc("borderBottomColor"),nu=Wc("borderLeftColor"),ru=Wc("outline",Yc),iu=Wc("outlineColor"),ou=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=$c(e.theme,"shape.borderRadius",4),n=e=>({borderRadius:Nc(t,e)});return Ic(e,e.borderRadius,n)}return null};ou.propTypes={},ou.filterProps=["borderRadius"],Uc(Gc,Kc,qc,Xc,Zc,Jc,Qc,eu,tu,nu,ou,ru,iu);const au=e=>{if(void 0!==e.gap&&null!==e.gap){const t=$c(e.theme,"spacing",8),n=e=>({gap:Nc(t,e)});return Ic(e,e.gap,n)}return null};au.propTypes={},au.filterProps=["gap"];const su=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=$c(e.theme,"spacing",8),n=e=>({columnGap:Nc(t,e)});return Ic(e,e.columnGap,n)}return null};su.propTypes={},su.filterProps=["columnGap"];const lu=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=$c(e.theme,"spacing",8),n=e=>({rowGap:Nc(t,e)});return Ic(e,e.rowGap,n)}return null};function cu(e,t){return"grey"===t?t:e}function uu(e){return e<=1&&0!==e?100*e+"%":e}lu.propTypes={},lu.filterProps=["rowGap"],Uc(au,su,lu,Pc({prop:"gridColumn"}),Pc({prop:"gridRow"}),Pc({prop:"gridAutoFlow"}),Pc({prop:"gridAutoColumns"}),Pc({prop:"gridAutoRows"}),Pc({prop:"gridTemplateColumns"}),Pc({prop:"gridTemplateRows"}),Pc({prop:"gridTemplateAreas"}),Pc({prop:"gridArea"})),Uc(Pc({prop:"color",themeKey:"palette",transform:cu}),Pc({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:cu}),Pc({prop:"backgroundColor",themeKey:"palette",transform:cu}));const du=Pc({prop:"width",transform:uu}),pu=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const t=t=>{const n=e.theme?.breakpoints?.values?.[t]||vc[t];return n?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:n}:{maxWidth:uu(t)}};return Ic(e,e.maxWidth,t)}return null};pu.filterProps=["maxWidth"];const hu=Pc({prop:"minWidth",transform:uu}),mu=Pc({prop:"height",transform:uu}),fu=Pc({prop:"maxHeight",transform:uu}),gu=Pc({prop:"minHeight",transform:uu}),yu=(Pc({prop:"size",cssProperty:"width",transform:uu}),Pc({prop:"size",cssProperty:"height",transform:uu}),Uc(du,pu,hu,mu,fu,gu,Pc({prop:"boxSizing"})),{border:{themeKey:"borders",transform:Yc},borderTop:{themeKey:"borders",transform:Yc},borderRight:{themeKey:"borders",transform:Yc},borderBottom:{themeKey:"borders",transform:Yc},borderLeft:{themeKey:"borders",transform:Yc},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:Yc},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:ou},color:{themeKey:"palette",transform:cu},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:cu},backgroundColor:{themeKey:"palette",transform:cu},p:{style:Hc},pt:{style:Hc},pr:{style:Hc},pb:{style:Hc},pl:{style:Hc},px:{style:Hc},py:{style:Hc},padding:{style:Hc},paddingTop:{style:Hc},paddingRight:{style:Hc},paddingBottom:{style:Hc},paddingLeft:{style:Hc},paddingX:{style:Hc},paddingY:{style:Hc},paddingInline:{style:Hc},paddingInlineStart:{style:Hc},paddingInlineEnd:{style:Hc},paddingBlock:{style:Hc},paddingBlockStart:{style:Hc},paddingBlockEnd:{style:Hc},m:{style:Fc},mt:{style:Fc},mr:{style:Fc},mb:{style:Fc},ml:{style:Fc},mx:{style:Fc},my:{style:Fc},margin:{style:Fc},marginTop:{style:Fc},marginRight:{style:Fc},marginBottom:{style:Fc},marginLeft:{style:Fc},marginX:{style:Fc},marginY:{style:Fc},marginInline:{style:Fc},marginInlineStart:{style:Fc},marginInlineEnd:{style:Fc},marginBlock:{style:Fc},marginBlockStart:{style:Fc},marginBlockEnd:{style:Fc},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:au},rowGap:{style:lu},columnGap:{style:su},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:uu},maxWidth:{style:pu},minWidth:{transform:uu},height:{transform:uu},maxHeight:{transform:uu},minHeight:{transform:uu},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}),vu=yu,bu=function(){function e(e,t,n,r){const i={[e]:t,theme:n},o=r[e];if(!o)return{[e]:t};const{cssProperty:a=e,themeKey:s,transform:l,style:c}=o;if(null==t)return null;if("typography"===s&&"inherit"===t)return{[e]:t};const u=Mc(n,s)||{};return c?c(i):Ic(i,t,t=>{let n=Cc(u,l,t);return t===n&&"string"==typeof t&&(n=Cc(u,l,`${e}${"default"===t?"":Sc(t)}`,t)),!1===a?n:{[a]:n}})}return function t(n){const{sx:r,theme:i={},nested:o}=n||{};if(!r)return null;const a=i.unstable_sxConfig??vu;function s(n){let r=n;if("function"==typeof n)r=n(i);else if("object"!=typeof n)return n;if(!r)return null;const s=function(e={}){const t=e.keys?.reduce((t,n)=>(t[e.up(n)]={},t),{});return t||{}}(i.breakpoints),l=Object.keys(s);let c=s;return Object.keys(r).forEach(n=>{const o=function(e,t){return"function"==typeof e?e(t):e}(r[n],i);if(null!=o)if("object"==typeof o)if(a[n])c=Ec(c,e(n,o,i,a));else{const e=Ic({theme:i},o,e=>({[n]:e}));!function(...e){const t=e.reduce((e,t)=>e.concat(Object.keys(t)),[]),n=new Set(t);return e.every(e=>n.size===Object.keys(e).length)}(e,o)?c=Ec(c,e):c[n]=t({sx:o,theme:i,nested:!0})}else c=Ec(c,e(n,o,i,a))}),!o&&i.modularCssLayers?{"@layer sx":gc(i,wc(l,c))}:gc(i,wc(l,c))}return Array.isArray(r)?r.map(s):s(r)}}();bu.filterProps=["sx"];const xu=bu;function Iu(e,t){const n=this;if(n.vars){if(!n.colorSchemes?.[e]||"function"!=typeof n.getColorSchemeSelector)return{};let r=n.getColorSchemeSelector(e);return"&"===r?t:((r.includes("data-")||r.includes("."))&&(r=`*:where(${r.replace(/\s*&$/,"")}) &`),{[r]:t})}return n.palette.mode===e?t:{}}const wu=function(e={},...t){const{breakpoints:n={},palette:r={},spacing:i,shape:o={},...a}=e;let s=mc({breakpoints:fc(n),direction:"ltr",components:{},palette:{mode:"light",...r},spacing:Vc(i),shape:{...yc,...o}},a);return s=function(e){const t=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function n(n,r){n.up=(...n)=>t(e.breakpoints.up(...n),r),n.down=(...n)=>t(e.breakpoints.down(...n),r),n.between=(...n)=>t(e.breakpoints.between(...n),r),n.only=(...n)=>t(e.breakpoints.only(...n),r),n.not=(...n)=>{const i=t(e.breakpoints.not(...n),r);return i.includes("not all and")?i.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):i}}const r={},i=e=>(n(r,e),r);return n(i),{...e,containerQueries:i}}(s),s.applyStyles=Iu,s=t.reduce((e,t)=>mc(e,t),s),s.unstable_sxConfig={...vu,...a?.unstable_sxConfig},s.unstable_sx=function(e){return xu({sx:e,theme:this})},s};var ku=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?Au(Fu,--Nu):0,$u--,10===_u&&($u=1,Du--),_u}function Uu(){return _u=Nu2||Ku(_u)>3?"":" "}function Qu(e,t){for(;--t&&Uu()&&!(_u<48||_u>102||_u>57&&_u<65||_u>70&&_u<97););return Gu(e,Wu()+(t<6&&32==Yu()&&32==Uu()))}function ed(e){for(;Uu();)switch(_u){case e:return Nu;case 34:case 39:34!==e&&39!==e&&ed(_u);break;case 40:41===e&&ed(e);break;case 92:Uu()}return Nu}function td(e,t){for(;Uu()&&e+_u!==57&&(e+_u!==84||47!==Yu()););return"/*"+Gu(t,Nu-1)+"*"+Mu(47===e?e:Uu())}function nd(e){for(;!Ku(Yu());)Uu();return Gu(e,Nu)}var rd="-ms-",id="-moz-",od="-webkit-",ad="comm",sd="rule",ld="decl",cd="@keyframes";function ud(e,t){for(var n="",r=Lu(e),i=0;i0&&ju(k)-d&&Ru(h>32?gd(k+";",r,n,d-1):gd(Eu(k," ","")+";",r,n,d-2),l);break;case 59:k+=";";default:if(Ru(w=md(k,t,n,c,u,i,s,b,x=[],I=[],d),o),123===v)if(0===u)hd(k,t,w,w,x,o,d,s,I);else switch(99===p&&110===Au(k,3)?100:p){case 100:case 108:case 109:case 115:hd(e,w,w,r&&Ru(md(e,w,w,0,0,i,s,b,i,x=[],d),I),i,I,d,s,r?x:I);break;default:hd(k,w,w,w,[""],I,0,s,I)}}c=u=h=0,f=y=1,b=k="",d=a;break;case 58:d=1+ju(k),h=m;default:if(f<1)if(123==v)--f;else if(125==v&&0==f++&&125==Vu())continue;switch(k+=Mu(v),v*f){case 38:y=u>0?1:(k+="\f",-1);break;case 44:s[c++]=(ju(k)-1)*y,y=1;break;case 64:45===Yu()&&(k+=Zu(Uu())),p=Yu(),u=d=ju(b=k+=nd(Wu())),v++;break;case 45:45===m&&2==ju(k)&&(f=0)}}return o}function md(e,t,n,r,i,o,a,s,l,c,u){for(var d=i-1,p=0===i?o:[""],h=Lu(p),m=0,f=0,g=0;m0?p[y]+" "+v:Eu(v,/&\f/g,p[y])))&&(l[g++]=b);return Hu(e,t,n,0===i?sd:s,l,c,u)}function fd(e,t,n){return Hu(e,t,n,ad,Mu(_u),Ou(e,2,-2),0)}function gd(e,t,n,r){return Hu(e,t,n,ld,Ou(e,0,r),Ou(e,r+1,-1),r)}var yd=function(e,t,n){for(var r=0,i=0;r=i,i=Yu(),38===r&&12===i&&(t[n]=1),!Ku(i);)Uu();return Gu(e,Nu)},vd=new WeakMap,bd=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||vd.get(n))&&!r){vd.set(e,!0);for(var i=[],o=function(e,t){return Xu(function(e,t){var n=-1,r=44;do{switch(Ku(r)){case 0:38===r&&12===Yu()&&(t[n]=1),e[n]+=yd(Nu-1,t,n);break;case 2:e[n]+=Zu(r);break;case 4:if(44===r){e[++n]=58===Yu()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=Mu(r)}}while(r=Uu());return e}(qu(e),t))}(t,i),a=n.props,s=0,l=0;s6)switch(Au(e,t+1)){case 109:if(45!==Au(e,t+4))break;case 102:return Eu(e,/(.+:)(.+)-([^]+)/,"$1"+od+"$2-$3$1"+id+(108==Au(e,t+3)?"$3":"$2-$3"))+e;case 115:return~Tu(e,"stretch")?Id(Eu(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==Au(e,t+1))break;case 6444:switch(Au(e,ju(e)-3-(~Tu(e,"!important")&&10))){case 107:return Eu(e,":",":"+od)+e;case 101:return Eu(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+od+(45===Au(e,14)?"inline-":"")+"box$3$1"+od+"$2$3$1"+rd+"$2box$3")+e}break;case 5936:switch(Au(e,t+11)){case 114:return od+e+rd+Eu(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return od+e+rd+Eu(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return od+e+rd+Eu(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return od+e+rd+e+e}return e}var wd=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case ld:e.return=Id(e.value,e.length);break;case cd:return ud([Bu(e,{value:Eu(e.value,"@","@"+od)})],r);case sd:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,function(t){switch(function(e){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return ud([Bu(e,{props:[Eu(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return ud([Bu(e,{props:[Eu(t,/:(plac\w+)/,":"+od+"input-$1")]}),Bu(e,{props:[Eu(t,/:(plac\w+)/,":-moz-$1")]}),Bu(e,{props:[Eu(t,/:(plac\w+)/,rd+"input-$1")]})],r)}return""})}}],kd=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var r,i,o=e.stylisPlugins||wd,a={},s=[];r=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=4;++r,i-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(i){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(i)+l;return{name:c,styles:i,next:$d}}var _d=!!e.useInsertionEffect&&e.useInsertionEffect,Fd=_d||function(e){return e()},Hd=_d||e.useLayoutEffect,Bd=e.createContext("undefined"!=typeof HTMLElement?kd({key:"css"}):null),Vd=(Bd.Provider,function(t){return(0,e.forwardRef)(function(n,r){var i=(0,e.useContext)(Bd);return t(n,i,r)})}),Ud=e.createContext({}),Yd={}.hasOwnProperty,Wd="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",Gd=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return Md(t,n,r),Fd(function(){return Cd(t,n,r)}),null},Kd=Vd(function(t,n,r){var i=t.css;"string"==typeof i&&void 0!==n.registered[i]&&(i=n.registered[i]);var o=t[Wd],a=[i],s="";"string"==typeof t.className?s=Sd(n.registered,a,t.className):null!=t.className&&(s=t.className+" ");var l=Nd(a,void 0,e.useContext(Ud));s+=n.key+"-"+l.name;var c={};for(var u in t)Yd.call(t,u)&&"css"!==u&&u!==Wd&&(c[u]=t[u]);return c.className=s,r&&(c.ref=r),e.createElement(e.Fragment,null,e.createElement(Gd,{cache:n,serialized:l,isStringTag:"string"==typeof o}),e.createElement(o,c))});const qd=function(t=null){const n=e.useContext(Ud);return n&&(r=n,0!==Object.keys(r).length)?n:t;var r},Xd=wu(),Zd=function(e=Xd){return qd(e)},Jd=function(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))};function Qd(e,t=0,n=1){return Jd(e,t,n)}function ep(e){if(e.type)return e;if("#"===e.charAt(0))return ep(function(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?`rgb${4===n.length?"a":""}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}(e));const t=e.indexOf("("),n=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error(kc(9,e));let r,i=e.substring(t+1,e.length-1);if("color"===n){if(i=i.split(" "),r=i.shift(),4===i.length&&"/"===i[3].charAt(0)&&(i[3]=i[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(r))throw new Error(kc(10,r))}else i=i.split(",");return i=i.map(e=>parseFloat(e)),{type:n,values:i,colorSpace:r}}const tp=(e,t)=>{try{return(e=>{const t=ep(e);return t.values.slice(0,3).map((e,n)=>t.type.includes("hsl")&&0!==n?`${e}%`:e).join(" ")})(e)}catch(t){return e}};function np(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return t.includes("rgb")?r=r.map((e,t)=>t<3?parseInt(e,10):e):t.includes("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=t.includes("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}function rp(e){e=ep(e);const{values:t}=e,n=t[0],r=t[1]/100,i=t[2]/100,o=r*Math.min(i,1-i),a=(e,t=(e+n/30)%12)=>i-o*Math.max(Math.min(t-3,9-t,1),-1);let s="rgb";const l=[Math.round(255*a(0)),Math.round(255*a(8)),Math.round(255*a(4))];return"hsla"===e.type&&(s+="a",l.push(t[3])),np({type:s,values:l})}function ip(e){let t="hsl"===(e=ep(e)).type||"hsla"===e.type?ep(rp(e)).values:e.values;return t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function op(e,t){return e=ep(e),t=Qd(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,np(e)}function ap(e,t,n){try{return op(e,t)}catch(t){return e}}function sp(e,t){if(e=ep(e),t=Qd(t),e.type.includes("hsl"))e.values[2]*=1-t;else if(e.type.includes("rgb")||e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return np(e)}function lp(e,t,n){try{return sp(e,t)}catch(t){return e}}function cp(e,t){if(e=ep(e),t=Qd(t),e.type.includes("hsl"))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return np(e)}function up(e,t,n){try{return cp(e,t)}catch(t){return e}}function dp(e,t,n){try{return function(e,t=.15){return ip(e)>.5?sp(e,t):cp(e,t)}(e,t)}catch(t){return e}}const pp={black:"#000",white:"#fff"},hp={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"},mp="#f3e5f5",fp="#ce93d8",gp="#ba68c8",yp="#ab47bc",vp="#9c27b0",bp="#7b1fa2",xp="#e57373",Ip="#ef5350",wp="#f44336",kp="#d32f2f",Sp="#c62828",Mp="#ffb74d",Cp="#ffa726",Pp="#ff9800",Ep="#f57c00",Tp="#e65100",Ap="#e3f2fd",Op="#90caf9",jp="#42a5f5",Lp="#1976d2",Rp="#1565c0",Dp="#4fc3f7",$p="#29b6f6",zp="#03a9f4",Np="#0288d1",_p="#01579b",Fp="#81c784",Hp="#66bb6a",Bp="#4caf50",Vp="#388e3c",Up="#2e7d32",Yp="#1b5e20";function Wp(){return{text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:pp.white,default:pp.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}}const Gp=Wp();function Kp(){return{text:{primary:pp.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:pp.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}}const qp=Kp();function Xp(e,t,n,r){const i=r.light||r,o=r.dark||1.5*r;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=cp(e.main,i):"dark"===t&&(e.dark=sp(e.main,o)))}function Zp(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:r=.2,...i}=e,o=e.primary||function(e="light"){return"dark"===e?{main:Op,light:Ap,dark:jp}:{main:Lp,light:jp,dark:Rp}}(t),a=e.secondary||function(e="light"){return"dark"===e?{main:fp,light:mp,dark:yp}:{main:vp,light:gp,dark:bp}}(t),s=e.error||function(e="light"){return"dark"===e?{main:wp,light:xp,dark:kp}:{main:kp,light:Ip,dark:Sp}}(t),l=e.info||function(e="light"){return"dark"===e?{main:$p,light:Dp,dark:Np}:{main:Np,light:zp,dark:_p}}(t),c=e.success||function(e="light"){return"dark"===e?{main:Hp,light:Fp,dark:Vp}:{main:Up,light:Bp,dark:Yp}}(t),u=e.warning||function(e="light"){return"dark"===e?{main:Cp,light:Mp,dark:Ep}:{main:"#ed6c02",light:Pp,dark:Tp}}(t);function d(e){const t=function(e,t){const n=ip(e),r=ip(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}(e,qp.text.primary)>=n?qp.text.primary:Gp.text.primary;return t}const p=({color:e,name:t,mainShade:n=500,lightShade:i=300,darkShade:o=700})=>{if(!(e={...e}).main&&e[n]&&(e.main=e[n]),!e.hasOwnProperty("main"))throw new Error(kc(11,t?` (${t})`:"",n));if("string"!=typeof e.main)throw new Error(kc(12,t?` (${t})`:"",JSON.stringify(e.main)));return Xp(e,"light",i,r),Xp(e,"dark",o,r),e.contrastText||(e.contrastText=d(e.main)),e};let h;return"light"===t?h=Wp():"dark"===t&&(h=Kp()),mc({common:{...pp},mode:t,primary:p({color:o,name:"primary"}),secondary:p({color:a,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:p({color:s,name:"error"}),warning:p({color:u,name:"warning"}),info:p({color:l,name:"info"}),success:p({color:c,name:"success"}),grey:hp,contrastThreshold:n,getContrastText:d,augmentColor:p,tonalOffset:r,...h},i)}function Jp(e=""){function t(...n){if(!n.length)return"";const r=n[0];return"string"!=typeof r||r.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, ${r}`:`, var(--${e?`${e}-`:""}${r}${t(...n.slice(1))})`}return(n,...r)=>`var(--${e?`${e}-`:""}${n}${t(...r)})`}function Qp(e){const t={};return Object.entries(e).forEach(e=>{const[n,r]=e;"object"==typeof r&&(t[n]=`${r.fontStyle?`${r.fontStyle} `:""}${r.fontVariant?`${r.fontVariant} `:""}${r.fontWeight?`${r.fontWeight} `:""}${r.fontStretch?`${r.fontStretch} `:""}${r.fontSize||""}${r.lineHeight?`/${r.lineHeight} `:""}${r.fontFamily||""}`)}),t}const eh=(e,t,n,r=[])=>{let i=e;t.forEach((e,o)=>{o===t.length-1?Array.isArray(i)?i[Number(e)]=n:i&&"object"==typeof i&&(i[e]=n):i&&"object"==typeof i&&(i[e]||(i[e]=r.includes(e)?[]:{}),i=i[e])})};function th(e,t){const{prefix:n,shouldSkipGeneratingVar:r}=t||{},i={},o={},a={};var s,l;return s=(e,t,s)=>{if(!("string"!=typeof t&&"number"!=typeof t||r&&r(e,t))){const r=`--${n?`${n}-`:""}${e.join("-")}`,l=((e,t)=>"number"==typeof t?["lineHeight","fontWeight","opacity","zIndex"].some(t=>e.includes(t))||e[e.length-1].toLowerCase().includes("opacity")?t:`${t}px`:t)(e,t);Object.assign(i,{[r]:l}),eh(o,e,`var(${r})`,s),eh(a,e,`var(${r}, ${l})`,s)}},l=e=>"vars"===e[0],function e(t,n=[],r=[]){Object.entries(t).forEach(([t,i])=>{(!l||l&&!l([...n,t]))&&null!=i&&("object"==typeof i&&Object.keys(i).length>0?e(i,[...n,t],Array.isArray(i)?[...r,t]:r):s([...n,t],i,r))})}(e),{css:i,vars:o,varsWithDefaults:a}}function nh(e){return Math.round(1e5*e)/1e5}const rh={textTransform:"uppercase"},ih='"Roboto", "Helvetica", "Arial", sans-serif';function oh(e,t){const{fontFamily:n=ih,fontSize:r=14,fontWeightLight:i=300,fontWeightRegular:o=400,fontWeightMedium:a=500,fontWeightBold:s=700,htmlFontSize:l=16,allVariants:c,pxToRem:u,...d}="function"==typeof t?t(e):t,p=r/14,h=u||(e=>e/l*p+"rem"),m=(e,t,r,i,o)=>({fontFamily:n,fontWeight:e,fontSize:h(t),lineHeight:r,...n===ih?{letterSpacing:`${nh(i/t)}em`}:{},...o,...c}),f={h1:m(i,96,1.167,-1.5),h2:m(i,60,1.2,-.5),h3:m(o,48,1.167,0),h4:m(o,34,1.235,.25),h5:m(o,24,1.334,0),h6:m(a,20,1.6,.15),subtitle1:m(o,16,1.75,.15),subtitle2:m(a,14,1.57,.1),body1:m(o,16,1.5,.15),body2:m(o,14,1.43,.15),button:m(a,14,1.75,.4,rh),caption:m(o,12,1.66,.4),overline:m(o,12,2.66,1,rh),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return mc({htmlFontSize:l,pxToRem:h,fontFamily:n,fontSize:r,fontWeightLight:i,fontWeightRegular:o,fontWeightMedium:a,fontWeightBold:s,...f},d,{clone:!1})}function ah(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,0.2)`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,0.14)`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,0.12)`].join(",")}const sh=["none",ah(0,2,1,-1,0,1,1,0,0,1,3,0),ah(0,3,1,-2,0,2,2,0,0,1,5,0),ah(0,3,3,-2,0,3,4,0,0,1,8,0),ah(0,2,4,-1,0,4,5,0,0,1,10,0),ah(0,3,5,-1,0,5,8,0,0,1,14,0),ah(0,3,5,-1,0,6,10,0,0,1,18,0),ah(0,4,5,-2,0,7,10,1,0,2,16,1),ah(0,5,5,-3,0,8,10,1,0,3,14,2),ah(0,5,6,-3,0,9,12,1,0,3,16,2),ah(0,6,6,-3,0,10,14,1,0,4,18,3),ah(0,6,7,-4,0,11,15,1,0,4,20,3),ah(0,7,8,-4,0,12,17,2,0,5,22,4),ah(0,7,8,-4,0,13,19,2,0,5,24,4),ah(0,7,9,-4,0,14,21,2,0,5,26,4),ah(0,8,9,-5,0,15,22,2,0,6,28,5),ah(0,8,10,-5,0,16,24,2,0,6,30,5),ah(0,8,11,-5,0,17,26,2,0,6,32,5),ah(0,9,11,-5,0,18,28,2,0,7,34,6),ah(0,9,12,-6,0,19,29,2,0,7,36,6),ah(0,10,13,-6,0,20,31,3,0,8,38,7),ah(0,10,13,-6,0,21,33,3,0,8,40,7),ah(0,10,14,-6,0,22,35,3,0,8,42,7),ah(0,11,14,-7,0,23,36,3,0,9,44,8),ah(0,11,15,-7,0,24,38,3,0,9,46,8)],lh={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},ch={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function uh(e){return`${Math.round(e)}ms`}function dh(e){if(!e)return 0;const t=e/36;return Math.min(Math.round(10*(4+15*t**.25+t/5)),3e3)}function ph(e){const t={...lh,...e.easing},n={...ch,...e.duration};return{getAutoHeightDuration:dh,create:(e=["all"],r={})=>{const{duration:i=n.standard,easing:o=t.easeInOut,delay:a=0,...s}=r;return(Array.isArray(e)?e:[e]).map(e=>`${e} ${"string"==typeof i?i:uh(i)} ${o} ${"string"==typeof a?a:uh(a)}`).join(",")},...e,easing:t,duration:n}}const hh={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function mh(e){return pc(e)||void 0===e||"string"==typeof e||"boolean"==typeof e||"number"==typeof e||Array.isArray(e)}function fh(e={}){const t={...e};return function e(t){const n=Object.entries(t);for(let r=0;rmc(e,t),p),p.unstable_sxConfig={...vu,...c?.unstable_sxConfig},p.unstable_sx=function(e){return xu({sx:e,theme:this})},p.toRuntimeSource=fh,p};function yh(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(10*t)/1e3}const vh=[...Array(25)].map((e,t)=>{if(0===t)return"none";const n=yh(t);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`});function bh(e){return{inputPlaceholder:"dark"===e?.5:.42,inputUnderline:"dark"===e?.7:.42,switchTrackDisabled:"dark"===e?.2:.12,switchTrack:"dark"===e?.3:.38}}function xh(e){return"dark"===e?vh:[]}function Ih(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||"palette"===e[0]&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}const wh=e=>(t,n)=>{const r=e.rootSelector||":root",i=e.colorSchemeSelector;let o=i;if("class"===i&&(o=".%s"),"data"===i&&(o="[data-%s]"),i?.startsWith("data-")&&!i.includes("%s")&&(o=`[${i}="%s"]`),e.defaultColorScheme===t){if("dark"===t){const i={};return(a=e.cssVarPrefix,[...[...Array(25)].map((e,t)=>`--${a?`${a}-`:""}overlays-${t}`),`--${a?`${a}-`:""}palette-AppBar-darkBg`,`--${a?`${a}-`:""}palette-AppBar-darkColor`]).forEach(e=>{i[e]=n[e],delete n[e]}),"media"===o?{[r]:n,"@media (prefers-color-scheme: dark)":{[r]:i}}:o?{[o.replace("%s",t)]:i,[`${r}, ${o.replace("%s",t)}`]:n}:{[r]:{...n,...i}}}if(o&&"media"!==o)return`${r}, ${o.replace("%s",String(t))}`}else if(t){if("media"===o)return{[`@media (prefers-color-scheme: ${String(t)})`]:{[r]:n}};if(o)return o.replace("%s",String(t))}var a;return r};function kh(e,t,n){!e[t]&&n&&(e[t]=n)}function Sh(e){return"string"==typeof e&&e.startsWith("hsl")?rp(e):e}function Mh(e,t){`${t}Channel`in e||(e[`${t}Channel`]=tp(Sh(e[t])))}const Ch=e=>{try{return e()}catch(e){}};function Ph(e,t,n,r){if(!t)return;t=!0===t?{}:t;const i="dark"===r?"dark":"light";if(!n)return void(e[r]=function(e){const{palette:t={mode:"light"},opacity:n,overlays:r,...i}=e,o=Zp(t);return{palette:o,opacity:{...bh(o.mode),...n},overlays:r||xh(o.mode),...i}}({...t,palette:{mode:i,...t?.palette}}));const{palette:o,...a}=gh({...n,palette:{mode:i,...t?.palette}});return e[r]={...t,palette:o,opacity:{...bh(i),...t?.opacity},overlays:t?.overlays||xh(i)},a}function Eh(e={},...t){const{colorSchemes:n={light:!0},defaultColorScheme:r,disableCssColorScheme:i=!1,cssVarPrefix:o="mui",shouldSkipGeneratingVar:a=Ih,colorSchemeSelector:s=(n.light&&n.dark?"media":void 0),rootSelector:l=":root",...c}=e,u=Object.keys(n)[0],d=r||(n.light&&"light"!==u?"light":u),p=((e="mui")=>Jp(e))(o),{[d]:h,light:m,dark:f,...g}=n,y={...g};let v=h;if(("dark"===d&&!("dark"in n)||"light"===d&&!("light"in n))&&(v=!0),!v)throw new Error(kc(21,d));const b=Ph(y,v,c,d);m&&!y.light&&Ph(y,m,void 0,"light"),f&&!y.dark&&Ph(y,f,void 0,"dark");let x={defaultColorScheme:d,...b,cssVarPrefix:o,colorSchemeSelector:s,rootSelector:l,getCssVar:p,colorSchemes:y,font:{...Qp(b.typography),...b.font},spacing:(I=c.spacing,"number"==typeof I?`${I}px`:"string"==typeof I||"function"==typeof I||Array.isArray(I)?I:"8px")};var I;Object.keys(x.colorSchemes).forEach(e=>{const t=x.colorSchemes[e].palette,n=e=>{const n=e.split("-"),r=n[1],i=n[2];return p(e,t[r][i])};var r;if("light"===t.mode&&(kh(t.common,"background","#fff"),kh(t.common,"onBackground","#000")),"dark"===t.mode&&(kh(t.common,"background","#000"),kh(t.common,"onBackground","#fff")),r=t,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"].forEach(e=>{r[e]||(r[e]={})}),"light"===t.mode){kh(t.Alert,"errorColor",lp(t.error.light,.6)),kh(t.Alert,"infoColor",lp(t.info.light,.6)),kh(t.Alert,"successColor",lp(t.success.light,.6)),kh(t.Alert,"warningColor",lp(t.warning.light,.6)),kh(t.Alert,"errorFilledBg",n("palette-error-main")),kh(t.Alert,"infoFilledBg",n("palette-info-main")),kh(t.Alert,"successFilledBg",n("palette-success-main")),kh(t.Alert,"warningFilledBg",n("palette-warning-main")),kh(t.Alert,"errorFilledColor",Ch(()=>t.getContrastText(t.error.main))),kh(t.Alert,"infoFilledColor",Ch(()=>t.getContrastText(t.info.main))),kh(t.Alert,"successFilledColor",Ch(()=>t.getContrastText(t.success.main))),kh(t.Alert,"warningFilledColor",Ch(()=>t.getContrastText(t.warning.main))),kh(t.Alert,"errorStandardBg",up(t.error.light,.9)),kh(t.Alert,"infoStandardBg",up(t.info.light,.9)),kh(t.Alert,"successStandardBg",up(t.success.light,.9)),kh(t.Alert,"warningStandardBg",up(t.warning.light,.9)),kh(t.Alert,"errorIconColor",n("palette-error-main")),kh(t.Alert,"infoIconColor",n("palette-info-main")),kh(t.Alert,"successIconColor",n("palette-success-main")),kh(t.Alert,"warningIconColor",n("palette-warning-main")),kh(t.AppBar,"defaultBg",n("palette-grey-100")),kh(t.Avatar,"defaultBg",n("palette-grey-400")),kh(t.Button,"inheritContainedBg",n("palette-grey-300")),kh(t.Button,"inheritContainedHoverBg",n("palette-grey-A100")),kh(t.Chip,"defaultBorder",n("palette-grey-400")),kh(t.Chip,"defaultAvatarColor",n("palette-grey-700")),kh(t.Chip,"defaultIconColor",n("palette-grey-700")),kh(t.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),kh(t.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),kh(t.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),kh(t.LinearProgress,"primaryBg",up(t.primary.main,.62)),kh(t.LinearProgress,"secondaryBg",up(t.secondary.main,.62)),kh(t.LinearProgress,"errorBg",up(t.error.main,.62)),kh(t.LinearProgress,"infoBg",up(t.info.main,.62)),kh(t.LinearProgress,"successBg",up(t.success.main,.62)),kh(t.LinearProgress,"warningBg",up(t.warning.main,.62)),kh(t.Skeleton,"bg",`rgba(${n("palette-text-primaryChannel")} / 0.11)`),kh(t.Slider,"primaryTrack",up(t.primary.main,.62)),kh(t.Slider,"secondaryTrack",up(t.secondary.main,.62)),kh(t.Slider,"errorTrack",up(t.error.main,.62)),kh(t.Slider,"infoTrack",up(t.info.main,.62)),kh(t.Slider,"successTrack",up(t.success.main,.62)),kh(t.Slider,"warningTrack",up(t.warning.main,.62));const e=dp(t.background.default,.8);kh(t.SnackbarContent,"bg",e),kh(t.SnackbarContent,"color",Ch(()=>t.getContrastText(e))),kh(t.SpeedDialAction,"fabHoverBg",dp(t.background.paper,.15)),kh(t.StepConnector,"border",n("palette-grey-400")),kh(t.StepContent,"border",n("palette-grey-400")),kh(t.Switch,"defaultColor",n("palette-common-white")),kh(t.Switch,"defaultDisabledColor",n("palette-grey-100")),kh(t.Switch,"primaryDisabledColor",up(t.primary.main,.62)),kh(t.Switch,"secondaryDisabledColor",up(t.secondary.main,.62)),kh(t.Switch,"errorDisabledColor",up(t.error.main,.62)),kh(t.Switch,"infoDisabledColor",up(t.info.main,.62)),kh(t.Switch,"successDisabledColor",up(t.success.main,.62)),kh(t.Switch,"warningDisabledColor",up(t.warning.main,.62)),kh(t.TableCell,"border",up(ap(t.divider,1),.88)),kh(t.Tooltip,"bg",ap(t.grey[700],.92))}if("dark"===t.mode){kh(t.Alert,"errorColor",up(t.error.light,.6)),kh(t.Alert,"infoColor",up(t.info.light,.6)),kh(t.Alert,"successColor",up(t.success.light,.6)),kh(t.Alert,"warningColor",up(t.warning.light,.6)),kh(t.Alert,"errorFilledBg",n("palette-error-dark")),kh(t.Alert,"infoFilledBg",n("palette-info-dark")),kh(t.Alert,"successFilledBg",n("palette-success-dark")),kh(t.Alert,"warningFilledBg",n("palette-warning-dark")),kh(t.Alert,"errorFilledColor",Ch(()=>t.getContrastText(t.error.dark))),kh(t.Alert,"infoFilledColor",Ch(()=>t.getContrastText(t.info.dark))),kh(t.Alert,"successFilledColor",Ch(()=>t.getContrastText(t.success.dark))),kh(t.Alert,"warningFilledColor",Ch(()=>t.getContrastText(t.warning.dark))),kh(t.Alert,"errorStandardBg",lp(t.error.light,.9)),kh(t.Alert,"infoStandardBg",lp(t.info.light,.9)),kh(t.Alert,"successStandardBg",lp(t.success.light,.9)),kh(t.Alert,"warningStandardBg",lp(t.warning.light,.9)),kh(t.Alert,"errorIconColor",n("palette-error-main")),kh(t.Alert,"infoIconColor",n("palette-info-main")),kh(t.Alert,"successIconColor",n("palette-success-main")),kh(t.Alert,"warningIconColor",n("palette-warning-main")),kh(t.AppBar,"defaultBg",n("palette-grey-900")),kh(t.AppBar,"darkBg",n("palette-background-paper")),kh(t.AppBar,"darkColor",n("palette-text-primary")),kh(t.Avatar,"defaultBg",n("palette-grey-600")),kh(t.Button,"inheritContainedBg",n("palette-grey-800")),kh(t.Button,"inheritContainedHoverBg",n("palette-grey-700")),kh(t.Chip,"defaultBorder",n("palette-grey-700")),kh(t.Chip,"defaultAvatarColor",n("palette-grey-300")),kh(t.Chip,"defaultIconColor",n("palette-grey-300")),kh(t.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),kh(t.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),kh(t.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),kh(t.LinearProgress,"primaryBg",lp(t.primary.main,.5)),kh(t.LinearProgress,"secondaryBg",lp(t.secondary.main,.5)),kh(t.LinearProgress,"errorBg",lp(t.error.main,.5)),kh(t.LinearProgress,"infoBg",lp(t.info.main,.5)),kh(t.LinearProgress,"successBg",lp(t.success.main,.5)),kh(t.LinearProgress,"warningBg",lp(t.warning.main,.5)),kh(t.Skeleton,"bg",`rgba(${n("palette-text-primaryChannel")} / 0.13)`),kh(t.Slider,"primaryTrack",lp(t.primary.main,.5)),kh(t.Slider,"secondaryTrack",lp(t.secondary.main,.5)),kh(t.Slider,"errorTrack",lp(t.error.main,.5)),kh(t.Slider,"infoTrack",lp(t.info.main,.5)),kh(t.Slider,"successTrack",lp(t.success.main,.5)),kh(t.Slider,"warningTrack",lp(t.warning.main,.5));const e=dp(t.background.default,.98);kh(t.SnackbarContent,"bg",e),kh(t.SnackbarContent,"color",Ch(()=>t.getContrastText(e))),kh(t.SpeedDialAction,"fabHoverBg",dp(t.background.paper,.15)),kh(t.StepConnector,"border",n("palette-grey-600")),kh(t.StepContent,"border",n("palette-grey-600")),kh(t.Switch,"defaultColor",n("palette-grey-300")),kh(t.Switch,"defaultDisabledColor",n("palette-grey-600")),kh(t.Switch,"primaryDisabledColor",lp(t.primary.main,.55)),kh(t.Switch,"secondaryDisabledColor",lp(t.secondary.main,.55)),kh(t.Switch,"errorDisabledColor",lp(t.error.main,.55)),kh(t.Switch,"infoDisabledColor",lp(t.info.main,.55)),kh(t.Switch,"successDisabledColor",lp(t.success.main,.55)),kh(t.Switch,"warningDisabledColor",lp(t.warning.main,.55)),kh(t.TableCell,"border",lp(ap(t.divider,1),.68)),kh(t.Tooltip,"bg",ap(t.grey[700],.92))}Mh(t.background,"default"),Mh(t.background,"paper"),Mh(t.common,"background"),Mh(t.common,"onBackground"),Mh(t,"divider"),Object.keys(t).forEach(e=>{const n=t[e];"tonalOffset"!==e&&n&&"object"==typeof n&&(n.main&&kh(t[e],"mainChannel",tp(Sh(n.main))),n.light&&kh(t[e],"lightChannel",tp(Sh(n.light))),n.dark&&kh(t[e],"darkChannel",tp(Sh(n.dark))),n.contrastText&&kh(t[e],"contrastTextChannel",tp(Sh(n.contrastText))),"text"===e&&(Mh(t[e],"primary"),Mh(t[e],"secondary")),"action"===e&&(n.active&&Mh(t[e],"active"),n.selected&&Mh(t[e],"selected")))})}),x=t.reduce((e,t)=>mc(e,t),x);const w={prefix:o,disableCssColorScheme:i,shouldSkipGeneratingVar:a,getSelector:wh(x)},{vars:k,generateThemeVars:S,generateStyleSheets:M}=function(e,t={}){const{getSelector:n=g,disableCssColorScheme:r,colorSchemeSelector:i}=t,{colorSchemes:o={},components:a,defaultColorScheme:s="light",...l}=e,{vars:c,css:u,varsWithDefaults:d}=th(l,t);let p=d;const h={},{[s]:m,...f}=o;if(Object.entries(f||{}).forEach(([e,n])=>{const{vars:r,css:i,varsWithDefaults:o}=th(n,t);p=mc(p,o),h[e]={css:i,vars:r}}),m){const{css:e,vars:n,varsWithDefaults:r}=th(m,t);p=mc(p,r),h[s]={css:e,vars:n}}function g(t,n){let r=i;if("class"===i&&(r=".%s"),"data"===i&&(r="[data-%s]"),i?.startsWith("data-")&&!i.includes("%s")&&(r=`[${i}="%s"]`),t){if("media"===r){if(e.defaultColorScheme===t)return":root";const r=o[t]?.palette?.mode||t;return{[`@media (prefers-color-scheme: ${r})`]:{":root":n}}}if(r)return e.defaultColorScheme===t?`:root, ${r.replace("%s",String(t))}`:r.replace("%s",String(t))}return":root"}return{vars:p,generateThemeVars:()=>{let e={...c};return Object.entries(h).forEach(([,{vars:t}])=>{e=mc(e,t)}),e},generateStyleSheets:()=>{const t=[],i=e.defaultColorScheme||"light";function a(e,n){Object.keys(n).length&&t.push("string"==typeof e?{[e]:{...n}}:e)}a(n(void 0,{...u}),u);const{[i]:s,...l}=h;if(s){const{css:e}=s,t=o[i]?.palette?.mode,l=!r&&t?{colorScheme:t,...e}:{...e};a(n(i,{...l}),l)}return Object.entries(l).forEach(([e,{css:t}])=>{const i=o[e]?.palette?.mode,s=!r&&i?{colorScheme:i,...t}:{...t};a(n(e,{...s}),s)}),t}}}(x,w);return x.vars=k,Object.entries(x.colorSchemes[x.defaultColorScheme]).forEach(([e,t])=>{x[e]=t}),x.generateThemeVars=S,x.generateStyleSheets=M,x.generateSpacing=function(){return Vc(c.spacing,zc(this))},x.getColorSchemeSelector=function(e){return function(t){return"media"===e?`@media (prefers-color-scheme: ${t})`:e?e.startsWith("data-")&&!e.includes("%s")?`[${e}="${t}"] &`:"class"===e?`.${t} &`:"data"===e?`[data-${t}] &`:`${e.replace("%s",t)} &`:"&"}}(s),x.spacing=x.generateSpacing(),x.shouldSkipGeneratingVar=a,x.unstable_sxConfig={...vu,...c?.unstable_sxConfig},x.unstable_sx=function(e){return xu({sx:e,theme:this})},x.toRuntimeSource=fh,x}function Th(e,t,n){e.colorSchemes&&n&&(e.colorSchemes[t]={...!0!==n&&n,palette:Zp({...!0===n?{}:n.palette,mode:t})})}function Ah(e={},...t){const{palette:n,cssVariables:r=!1,colorSchemes:i=(n?void 0:{light:!0}),defaultColorScheme:o=n?.mode,...a}=e,s=o||"light",l=i?.[s],c={...i,...n?{[s]:{..."boolean"!=typeof l&&l,palette:n}}:void 0};if(!1===r){if(!("colorSchemes"in e))return gh(e,...t);let r=n;"palette"in e||c[s]&&(!0!==c[s]?r=c[s].palette:"dark"===s&&(r={mode:"dark"}));const i=gh({...e,palette:r},...t);return i.defaultColorScheme=s,i.colorSchemes=c,"light"===i.palette.mode&&(i.colorSchemes.light={...!0!==c.light&&c.light,palette:i.palette},Th(i,"dark",c.dark)),"dark"===i.palette.mode&&(i.colorSchemes.dark={...!0!==c.dark&&c.dark,palette:i.palette},Th(i,"light",c.light)),i}return n||"light"in c||"light"!==s||(c.light=!0),Eh({...a,colorSchemes:c,defaultColorScheme:s,..."boolean"!=typeof r&&r},...t)}const Oh=Ah(),jh="$$material";function Lh({props:e,name:t}){return function({props:e,name:t,defaultTheme:n,themeId:r}){let i=Zd(n);return r&&(i=i[r]||i),uc({theme:i,name:t,props:e})}({props:e,name:t,defaultTheme:Oh,themeId:jh})}const Rh={"image/png":"PNG","image/jpeg":"JPEG","image/webp":"WebP"},Dh={loading:"Loading data…",noData:"No data to display",zoomIn:"Zoom in",zoomOut:"Zoom out",toolbarExport:"Export",toolbarExportPrint:"Print",toolbarExportImage:e=>`Export as ${Rh[e]??e}`,chartTypeBar:"Bar",chartTypeColumn:"Column",chartTypeLine:"Line",chartTypeArea:"Area",chartTypePie:"Pie",chartPaletteLabel:"Color palette",chartPaletteNameRainbowSurge:"Rainbow Surge",chartPaletteNameBlueberryTwilight:"Blueberry Twilight",chartPaletteNameMangoFusion:"Mango Fusion",chartPaletteNameCheerfulFiesta:"Cheerful Fiesta",chartPaletteNameStrawberrySky:"Strawberry Sky",chartPaletteNameBlue:"Blue",chartPaletteNameGreen:"Green",chartPaletteNamePurple:"Purple",chartPaletteNameRed:"Red",chartPaletteNameOrange:"Orange",chartPaletteNameYellow:"Yellow",chartPaletteNameCyan:"Cyan",chartPaletteNamePink:"Pink",chartConfigurationSectionChart:"Chart",chartConfigurationSectionColumns:"Columns",chartConfigurationSectionBars:"Bars",chartConfigurationSectionAxes:"Axes",chartConfigurationGrid:"Grid",chartConfigurationBorderRadius:"Border radius",chartConfigurationCategoryGapRatio:"Category gap ratio",chartConfigurationBarGapRatio:"Series gap ratio",chartConfigurationStacked:"Stacked",chartConfigurationShowToolbar:"Show toolbar",chartConfigurationSkipAnimation:"Skip animation",chartConfigurationInnerRadius:"Inner radius",chartConfigurationOuterRadius:"Outer radius",chartConfigurationColors:"Colors",chartConfigurationHideLegend:"Hide legend",chartConfigurationShowMark:"Show mark",chartConfigurationHeight:"Height",chartConfigurationWidth:"Width",chartConfigurationSeriesGap:"Series gap",chartConfigurationTickPlacement:"Tick placement",chartConfigurationTickLabelPlacement:"Tick label placement",chartConfigurationCategoriesAxisLabel:"Categories axis label",chartConfigurationSeriesAxisLabel:"Series axis label",chartConfigurationXAxisPosition:"X-axis position",chartConfigurationYAxisPosition:"Y-axis position",chartConfigurationSeriesAxisReverse:"Reverse series axis",chartConfigurationTooltipPlacement:"Placement",chartConfigurationTooltipTrigger:"Trigger",chartConfigurationLegendPosition:"Position",chartConfigurationLegendDirection:"Direction",chartConfigurationBarLabels:"Bar labels",chartConfigurationColumnLabels:"Column labels",chartConfigurationInterpolation:"Interpolation",chartConfigurationSectionTooltip:"Tooltip",chartConfigurationSectionLegend:"Legend",chartConfigurationSectionLines:"Lines",chartConfigurationSectionAreas:"Areas",chartConfigurationSectionArcs:"Arcs",chartConfigurationPaddingAngle:"Padding angle",chartConfigurationCornerRadius:"Corner radius",chartConfigurationArcLabels:"Arc labels",chartConfigurationStartAngle:"Start angle",chartConfigurationEndAngle:"End angle",chartConfigurationPieTooltipTrigger:"Trigger",chartConfigurationPieLegendPosition:"Position",chartConfigurationPieLegendDirection:"Direction",chartConfigurationOptionNone:"None",chartConfigurationOptionValue:"Value",chartConfigurationOptionAuto:"Auto",chartConfigurationOptionTop:"Top",chartConfigurationOptionTopLeft:"Top Left",chartConfigurationOptionTopRight:"Top Right",chartConfigurationOptionBottom:"Bottom",chartConfigurationOptionBottomLeft:"Bottom Left",chartConfigurationOptionBottomRight:"Bottom Right",chartConfigurationOptionLeft:"Left",chartConfigurationOptionRight:"Right",chartConfigurationOptionAxis:"Axis",chartConfigurationOptionItem:"Item",chartConfigurationOptionHorizontal:"Horizontal",chartConfigurationOptionVertical:"Vertical",chartConfigurationOptionBoth:"Both",chartConfigurationOptionStart:"Start",chartConfigurationOptionMiddle:"Middle",chartConfigurationOptionEnd:"End",chartConfigurationOptionExtremities:"Extremities",chartConfigurationOptionTick:"Tick",chartConfigurationOptionMonotoneX:"Monotone X",chartConfigurationOptionMonotoneY:"Monotone Y",chartConfigurationOptionCatmullRom:"Catmull-Rom",chartConfigurationOptionLinear:"Linear",chartConfigurationOptionNatural:"Natural",chartConfigurationOptionStep:"Step",chartConfigurationOptionStepBefore:"Step Before",chartConfigurationOptionStepAfter:"Step After",chartConfigurationOptionBumpX:"Bump X",chartConfigurationOptionBumpY:"Bump Y"},$h=Dh;l({},Dh);const zh=["localeText"],Nh=e.createContext(null);function _h(t){const{localeText:n}=t,r=tt(t,zh),{localeText:i}=e.useContext(Nh)??{localeText:void 0},o=Lh({props:r,name:"MuiChartsLocalizationProvider"}),{children:a,localeText:s}=o,c=e.useMemo(()=>l({},$h,s,i,n),[s,i,n]),u=e.useMemo(()=>({localeText:c}),[c]);return(0,O.jsx)(Nh.Provider,{value:u,children:a})}function Fh(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e)){var i=e.length;for(t=0;t{this.currentId=null,t()},e)}clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)};disposeEffect=()=>this.clear}function Wh(){const t=Vh(Yh.create).current;var n;return n=t.disposeEffect,e.useEffect(n,Uh),t}function Gh(e,t,n=void 0){const r={};for(const i in e){const o=e[i];let a="",s=!0;for(let e=0;ee.useContext(Kh)??!1,Xh=function({value:e,...t}){return(0,O.jsx)(Kh.Provider,{value:e??!0,...t})};function Zh(e){try{return e.matches(":focus-visible")}catch(e){}return!1}function Jh(t){return parseInt(e.version,10)>=19?t?.props?.ref||null:t?.ref||null}var Qh=/^((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|popover|popoverTarget|popoverTargetAction|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)-.*))$/,em=Ed(function(e){return Qh.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}),tm=function(e){return"theme"!==e},nm=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?em:tm},rm=function(e,t,n){var r;if(t){var i=t.shouldForwardProp;r=e.__emotion_forwardProp&&i?function(t){return e.__emotion_forwardProp(t)&&i(t)}:i}return"function"!=typeof r&&n&&(r=e.__emotion_forwardProp),r},im=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return Md(t,n,r),Fd(function(){return Cd(t,n,r)}),null},om=function t(n,r){var i,o,a=n.__emotion_real===n,s=a&&n.__emotion_base||n;void 0!==r&&(i=r.label,o=r.target);var c=rm(n,r,a),u=c||nm(s),d=!u("as");return function(){var p=arguments,h=a&&void 0!==n.__emotion_styles?n.__emotion_styles.slice(0):[];if(void 0!==i&&h.push("label:"+i+";"),null==p[0]||void 0===p[0].raw)h.push.apply(h,p);else{var m=p[0];h.push(m[0]);for(var f=p.length,g=1;g{"function"!=typeof e.style&&(e.style=sm(e.style))}),r}const cm=wu();function um(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function dm(e,t){return t&&e&&"object"==typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function pm(e){return e?(t,n)=>n[e]:null}function hm(e,t,n){const r="function"==typeof t?t(e):t;if(Array.isArray(r))return r.flatMap(t=>hm(e,t,n));if(Array.isArray(r?.variants)){let t;if(r.isProcessed)t=n?dm(r.style,n):r.style;else{const{variants:e,...i}=r;t=n?dm(sm(i),n):i}return mm(e,r.variants,[t],n)}return r?.isProcessed?n?dm(sm(r.style),n):r.style:n?dm(sm(r),n):r}function mm(e,t,n=[],r=void 0){let i;e:for(let o=0;ogm(e)&&"classes"!==e,vm=function(e={}){const{themeId:t,defaultTheme:n=cm,rootShouldForwardProp:r=um,slotShouldForwardProp:i=um}=e;function o(e){!function(e,t,n){e.theme=function(e){for(const t in e)return!1;return!0}(e.theme)?n:e.theme[t]||e.theme}(e,t,n)}return(e,t={})=>{!function(e){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=(e=>e.filter(e=>e!==xu))(e.__emotion_styles))}(e);const{name:n,slot:a,skipVariantsResolver:s,skipSx:l,overridesResolver:c=pm(fm(a)),...u}=t,d=n&&n.startsWith("Mui")||a?"components":"custom",p=void 0!==s?s:a&&"Root"!==a&&"root"!==a||!1,h=l||!1;let m=um;"Root"===a||"root"===a?m=r:a?m=i:function(e){return"string"==typeof e&&e.charCodeAt(0)>96}(e)&&(m=void 0);const f=function(e,t){return om(e,t)}(e,{shouldForwardProp:m,label:void 0,...u}),g=e=>{if(e.__emotion_real===e)return e;if("function"==typeof e)return function(t){return hm(t,e,t.theme.modularCssLayers?d:void 0)};if(pc(e)){const t=lm(e);return function(e){return t.variants?hm(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?dm(t.style,d):t.style}}return e},y=(...t)=>{const r=[],i=t.map(g),a=[];if(r.push(o),n&&c&&a.push(function(e){const t=e.theme,r=t.components?.[n]?.styleOverrides;if(!r)return null;const i={};for(const t in r)i[t]=hm(e,r[t],e.theme.modularCssLayers?"theme":void 0);return c(e,i)}),n&&!p&&a.push(function(e){const t=e.theme,r=t?.components?.[n]?.variants;return r?mm(e,r,[],e.theme.modularCssLayers?"theme":void 0):null}),h||a.push(xu),Array.isArray(i[0])){const e=i.shift(),t=new Array(r.length).fill(""),n=new Array(a.length).fill("");let o;o=[...t,...e,...n],o.raw=[...t,...e.raw,...n],r.unshift(o)}const s=[...r,...i,...a],l=f(...s);return e.muiName&&(l.muiName=e.muiName),l};return f.withConfig&&(y.withConfig=f.withConfig),y}}({themeId:jh,defaultTheme:Oh,rootShouldForwardProp:ym}),bm=vm;function xm(){const e=Zd(Oh);return e[jh]||e}const Im={theme:void 0},wm=function(e){let t,n;return function(r){let i=t;return void 0!==i&&r.theme===n||(Im.theme=r.theme,i=lm(e(Im)),t=i,n=r.theme),i}},km=e.createContext(void 0);const Sm=function({value:e,children:t}){return(0,O.jsx)(km.Provider,{value:e,children:t})};function Mm(t){return function({props:t,name:n}){return function(e){const{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;const i=t.components[n];return i.defaultProps?cc(i.defaultProps,r):i.styleOverrides||i.variants?r:cc(i,r)}({props:t,name:n,theme:{components:e.useContext(km)}})}(t)}const Cm=Sc;function Pm(e,t){return Pm=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Pm(e,t)}function Em(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Pm(e,t)}const Tm=window.ReactDOM;var Am=a.n(Tm);const Om=n().createContext(null);var jm="unmounted",Lm="exited",Rm="entering",Dm="entered",$m="exiting",zm=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var i,o=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?o?(i=Lm,r.appearStatus=Rm):i=Dm:i=t.unmountOnExit||t.mountOnEnter?jm:Lm,r.state={status:i},r.nextCallback=null,r}Em(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===jm?{status:Lm}:null};var r=t.prototype;return r.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},r.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==Rm&&n!==Dm&&(t=Rm):n!==Rm&&n!==Dm||(t=$m)}this.updateStatus(!1,t)},r.componentWillUnmount=function(){this.cancelNextCallback()},r.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},r.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===Rm){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:Am().findDOMNode(this);n&&function(e){e.scrollTop}(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Lm&&this.setState({status:jm})},r.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,i=this.props.nodeRef?[r]:[Am().findDOMNode(this),r],o=i[0],a=i[1],s=this.getTimeouts(),l=r?s.appear:s.enter;e||n?(this.props.onEnter(o,a),this.safeSetState({status:Rm},function(){t.props.onEntering(o,a),t.onTransitionEnd(l,function(){t.safeSetState({status:Dm},function(){t.props.onEntered(o,a)})})})):this.safeSetState({status:Dm},function(){t.props.onEntered(o)})},r.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:Am().findDOMNode(this);t?(this.props.onExit(r),this.safeSetState({status:$m},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:Lm},function(){e.props.onExited(r)})})})):this.safeSetState({status:Lm},function(){e.props.onExited(r)})},r.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},r.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},r.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},r.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:Am().findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],o=i[0],a=i[1];this.props.addEndListener(o,a)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},r.render=function(){var e=this.state.status;if(e===jm)return null;var t=this.props,r=t.children,i=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,tt(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return n().createElement(Om.Provider,{value:null},"function"==typeof r?r(e,i):n().cloneElement(n().Children.only(r),i))},t}(n().Component);function Nm(){}zm.contextType=Om,zm.propTypes={},zm.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Nm,onEntering:Nm,onEntered:Nm,onExit:Nm,onExiting:Nm,onExited:Nm},zm.UNMOUNTED=jm,zm.EXITED=Lm,zm.ENTERING=Rm,zm.ENTERED=Dm,zm.EXITING=$m;const _m=zm,Fm=e=>e.scrollTop;function Hm(e,t){const{timeout:n,easing:r,style:i={}}=e;return{duration:i.transitionDuration??("number"==typeof n?n:n[t.mode]||0),easing:i.transitionTimingFunction??("object"==typeof r?r[t.mode]:r),delay:i.transitionDelay}}function Bm(...t){const n=e.useRef(void 0),r=e.useCallback(e=>{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}const Vm=Bm;function Um(e){return`scale(${e}, ${e**2})`}const Ym={entering:{opacity:1,transform:Um(1)},entered:{opacity:1,transform:"none"}},Wm="undefined"!=typeof navigator&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),Gm=e.forwardRef(function(t,n){const{addEndListener:r,appear:i=!0,children:o,easing:a,in:s,onEnter:l,onEntered:c,onEntering:u,onExit:d,onExited:p,onExiting:h,style:m,timeout:f="auto",TransitionComponent:g=_m,...y}=t,v=Wh(),b=e.useRef(),x=xm(),I=e.useRef(null),w=Vm(I,Jh(o),n),k=e=>t=>{if(e){const n=I.current;void 0===t?e(n):e(n,t)}},S=k(u),M=k((e,t)=>{Fm(e);const{duration:n,delay:r,easing:i}=Hm({style:m,timeout:f,easing:a},{mode:"enter"});let o;"auto"===f?(o=x.transitions.getAutoHeightDuration(e.clientHeight),b.current=o):o=n,e.style.transition=[x.transitions.create("opacity",{duration:o,delay:r}),x.transitions.create("transform",{duration:Wm?o:.666*o,delay:r,easing:i})].join(","),l&&l(e,t)}),C=k(c),P=k(h),E=k(e=>{const{duration:t,delay:n,easing:r}=Hm({style:m,timeout:f,easing:a},{mode:"exit"});let i;"auto"===f?(i=x.transitions.getAutoHeightDuration(e.clientHeight),b.current=i):i=t,e.style.transition=[x.transitions.create("opacity",{duration:i,delay:n}),x.transitions.create("transform",{duration:Wm?i:.666*i,delay:Wm?n:n||.333*i,easing:r})].join(","),e.style.opacity=0,e.style.transform=Um(.75),d&&d(e)}),T=k(p);return(0,O.jsx)(g,{appear:i,in:s,nodeRef:I,onEnter:M,onEntered:C,onEntering:S,onExit:E,onExited:T,onExiting:P,addEndListener:e=>{"auto"===f&&v.start(b.current||0,e),r&&r(I.current,e)},timeout:"auto"===f?null:f,...y,children:(t,{ownerState:n,...r})=>e.cloneElement(o,{style:{opacity:0,transform:Um(.75),visibility:"exited"!==t||s?void 0:"hidden",...Ym[t],...m,...o.props.style},ref:w,...r})})});Gm&&(Gm.muiSupportAuto=!0);const Km=Gm,qm="undefined"!=typeof window?e.useLayoutEffect:e.useEffect;function Xm(e){return e&&e.ownerDocument||document}function Zm(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Jm(e){return e instanceof Zm(e).Element||e instanceof Element}function Qm(e){return e instanceof Zm(e).HTMLElement||e instanceof HTMLElement}function ef(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Zm(e).ShadowRoot||e instanceof ShadowRoot)}var tf=Math.max,nf=Math.min,rf=Math.round;function of(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function af(){return!/^((?!chrome|android).)*safari/i.test(of())}function sf(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),i=1,o=1;t&&Qm(e)&&(i=e.offsetWidth>0&&rf(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&rf(r.height)/e.offsetHeight||1);var a=(Jm(e)?Zm(e):window).visualViewport,s=!af()&&n,l=(r.left+(s&&a?a.offsetLeft:0))/i,c=(r.top+(s&&a?a.offsetTop:0))/o,u=r.width/i,d=r.height/o;return{width:u,height:d,top:c,right:l+u,bottom:c+d,left:l,x:l,y:c}}function lf(e){var t=Zm(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function cf(e){return e?(e.nodeName||"").toLowerCase():null}function uf(e){return((Jm(e)?e.ownerDocument:e.document)||window.document).documentElement}function df(e){return sf(uf(e)).left+lf(e).scrollLeft}function pf(e){return Zm(e).getComputedStyle(e)}function hf(e){var t=pf(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function mf(e,t,n){void 0===n&&(n=!1);var r=Qm(t),i=Qm(t)&&function(e){var t=e.getBoundingClientRect(),n=rf(t.width)/e.offsetWidth||1,r=rf(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),o=uf(t),a=sf(e,i,n),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&(("body"!==cf(t)||hf(o))&&(s=function(e){return e!==Zm(e)&&Qm(e)?{scrollLeft:(t=e).scrollLeft,scrollTop:t.scrollTop}:lf(e);var t}(t)),Qm(t)?((l=sf(t,!0)).x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=df(o))),{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function ff(e){var t=sf(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function gf(e){return"html"===cf(e)?e:e.assignedSlot||e.parentNode||(ef(e)?e.host:null)||uf(e)}function yf(e){return["html","body","#document"].indexOf(cf(e))>=0?e.ownerDocument.body:Qm(e)&&hf(e)?e:yf(gf(e))}function vf(e,t){var n;void 0===t&&(t=[]);var r=yf(e),i=r===(null==(n=e.ownerDocument)?void 0:n.body),o=Zm(r),a=i?[o].concat(o.visualViewport||[],hf(r)?r:[]):r,s=t.concat(a);return i?s:s.concat(vf(gf(a)))}function bf(e){return["table","td","th"].indexOf(cf(e))>=0}function xf(e){return Qm(e)&&"fixed"!==pf(e).position?e.offsetParent:null}function If(e){for(var t=Zm(e),n=xf(e);n&&bf(n)&&"static"===pf(n).position;)n=xf(n);return n&&("html"===cf(n)||"body"===cf(n)&&"static"===pf(n).position)?t:n||function(e){var t=/firefox/i.test(of());if(/Trident/i.test(of())&&Qm(e)&&"fixed"===pf(e).position)return null;var n=gf(e);for(ef(n)&&(n=n.host);Qm(n)&&["html","body"].indexOf(cf(n))<0;){var r=pf(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}var wf="top",kf="bottom",Sf="right",Mf="left",Cf="auto",Pf=[wf,kf,Sf,Mf],Ef="start",Tf="end",Af="viewport",Of="popper",jf=Pf.reduce(function(e,t){return e.concat([t+"-"+Ef,t+"-"+Tf])},[]),Lf=[].concat(Pf,[Cf]).reduce(function(e,t){return e.concat([t,t+"-"+Ef,t+"-"+Tf])},[]),Rf=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function Df(e){var t=new Map,n=new Set,r=[];function i(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!n.has(e)){var r=t.get(e);r&&i(r)}}),r.push(e)}return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){n.has(e.name)||i(e)}),r}var $f={placement:"bottom",modifiers:[],strategy:"absolute"};function zf(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function Vf(e){var t,n=e.reference,r=e.element,i=e.placement,o=i?Ff(i):null,a=i?Hf(i):null,s=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(o){case wf:t={x:s,y:n.y-r.height};break;case kf:t={x:s,y:n.y+n.height};break;case Sf:t={x:n.x+n.width,y:l};break;case Mf:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var c=o?Bf(o):null;if(null!=c){var u="y"===c?"height":"width";switch(a){case Ef:t[c]=t[c]-(n[u]/2-r[u]/2);break;case Tf:t[c]=t[c]+(n[u]/2-r[u]/2)}}return t}var Uf={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Yf(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,a=e.offsets,s=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,d=e.isFixed,p=a.x,h=void 0===p?0:p,m=a.y,f=void 0===m?0:m,g="function"==typeof u?u({x:h,y:f}):{x:h,y:f};h=g.x,f=g.y;var y=a.hasOwnProperty("x"),v=a.hasOwnProperty("y"),b=Mf,x=wf,I=window;if(c){var w=If(n),k="clientHeight",S="clientWidth";w===Zm(n)&&"static"!==pf(w=uf(n)).position&&"absolute"===s&&(k="scrollHeight",S="scrollWidth"),(i===wf||(i===Mf||i===Sf)&&o===Tf)&&(x=kf,f-=(d&&w===I&&I.visualViewport?I.visualViewport.height:w[k])-r.height,f*=l?1:-1),i!==Mf&&(i!==wf&&i!==kf||o!==Tf)||(b=Sf,h-=(d&&w===I&&I.visualViewport?I.visualViewport.width:w[S])-r.width,h*=l?1:-1)}var M,C=Object.assign({position:s},c&&Uf),P=!0===u?function(e,t){var n=e.x,r=e.y,i=t.devicePixelRatio||1;return{x:rf(n*i)/i||0,y:rf(r*i)/i||0}}({x:h,y:f},Zm(n)):{x:h,y:f};return h=P.x,f=P.y,l?Object.assign({},C,((M={})[x]=v?"0":"",M[b]=y?"0":"",M.transform=(I.devicePixelRatio||1)<=1?"translate("+h+"px, "+f+"px)":"translate3d("+h+"px, "+f+"px, 0)",M)):Object.assign({},C,((t={})[x]=v?f+"px":"",t[b]=y?h+"px":"",t.transform="",t))}const Wf={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},i=t.elements[e];Qm(i)&&cf(i)&&(Object.assign(i.style,n),Object.keys(r).forEach(function(e){var t=r[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var r=t.elements[e],i=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce(function(e,t){return e[t]="",e},{});Qm(r)&&cf(r)&&(Object.assign(r.style,o),Object.keys(i).forEach(function(e){r.removeAttribute(e)}))})}},requires:["computeStyles"]};var Gf={left:"right",right:"left",bottom:"top",top:"bottom"};function Kf(e){return e.replace(/left|right|bottom|top/g,function(e){return Gf[e]})}var qf={start:"end",end:"start"};function Xf(e){return e.replace(/start|end/g,function(e){return qf[e]})}function Zf(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&ef(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Jf(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Qf(e,t,n){return t===Af?Jf(function(e,t){var n=Zm(e),r=uf(e),i=n.visualViewport,o=r.clientWidth,a=r.clientHeight,s=0,l=0;if(i){o=i.width,a=i.height;var c=af();(c||!c&&"fixed"===t)&&(s=i.offsetLeft,l=i.offsetTop)}return{width:o,height:a,x:s+df(e),y:l}}(e,n)):Jm(t)?function(e,t){var n=sf(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):Jf(function(e){var t,n=uf(e),r=lf(e),i=null==(t=e.ownerDocument)?void 0:t.body,o=tf(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=tf(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-r.scrollLeft+df(e),l=-r.scrollTop;return"rtl"===pf(i||n).direction&&(s+=tf(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}(uf(e)))}function eg(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function tg(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}function ng(e,t){void 0===t&&(t={});var n=t,r=n.placement,i=void 0===r?e.placement:r,o=n.strategy,a=void 0===o?e.strategy:o,s=n.boundary,l=void 0===s?"clippingParents":s,c=n.rootBoundary,u=void 0===c?Af:c,d=n.elementContext,p=void 0===d?Of:d,h=n.altBoundary,m=void 0!==h&&h,f=n.padding,g=void 0===f?0:f,y=eg("number"!=typeof g?g:tg(g,Pf)),v=p===Of?"reference":Of,b=e.rects.popper,x=e.elements[m?v:p],I=function(e,t,n,r){var i="clippingParents"===t?function(e){var t=vf(gf(e)),n=["absolute","fixed"].indexOf(pf(e).position)>=0&&Qm(e)?If(e):e;return Jm(n)?t.filter(function(e){return Jm(e)&&Zf(e,n)&&"body"!==cf(e)}):[]}(e):[].concat(t),o=[].concat(i,[n]),a=o[0],s=o.reduce(function(t,n){var i=Qf(e,n,r);return t.top=tf(i.top,t.top),t.right=nf(i.right,t.right),t.bottom=nf(i.bottom,t.bottom),t.left=tf(i.left,t.left),t},Qf(e,a,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}(Jm(x)?x:x.contextElement||uf(e.elements.popper),l,u,a),w=sf(e.elements.reference),k=Vf({reference:w,element:b,strategy:"absolute",placement:i}),S=Jf(Object.assign({},b,k)),M=p===Of?S:w,C={top:I.top-M.top+y.top,bottom:M.bottom-I.bottom+y.bottom,left:I.left-M.left+y.left,right:M.right-I.right+y.right},P=e.modifiersData.offset;if(p===Of&&P){var E=P[i];Object.keys(C).forEach(function(e){var t=[Sf,kf].indexOf(e)>=0?1:-1,n=[wf,kf].indexOf(e)>=0?"y":"x";C[e]+=E[n]*t})}return C}const rg={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=void 0===i||i,a=n.altAxis,s=void 0===a||a,l=n.fallbackPlacements,c=n.padding,u=n.boundary,d=n.rootBoundary,p=n.altBoundary,h=n.flipVariations,m=void 0===h||h,f=n.allowedAutoPlacements,g=t.options.placement,y=Ff(g),v=l||(y!==g&&m?function(e){if(Ff(e)===Cf)return[];var t=Kf(e);return[Xf(e),t,Xf(t)]}(g):[Kf(g)]),b=[g].concat(v).reduce(function(e,n){return e.concat(Ff(n)===Cf?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?Lf:l,u=Hf(r),d=u?s?jf:jf.filter(function(e){return Hf(e)===u}):Pf,p=d.filter(function(e){return c.indexOf(e)>=0});0===p.length&&(p=d);var h=p.reduce(function(t,n){return t[n]=ng(e,{placement:n,boundary:i,rootBoundary:o,padding:a})[Ff(n)],t},{});return Object.keys(h).sort(function(e,t){return h[e]-h[t]})}(t,{placement:n,boundary:u,rootBoundary:d,padding:c,flipVariations:m,allowedAutoPlacements:f}):n)},[]),x=t.rects.reference,I=t.rects.popper,w=new Map,k=!0,S=b[0],M=0;M=0,A=T?"width":"height",O=ng(t,{placement:C,boundary:u,rootBoundary:d,altBoundary:p,padding:c}),j=T?E?Sf:Mf:E?kf:wf;x[A]>I[A]&&(j=Kf(j));var L=Kf(j),R=[];if(o&&R.push(O[P]<=0),s&&R.push(O[j]<=0,O[L]<=0),R.every(function(e){return e})){S=C,k=!1;break}w.set(C,R)}if(k)for(var D=function(e){var t=b.find(function(t){var n=w.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return S=t,"break"},$=m?3:1;$>0&&"break"!==D($);$--);t.placement!==S&&(t.modifiersData[r]._skip=!0,t.placement=S,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ig(e,t,n){return tf(e,nf(t,n))}const og={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=void 0===i||i,a=n.altAxis,s=void 0!==a&&a,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,d=n.padding,p=n.tether,h=void 0===p||p,m=n.tetherOffset,f=void 0===m?0:m,g=ng(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:u}),y=Ff(t.placement),v=Hf(t.placement),b=!v,x=Bf(y),I="x"===x?"y":"x",w=t.modifiersData.popperOffsets,k=t.rects.reference,S=t.rects.popper,M="function"==typeof f?f(Object.assign({},t.rects,{placement:t.placement})):f,C="number"==typeof M?{mainAxis:M,altAxis:M}:Object.assign({mainAxis:0,altAxis:0},M),P=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,E={x:0,y:0};if(w){if(o){var T,A="y"===x?wf:Mf,O="y"===x?kf:Sf,j="y"===x?"height":"width",L=w[x],R=L+g[A],D=L-g[O],$=h?-S[j]/2:0,z=v===Ef?k[j]:S[j],N=v===Ef?-S[j]:-k[j],_=t.elements.arrow,F=h&&_?ff(_):{width:0,height:0},H=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},B=H[A],V=H[O],U=ig(0,k[j],F[j]),Y=b?k[j]/2-$-U-B-C.mainAxis:z-U-B-C.mainAxis,W=b?-k[j]/2+$+U+V+C.mainAxis:N+U+V+C.mainAxis,G=t.elements.arrow&&If(t.elements.arrow),K=G?"y"===x?G.clientTop||0:G.clientLeft||0:0,q=null!=(T=null==P?void 0:P[x])?T:0,X=L+W-q,Z=ig(h?nf(R,L+Y-q-K):R,L,h?tf(D,X):D);w[x]=Z,E[x]=Z-L}if(s){var J,Q="x"===x?wf:Mf,ee="x"===x?kf:Sf,te=w[I],ne="y"===I?"height":"width",re=te+g[Q],ie=te-g[ee],oe=-1!==[wf,Mf].indexOf(y),ae=null!=(J=null==P?void 0:P[I])?J:0,se=oe?re:te-k[ne]-S[ne]-ae+C.altAxis,le=oe?te+k[ne]+S[ne]-ae-C.altAxis:ie,ce=h&&oe?function(e,t,n){var r=ig(e,t,n);return r>n?n:r}(se,te,le):ig(h?se:re,te,h?le:ie);w[I]=ce,E[I]=ce-te}t.modifiersData[r]=E}},requiresIfExists:["offset"]},ag={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=Ff(n.placement),l=Bf(s),c=[Mf,Sf].indexOf(s)>=0?"height":"width";if(o&&a){var u=function(e,t){return eg("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:tg(e,Pf))}(i.padding,n),d=ff(o),p="y"===l?wf:Mf,h="y"===l?kf:Sf,m=n.rects.reference[c]+n.rects.reference[l]-a[l]-n.rects.popper[c],f=a[l]-n.rects.reference[l],g=If(o),y=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,v=m/2-f/2,b=u[p],x=y-d[c]-u[h],I=y/2-d[c]/2+v,w=ig(b,I,x),k=l;n.modifiersData[r]=((t={})[k]=w,t.centerOffset=w-I,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&Zf(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function sg(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function lg(e){return[wf,Sf,kf,Mf].some(function(t){return e[t]>=0})}var cg=Nf({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=void 0===i||i,a=r.resize,s=void 0===a||a,l=Zm(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(e){e.addEventListener("scroll",n.update,_f)}),s&&l.addEventListener("resize",n.update,_f),function(){o&&c.forEach(function(e){e.removeEventListener("scroll",n.update,_f)}),s&&l.removeEventListener("resize",n.update,_f)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=Vf({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=void 0===r||r,o=n.adaptive,a=void 0===o||o,s=n.roundOffsets,l=void 0===s||s,c={placement:Ff(t.placement),variation:Hf(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Yf(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Yf(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Wf,{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=void 0===i?[0,0]:i,a=Lf.reduce(function(e,n){return e[n]=function(e,t,n){var r=Ff(e),i=[Mf,wf].indexOf(r)>=0?-1:1,o="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*i,[Mf,Sf].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,o),e},{}),s=a[t.placement],l=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},rg,og,ag,{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,a=ng(t,{elementContext:"reference"}),s=ng(t,{altBoundary:!0}),l=sg(a,r),c=sg(s,i,o),u=lg(l),d=lg(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}}]});const ug=function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}},dg=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n},pg=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},hg=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=dg({...i,...r}),s=pg(r),l=pg(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}},mg=function(e,t,n){return"function"==typeof e?e(t,n):e},fg=function(e){const{elementType:t,externalSlotProps:n,ownerState:r,skipResolvingSlotProps:i=!1,...o}=e,a=i?{}:mg(n,r),{props:s,internalRef:l}=hg({...o,externalSlotProps:a}),c=Bm(l,a?.ref,e.additionalProps?.ref);return ug(t,{...s,ref:c},r)};function gg(e,t){"function"==typeof e?e(t):e&&(e.current=t)}const yg=e.forwardRef(function(t,n){const{children:r,container:i,disablePortal:o=!1}=t,[a,s]=e.useState(null),l=Bm(e.isValidElement(r)?Jh(r):null,n);if(qm(()=>{o||s(function(e){return"function"==typeof e?e():e}(i)||document.body)},[i,o]),qm(()=>{if(a&&!o)return gg(n,a),()=>{gg(n,null)}},[n,a,o]),o){if(e.isValidElement(r)){const t={ref:l};return e.cloneElement(r,t)}return r}return a?Tm.createPortal(r,a):a}),vg=e=>e,bg=(()=>{let e=vg;return{configure(t){e=t},generate:t=>e(t),reset(){e=vg}}})(),xg={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 Ig(e,t,n="Mui"){const r=xg[t];return r?`${n}-${r}`:`${bg.generate(e)}-${t}`}function wg(e,t,n="Mui"){const r={};return t.forEach(t=>{r[t]=Ig(e,t,n)}),r}function kg(e){return Ig("MuiPopper",e)}function Sg(e){return"function"==typeof e?e():e}wg("MuiPopper",["root"]);const Mg={},Cg=e.forwardRef(function(t,n){const{anchorEl:r,children:i,direction:o,disablePortal:a,modifiers:s,open:l,placement:c,popperOptions:u,popperRef:d,slotProps:p={},slots:h={},TransitionProps:m,ownerState:f,...g}=t,y=e.useRef(null),v=Bm(y,n),b=e.useRef(null),x=Bm(b,d),I=e.useRef(x);qm(()=>{I.current=x},[x]),e.useImperativeHandle(d,()=>b.current,[]);const w=function(e,t){if("ltr"===t)return e;switch(e){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 e}}(c,o),[k,S]=e.useState(w),[M,C]=e.useState(Sg(r));e.useEffect(()=>{b.current&&b.current.forceUpdate()}),e.useEffect(()=>{r&&C(Sg(r))},[r]),qm(()=>{if(!M||!l)return;let e=[{name:"preventOverflow",options:{altBoundary:a}},{name:"flip",options:{altBoundary:a}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:e})=>{S(e.placement)}}];null!=s&&(e=e.concat(s)),u&&null!=u.modifiers&&(e=e.concat(u.modifiers));const t=cg(M,y.current,{placement:w,...u,modifiers:e});return I.current(t),()=>{t.destroy(),I.current(null)}},[M,a,s,l,u,w]);const P={placement:k};null!==m&&(P.TransitionProps=m);const E=(e=>{const{classes:t}=e;return Gh({root:["root"]},kg,t)})(t),T=h.root??"div",A=fg({elementType:T,externalSlotProps:p.root,externalForwardedProps:g,additionalProps:{role:"tooltip",ref:v},ownerState:t,className:E.root});return(0,O.jsx)(T,{...A,children:"function"==typeof i?i(P):i})}),Pg=bm(e.forwardRef(function(t,n){const{anchorEl:r,children:i,container:o,direction:a="ltr",disablePortal:s=!1,keepMounted:l=!1,modifiers:c,open:u,placement:d="bottom",popperOptions:p=Mg,popperRef:h,style:m,transition:f=!1,slotProps:g={},slots:y={},...v}=t,[b,x]=e.useState(!0);if(!l&&!u&&(!f||b))return null;let I;if(o)I=o;else if(r){const e=Sg(r);I=e&&void 0!==e.nodeType?Xm(e).body:Xm(null).body}const w=u||!l||f&&!b?void 0:"none",k=f?{in:u,onEnter:()=>{x(!1)},onExited:()=>{x(!0)}}:void 0;return(0,O.jsx)(yg,{disablePortal:s,container:I,children:(0,O.jsx)(Cg,{anchorEl:r,direction:a,disablePortal:s,modifiers:c,ref:n,open:f?!b:u,placement:d,popperOptions:p,popperRef:h,slotProps:g,slots:y,...v,style:{position:"fixed",top:0,left:0,display:w,...m},TransitionProps:k,children:i})})}),{name:"MuiPopper",slot:"Root",overridesResolver:(e,t)=>t.root})({}),Eg=e.forwardRef(function(e,t){const n=qh(),r=Mm({props:e,name:"MuiPopper"}),{anchorEl:i,component:o,components:a,componentsProps:s,container:l,disablePortal:c,keepMounted:u,modifiers:d,open:p,placement:h,popperOptions:m,popperRef:f,transition:g,slots:y,slotProps:v,...b}=r,x=y?.root??a?.Root,I={anchorEl:i,container:l,disablePortal:c,keepMounted:u,modifiers:d,open:p,placement:h,popperOptions:m,popperRef:f,transition:g,...b};return(0,O.jsx)(Pg,{as:o,direction:n?"rtl":"ltr",slots:{root:x},slotProps:v??s,...I,ref:t})}),Tg=Eg,Ag=function(t){const n=e.useRef(t);return qm(()=>{n.current=t}),e.useRef((...e)=>(0,n.current)(...e)).current},Og=Ag;let jg=0;const Lg={...e}.useId;function Rg(t){if(void 0!==Lg){const e=Lg();return t??e}return function(t){const[n,r]=e.useState(t),i=t||n;return e.useEffect(()=>{null==n&&(jg+=1,r(`mui-${jg}`))},[n]),i}(t)}const Dg=Rg;function $g({controlled:t,default:n,name:r,state:i="value"}){const{current:o}=e.useRef(void 0!==t),[a,s]=e.useState(n);return[o?t:a,e.useCallback(e=>{o||s(e)},[])]}const zg=$g;function Ng(e,t){const{className:n,elementType:r,ownerState:i,externalForwardedProps:o,internalForwardedProps:a,shouldForwardComponentProp:s=!1,...l}=t,{component:c,slots:u={[e]:void 0},slotProps:d={[e]:void 0},...p}=o,h=u[e]||r,m=mg(d[e],i),{props:{component:f,...g},internalRef:y}=hg({className:n,...l,externalForwardedProps:"root"===e?p:void 0,externalSlotProps:m}),v=Bm(y,m?.ref,t.ref),b="root"===e?f||c:f;return[h,ug(h,{..."root"===e&&!c&&!u[e]&&a,..."root"!==e&&!u[e]&&a,...g,...b&&!s&&{as:b},...b&&s&&{component:b},ref:v},i)]}function _g(e){return Ig("MuiTooltip",e)}const Fg=wg("MuiTooltip",["popper","popperInteractive","popperArrow","popperClose","tooltip","tooltipArrow","touch","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","arrow"]);function Hg(e){return Math.round(1e5*e)/1e5}const Bg=bm(Tg,{name:"MuiTooltip",slot:"Popper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.popper,!n.disableInteractive&&t.popperInteractive,n.arrow&&t.popperArrow,!n.open&&t.popperClose]}})(wm(({theme:e})=>({zIndex:(e.vars||e).zIndex.tooltip,pointerEvents:"none",variants:[{props:({ownerState:e})=>!e.disableInteractive,style:{pointerEvents:"auto"}},{props:({open:e})=>!e,style:{pointerEvents:"none"}},{props:({ownerState:e})=>e.arrow,style:{[`&[data-popper-placement*="bottom"] .${Fg.arrow}`]:{top:0,marginTop:"-0.71em","&::before":{transformOrigin:"0 100%"}},[`&[data-popper-placement*="top"] .${Fg.arrow}`]:{bottom:0,marginBottom:"-0.71em","&::before":{transformOrigin:"100% 0"}},[`&[data-popper-placement*="right"] .${Fg.arrow}`]:{height:"1em",width:"0.71em","&::before":{transformOrigin:"100% 100%"}},[`&[data-popper-placement*="left"] .${Fg.arrow}`]:{height:"1em",width:"0.71em","&::before":{transformOrigin:"0 0"}}}},{props:({ownerState:e})=>e.arrow&&!e.isRtl,style:{[`&[data-popper-placement*="right"] .${Fg.arrow}`]:{left:0,marginLeft:"-0.71em"}}},{props:({ownerState:e})=>e.arrow&&!!e.isRtl,style:{[`&[data-popper-placement*="right"] .${Fg.arrow}`]:{right:0,marginRight:"-0.71em"}}},{props:({ownerState:e})=>e.arrow&&!e.isRtl,style:{[`&[data-popper-placement*="left"] .${Fg.arrow}`]:{right:0,marginRight:"-0.71em"}}},{props:({ownerState:e})=>e.arrow&&!!e.isRtl,style:{[`&[data-popper-placement*="left"] .${Fg.arrow}`]:{left:0,marginLeft:"-0.71em"}}}]}))),Vg=bm("div",{name:"MuiTooltip",slot:"Tooltip",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.tooltip,n.touch&&t.touch,n.arrow&&t.tooltipArrow,t[`tooltipPlacement${Cm(n.placement.split("-")[0])}`]]}})(wm(({theme:e})=>({backgroundColor:e.vars?e.vars.palette.Tooltip.bg:op(e.palette.grey[700],.92),borderRadius:(e.vars||e).shape.borderRadius,color:(e.vars||e).palette.common.white,fontFamily:e.typography.fontFamily,padding:"4px 8px",fontSize:e.typography.pxToRem(11),maxWidth:300,margin:2,wordWrap:"break-word",fontWeight:e.typography.fontWeightMedium,[`.${Fg.popper}[data-popper-placement*="left"] &`]:{transformOrigin:"right center"},[`.${Fg.popper}[data-popper-placement*="right"] &`]:{transformOrigin:"left center"},[`.${Fg.popper}[data-popper-placement*="top"] &`]:{transformOrigin:"center bottom",marginBottom:"14px"},[`.${Fg.popper}[data-popper-placement*="bottom"] &`]:{transformOrigin:"center top",marginTop:"14px"},variants:[{props:({ownerState:e})=>e.arrow,style:{position:"relative",margin:0}},{props:({ownerState:e})=>e.touch,style:{padding:"8px 16px",fontSize:e.typography.pxToRem(14),lineHeight:`${Hg(16/14)}em`,fontWeight:e.typography.fontWeightRegular}},{props:({ownerState:e})=>!e.isRtl,style:{[`.${Fg.popper}[data-popper-placement*="left"] &`]:{marginRight:"14px"},[`.${Fg.popper}[data-popper-placement*="right"] &`]:{marginLeft:"14px"}}},{props:({ownerState:e})=>!e.isRtl&&e.touch,style:{[`.${Fg.popper}[data-popper-placement*="left"] &`]:{marginRight:"24px"},[`.${Fg.popper}[data-popper-placement*="right"] &`]:{marginLeft:"24px"}}},{props:({ownerState:e})=>!!e.isRtl,style:{[`.${Fg.popper}[data-popper-placement*="left"] &`]:{marginLeft:"14px"},[`.${Fg.popper}[data-popper-placement*="right"] &`]:{marginRight:"14px"}}},{props:({ownerState:e})=>!!e.isRtl&&e.touch,style:{[`.${Fg.popper}[data-popper-placement*="left"] &`]:{marginLeft:"24px"},[`.${Fg.popper}[data-popper-placement*="right"] &`]:{marginRight:"24px"}}},{props:({ownerState:e})=>e.touch,style:{[`.${Fg.popper}[data-popper-placement*="top"] &`]:{marginBottom:"24px"}}},{props:({ownerState:e})=>e.touch,style:{[`.${Fg.popper}[data-popper-placement*="bottom"] &`]:{marginTop:"24px"}}}]}))),Ug=bm("span",{name:"MuiTooltip",slot:"Arrow",overridesResolver:(e,t)=>t.arrow})(wm(({theme:e})=>({overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:e.vars?e.vars.palette.Tooltip.bg:op(e.palette.grey[700],.9),"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",backgroundColor:"currentColor",transform:"rotate(45deg)"}})));let Yg=!1;const Wg=new Yh;let Gg={x:0,y:0};function Kg(e,t){return(n,...r)=>{t&&t(n,...r),e(n,...r)}}const qg=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiTooltip"}),{arrow:i=!1,children:o,classes:a,components:s={},componentsProps:l={},describeChild:c=!1,disableFocusListener:u=!1,disableHoverListener:d=!1,disableInteractive:p=!1,disableTouchListener:h=!1,enterDelay:m=100,enterNextDelay:f=0,enterTouchDelay:g=700,followCursor:y=!1,id:v,leaveDelay:b=0,leaveTouchDelay:x=1500,onClose:I,onOpen:w,open:k,placement:S="bottom",PopperComponent:M,PopperProps:C={},slotProps:P={},slots:E={},title:T,TransitionComponent:A,TransitionProps:j,...L}=r,R=e.isValidElement(o)?o:(0,O.jsx)("span",{children:o}),D=xm(),$=qh(),[z,N]=e.useState(),[_,F]=e.useState(null),H=e.useRef(!1),B=p||y,V=Wh(),U=Wh(),Y=Wh(),W=Wh(),[G,K]=zg({controlled:k,default:!1,name:"Tooltip",state:"open"});let q=G;const X=Dg(v),Z=e.useRef(),J=Og(()=>{void 0!==Z.current&&(document.body.style.WebkitUserSelect=Z.current,Z.current=void 0),W.clear()});e.useEffect(()=>J,[J]);const Q=e=>{Wg.clear(),Yg=!0,K(!0),w&&!q&&w(e)},ee=Og(e=>{Wg.start(800+b,()=>{Yg=!1}),K(!1),I&&q&&I(e),V.start(D.transitions.duration.shortest,()=>{H.current=!1})}),te=e=>{H.current&&"touchstart"!==e.type||(z&&z.removeAttribute("title"),U.clear(),Y.clear(),m||Yg&&f?U.start(Yg?f:m,()=>{Q(e)}):Q(e))},ne=e=>{U.clear(),Y.start(b,()=>{ee(e)})},[,re]=e.useState(!1),ie=e=>{Zh(e.target)||(re(!1),ne(e))},oe=e=>{z||N(e.currentTarget),Zh(e.target)&&(re(!0),te(e))},ae=e=>{H.current=!0;const t=R.props;t.onTouchStart&&t.onTouchStart(e)};e.useEffect(()=>{if(q)return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)};function e(e){"Escape"===e.key&&ee(e)}},[ee,q]);const se=Vm(Jh(R),N,n);T||0===T||(q=!1);const le=e.useRef(),ce={},ue="string"==typeof T;c?(ce.title=q||!ue||d?null:T,ce["aria-describedby"]=q?X:null):(ce["aria-label"]=ue?T:null,ce["aria-labelledby"]=q&&!ue?X:null);const de={...ce,...L,...R.props,className:Hh(L.className,R.props.className),onTouchStart:ae,ref:se,...y?{onMouseMove:e=>{const t=R.props;t.onMouseMove&&t.onMouseMove(e),Gg={x:e.clientX,y:e.clientY},le.current&&le.current.update()}}:{}},pe={};h||(de.onTouchStart=e=>{ae(e),Y.clear(),V.clear(),J(),Z.current=document.body.style.WebkitUserSelect,document.body.style.WebkitUserSelect="none",W.start(g,()=>{document.body.style.WebkitUserSelect=Z.current,te(e)})},de.onTouchEnd=e=>{R.props.onTouchEnd&&R.props.onTouchEnd(e),J(),Y.start(x,()=>{ee(e)})}),d||(de.onMouseOver=Kg(te,de.onMouseOver),de.onMouseLeave=Kg(ne,de.onMouseLeave),B||(pe.onMouseOver=te,pe.onMouseLeave=ne)),u||(de.onFocus=Kg(oe,de.onFocus),de.onBlur=Kg(ie,de.onBlur),B||(pe.onFocus=oe,pe.onBlur=ie));const he={...r,isRtl:$,arrow:i,disableInteractive:B,placement:S,PopperComponentProp:M,touch:H.current},me="function"==typeof P.popper?P.popper(he):P.popper,fe=e.useMemo(()=>{let e=[{name:"arrow",enabled:Boolean(_),options:{element:_,padding:4}}];return C.popperOptions?.modifiers&&(e=e.concat(C.popperOptions.modifiers)),me?.popperOptions?.modifiers&&(e=e.concat(me.popperOptions.modifiers)),{...C.popperOptions,...me?.popperOptions,modifiers:e}},[_,C.popperOptions,me?.popperOptions]),ge=(e=>{const{classes:t,disableInteractive:n,arrow:r,touch:i,placement:o}=e;return Gh({popper:["popper",!n&&"popperInteractive",r&&"popperArrow"],tooltip:["tooltip",r&&"tooltipArrow",i&&"touch",`tooltipPlacement${Cm(o.split("-")[0])}`],arrow:["arrow"]},_g,t)})(he),ye="function"==typeof P.transition?P.transition(he):P.transition,ve={slots:{popper:s.Popper,transition:s.Transition??A,tooltip:s.Tooltip,arrow:s.Arrow,...E},slotProps:{arrow:P.arrow??l.arrow,popper:{...C,...me??l.popper},tooltip:P.tooltip??l.tooltip,transition:{...j,...ye??l.transition}}},[be,xe]=Ng("popper",{elementType:Bg,externalForwardedProps:ve,ownerState:he,className:Hh(ge.popper,C?.className)}),[Ie,we]=Ng("transition",{elementType:Km,externalForwardedProps:ve,ownerState:he}),[ke,Se]=Ng("tooltip",{elementType:Vg,className:ge.tooltip,externalForwardedProps:ve,ownerState:he}),[Me,Ce]=Ng("arrow",{elementType:Ug,className:ge.arrow,externalForwardedProps:ve,ownerState:he,ref:F});return(0,O.jsxs)(e.Fragment,{children:[e.cloneElement(R,de),(0,O.jsx)(be,{as:M??Tg,placement:S,anchorEl:y?{getBoundingClientRect:()=>({top:Gg.y,left:Gg.x,right:Gg.x,bottom:Gg.y,width:0,height:0})}:z,popperRef:le,open:!!z&&q,id:X,transition:!0,...pe,...xe,popperOptions:fe,children:({TransitionProps:e})=>(0,O.jsx)(Ie,{timeout:D.transitions.duration.shorter,...e,...we,children:(0,O.jsxs)(ke,{...Se,children:[T,i?(0,O.jsx)(Me,{...Ce}):null]})})})]})}),Xg=Xm,Zg=e.createContext({});function Jg(e){return Ig("MuiList",e)}wg("MuiList",["root","padding","dense","subheader"]);const Qg=bm("ul",{name:"MuiList",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disablePadding&&t.padding,n.dense&&t.dense,n.subheader&&t.subheader]}})({listStyle:"none",margin:0,padding:0,position:"relative",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>e.subheader,style:{paddingTop:0}}]}),ey=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiList"}),{children:i,className:o,component:a="ul",dense:s=!1,disablePadding:l=!1,subheader:c,...u}=r,d=e.useMemo(()=>({dense:s}),[s]),p={...r,component:a,dense:s,disablePadding:l},h=(e=>{const{classes:t,disablePadding:n,dense:r,subheader:i}=e;return Gh({root:["root",!n&&"padding",r&&"dense",i&&"subheader"]},Jg,t)})(p);return(0,O.jsx)(Zg.Provider,{value:d,children:(0,O.jsxs)(Qg,{as:a,className:Hh(h.root,o),ref:n,ownerState:p,...u,children:[c,i]})})}),ty=ey;function ny(e=window){const t=e.document.documentElement.clientWidth;return e.innerWidth-t}const ry=ny,iy=qm;function oy(e){return Xm(e).defaultView||window}const ay=oy;function sy(e,t,n){return e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:n?null:e.firstChild}function ly(e,t,n){return e===t?n?e.firstChild:e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:n?null:e.lastChild}function cy(e,t){if(void 0===t)return!0;let n=e.innerText;return void 0===n&&(n=e.textContent),n=n.trim().toLowerCase(),0!==n.length&&(t.repeating?n[0]===t.keys[0]:n.startsWith(t.keys.join("")))}function uy(e,t,n,r,i,o){let a=!1,s=i(e,t,!!t&&n);for(;s;){if(s===e.firstChild){if(a)return!1;a=!0}const t=!r&&(s.disabled||"true"===s.getAttribute("aria-disabled"));if(s.hasAttribute("tabindex")&&cy(s,o)&&!t)return s.focus(),!0;s=i(e,s,n)}return!1}const dy=e.forwardRef(function(t,n){const{actions:r,autoFocus:i=!1,autoFocusItem:o=!1,children:a,className:s,disabledItemsFocusable:l=!1,disableListWrap:c=!1,onKeyDown:u,variant:d="selectedMenu",...p}=t,h=e.useRef(null),m=e.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});iy(()=>{i&&h.current.focus()},[i]),e.useImperativeHandle(r,()=>({adjustStyleForScrollbar:(e,{direction:t})=>{const n=!h.current.style.width;if(e.clientHeight{e.isValidElement(t)?(t.props.disabled||("selectedMenu"===d&&t.props.selected||-1===g)&&(g=n),g===n&&(t.props.disabled||t.props.muiSkipListHighlight||t.type.muiSkipListHighlight)&&(g+=1,g>=a.length&&(g=-1))):g===n&&(g+=1,g>=a.length&&(g=-1))});const y=e.Children.map(a,(t,n)=>{if(n===g){const n={};return o&&(n.autoFocus=!0),void 0===t.props.tabIndex&&"selectedMenu"===d&&(n.tabIndex=0),e.cloneElement(t,n)}return t});return(0,O.jsx)(ty,{role:"menu",ref:f,className:s,onKeyDown:e=>{const t=h.current,n=e.key;if(e.ctrlKey||e.metaKey||e.altKey)return void(u&&u(e));const r=Xg(t).activeElement;if("ArrowDown"===n)e.preventDefault(),uy(t,r,c,l,sy);else if("ArrowUp"===n)e.preventDefault(),uy(t,r,c,l,ly);else if("Home"===n)e.preventDefault(),uy(t,null,c,l,sy);else if("End"===n)e.preventDefault(),uy(t,null,c,l,ly);else if(1===n.length){const i=m.current,o=n.toLowerCase(),a=performance.now();i.keys.length>0&&(a-i.lastTime>500?(i.keys=[],i.repeating=!0,i.previousKeyMatched=!0):i.repeating&&o!==i.keys[0]&&(i.repeating=!1)),i.lastTime=a,i.keys.push(o);const s=r&&!i.repeating&&cy(r,i);i.previousKeyMatched&&(s||uy(t,r,!1,l,sy,i))?e.preventDefault():i.previousKeyMatched=!1}u&&u(e)},tabIndex:i?0:-1,...p,children:y})});function py(e){return Ig("MuiDivider",e)}const hy=wg("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]),my=bm("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.absolute&&t.absolute,t[n.variant],n.light&&t.light,"vertical"===n.orientation&&t.vertical,n.flexItem&&t.flexItem,n.children&&t.withChildren,n.children&&"vertical"===n.orientation&&t.withChildrenVertical,"right"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignRight,"left"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignLeft]}})(wm(({theme:e})=>({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(e.vars||e).palette.divider,borderBottomWidth:"thin",variants:[{props:{absolute:!0},style:{position:"absolute",bottom:0,left:0,width:"100%"}},{props:{light:!0},style:{borderColor:e.vars?`rgba(${e.vars.palette.dividerChannel} / 0.08)`:op(e.palette.divider,.08)}},{props:{variant:"inset"},style:{marginLeft:72}},{props:{variant:"middle",orientation:"horizontal"},style:{marginLeft:e.spacing(2),marginRight:e.spacing(2)}},{props:{variant:"middle",orientation:"vertical"},style:{marginTop:e.spacing(1),marginBottom:e.spacing(1)}},{props:{orientation:"vertical"},style:{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"}},{props:{flexItem:!0},style:{alignSelf:"stretch",height:"auto"}},{props:({ownerState:e})=>!!e.children,style:{display:"flex",textAlign:"center",border:0,borderTopStyle:"solid",borderLeftStyle:"solid","&::before, &::after":{content:'""',alignSelf:"center"}}},{props:({ownerState:e})=>e.children&&"vertical"!==e.orientation,style:{"&::before, &::after":{width:"100%",borderTop:`thin solid ${(e.vars||e).palette.divider}`,borderTopStyle:"inherit"}}},{props:({ownerState:e})=>"vertical"===e.orientation&&e.children,style:{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:`thin solid ${(e.vars||e).palette.divider}`,borderLeftStyle:"inherit"}}},{props:({ownerState:e})=>"right"===e.textAlign&&"vertical"!==e.orientation,style:{"&::before":{width:"90%"},"&::after":{width:"10%"}}},{props:({ownerState:e})=>"left"===e.textAlign&&"vertical"!==e.orientation,style:{"&::before":{width:"10%"},"&::after":{width:"90%"}}}]}))),fy=bm("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.wrapper,"vertical"===n.orientation&&t.wrapperVertical]}})(wm(({theme:e})=>({display:"inline-block",paddingLeft:`calc(${e.spacing(1)} * 1.2)`,paddingRight:`calc(${e.spacing(1)} * 1.2)`,whiteSpace:"nowrap",variants:[{props:{orientation:"vertical"},style:{paddingTop:`calc(${e.spacing(1)} * 1.2)`,paddingBottom:`calc(${e.spacing(1)} * 1.2)`}}]}))),gy=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiDivider"}),{absolute:r=!1,children:i,className:o,orientation:a="horizontal",component:s=(i||"vertical"===a?"div":"hr"),flexItem:l=!1,light:c=!1,role:u=("hr"!==s?"separator":void 0),textAlign:d="center",variant:p="fullWidth",...h}=n,m={...n,absolute:r,component:s,flexItem:l,light:c,orientation:a,role:u,textAlign:d,variant:p},f=(e=>{const{absolute:t,children:n,classes:r,flexItem:i,light:o,orientation:a,textAlign:s,variant:l}=e;return Gh({root:["root",t&&"absolute",l,o&&"light","vertical"===a&&"vertical",i&&"flexItem",n&&"withChildren",n&&"vertical"===a&&"withChildrenVertical","right"===s&&"vertical"!==a&&"textAlignRight","left"===s&&"vertical"!==a&&"textAlignLeft"],wrapper:["wrapper","vertical"===a&&"wrapperVertical"]},py,r)})(m);return(0,O.jsx)(my,{as:s,className:Hh(f.root,o),role:u,ref:t,ownerState:m,"aria-orientation":"separator"!==u||"hr"===s&&"vertical"!==a?void 0:a,...h,children:i?(0,O.jsx)(fy,{className:f.wrapper,ownerState:m,children:i}):null})});gy&&(gy.muiSkipListHighlight=!0);const yy=gy;function vy(e=[]){return([,t])=>t&&function(e,t=[]){if(!function(e){return"string"==typeof e.main}(e))return!1;for(const n of t)if(!e.hasOwnProperty(n)||"string"!=typeof e[n])return!1;return!0}(t,e)}class by{static create(){return new by}static use(){const t=Vh(by.create).current,[n,r]=e.useState(!1);return t.shouldMount=n,t.setShouldMount=r,e.useEffect(t.mountEffect,[n]),t}constructor(){this.ref={current:null},this.mounted=null,this.didMount=!1,this.shouldMount=!1,this.setShouldMount=null}mount(){return this.mounted||(this.mounted=function(){let e,t;const n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n}(),this.shouldMount=!0,this.setShouldMount(this.shouldMount)),this.mounted}mountEffect=()=>{this.shouldMount&&!this.didMount&&null!==this.ref.current&&(this.didMount=!0,this.mounted.resolve())};start(...e){this.mount().then(()=>this.ref.current?.start(...e))}stop(...e){this.mount().then(()=>this.ref.current?.stop(...e))}pulsate(...e){this.mount().then(()=>this.ref.current?.pulsate(...e))}}function xy(t,n){var r=Object.create(null);return t&&e.Children.map(t,function(e){return e}).forEach(function(t){r[t.key]=function(t){return n&&(0,e.isValidElement)(t)?n(t):t}(t)}),r}function Iy(e,t,n){return null!=n[t]?n[t]:e.props[t]}function wy(t,n,r){var i=xy(t.children),o=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,i=Object.create(null),o=[];for(var a in e)a in t?o.length&&(i[a]=o,o=[]):o.push(a);var s={};for(var l in t){if(i[l])for(r=0;r{var e,t,n,r,i={445(e){e.exports=function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,r=/\d\d/,i=/\d\d?/,o=/\d*[^-_:/,()\s\d]+/,a={},s=function(e){return(e=+e)+(e>68?1900:2e3)},l=function(e){return function(t){this[e]=+t}},c=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(e)}],u=function(e){var t=a[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=a.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?"pm":"PM");return n},p={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[i,l("seconds")],ss:[i,l("seconds")],m:[i,l("minutes")],mm:[i,l("minutes")],H:[i,l("hours")],h:[i,l("hours")],HH:[i,l("hours")],hh:[i,l("hours")],D:[i,l("day")],DD:[r,l("day")],Do:[o,function(e){var t=a.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,"")===e&&(this.day=r)}],w:[i,l("week")],ww:[r,l("week")],M:[i,l("month")],MM:[r,l("month")],MMM:[o,function(e){var t=u("months"),n=(u("monthsShort")||t.map(function(e){return e.slice(0,3)})).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u("months").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\d+/,l("year")],YY:[r,function(e){this.year=s(e)}],YYYY:[/\d{4}/,l("year")],Z:c,ZZ:c};function h(n){var r,i;r=n,i=a&&a.formats;for(var o=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(e,t,n){return t||n.slice(1)})})).match(t),s=o.length,l=0;l-1)return new Date(("X"===t?1e3:1)*e);var i=h(t)(e),o=i.year,a=i.month,s=i.day,l=i.hours,c=i.minutes,u=i.seconds,d=i.milliseconds,p=i.zone,m=i.week,f=new Date,g=s||(o||a?1:f.getDate()),y=o||f.getFullYear(),v=0;o&&!a||(v=a>0?a-1:f.getMonth());var b,x=l||0,I=c||0,w=u||0,k=d||0;return p?new Date(Date.UTC(y,v,g,x,I,w,k+60*p.offset*1e3)):n?new Date(Date.UTC(y,v,g,x,I,w,k)):(b=new Date(y,v,g,x,I,w,k),m&&(b=r(b).week(m).toDate()),b)}catch(e){return new Date("")}}(t,s,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(s)&&(this.$d=new Date("")),a={}}else if(s instanceof Array)for(var p=s.length,m=1;m<=p;m+=1){o[1]=s[m-1];var f=n.apply(this,o);if(f.isValid()){this.$d=f.$d,this.$L=f.$L,this.init();break}m===p&&(this.$d=new Date(""))}else i.call(this,e)}}}()},1020(e,t,n){"use strict";var r=n(1609),i=Symbol.for("react.element"),o=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,n){var r,l={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)o.call(t,r)&&!s.hasOwnProperty(r)&&(l[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===l[r]&&(l[r]=t[r]);return{$$typeof:i,type:e,key:c,ref:u,props:l,_owner:a.current}}t.jsx=l,t.jsxs=l},1609(e){"use strict";e.exports=window.React},2162(e,t,n){"use strict";var r=n(1609),i=n(9888),o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=i.useSyncExternalStore,s=r.useRef,l=r.useEffect,c=r.useMemo,u=r.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var d=s(null);if(null===d.current){var p={hasValue:!1,value:null};d.current=p}else p=d.current;d=c(function(){function e(e){if(!l){if(l=!0,a=e,e=r(e),void 0!==i&&p.hasValue){var t=p.value;if(i(t,e))return s=t}return s=e}if(t=s,o(a,e))return t;var n=r(e);return void 0!==i&&i(t,n)?(a=e,t):(a=e,s=n)}var a,s,l=!1,c=void 0===n?null:n;return[function(){return e(t())},null===c?void 0:function(){return e(c())}]},[t,n,r,i]);var h=a(e,d[0],d[1]);return l(function(){p.hasValue=!0,p.value=h},[h]),u(h),h}},3072(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,h=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,f=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,x=n?Symbol.for("react.scope"):60119;function I(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case o:case s:case a:case h:return e;default:switch(e=e&&e.$$typeof){case c:case p:case g:case f:case l:return e;default:return t}}case i:return t}}}function w(e){return I(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=l,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=g,t.Memo=f,t.Portal=i,t.Profiler=s,t.StrictMode=a,t.Suspense=h,t.isAsyncMode=function(e){return w(e)||I(e)===u},t.isConcurrentMode=w,t.isContextConsumer=function(e){return I(e)===c},t.isContextProvider=function(e){return I(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return I(e)===p},t.isFragment=function(e){return I(e)===o},t.isLazy=function(e){return I(e)===g},t.isMemo=function(e){return I(e)===f},t.isPortal=function(e){return I(e)===i},t.isProfiler=function(e){return I(e)===s},t.isStrictMode=function(e){return I(e)===a},t.isSuspense=function(e){return I(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===s||e===a||e===h||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===f||e.$$typeof===l||e.$$typeof===c||e.$$typeof===p||e.$$typeof===v||e.$$typeof===b||e.$$typeof===x||e.$$typeof===y)},t.typeOf=I},3404(e,t,n){"use strict";e.exports=n(3072)},4146(e,t,n){"use strict";var r=n(3404),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?a:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=a;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,h=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var i=h(n);i&&i!==m&&e(t,i,r)}var a=u(n);d&&(a=a.concat(d(n)));for(var s=l(t),f=l(n),g=0;g=t?e:""+Array(t+1-r.length).join(n)+e},y={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(i,2,"0")},m:function e(t,n){if(t.date()1)return e(a[0])}else{var s=t.name;b[s]=t,i=s}return!r&&i&&(v=i),i||!r&&v},k=function(e,t){if(I(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new M(n)},S=y;S.l=w,S.i=I,S.w=function(e,t){return k(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var M=function(){function f(e){this.$L=w(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var g=f.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(S.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(h);if(r){var i=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return S},g.isValid=function(){return!(this.$d.toString()===p)},g.isSame=function(e,t){var n=k(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return k(e)25){var o=i(this).startOf(t).add(1,t).date(r),a=i(this).endOf(e);if(o.isBefore(a))return 1}var s=i(this).startOf(t).date(r).startOf(e).subtract(1,"millisecond"),l=this.diff(s,e,!0);return l<0?i(this).startOf("week").week():Math.ceil(l)},o.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}()},8493(e,t,n){"use strict";var r=n(1609),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,a=r.useEffect,s=r.useLayoutEffect,l=r.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch(e){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),i=r[0].inst,u=r[1];return s(function(){i.value=n,i.getSnapshot=t,c(i)&&u({inst:i})},[e,n,t]),a(function(){return c(i)&&u({inst:i}),e(function(){c(i)&&u({inst:i})})},[e]),l(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:u},9242(e,t,n){"use strict";e.exports=n(2162)},9853(e){var t=.1,n="function"==typeof Float32Array;function r(e,t){return 1-3*t+3*e}function i(e,t){return 3*t-6*e}function o(e){return 3*e}function a(e,t,n){return((r(t,n)*e+i(t,n))*e+o(t))*e}function s(e,t,n){return 3*r(t,n)*e*e+2*i(t,n)*e+o(t)}function l(e){return e}e.exports=function(e,r,i,o){if(!(0<=e&&e<=1&&0<=i&&i<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===r&&i===o)return l;for(var c=n?new Float32Array(11):new Array(11),u=0;u<11;++u)c[u]=a(u*t,e,i);return function(n){return 0===n?0:1===n?1:a(function(n){for(var r=0,o=1;10!==o&&c[o]<=n;++o)r+=t;--o;var l=r+(n-c[o])/(c[o+1]-c[o])*t,u=s(l,e,i);return u>=.001?function(e,t,n,r){for(var i=0;i<4;++i){var o=s(t,n,r);if(0===o)return t;t-=(a(t,n,r)-e)/o}return t}(n,l,e,i):0===u?l:function(e,t,n,r,i){var o,s,l=0;do{(o=a(s=t+(n-t)/2,r,i)-e)>0?n=s:t=s}while(Math.abs(o)>1e-7&&++l<10);return s}(n,r,r+t,e,i)}(n),r,o)}}},9888(e,t,n){"use strict";e.exports=n(8493)}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=i,a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var i=Object.create(null);a.r(i);var o={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;("object"==typeof s||"function"==typeof s)&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach(e=>o[e]=()=>n[e]);return o.default=()=>n,a.d(i,o),i},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce((t,n)=>(a.f[n](e,t),t),[])),a.u=e=>e+".dash_mui_charts.min.js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},r="dash_mui_charts:",a.l=(e,t,i,o)=>{if(n[e])n[e].push(t);else{var s,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),u=0;u{s.onerror=s.onload=null,clearTimeout(h);var i=n[e];if(delete n[e],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach(e=>e(r)),t)return t(r)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=p.bind(null,s.onerror),s.onload=p.bind(null,s.onload),l&&document.head.appendChild(s)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})();var s,l=function(){var e=document.currentScript;if(!e){for(var t=document.getElementsByTagName("script"),n=[],r=0;r{var e={57:0};a.f.j=(t,n)=>{var r=a.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise((n,i)=>r=e[t]=[n,i]);n.push(r[2]=i);var o=a.p+a.u(t),s=new Error;a.l(o,n=>{if(a.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",s.name="ChunkLoadError",s.type=i,s.request=o,r[1](s)}},"chunk-"+t,t)}};var t=(t,n)=>{var r,i,[o,s,l]=n,c=0;if(o.some(t=>0!==e[t])){for(r in s)a.o(s,r)&&(a.m[r]=s[r]);l&&l(a)}for(t&&t(n);c{"use strict";a.r(u),a.d(u,{BarChart:()=>YR,CandlestickChart:()=>iD,CompositeChart:()=>dR,Heatmap:()=>Nj,LineChart:()=>$A,LiveTradingChart:()=>ER,PieChart:()=>PL,ScatterChart:()=>KL,SimpleTreeView:()=>x_,SparklineChart:()=>DO,TimeClock:()=>wU,TreeView:()=>o_,TreeViewPro:()=>SB});var e=a(1609),t=a.t(e,2),n=a.n(e);const r=window.PropTypes;var i=a.n(r);const o="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();o.__MUI_LICENSE_INFO__=o.__MUI_LICENSE_INFO__||{key:void 0};class s{static getLicenseInfo(){return o.__MUI_LICENSE_INFO__}static getLicenseKey(){return s.getLicenseInfo().key}static setLicenseKey(e){s.getLicenseInfo().key=e}}function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{},h={licenseVerification:()=>null},m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",f=e=>{let t,n,r,i,o,a,s,l="",c=0;for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");c>4,n=(15&o)<<4|a>>2,r=(3&a)<<6|s,l+=String.fromCharCode(t),64!=a&&(l+=String.fromCharCode(n)),64!=s&&(l+=String.fromCharCode(r));return l},g=[];let y=0;for(;y<64;)g[y]=0|4294967296*Math.sin(++y%Math.PI);let v=function(e){return e.NotFound="NotFound",e.Invalid="Invalid",e.ExpiredAnnual="ExpiredAnnual",e.ExpiredAnnualGrace="ExpiredAnnualGrace",e.ExpiredVersion="ExpiredVersion",e.Valid="Valid",e.OutOfScope="OutOfScope",e.NotAvailableInInitialProPlan="NotAvailableInInitialProPlan",e}({});const b=["pro","premium"],x=["perpetual","annual","subscription"],I=/^.*EXPIRY=([0-9]+),.*$/,w=/^.*ORDER:([0-9]+),.*$/,k=["x-data-grid-pro","x-date-pickers-pro"];function S({releaseInfo:e,licenseKey:t,packageName:n}){if(!e)throw new Error("MUI X: The release information is missing. Not able to validate license.");if(!t)return{status:v.NotFound};const r=t.substr(0,32),i=t.substr(32);if(r!==function(e){const t=[];let n,r,i,o=unescape(encodeURI(e))+"€",a=o.length;const s=[n=1732584193,r=4023233417,~n,~r];for(e=--a/4+2|15,t[--e]=8*a;~a;)t[a>>2]|=o.charCodeAt(a)<<8*a--;for(y=o=0;y>4]+g[o]+~~t[y|15&[o,5*o+1,3*o+5,7*o][a]])<<(a=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*a+o++%4])|i>>>-a),n,r])n=0|a[1],r=a[2];for(o=4;o;)s[--o]+=a[o]}for(e="";o<32;)e+=(s[o>>3]>>4*(1^o++)&15).toString(16);return e}(i))return{status:v.Invalid};const o=function(e){const t=f(e);return t.includes("KEYVERSION=1")?function(e){let t,n;try{t=parseInt(e.match(I)[1],10),t&&!Number.isNaN(t)||(t=null),n=parseInt(e.match(w)[1],10),n&&!Number.isNaN(n)||(n=null)}catch(e){t=null,n=null}return{version:1,licenseModel:"perpetual",planScope:"pro",planVersion:"initial",expiryTimestamp:t,expiryDate:t?new Date(t):null,orderId:n}}(t):t.includes("KV=2")?function(e){const t={version:2,licenseModel:null,planScope:null,planVersion:"initial",expiryTimestamp:null,expiryDate:null,orderId:null};return e.split(",").map(e=>e.split("=")).filter(e=>2===e.length).forEach(([e,n])=>{if("S"===e&&(t.planScope=n),"LM"===e&&(t.licenseModel=n),"E"===e){const e=parseInt(n,10);e&&!Number.isNaN(e)&&(t.expiryTimestamp=e,t.expiryDate=new Date(e))}if("PV"===e&&(t.planVersion=n),"O"===e){const e=parseInt(n,10);e&&!Number.isNaN(e)&&(t.orderId=e)}}),t}(t):null}(i);if(null==o)return console.error("MUI X: Error checking license. Key version not found!"),{status:v.Invalid};if(null==o.licenseModel||!x.includes(o.licenseModel))return console.error("MUI X: Error checking license. License model not found or invalid!"),{status:v.Invalid};if(null==o.expiryTimestamp)return console.error("MUI X: Error checking license. Expiry timestamp not found or invalid!"),{status:v.Invalid};o.licenseModel;{const t=parseInt(f(e),10);if(Number.isNaN(t))throw new Error("MUI X: The release information is invalid. Not able to validate license.");if(o.expiryTimestamp{const e=r??M.getLicenseKey();if(T[t]&&T[t].key===e)return T[t].licenseVerifier;const i=t.includes("premium")?"Premium":"Pro",o=S({releaseInfo:n,licenseKey:e,packageName:t}),a=`@mui/${t}`;return p(h.licenseVerification({licenseKey:e},{packageName:t,packageReleaseInfo:n,licenseStatus:o?.status})),o.status===v.Valid||(o.status===v.Invalid?P(["MUI X: Invalid license key.","","Your MUI X license key format isn't valid. It could be because the license key is missing a character or has a typo.","","To solve the issue, you need to double check that `setLicenseKey()` is called with the right argument","Please check the license key installation https://mui.com/r/x-license-key-installation."]):o.status===v.NotAvailableInInitialProPlan?P(["MUI X: Component not included in your license.","","The component you are trying to use is not included in the Pro Plan you purchased.","","Your license is from an old version of the Pro Plan that is only compatible with the `@mui/x-data-grid-pro` and `@mui/x-date-pickers-pro` commercial packages.","","To start using another Pro package, please consider reaching to our sales team to upgrade your license or visit https://mui.com/r/x-get-license to get a new license key."]):o.status===v.OutOfScope?function({packageName:e}){const t=e.replace(/-(premium|pro)$/,"");P(["MUI X: License key plan mismatch.","","Your use of MUI X is not compatible with the plan of your license key. The feature you are trying to use is not included in the plan of your license key. This happens if you try to use Data Grid Premium with a license key for the Pro plan.","","To solve the issue, you can upgrade your plan from Pro to Premium at https://mui.com/r/x-get-license?scope=premium.",`Or if you didn't intend to use Premium features, you can replace the import of \`${t}-premium\` with \`${t}-pro\`.`])}({packageName:a}):o.status===v.NotFound?function({plan:e,packageName:t}){P(["MUI X: Missing license key.","",`The license key is missing. You might not be allowed to use \`${t}\` which is part of MUI X ${e}.`,"","To solve the issue, you can check the free trial conditions: https://mui.com/r/x-license-trial.","If you are eligible no actions are required. If you are not eligible to the free trial, you need to purchase a license https://mui.com/r/x-get-license or stop using the software immediately."])}({plan:i,packageName:a}):o.status===v.ExpiredAnnualGrace?function({plan:e,licenseKey:t,expiryTimestamp:n}){P(["MUI X: Expired license key.","",`Your annual license key to use MUI X ${e} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${e} component (more details in https://mui.com/r/x-license-annual).`,"","To solve the problem you can either:","","- Renew your license https://mui.com/r/x-get-license and use the new key",`- Stop making changes to code depending directly or indirectly on MUI X ${e}'s APIs`,"","Note that your license is perpetual in production environments with any version released before your license term ends.","",`- License key expiry timestamp: ${new Date(n)}`,`- Installed license key: ${t}`,""])}(l({plan:i},o.meta)):o.status===v.ExpiredAnnual?function({plan:e,licenseKey:t,expiryTimestamp:n}){throw new Error(["MUI X: Expired license key.","",`Your annual license key to use MUI X ${e} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${e} component (more details in https://mui.com/r/x-license-annual).`,"","To solve the problem you can either:","","- Renew your license https://mui.com/r/x-get-license and use the new key",`- Stop making changes to code depending directly or indirectly on MUI X ${e}'s APIs`,"","Note that your license is perpetual in production environments with any version released before your license term ends.","",`- License key expiry timestamp: ${new Date(n)}`,`- Installed license key: ${t}`,""].join("\n"))}(l({plan:i},o.meta)):o.status===v.ExpiredVersion&&function({packageName:e}){P(["MUI X: Expired package version.","",`You have installed a version of \`${e}\` that is outside of the maintenance plan of your license key. By default, commercial licenses provide access to new versions released during the first year after the purchase.`,"","To solve the issue, you can renew your license https://mui.com/r/x-get-license or install an older version of the npm package that is compatible with your license key."])}({packageName:a})),T[t]={key:e,licenseVerifier:o},o},[t,n,r])}var O=a(4848);function j(e){switch(e){case v.ExpiredAnnualGrace:case v.ExpiredAnnual:return"MUI X Expired license key";case v.ExpiredVersion:return"MUI X Expired package version";case v.Invalid:return"MUI X Invalid license key";case v.OutOfScope:return"MUI X License key plan mismatch";case v.NotAvailableInInitialProPlan:return"MUI X Product not covered by plan";case v.NotFound:return"MUI X Missing license key";default:throw new Error("Unhandled MUI X license status.")}}const L=(R=function(e){const{packageName:t,releaseInfo:n}=e,r=A(t,n);return r.status===v.Valid?null:(0,O.jsx)("div",{style:{position:"absolute",pointerEvents:"none",color:"#8282829e",zIndex:1e5,width:"100%",textAlign:"center",bottom:"50%",right:0,letterSpacing:5,fontSize:24},children:j(r.status)})},e.memo(R,d));var R;let D=0;const $={...t}.useId;function z(t){if(void 0!==$){const e=$();return t??e}return function(t){const[n,r]=e.useState(t),i=t||n;return e.useEffect(()=>{null==n&&(D+=1,r(`mui-${D}`))},[n]),i}(t)}var N=a(9888),_=a(9242);const F=parseInt(e.version,10),H=F>=19?function(t,n,r,i,o){const a=e.useCallback(()=>n(t.getSnapshot(),r,i,o),[t,n,r,i,o]);return(0,N.useSyncExternalStore)(t.subscribe,a,a)}:function(e,t,n,r,i){return(0,_.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,e=>t(e,n,r,i))};class B{static create(e){return new B(e)}constructor(e){this.state=e,this.listeners=new Set,this.updateTick=0}subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.state;setState(e){this.state=e,this.updateTick+=1;const t=this.updateTick,n=this.listeners.values();let r;for(;r=n.next(),!r.done;){if(t!==this.updateTick)return;(0,r.value)(e)}}update(e){for(const t in e)if(!Object.is(this.state[t],e[t]))return void this.setState(l({},this.state,e))}set(e,t){Object.is(this.state[e],t)||this.setState(l({},this.state,{[e]:t}))}use=(()=>(e,t,n,r)=>function(e,t,n,r,i){return H(e,t,n,r,i)}(this,e,t,n,r))()}const V="undefined"!=typeof window?e.useLayoutEffect:e.useEffect,U=({params:t,store:n})=>{e.useEffect(()=>{n.set("animation",l({},n.state.animation,{skip:t.skipAnimation}))},[n,t.skipAnimation]);const r=e.useCallback(()=>{let e=!1;return n.set("animation",l({},n.state.animation,{skipAnimationRequests:n.state.animation.skipAnimationRequests+1})),()=>{e||(e=!0,n.set("animation",l({},n.state.animation,{skipAnimationRequests:n.state.animation.skipAnimationRequests-1})))}},[n]);return V(()=>{if("undefined"==typeof window||!window?.matchMedia)return;let e;const t=t=>{t.matches?e=r():e?.()},n=window.matchMedia("(prefers-reduced-motion)");return t(n),n.addEventListener("change",t),()=>{n.removeEventListener("change",t)}},[r,n]),{instance:{disableAnimation:r}}};function Y(t,n){const r=e.useRef(!0);e.useEffect(()=>{if(!r.current)return t();r.current=!1},n)}U.params={skipAnimation:!0},U.getDefaultizedParams=({params:e})=>l({},e,{skipAnimation:e.skipAnimation??!1}),U.getInitialState=({skipAnimation:e})=>("undefined"==typeof window||window,{animation:{skip:e,skipAnimationRequests:0}});const W="DEFAULT_X_AXIS_KEY",G="DEFAULT_Y_AXIS_KEY",K={top:20,bottom:20,left:20,right:20};var q=Symbol("NOT_FOUND");var X=e=>Array.isArray(e)?e:[e];Symbol(),Object.getPrototypeOf({});var Z=(e,t)=>e===t;function J(e,t){const n="object"==typeof t?t:{equalityCheck:t},{equalityCheck:r=Z,maxSize:i=1,resultEqualityCheck:o}=n,a=function(e){return function(t,n){if(null===t||null===n||t.length!==n.length)return!1;const{length:r}=t;for(let i=0;it&&e(t.key,n)?t.value:q,put(e,n){t={key:e,value:n}},getEntries:()=>t?[t]:[],clear(){t=void 0}}}(a):function(e,t){let n=[];function r(e){const r=n.findIndex(n=>t(e,n.key));if(r>-1){const e=n[r];return r>0&&(n.splice(r,1),n.unshift(e)),e.value}return q}return{get:r,put:function(t,i){r(t)===q&&(n.unshift({key:t,value:i}),n.length>e&&n.pop())},getEntries:function(){return n},clear:function(){n=[]}}}(i,a);function c(){let t=l.get(arguments);if(t===q){if(t=e.apply(null,arguments),s++,o){const e=l.getEntries().find(e=>o(e.value,t));e&&(t=e.value,0!==s&&s--)}l.put(arguments,t)}return t}return c.clearCache=()=>{l.clear(),c.resetResultsCount()},c.resultsCount=()=>s,c.resetResultsCount=()=>{s=0},c}var Q="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}};function ee(){return{s:0,v:void 0,o:null,p:null}}function te(e,t={}){let n={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:r}=t;let i,o=0;function a(){let t=n;const{length:a}=arguments;for(let e=0,n=a;e{n={s:0,v:void 0,o:null,p:null},a.resetResultsCount()},a.resultsCount=()=>o,a.resetResultsCount=()=>{o=0},a}function ne(e,...t){const n="function"==typeof e?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t,r=0,i=0,o={},a=e.pop();"object"==typeof a&&(o=a,a=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(a,`createSelector expects an output function after the inputs, but received: [${typeof a}]`);const s={...n,...o},{memoize:l,memoizeOptions:c=[],argsMemoize:u=te,argsMemoizeOptions:d=[],devModeChecks:p={}}=s,h=X(c),m=X(d),f=function(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(e=>"function"==typeof e)){const n=e.map(e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e).join(", ");throw new TypeError(`${t}[${n}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}(e),g=l(function(){return r++,a.apply(null,arguments)},...h),y=u(function(){i++;const e=function(e,t){const n=[],{length:r}=e;for(let i=0;ii,resetDependencyRecomputations:()=>{i=0},lastResult:()=>t,recomputations:()=>r,resetRecomputations:()=>{r=0},memoize:l,argsMemoize:u})};return Object.assign(r,{withTypes:()=>r}),r}var re=ne(te),ie=Object.assign((e,t=re)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const n=Object.keys(e),r=t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}));return r},{withTypes:()=>ie});const oe=ne({memoize:J,memoizeOptions:{maxSize:1,equalityCheck:Object.is}}),ae=(e,t,n,r,i,o,a,s,...l)=>{if(l.length>0)throw new Error("Unsupported number of selectors");let c;if(e&&t&&n&&r&&i&&o&&a&&s)c=(l,c,u,d)=>{const p=e(l,c,u,d),h=t(l,c,u,d),m=n(l,c,u,d),f=r(l,c,u,d),g=i(l,c,u,d),y=o(l,c,u,d),v=a(l,c,u,d);return s(p,h,m,f,g,y,v,c,u,d)};else if(e&&t&&n&&r&&i&&o&&a)c=(s,l,c,u)=>{const d=e(s,l,c,u),p=t(s,l,c,u),h=n(s,l,c,u),m=r(s,l,c,u),f=i(s,l,c,u),g=o(s,l,c,u);return a(d,p,h,m,f,g,l,c,u)};else if(e&&t&&n&&r&&i&&o)c=(a,s,l,c)=>{const u=e(a,s,l,c),d=t(a,s,l,c),p=n(a,s,l,c),h=r(a,s,l,c),m=i(a,s,l,c);return o(u,d,p,h,m,s,l,c)};else if(e&&t&&n&&r&&i)c=(o,a,s,l)=>{const c=e(o,a,s,l),u=t(o,a,s,l),d=n(o,a,s,l),p=r(o,a,s,l);return i(c,u,d,p,a,s,l)};else if(e&&t&&n&&r)c=(i,o,a,s)=>{const l=e(i,o,a,s),c=t(i,o,a,s),u=n(i,o,a,s);return r(l,c,u,o,a,s)};else if(e&&t&&n)c=(r,i,o,a)=>{const s=e(r,i,o,a),l=t(r,i,o,a);return n(s,l,i,o,a)};else if(e&&t)c=(n,r,i,o)=>{const a=e(n,r,i,o);return t(a,r,i,o)};else{if(!e)throw new Error("Missing arguments");c=e}return c},se=e=>(...t)=>{const n=new WeakMap;let r=1;const i=t[t.length-1],o=t.length-1||1,a=Math.max(i.length-o,0);if(a>3)throw new Error("Unsupported number of arguments");return(o,s,l,c)=>{let u=o.__cacheKey__;u||(u={id:r},o.__cacheKey__=u,r+=1);let d=n.get(u);if(!d){const r=1===t.length?[e=>e,i]:t;let o=t;const s=[void 0,void 0,void 0];switch(a){case 0:break;case 1:o=[...r.slice(0,-1),()=>s[0],i];break;case 2:o=[...r.slice(0,-1),()=>s[0],()=>s[1],i];break;case 3:o=[...r.slice(0,-1),()=>s[0],()=>s[1],()=>s[2],i];break;default:throw new Error("Unsupported number of arguments")}e&&(o=[...o,e]),d=oe(...o),d.selectorArgs=s,n.set(u,d)}switch(a){case 3:d.selectorArgs[2]=c;case 2:d.selectorArgs[1]=l;case 1:d.selectorArgs[0]=s}switch(a){case 0:return d(o);case 1:return d(o,s);case 2:return d(o,s,l);case 3:return d(o,s,l,c);default:throw new Error("unreachable")}}},le=se(),ce=e=>e.cartesianAxis?.x,ue=e=>e.cartesianAxis?.y,de=le(ae(ue,function(e){return(e??[]).reduce((e,t)=>"left"===t.position?e+(t.width||0)+(t.zoom?.slider.enabled?t.zoom.slider.size:0):e,0)}),ae(ue,function(e){return(e??[]).reduce((e,t)=>"right"===t.position?e+(t.width||0)+(t.zoom?.slider.enabled?t.zoom.slider.size:0):e,0)}),ae(ce,function(e){return(e??[]).reduce((e,t)=>"top"===t.position?e+(t.height||0)+(t.zoom?.slider.enabled?t.zoom.slider.size:0):e,0)}),ae(ce,function(e){return(e??[]).reduce((e,t)=>"bottom"===t.position?e+(t.height||0)+(t.zoom?.slider.enabled?t.zoom.slider.size:0):e,0)}),function(e,t,n,r){return{left:e,right:t,top:n,bottom:r}}),pe=e=>e.dimensions,he=le(pe,e=>e.dimensions.margin,de,function({width:e,height:t},{top:n,right:r,bottom:i,left:o},{left:a,right:s,top:l,bottom:c}){return{width:e-o-r-a-s,left:o+a,right:r+s,height:t-n-i-l-c,top:n+l,bottom:i+c}}),me=ae(pe,e=>e.width),fe=ae(pe,e=>e.height),ge=ae(pe,e=>e.propsWidth),ye=ae(pe,e=>e.propsHeight);function ve(e,t){return"number"==typeof e?{top:e,bottom:e,left:e,right:e}:t?l({},t,e):e}const be=({params:t,store:n,svgRef:r})=>{const i=void 0!==t.width&&void 0!==t.height,o=e.useRef({displayError:!1,initialCompute:!0,computeRun:0}),[a,s]=e.useState(0),[l,c]=e.useState(0),u=e.useCallback(()=>{const e=r?.current;if(!e)return{};const i=function(e){const t=function(e){return e&&e.ownerDocument||document}(e);return t.defaultView||window}(e).getComputedStyle(e),o=Math.floor(parseFloat(i.height))||0,a=Math.floor(parseFloat(i.width))||0;return n.state.dimensions.width===a&&n.state.dimensions.height===o||n.set("dimensions",{margin:{top:t.margin.top,right:t.margin.right,bottom:t.margin.bottom,left:t.margin.left},width:t.width??a,height:t.height??o,propsWidth:t.width,propsHeight:t.height}),{height:o,width:a}},[n,r,t.height,t.width,t.margin.left,t.margin.right,t.margin.top,t.margin.bottom]);Y(()=>{const e=t.width??n.state.dimensions.width,r=t.height??n.state.dimensions.height;n.set("dimensions",{margin:{top:t.margin.top,right:t.margin.right,bottom:t.margin.bottom,left:t.margin.left},width:e,height:r,propsHeight:t.height,propsWidth:t.width})},[n,t.height,t.width,t.margin.left,t.margin.right,t.margin.top,t.margin.bottom]),e.useEffect(()=>{o.current.displayError=!0},[]),V(()=>{if(i||!o.current.initialCompute||o.current.computeRun>10)return;const e=u();e.width!==a||e.height!==l?(o.current.computeRun+=1,void 0!==e.width&&s(e.width),void 0!==e.height&&c(e.height)):o.current.initialCompute&&(o.current.initialCompute=!1)},[l,a,u,i]),V(()=>{if(i)return()=>{};u();const e=r.current;if("undefined"==typeof ResizeObserver)return()=>{};let t;const n=new ResizeObserver(()=>{t=requestAnimationFrame(()=>{u()})});return e&&n.observe(e),()=>{t&&cancelAnimationFrame(t),e&&n.unobserve(e)}},[u,i,r]);const d=n.use(he),p=e.useCallback(e=>e>=d.left-1&&e<=d.left+d.width,[d.left,d.width]),h=e.useCallback(e=>e>=d.top-1&&e<=d.top+d.height,[d.height,d.top]);return{instance:{isPointInside:e.useCallback((e,t,n)=>!!(n&&"closest"in n&&n.closest("[data-drawing-container]"))||p(e)&&h(t),[p,h]),isXInside:p,isYInside:h}}};be.params={width:!0,height:!0,margin:!0},be.getDefaultizedParams=({params:e})=>l({},e,{margin:ve(e.margin,K)}),be.getInitialState=({width:e,height:t,margin:n})=>({dimensions:{margin:n,width:e??0,height:t??0,propsWidth:e,propsHeight:t}});const xe=({params:e,store:t})=>(V(()=>{t.set("experimentalFeatures",e.experimentalFeatures)},[t,e.experimentalFeatures]),{});xe.params={experimentalFeatures:!0},xe.getInitialState=({experimentalFeatures:e})=>({experimentalFeatures:e});let Ie=0;const we=({params:t,store:n})=>(e.useEffect(()=>{void 0===t.id||t.id===n.state.id.providedChartId&&void 0!==n.state.id.chartId||n.set("id",l({},n.state.id,{chartId:t.id??(Ie+=1,`mui-chart-${Ie}`)}))},[n,t.id]),{});we.params={id:!0},we.getInitialState=({id:e})=>({id:{chartId:e,providedChartId:e}});const ke=function(t){const n=e.useRef(t);return V(()=>{n.current=t}),e.useRef((...e)=>(0,n.current)(...e)).current},Se=["#4254FB","#FFB422","#FA4F58","#0DBEFF","#22BF75","#FA83B4","#FF7511"],Me=["#495AFB","#FFC758","#F35865","#30C8FF","#44CE8D","#F286B3","#FF8C39"],Ce=e=>"dark"===e?Me:Se,Pe=({series:e,colors:t,seriesConfig:n})=>{const r={};return e.forEach((e,i)=>{const o=n[e.type].getSeriesWithDefaultValues(e,i,t),a=o.id;if(void 0===r[e.type]&&(r[e.type]={series:{},seriesOrder:[]}),void 0!==r[e.type]?.series[a])throw new Error(`MUI X Charts: series' id "${a}" is not unique.`);r[e.type].series[a]=o,r[e.type].seriesOrder.push(a)}),r},Ee=(e,t)=>{const n=e[t.type]?.identifierSerializer;if(!n)throw new Error(`MUI X Charts: No identifier serializer found for series type "${t.type}".`);return n(t)},Te=({params:e,store:t,seriesConfig:n})=>{const{series:r,dataset:i,theme:o,colors:a}=e;Y(()=>{t.set("series",l({},t.state.series,{defaultizedSeries:Pe({series:r,colors:"function"==typeof a?a(o):a,seriesConfig:n}),dataset:i}))},[a,i,r,o,n,t]);const s=ke(e=>Ee(n,e));return{instance:{serializeIdentifier:s}}};Te.params={dataset:!0,series:!0,colors:!0,theme:!0};const Ae=[];Te.getDefaultizedParams=({params:e})=>l({},e,{series:e.series?.length?e.series:Ae,colors:e.colors??Ce,theme:e.theme??"light"}),Te.getInitialState=({series:e=[],colors:t,theme:n,dataset:r},i,o)=>({series:{seriesConfig:o,defaultizedSeries:Pe({series:e,colors:"function"==typeof t?t(n):t,seriesConfig:o}),dataset:r}});class Oe{activeGestures=(()=>new Map)();registerActiveGesture(e,t){this.activeGestures.has(e)||this.activeGestures.set(e,new Set);const n={gesture:t,element:e};this.activeGestures.get(e).add(n)}unregisterActiveGesture(e,t){const n=this.activeGestures.get(e);n&&(n.forEach(e=>{e.gesture===t&&n.delete(e)}),0===n.size&&this.activeGestures.delete(e))}getActiveGestures(e){const t=this.activeGestures.get(e);return t?Array.from(t).reduce((e,t)=>(e[t.gesture.name]=!0,e),{}):{}}isGestureActive(e,t){const n=this.activeGestures.get(e);return!!n&&Array.from(n).some(e=>e.gesture===t)}destroy(){this.activeGestures.clear()}unregisterElement(e){this.activeGestures.delete(e)}}class je{pressedKeys=(()=>new Set)();constructor(){this.initialize()}initialize(){"undefined"!=typeof window&&(window.addEventListener("keydown",this.handleKeyDown),window.addEventListener("keyup",this.handleKeyUp),window.addEventListener("blur",this.clearKeys))}handleKeyDown=e=>{this.pressedKeys.add(e.key)};handleKeyUp=e=>{this.pressedKeys.delete(e.key)};clearKeys=()=>{this.pressedKeys.clear()};areKeysPressed(e){return!e||0===e.length||e.every(e=>"ControlOrMeta"===e?navigator.platform.includes("Mac")?this.pressedKeys.has("Meta"):this.pressedKeys.has("Control"):this.pressedKeys.has(e))}destroy(){"undefined"!=typeof window&&(window.removeEventListener("keydown",this.handleKeyDown),window.removeEventListener("keyup",this.handleKeyUp),window.removeEventListener("blur",this.clearKeys)),this.clearKeys()}}class Le{preventEventInterruption=!0;pointers=(()=>new Map)();gestureHandlers=(()=>new Set)();constructor(e){this.root=e.root??document.getRootNode({composed:!0})??document.body,this.touchAction=e.touchAction||"auto",this.passive=e.passive??!1,this.preventEventInterruption=e.preventEventInterruption??!0,this.setupEventListeners()}registerGestureHandler(e){return this.gestureHandlers.add(e),()=>{this.gestureHandlers.delete(e)}}getPointers(){return new Map(this.pointers)}setupEventListeners(){"auto"!==this.touchAction&&(this.root.style.touchAction=this.touchAction),this.root.addEventListener("pointerdown",this.handlePointerEvent,{passive:this.passive}),this.root.addEventListener("pointermove",this.handlePointerEvent,{passive:this.passive}),this.root.addEventListener("pointerup",this.handlePointerEvent,{passive:this.passive}),this.root.addEventListener("pointercancel",this.handlePointerEvent,{passive:this.passive}),this.root.addEventListener("forceCancel",this.handlePointerEvent,{passive:this.passive}),this.root.addEventListener("blur",this.handleInterruptEvents),this.root.addEventListener("contextmenu",this.handleInterruptEvents)}handleInterruptEvents=e=>{if(this.preventEventInterruption&&"pointerType"in e&&"touch"===e.pointerType)return void e.preventDefault();const t=new PointerEvent("forceCancel",{bubbles:!1,cancelable:!1}),n=this.pointers.values().next().value;if(this.pointers.size>0&&n){Object.defineProperties(t,{clientX:{value:n.clientX},clientY:{value:n.clientY},pointerId:{value:n.pointerId},pointerType:{value:n.pointerType}});for(const[e,t]of this.pointers.entries()){const n=l({},t,{type:"forceCancel"});this.pointers.set(e,n)}}this.notifyHandlers(t),this.pointers.clear()};handlePointerEvent=e=>{const{type:t,pointerId:n}=e;if("pointerdown"===t||"pointermove"===t)this.pointers.set(n,this.createPointerData(e));else if("pointerup"===t||"pointercancel"===t||"forceCancel"===t)return this.pointers.set(n,this.createPointerData(e)),this.notifyHandlers(e),void this.pointers.delete(n);this.notifyHandlers(e)};notifyHandlers(e){this.gestureHandlers.forEach(t=>t(this.pointers,e))}createPointerData(e){return{pointerId:e.pointerId,clientX:e.clientX,clientY:e.clientY,pageX:e.pageX,pageY:e.pageY,target:e.target,timeStamp:e.timeStamp,type:e.type,isPrimary:e.isPrimary,pressure:e.pressure,width:e.width,height:e.height,pointerType:e.pointerType,srcEvent:e}}destroy(){this.root.removeEventListener("pointerdown",this.handlePointerEvent),this.root.removeEventListener("pointermove",this.handlePointerEvent),this.root.removeEventListener("pointerup",this.handlePointerEvent),this.root.removeEventListener("pointercancel",this.handlePointerEvent),this.root.removeEventListener("forceCancel",this.handlePointerEvent),this.root.removeEventListener("blur",this.handleInterruptEvents),this.root.removeEventListener("contextmenu",this.handleInterruptEvents),this.pointers.clear(),this.gestureHandlers.clear()}}class Re{gestureTemplates=(()=>new Map)();elementGestureMap=(()=>new Map)();activeGesturesRegistry=(()=>new Oe)();keyboardManager=(()=>new je)();constructor(e){this.pointerManager=new Le({root:e.root,touchAction:e.touchAction,passive:e.passive}),e.gestures&&e.gestures.length>0&&e.gestures.forEach(e=>{this.addGestureTemplate(e)})}addGestureTemplate(e){this.gestureTemplates.has(e.name)&&console.warn(`Gesture template with name "${e.name}" already exists. It will be overwritten.`),this.gestureTemplates.set(e.name,e)}setGestureOptions(e,t,n){const r=this.elementGestureMap.get(t);if(!r||!r.has(e))return void console.error(`Gesture "${e}" not found on the provided element.`);const i=new CustomEvent(`${e}ChangeOptions`,{detail:n,bubbles:!1,cancelable:!1,composed:!1});t.dispatchEvent(i)}setGestureState(e,t,n){const r=this.elementGestureMap.get(t);if(!r||!r.has(e))return void console.error(`Gesture "${e}" not found on the provided element.`);const i=new CustomEvent(`${e}ChangeState`,{detail:n,bubbles:!1,cancelable:!1,composed:!1});t.dispatchEvent(i)}registerElement(e,t,n){return Array.isArray(e)||(e=[e]),e.forEach(e=>{const r=n?.[e];this.registerSingleGesture(e,t,r)}),t}registerSingleGesture(e,t,n){const r=this.gestureTemplates.get(e);if(!r)return console.error(`Gesture template "${e}" not found.`),!1;this.elementGestureMap.has(t)||this.elementGestureMap.set(t,new Map);const i=this.elementGestureMap.get(t);i.has(e)&&(console.warn(`Element already has gesture "${e}" registered. It will be replaced.`),this.unregisterElement(e,t));const o=r.clone(n);return o.init(t,this.pointerManager,this.activeGesturesRegistry,this.keyboardManager),i.set(e,o),!0}unregisterElement(e,t){const n=this.elementGestureMap.get(t);return!(!n||!n.has(e))&&(n.get(e).destroy(),n.delete(e),this.activeGesturesRegistry.unregisterElement(t),0===n.size&&this.elementGestureMap.delete(t),!0)}unregisterAllGestures(e){const t=this.elementGestureMap.get(e);if(t){for(const[,n]of t)n.destroy(),this.activeGesturesRegistry.unregisterElement(e);this.elementGestureMap.delete(e)}}destroy(){for(const[e]of this.elementGestureMap)this.unregisterAllGestures(e);this.gestureTemplates.clear(),this.elementGestureMap.clear(),this.activeGesturesRegistry.destroy(),this.keyboardManager.destroy(),this.pointerManager.destroy()}}const De={abort:!0,animationcancel:!0,animationend:!0,animationiteration:!0,animationstart:!0,auxclick:!0,beforeinput:!0,beforetoggle:!0,blur:!0,cancel:!0,canplay:!0,canplaythrough:!0,change:!0,click:!0,close:!0,compositionend:!0,compositionstart:!0,compositionupdate:!0,contextlost:!0,contextmenu:!0,contextrestored:!0,copy:!0,cuechange:!0,cut:!0,dblclick:!0,drag:!0,dragend:!0,dragenter:!0,dragleave:!0,dragover:!0,dragstart:!0,drop:!0,durationchange:!0,emptied:!0,ended:!0,error:!0,focus:!0,focusin:!0,focusout:!0,formdata:!0,gotpointercapture:!0,input:!0,invalid:!0,keydown:!0,keypress:!0,keyup:!0,load:!0,loadeddata:!0,loadedmetadata:!0,loadstart:!0,lostpointercapture:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,paste:!0,pause:!0,play:!0,playing:!0,pointercancel:!0,pointerdown:!0,pointerenter:!0,pointerleave:!0,pointermove:!0,pointerout:!0,pointerover:!0,pointerup:!0,progress:!0,ratechange:!0,reset:!0,resize:!0,scroll:!0,scrollend:!0,securitypolicyviolation:!0,seeked:!0,seeking:!0,select:!0,selectionchange:!0,selectstart:!0,slotchange:!0,stalled:!0,submit:!0,suspend:!0,timeupdate:!0,toggle:!0,touchcancel:!0,touchend:!0,touchmove:!0,touchstart:!0,transitioncancel:!0,transitionend:!0,transitionrun:!0,transitionstart:!0,volumechange:!0,waiting:!0,webkitanimationend:!0,webkitanimationiteration:!0,webkitanimationstart:!0,webkittransitionend:!0,wheel:!0,beforematch:!0,pointerrawupdate:!0};class $e{customData={};constructor(e){if(!e||!e.name)throw new Error("Gesture must be initialized with a valid name.");if(e.name in De)throw new Error(`Gesture can't be created with a native event name. Tried to use "${e.name}". Please use a custom name instead.`);this.name=e.name,this.preventDefault=e.preventDefault??!1,this.stopPropagation=e.stopPropagation??!1,this.preventIf=e.preventIf??[],this.requiredKeys=e.requiredKeys??[],this.pointerMode=e.pointerMode??[],this.pointerOptions=e.pointerOptions??{}}init(e,t,n,r){this.element=e,this.pointerManager=t,this.gesturesRegistry=n,this.keyboardManager=r;const i=`${this.name}ChangeOptions`;this.element.addEventListener(i,this.handleOptionsChange);const o=`${this.name}ChangeState`;this.element.addEventListener(o,this.handleStateChange)}handleOptionsChange=e=>{e&&e.detail&&this.updateOptions(e.detail)};updateOptions(e){this.preventDefault=e.preventDefault??this.preventDefault,this.stopPropagation=e.stopPropagation??this.stopPropagation,this.preventIf=e.preventIf??this.preventIf,this.requiredKeys=e.requiredKeys??this.requiredKeys,this.pointerMode=e.pointerMode??this.pointerMode,this.pointerOptions=e.pointerOptions??this.pointerOptions}getBaseConfig(){return{requiredKeys:this.requiredKeys}}getEffectiveConfig(e,t){if("mouse"!==e&&"touch"!==e&&"pen"!==e)return t;const n=this.pointerOptions[e];return n?l({},t,n):t}handleStateChange=e=>{e&&e.detail&&this.updateState(e.detail)};updateState(e){Object.assign(this.state,e)}getTargetElement(e){return this.isActive||this.element===e.target||"contains"in this.element&&this.element.contains(e.target)||"getRootNode"in this.element&&this.element.getRootNode()instanceof ShadowRoot&&e.composedPath().includes(this.element)?this.element:null}set isActive(e){e?this.gesturesRegistry.registerActiveGesture(this.element,this):this.gesturesRegistry.unregisterActiveGesture(this.element,this)}get isActive(){return this.gesturesRegistry.isGestureActive(this.element,this)??!1}shouldPreventGesture(e,t){const n=this.getEffectiveConfig(t,this.getBaseConfig());if(!this.keyboardManager.areKeysPressed(n.requiredKeys))return!0;if(0===this.preventIf.length)return!1;const r=this.gesturesRegistry.getActiveGestures(e);return this.preventIf.some(e=>r[e])}isPointerTypeAllowed(e){return!this.pointerMode||0===this.pointerMode.length||this.pointerMode.includes(e)}destroy(){const e=`${this.name}ChangeOptions`;this.element.removeEventListener(e,this.handleOptionsChange);const t=`${this.name}ChangeState`;this.element.removeEventListener(t,this.handleStateChange)}}class ze extends $e{unregisterHandler=null;originalTarget=null;constructor(e){super(e),this.minPointers=e.minPointers??1,this.maxPointers=e.maxPointers??1/0}init(e,t,n,r){super.init(e,t,n,r),this.unregisterHandler=this.pointerManager.registerGestureHandler(this.handlePointerEvent)}updateOptions(e){super.updateOptions(e),this.minPointers=e.minPointers??this.minPointers,this.maxPointers=e.maxPointers??this.maxPointers}getBaseConfig(){return{requiredKeys:this.requiredKeys,minPointers:this.minPointers,maxPointers:this.maxPointers}}isWithinPointerCount(e,t){const n=this.getEffectiveConfig(t,this.getBaseConfig());return e.length>=n.minPointers&&e.length<=n.maxPointers}getRelevantPointers(e,t){return e.filter(e=>this.isPointerTypeAllowed(e.pointerType)&&(t===e.target||e.target===this.originalTarget||t===this.originalTarget||"contains"in t&&t.contains(e.target))||"getRootNode"in t&&t.getRootNode()instanceof ShadowRoot&&e.srcEvent.composedPath().includes(t))}destroy(){this.unregisterHandler&&(this.unregisterHandler(),this.unregisterHandler=null),super.destroy()}}function Ne(e){if(0===e.length)return{x:0,y:0};const t=e.reduce((e,t)=>(e.x+=t.clientX,e.y+=t.clientY,e),{x:0,y:0});return{x:t.x/e.length,y:t.y/e.length}}const _e=1e-5;function Fe(e,t){return`${e}${"ongoing"===t?"":t.charAt(0).toUpperCase()+t.slice(1)}`}class He extends ze{state=(()=>({startPointers:new Map,startCentroid:null,lastCentroid:null,movementThresholdReached:!1,totalDeltaX:0,totalDeltaY:0,activeDeltaX:0,activeDeltaY:0,lastDirection:{vertical:null,horizontal:null,mainAxis:null},lastDeltas:null}))();constructor(e){super(e),this.direction=e.direction||["up","down","left","right"],this.threshold=e.threshold||0}clone(e){return new He(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,threshold:this.threshold,minPointers:this.minPointers,maxPointers:this.maxPointers,direction:[...this.direction],requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}destroy(){this.resetState(),super.destroy()}updateOptions(e){super.updateOptions(e),this.direction=e.direction||this.direction,this.threshold=e.threshold??this.threshold}resetState(){this.isActive=!1,this.state=l({},this.state,{startPointers:new Map,startCentroid:null,lastCentroid:null,lastDeltas:null,activeDeltaX:0,activeDeltaY:0,movementThresholdReached:!1,lastDirection:{vertical:null,horizontal:null,mainAxis:null}})}handlePointerEvent=(e,t)=>{const n=Array.from(e.values());if("forceCancel"===t.type)return void this.cancel(t.target,n,t);const r=this.getTargetElement(t);if(!r)return;if(this.shouldPreventGesture(r,t.pointerType))return void this.cancel(r,n,t);const i=this.getRelevantPointers(n,r);if(this.isWithinPointerCount(i,t.pointerType))switch(t.type){case"pointerdown":if(this.isActive||this.state.startCentroid){if(this.state.startCentroid&&this.state.lastCentroid){const e=this.state.lastCentroid,t=Ne(i),n=t.x-e.x,r=t.y-e.y;this.state.startCentroid={x:this.state.startCentroid.x+n,y:this.state.startCentroid.y+r},this.state.lastCentroid=t,i.forEach(e=>{this.state.startPointers.has(e.pointerId)||this.state.startPointers.set(e.pointerId,e)})}}else i.forEach(e=>{this.state.startPointers.set(e.pointerId,e)}),this.originalTarget=r,this.state.startCentroid=Ne(i),this.state.lastCentroid=l({},this.state.startCentroid);break;case"pointermove":if(this.state.startCentroid&&this.isWithinPointerCount(n,t.pointerType)){const e=Ne(i),n=e.x-this.state.startCentroid.x,o=e.y-this.state.startCentroid.y,a=Math.sqrt(n*n+o*o),s=function(e,t){const n=t.x-e.x,r=t.y-e.y,i={vertical:null,horizontal:null,mainAxis:null},o=function(e,t){const n=t.x-e.x,r=t.y-e.y,i=180*Math.atan2(r,n)/Math.PI;return i>=-44.99999&&i<=-22.49999||i>=22.50001&&i<=45.00001||i>=135.00001&&i<=157.50001||i>=-157.49999&&i<=-134.99999}(t,e),a=Math.abs(n)>Math.abs(r)?"horizontal":"vertical",s=o||"horizontal"===a?_e:.15,l=o?_e:"horizontal"===a?.15:_e;return Math.abs(n)>s&&(i.horizontal=n>0?"right":"left"),Math.abs(r)>l&&(i.vertical=r>0?"down":"up"),i.mainAxis=o?"diagonal":a,i}(this.state.lastCentroid??this.state.startCentroid,e),l=this.state.lastCentroid?e.x-this.state.lastCentroid.x:0,c=this.state.lastCentroid?e.y-this.state.lastCentroid.y:0;!this.state.movementThresholdReached&&a>=this.threshold&&function(e,t){if(!e.vertical&&!e.horizontal)return!1;if(0===t.length)return!0;const n=null===e.vertical||t.includes(e.vertical),r=null===e.horizontal||t.includes(e.horizontal);return n&&r}(s,this.direction)?(this.state.movementThresholdReached=!0,this.isActive=!0,this.state.lastDeltas={x:l,y:c},this.state.totalDeltaX+=l,this.state.totalDeltaY+=c,this.state.activeDeltaX+=l,this.state.activeDeltaY+=c,this.emitPanEvent(r,"start",i,t,e),this.emitPanEvent(r,"ongoing",i,t,e)):this.state.movementThresholdReached&&this.isActive&&(this.state.lastDeltas={x:l,y:c},this.state.totalDeltaX+=l,this.state.totalDeltaY+=c,this.state.activeDeltaX+=l,this.state.activeDeltaY+=c,this.emitPanEvent(r,"ongoing",i,t,e)),this.state.lastCentroid=e,this.state.lastDirection=s}break;case"pointerup":case"pointercancel":case"forceCancel":if(this.isActive&&this.state.movementThresholdReached){const e=i.filter(e=>"pointerup"!==e.type&&"pointercancel"!==e.type);if(this.isWithinPointerCount(e,t.pointerType)){if(e.length>=1&&this.state.lastCentroid){const t=Ne(e),n=t.x-this.state.lastCentroid.x,r=t.y-this.state.lastCentroid.y;this.state.startCentroid={x:this.state.startCentroid.x+n,y:this.state.startCentroid.y+r},this.state.lastCentroid=t;const o=i.find(e=>"pointerup"===e.type||"pointercancel"===e.type)?.pointerId;void 0!==o&&this.state.startPointers.delete(o)}}else{const e=this.state.lastCentroid||this.state.startCentroid;"pointercancel"===t.type&&this.emitPanEvent(r,"cancel",i,t,e),this.emitPanEvent(r,"end",i,t,e),this.resetState()}}else this.resetState()}else this.cancel(r,i,t)};emitPanEvent(e,t,n,r,i){if(!this.state.startCentroid)return;const o=this.state.lastDeltas?.x??0,a=this.state.lastDeltas?.y??0,s=this.state.startPointers.values().next().value,l=s?(r.timeStamp-s.timeStamp)/1e3:0,c=l>0?o/l:0,u=l>0?a/l:0,d=Math.sqrt(c*c+u*u),p=this.gesturesRegistry.getActiveGestures(e),h={gestureName:this.name,initialCentroid:this.state.startCentroid,centroid:i,target:r.target,srcEvent:r,phase:t,pointers:n,timeStamp:r.timeStamp,deltaX:o,deltaY:a,direction:this.state.lastDirection,velocityX:c,velocityY:u,velocity:d,totalDeltaX:this.state.totalDeltaX,totalDeltaY:this.state.totalDeltaY,activeDeltaX:this.state.activeDeltaX,activeDeltaY:this.state.activeDeltaY,activeGestures:p,customData:this.customData},m=Fe(this.name,t),f=new CustomEvent(m,{bubbles:!0,cancelable:!0,composed:!0,detail:h});e.dispatchEvent(f),this.preventDefault&&r.preventDefault(),this.stopPropagation&&r.stopPropagation()}cancel(e,t,n){if(this.isActive){const r=e??this.element;this.emitPanEvent(r,"cancel",t,n,this.state.lastCentroid),this.emitPanEvent(r,"end",t,n,this.state.lastCentroid)}this.resetState()}}class Be extends ze{state={lastPosition:null};constructor(e){super(e),this.threshold=e.threshold||0}clone(e){return new Be(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,threshold:this.threshold,minPointers:this.minPointers,maxPointers:this.maxPointers,requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}init(e,t,n,r){super.init(e,t,n,r),this.element.addEventListener("pointerenter",this.handleElementEnter),this.element.addEventListener("pointerleave",this.handleElementLeave)}destroy(){this.element.removeEventListener("pointerenter",this.handleElementEnter),this.element.removeEventListener("pointerleave",this.handleElementLeave),this.resetState(),super.destroy()}updateOptions(e){super.updateOptions(e)}resetState(){this.isActive=!1,this.state={lastPosition:null}}handleElementEnter=e=>{if("mouse"!==e.pointerType&&"pen"!==e.pointerType)return;const t=this.pointerManager.getPointers()||new Map,n=Array.from(t.values());if(this.isWithinPointerCount(n,e.pointerType)){this.isActive=!0;const t={x:e.clientX,y:e.clientY};this.state.lastPosition=t,this.emitMoveEvent(this.element,"start",n,e),this.emitMoveEvent(this.element,"ongoing",n,e)}};handleElementLeave=e=>{if("mouse"!==e.pointerType&&"pen"!==e.pointerType)return;if(!this.isActive)return;const t=this.pointerManager.getPointers()||new Map,n=Array.from(t.values());this.emitMoveEvent(this.element,"end",n,e),this.resetState()};handlePointerEvent=(e,t)=>{if("pointermove"!==t.type||"mouse"!==t.pointerType&&"pen"!==t.pointerType)return;this.preventDefault&&t.preventDefault(),this.stopPropagation&&t.stopPropagation();const n=Array.from(e.values()),r=this.getTargetElement(t);if(!r)return;if(!this.isWithinPointerCount(n,t.pointerType))return;if(this.shouldPreventGesture(r,t.pointerType)){if(!this.isActive)return;return this.resetState(),void this.emitMoveEvent(r,"end",n,t)}const i={x:t.clientX,y:t.clientY};this.state.lastPosition=i,this.isActive||(this.isActive=!0,this.emitMoveEvent(r,"start",n,t)),this.emitMoveEvent(r,"ongoing",n,t)};emitMoveEvent(e,t,n,r){const i=this.state.lastPosition||Ne(n),o=this.gesturesRegistry.getActiveGestures(e),a={gestureName:this.name,centroid:i,target:r.target,srcEvent:r,phase:t,pointers:n,timeStamp:r.timeStamp,activeGestures:o,customData:this.customData},s=Fe(this.name,t),l=new CustomEvent(s,{bubbles:!0,cancelable:!0,composed:!0,detail:a});e.dispatchEvent(l)}}class Ve extends ze{state={startCentroid:null,currentTapCount:0,lastTapTime:0,lastPosition:null};constructor(e){super(e),this.maxDistance=e.maxDistance??10,this.taps=e.taps??1}clone(e){return new Ve(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,minPointers:this.minPointers,maxPointers:this.maxPointers,maxDistance:this.maxDistance,taps:this.taps,requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}destroy(){this.resetState(),super.destroy()}updateOptions(e){super.updateOptions(e),this.maxDistance=e.maxDistance??this.maxDistance,this.taps=e.taps??this.taps}resetState(){this.isActive=!1,this.state={startCentroid:null,currentTapCount:0,lastTapTime:0,lastPosition:null}}handlePointerEvent=(e,t)=>{const n=Array.from(e.values()),r=this.getTargetElement(t);if(!r)return;const i=this.getRelevantPointers(n,r);if(!this.shouldPreventGesture(r,t.pointerType)&&this.isWithinPointerCount(i,t.pointerType))switch(t.type){case"pointerdown":this.isActive||(this.state.startCentroid=Ne(i),this.state.lastPosition=l({},this.state.startCentroid),this.isActive=!0,this.originalTarget=r);break;case"pointermove":if(this.isActive&&this.state.startCentroid){const e=Ne(i);this.state.lastPosition=e;const n=e.x-this.state.startCentroid.x,o=e.y-this.state.startCentroid.y;Math.sqrt(n*n+o*o)>this.maxDistance&&this.cancelTap(r,i,t)}break;case"pointerup":if(this.isActive){this.state.currentTapCount+=1;const e=this.state.lastPosition||this.state.startCentroid;if(!e)return void this.cancelTap(r,i,t);this.state.currentTapCount>=this.taps?(this.fireTapEvent(r,i,t,e),this.resetState()):(this.state.lastTapTime=t.timeStamp,this.isActive=!1,this.state.startCentroid=null,setTimeout(()=>{this.state&&this.state.currentTapCount>0&&this.state.currentTapCount{const n=Array.from(e.values());if("forceCancel"===t.type)return void this.cancelPress(t.target,n,t);const r=this.getTargetElement(t);if(!r)return;if(this.shouldPreventGesture(r,t.pointerType))return void(this.isActive&&this.cancelPress(r,n,t));const i=this.getRelevantPointers(n,r);if(this.isWithinPointerCount(i,t.pointerType))switch(t.type){case"pointerdown":this.isActive||this.state.startCentroid||(this.state.startCentroid=Ne(i),this.state.lastPosition=l({},this.state.startCentroid),this.state.startTime=t.timeStamp,this.isActive=!0,this.originalTarget=r,this.clearPressTimer(),this.state.timerId=setTimeout(()=>{if(this.isActive&&this.state.startCentroid){this.state.pressThresholdReached=!0;const e=this.state.lastPosition;this.emitPressEvent(r,"start",i,t,e),this.emitPressEvent(r,"ongoing",i,t,e)}},this.duration));break;case"pointermove":if(this.isActive&&this.state.startCentroid){const e=Ne(i);this.state.lastPosition=e;const n=e.x-this.state.startCentroid.x,o=e.y-this.state.startCentroid.y;Math.sqrt(n*n+o*o)>this.maxDistance&&this.cancelPress(r,i,t)}break;case"pointerup":if(this.isActive){if(this.state.pressThresholdReached){const e=this.state.lastPosition||this.state.startCentroid;this.emitPressEvent(r,"end",i,t,e)}this.resetState()}break;case"pointercancel":case"forceCancel":this.cancelPress(r,i,t)}else this.isActive&&this.cancelPress(r,i,t)};emitPressEvent(e,t,n,r,i){const o=this.gesturesRegistry.getActiveGestures(e),a=r.timeStamp-this.state.startTime,s={gestureName:this.name,centroid:i,target:r.target,srcEvent:r,phase:t,pointers:n,timeStamp:r.timeStamp,x:i.x,y:i.y,duration:a,activeGestures:o,customData:this.customData},l=Fe(this.name,t),c=new CustomEvent(l,{bubbles:!0,cancelable:!0,composed:!0,detail:s});e.dispatchEvent(c),this.preventDefault&&r.preventDefault(),this.stopPropagation&&r.stopPropagation()}cancelPress(e,t,n){if(this.isActive&&this.state.pressThresholdReached){const r=this.state.lastPosition||this.state.startCentroid;this.emitPressEvent(e??this.element,"cancel",t,n,r),this.emitPressEvent(e??this.element,"end",t,n,r)}this.resetState()}}function Ye(e,t){const n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)}function We(e){if(e.length<2)return 0;let t=0,n=0;for(let r=0;r0?t/n:0}class Ge extends ze{state={startDistance:0,lastDistance:0,lastScale:1,lastTime:0,velocity:0,totalScale:1,deltaScale:0};constructor(e){super(l({},e,{minPointers:e.minPointers??2})),this.threshold=e.threshold??0}clone(e){return new Ge(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,threshold:this.threshold,minPointers:this.minPointers,maxPointers:this.maxPointers,requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}destroy(){this.resetState(),super.destroy()}updateOptions(e){super.updateOptions(e)}resetState(){this.isActive=!1,this.state=l({},this.state,{startDistance:0,lastDistance:0,lastScale:1,lastTime:0,velocity:0,deltaScale:0})}handlePointerEvent=(e,t)=>{const n=Array.from(e.values()),r=this.getTargetElement(t);if(!r)return;if(this.shouldPreventGesture(r,t.pointerType))return void(this.isActive&&(this.emitPinchEvent(r,"cancel",n,t),this.resetState()));const i=this.getRelevantPointers(n,r);switch(t.type){case"pointerdown":if(i.length>=2&&!this.isActive){const e=We(i);this.state.startDistance=e,this.state.lastDistance=e,this.state.lastTime=t.timeStamp,this.originalTarget=r}else if(this.isActive&&i.length>=2){const e=We(i);this.state.startDistance=e/this.state.lastScale,this.state.lastDistance=e,this.state.lastTime=t.timeStamp}break;case"pointermove":if(this.state.startDistance&&this.isWithinPointerCount(i,t.pointerType)){const e=We(i),n=Math.abs(e-this.state.lastDistance);if(0!==n&&n>=this.threshold){const n=this.state.startDistance?e/this.state.startDistance:1,o=n/this.state.lastScale;this.state.totalScale*=o;const a=(t.timeStamp-this.state.lastTime)/1e3;if(this.state.lastDistance){const t=(e-this.state.lastDistance)/a;this.state.velocity=Number.isNaN(t)?0:t}this.state.lastDistance=e,this.state.deltaScale=n-this.state.lastScale,this.state.lastScale=n,this.state.lastTime=t.timeStamp,this.isActive||(this.isActive=!0,this.emitPinchEvent(r,"start",i,t)),this.emitPinchEvent(r,"ongoing",i,t)}}break;case"pointerup":case"pointercancel":case"forceCancel":if(this.isActive){const e=i.filter(e=>"pointerup"!==e.type&&"pointercancel"!==e.type);if(this.isWithinPointerCount(e,t.pointerType)){if(e.length>=2){const n=We(e);this.state.startDistance=n/this.state.lastScale,this.state.lastDistance=n,this.state.lastTime=t.timeStamp}}else"pointercancel"===t.type&&this.emitPinchEvent(r,"cancel",i,t),this.emitPinchEvent(r,"end",i,t),this.resetState()}}};emitPinchEvent(e,t,n,r){const i=Ne(n),o=this.state.lastDistance,a=this.state.lastScale,s=this.gesturesRegistry.getActiveGestures(e),l={gestureName:this.name,centroid:i,target:r.target,srcEvent:r,phase:t,pointers:n,timeStamp:r.timeStamp,scale:a,deltaScale:this.state.deltaScale,totalScale:this.state.totalScale,distance:o,velocity:this.state.velocity,activeGestures:s,direction:(c=this.state.velocity,c>0?1:c<-0?-1:0),customData:this.customData};var c;this.preventDefault&&r.preventDefault(),this.stopPropagation&&r.stopPropagation();const u=Fe(this.name,t),d=new CustomEvent(u,{bubbles:!0,cancelable:!0,composed:!0,detail:l});e.dispatchEvent(d)}}class Ke extends $e{state={totalDeltaX:0,totalDeltaY:0,totalDeltaZ:0};constructor(e){super(e),this.sensitivity=e.sensitivity??1,this.max=e.max??Number.MAX_SAFE_INTEGER,this.min=e.min??Number.MIN_SAFE_INTEGER,this.initialDelta=e.initialDelta??0,this.invert=e.invert??!1,this.state.totalDeltaX=this.initialDelta,this.state.totalDeltaY=this.initialDelta,this.state.totalDeltaZ=this.initialDelta}clone(e){return new Ke(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,sensitivity:this.sensitivity,max:this.max,min:this.min,initialDelta:this.initialDelta,invert:this.invert,requiredKeys:[...this.requiredKeys],preventIf:[...this.preventIf]},e))}init(e,t,n,r){super.init(e,t,n,r),this.element.addEventListener("wheel",this.handleWheelEvent)}destroy(){this.element.removeEventListener("wheel",this.handleWheelEvent),this.resetState(),super.destroy()}resetState(){this.isActive=!1,this.state={totalDeltaX:0,totalDeltaY:0,totalDeltaZ:0}}updateOptions(e){super.updateOptions(e),this.sensitivity=e.sensitivity??this.sensitivity,this.max=e.max??this.max,this.min=e.min??this.min,this.initialDelta=e.initialDelta??this.initialDelta,this.invert=e.invert??this.invert}handleWheelEvent=e=>{if(this.shouldPreventGesture(this.element,"mouse"))return;const t=this.pointerManager.getPointers()||new Map,n=Array.from(t.values());this.state.totalDeltaX+=e.deltaX*this.sensitivity*(this.invert?-1:1),this.state.totalDeltaY+=e.deltaY*this.sensitivity*(this.invert?-1:1),this.state.totalDeltaZ+=e.deltaZ*this.sensitivity*(this.invert?-1:1),["totalDeltaX","totalDeltaY","totalDeltaZ"].forEach(e=>{this.state[e]this.max&&(this.state[e]=this.max)}),this.emitWheelEvent(n,e)};emitWheelEvent(e,t){const n=e.length>0?Ne(e):{x:t.clientX,y:t.clientY},r=this.gesturesRegistry.getActiveGestures(this.element),i={gestureName:this.name,centroid:n,target:t.target,srcEvent:t,phase:"ongoing",pointers:e,timeStamp:t.timeStamp,deltaX:t.deltaX*this.sensitivity*(this.invert?-1:1),deltaY:t.deltaY*this.sensitivity*(this.invert?-1:1),deltaZ:t.deltaZ*this.sensitivity*(this.invert?-1:1),deltaMode:t.deltaMode,totalDeltaX:this.state.totalDeltaX,totalDeltaY:this.state.totalDeltaY,totalDeltaZ:this.state.totalDeltaZ,activeGestures:r,customData:this.customData};this.preventDefault&&t.preventDefault(),this.stopPropagation&&t.stopPropagation();const o=Fe(this.name,"ongoing"),a=new CustomEvent(o,{bubbles:!0,cancelable:!0,composed:!0,detail:i});this.element.dispatchEvent(a)}}const qe=e=>{e.cancelable&&e.preventDefault()};class Xe extends ze{state={phase:"waitingForTap",dragTimeoutId:null};constructor(e){super(e),this.tapMaxDistance=e.tapMaxDistance??10,this.dragTimeout=e.dragTimeout??1e3,this.dragThreshold=e.dragThreshold??0,this.dragDirection=e.dragDirection||["up","down","left","right"],this.tapGesture=new Ve({name:`${this.name}-tap`,maxDistance:this.tapMaxDistance,maxPointers:this.maxPointers,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}),this.panGesture=new He({name:`${this.name}-pan`,minPointers:this.minPointers,maxPointers:this.maxPointers,threshold:this.dragThreshold,direction:this.dragDirection,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)})}clone(e){return new Xe(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,minPointers:this.minPointers,maxPointers:this.maxPointers,tapMaxDistance:this.tapMaxDistance,dragTimeout:this.dragTimeout,dragThreshold:this.dragThreshold,dragDirection:[...this.dragDirection],requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}init(e,t,n,r){super.init(e,t,n,r),this.tapGesture.init(e,t,n,r),this.panGesture.init(e,t,n,r),this.element.addEventListener(this.tapGesture.name,this.tapHandler),this.element.addEventListener(`${this.panGesture.name}Start`,this.dragStartHandler),this.element.addEventListener(this.panGesture.name,this.dragMoveHandler),this.element.addEventListener(`${this.panGesture.name}End`,this.dragEndHandler),this.element.addEventListener(`${this.panGesture.name}Cancel`,this.dragEndHandler)}destroy(){this.resetState(),this.tapGesture.destroy(),this.panGesture.destroy(),this.element.removeEventListener(this.tapGesture.name,this.tapHandler),this.element.removeEventListener(`${this.panGesture.name}Start`,this.dragStartHandler),this.element.removeEventListener(this.panGesture.name,this.dragMoveHandler),this.element.removeEventListener(`${this.panGesture.name}End`,this.dragEndHandler),this.element.removeEventListener(`${this.panGesture.name}Cancel`,this.dragEndHandler),super.destroy()}updateOptions(e){super.updateOptions(e),this.tapMaxDistance=e.tapMaxDistance??this.tapMaxDistance,this.dragTimeout=e.dragTimeout??this.dragTimeout,this.dragThreshold=e.dragThreshold??this.dragThreshold,this.dragDirection=e.dragDirection||this.dragDirection,this.element.dispatchEvent(new CustomEvent(`${this.panGesture.name}ChangeOptions`,{detail:{minPointers:this.minPointers,maxPointers:this.maxPointers,threshold:this.dragThreshold,direction:this.dragDirection,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}})),this.element.dispatchEvent(new CustomEvent(`${this.tapGesture.name}ChangeOptions`,{detail:{maxDistance:this.tapMaxDistance,maxPointers:this.maxPointers,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}}))}resetState(){null!==this.state.dragTimeoutId&&clearTimeout(this.state.dragTimeoutId),this.restoreTouchAction(),this.isActive=!1,this.state={phase:"waitingForTap",dragTimeoutId:null}}handlePointerEvent(){}tapHandler=()=>{"waitingForTap"===this.state.phase&&(this.state.phase="tapDetected",this.setTouchAction(),this.state.dragTimeoutId=setTimeout(()=>{this.resetState()},this.dragTimeout))};dragStartHandler=e=>{"tapDetected"===this.state.phase&&(null!==this.state.dragTimeoutId&&(clearTimeout(this.state.dragTimeoutId),this.state.dragTimeoutId=null),this.restoreTouchAction(),this.state.phase="dragging",this.isActive=!0,this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e)))};dragMoveHandler=e=>{"dragging"===this.state.phase&&this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e))};dragEndHandler=e=>{"dragging"===this.state.phase&&(this.resetState(),this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e)))};setTouchAction(){this.element.addEventListener("touchstart",qe,{passive:!1})}restoreTouchAction(){this.element.removeEventListener("touchstart",qe)}}class Ze extends ze{state={phase:"waitingForPress",dragTimeoutId:null};constructor(e){super(e),this.pressDuration=e.pressDuration??500,this.pressMaxDistance=e.pressMaxDistance??10,this.dragTimeout=e.dragTimeout??1e3,this.dragThreshold=e.dragThreshold??0,this.dragDirection=e.dragDirection||["up","down","left","right"],this.pressGesture=new Ue({name:`${this.name}-press`,duration:this.pressDuration,maxDistance:this.pressMaxDistance,maxPointers:this.maxPointers,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}),this.panGesture=new He({name:`${this.name}-pan`,minPointers:this.minPointers,maxPointers:this.maxPointers,threshold:this.dragThreshold,direction:this.dragDirection,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)})}clone(e){return new Ze(l({name:this.name,preventDefault:this.preventDefault,stopPropagation:this.stopPropagation,minPointers:this.minPointers,maxPointers:this.maxPointers,pressDuration:this.pressDuration,pressMaxDistance:this.pressMaxDistance,dragTimeout:this.dragTimeout,dragThreshold:this.dragThreshold,dragDirection:[...this.dragDirection],requiredKeys:[...this.requiredKeys],pointerMode:[...this.pointerMode],preventIf:[...this.preventIf],pointerOptions:structuredClone(this.pointerOptions)},e))}init(e,t,n,r){super.init(e,t,n,r),this.pressGesture.init(e,t,n,r),this.panGesture.init(e,t,n,r),this.element.addEventListener(this.pressGesture.name,this.pressHandler),this.element.addEventListener(`${this.panGesture.name}Start`,this.dragStartHandler),this.element.addEventListener(this.panGesture.name,this.dragMoveHandler),this.element.addEventListener(`${this.panGesture.name}End`,this.dragEndHandler),this.element.addEventListener(`${this.panGesture.name}Cancel`,this.dragEndHandler)}destroy(){this.resetState(),this.pressGesture.destroy(),this.panGesture.destroy(),this.element.removeEventListener(this.pressGesture.name,this.pressHandler),this.element.removeEventListener(`${this.panGesture.name}Start`,this.dragStartHandler),this.element.removeEventListener(this.panGesture.name,this.dragMoveHandler),this.element.removeEventListener(`${this.panGesture.name}End`,this.dragEndHandler),this.element.removeEventListener(`${this.panGesture.name}Cancel`,this.dragEndHandler),super.destroy()}updateOptions(e){super.updateOptions(e),this.pressDuration=e.pressDuration??this.pressDuration,this.pressMaxDistance=e.pressMaxDistance??this.pressMaxDistance,this.dragTimeout=e.dragTimeout??this.dragTimeout,this.dragThreshold=e.dragThreshold??this.dragThreshold,this.dragDirection=e.dragDirection||this.dragDirection,this.element.dispatchEvent(new CustomEvent(`${this.panGesture.name}ChangeOptions`,{detail:{minPointers:this.minPointers,maxPointers:this.maxPointers,threshold:this.dragThreshold,direction:this.dragDirection,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}})),this.element.dispatchEvent(new CustomEvent(`${this.pressGesture.name}ChangeOptions`,{detail:{duration:this.pressDuration,maxDistance:this.pressMaxDistance,maxPointers:this.maxPointers,pointerMode:this.pointerMode,requiredKeys:this.requiredKeys,preventIf:this.preventIf,pointerOptions:structuredClone(this.pointerOptions)}}))}resetState(){null!==this.state.dragTimeoutId&&clearTimeout(this.state.dragTimeoutId),this.restoreTouchAction(),this.isActive=!1,this.state={phase:"waitingForPress",dragTimeoutId:null}}handlePointerEvent(){}pressHandler=()=>{"waitingForPress"===this.state.phase&&(this.state.phase="pressDetected",this.setTouchAction(),this.state.dragTimeoutId=setTimeout(()=>{this.resetState()},this.dragTimeout))};dragStartHandler=e=>{"pressDetected"===this.state.phase&&(null!==this.state.dragTimeoutId&&(clearTimeout(this.state.dragTimeoutId),this.state.dragTimeoutId=null),this.restoreTouchAction(),this.state.phase="dragging",this.isActive=!0,this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e)))};dragMoveHandler=e=>{"dragging"===this.state.phase&&this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e))};dragEndHandler=e=>{"dragging"===this.state.phase&&(this.resetState(),this.element.dispatchEvent(new CustomEvent(Fe(this.name,e.detail.phase),e)))};setTouchAction(){this.element.addEventListener("touchstart",qe,{passive:!1}),this.element.addEventListener("touchmove",qe,{passive:!1}),this.element.addEventListener("touchend",qe,{passive:!1})}restoreTouchAction(){this.element.removeEventListener("touchstart",qe),this.element.removeEventListener("touchmove",qe),this.element.removeEventListener("touchend",qe)}}const Je=e=>e.preventDefault(),Qe=({svgRef:t})=>{const n=e.useRef(null);e.useEffect(()=>{const e=t.current;n.current||(n.current=new Re({gestures:[new He({name:"pan",threshold:0,maxPointers:1}),new Be({name:"move",preventIf:["pan","zoomPinch","zoomPan"]}),new Ve({name:"tap",preventIf:["pan","zoomPinch","zoomPan"]}),new Ue({name:"quickPress",duration:50}),new He({name:"brush",threshold:0,maxPointers:1}),new He({name:"zoomPan",threshold:0,preventIf:["zoomTapAndDrag","zoomPressAndDrag"]}),new Ge({name:"zoomPinch",threshold:5}),new Ke({name:"zoomTurnWheel",sensitivity:.01,initialDelta:1}),new Ke({name:"panTurnWheel",sensitivity:.5}),new Xe({name:"zoomTapAndDrag",dragThreshold:10}),new Ze({name:"zoomPressAndDrag",dragThreshold:10,preventIf:["zoomPinch"]}),new Ve({name:"zoomDoubleTapReset",taps:2})]}));const r=n.current;if(e&&r)return r.registerElement(["pan","move","zoomPinch","zoomPan","zoomTurnWheel","panTurnWheel","tap","quickPress","zoomTapAndDrag","zoomPressAndDrag","zoomDoubleTapReset","brush"],e),()=>{r.unregisterAllGestures(e)}},[t,n]);const r=e.useCallback((e,n,r)=>{const i=t.current;return i?.addEventListener(e,n,r),{cleanup:()=>i?.removeEventListener(e,n)}},[t]),i=e.useCallback((e,r)=>{const i=t.current,o=n.current;o&&i&&o.setGestureOptions(e,i,r??{})},[t,n]);return e.useEffect(()=>{const e=t.current;return e?.addEventListener("gesturestart",Je),e?.addEventListener("gesturechange",Je),e?.addEventListener("gestureend",Je),()=>{e?.removeEventListener("gesturestart",Je),e?.removeEventListener("gesturechange",Je),e?.removeEventListener("gestureend",Je)}},[t]),{instance:{addInteractionListener:r,updateZoomInteractionListeners:i}}};Qe.params={},Qe.getInitialState=()=>({});const et=[we,xe,be,Te,Qe,U];function tt(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}const nt=["apiRef"],rt=e=>{let{plugins:t}=e,n=tt(e.props,nt);const r={};t.forEach(e=>{Object.assign(r,e.params)});const i={};return Object.keys(n).forEach(e=>{const t=n[e];r[e]&&(i[e]=t)}),t.reduce((e,t)=>t.getDefaultizedParams?t.getDefaultizedParams({params:e}):e,i)};let it=0;const ot=e.createContext(null),at={};function st(t,n){const r=e.useRef(at);return r.current===at&&(r.current=t(n)),r}const lt=[],ct=()=>{};function ut(e){const{store:t,selector:n}=e;let r=n(t.state);const i={effect:ct,dispose:null,subscribe:()=>{i.dispose??=t.subscribe(e=>{const t=n(e);if(!Object.is(r,t)){const e=r;r=t,i.effect(e,t)}})},onMount:()=>(i.subscribe(),()=>{i.dispose?.(),i.dispose=null})};return i.subscribe(),i}const dt=e=>e.series,pt=ae(dt,e=>e.defaultizedSeries),ht=ae(dt,e=>e.seriesConfig),mt=ae(dt,e=>e.dataset),ft=le(pt,ht,mt,function(e,t,n){return((e,t,n)=>{const r={};return Object.keys(t).forEach(i=>{const o=e[i];void 0!==o&&(r[i]=t[i]?.seriesProcessor?.(o,n)??o)}),r})(e,t,n)}),gt=le(ft,ht,he,function(e,t,n){return((e,t,n)=>{let r=!1;const i={};return Object.keys(e).forEach(o=>{const a=t[o]?.seriesLayout,s=e[o];if(void 0!==a&&void 0!==s){const t=a(s,n);t&&t!==e[o]&&(r=!0,i[o]=t)}}),r?i:{}})(e,t,n)}),yt=4,vt=40,bt=20+2*yt,xt=40+2*yt,It="hover",wt={top:5,bottom:5,left:5,right:5},kt={minStart:0,maxEnd:100,step:5,minSpan:10,maxSpan:100,panning:!0,filterMode:"keep",reverse:!1,slider:{enabled:!1,preview:!1,size:bt,showTooltip:It}},St=(e,t,n,r)=>{if(e)return!0===e?l({axisId:t,axisDirection:n},kt,{reverse:r??!1}):l({axisId:t,axisDirection:n},kt,{reverse:r??!1},e,{slider:l({},kt.slider,{size:e.slider?.preview??kt.slider.preview?xt:bt},e.slider)})};function Mt(e,t){const n={top:0,bottom:0,none:0},r=(e&&e.length>0?e:[{id:W,scaleType:"linear"}]).map((e,r)=>{const i=e.dataKey,o=0===r?"bottom":"none",a=e.position??o,s=25+(e.label?20:0),c=e.id??`defaultized-x-axis-${r}`,u=l({offset:n[a]},e,{id:c,position:a,height:e.height??s,zoom:St(e.zoom,c,"x",e.reverse)});if("none"!==a&&(n[a]+=u.height,u.zoom?.slider.enabled&&(n[a]+=u.zoom.slider.size)),void 0===i||void 0!==e.data)return u;if(void 0===t)throw new Error("MUI X Charts: x-axis uses `dataKey` but no `dataset` is provided.");return l({},u,{data:t.map(e=>e[i])})});return r}function Ct(e,t){const n={right:0,left:0,none:0},r=(e&&e.length>0?e:[{id:G,scaleType:"linear"}]).map((e,r)=>{const i=e.dataKey,o=0===r?"left":"none",a=e.position??o,s=45+(e.label?20:0),c=e.id??`defaultized-y-axis-${r}`,u=l({offset:n[a]},e,{id:c,position:a,width:e.width??s,zoom:St(e.zoom,c,"y",e.reverse)});if("none"!==a&&(n[a]+=u.width,u.zoom?.slider.enabled&&(n[a]+=u.zoom.slider.size)),void 0===i||void 0!==e.data)return u;if(void 0===t)throw new Error("MUI X Charts: y-axis uses `dataKey` but no `dataset` is provided.");return l({},u,{data:t.map(e=>e[i])})});return r}function Pt(e,t){return function(n,r){if("tick"===r.location){const t=r.scale.domain();return t[0]===t[1]?r.scale.tickFormat(1)(n):r.scale.tickFormat(e)(n)}return"zoom-slider-tooltip"===r.location?t.tickFormat(2)(n):`${n}`}}function Et(e){return"band"===e.scaleType}function Tt(e){return"point"===e.scaleType}function At(e,t){return null==e||null==t?NaN:et?1:e>=t?0:NaN}function Ot(e,t){return null==e||null==t?NaN:te?1:t>=e?0:NaN}function jt(e){let t,n,r;function i(e,r,i=0,o=e.length){if(i>>1;n(e[t],r)<0?i=t+1:o=t}while(iAt(e(t),n),r=(t,n)=>e(t)-n):(t=e===At||e===Ot?e:Lt,n=e,r=e),{left:i,center:function(e,t,n=0,o=e.length){const a=i(e,t,n,o-1);return a>n&&r(e[a-1],t)>-r(e[a],t)?a-1:a},right:function(e,r,i=0,o=e.length){if(i>>1;n(e[t],r)<=0?i=t+1:o=t}while(i>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?sn(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?sn(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=qt.exec(e))?new cn(t[1],t[2],t[3],1):(t=Xt.exec(e))?new cn(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=Zt.exec(e))?sn(t[1],t[2],t[3],t[4]):(t=Jt.exec(e))?sn(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=Qt.exec(e))?fn(t[1],t[2]/100,t[3]/100,1):(t=en.exec(e))?fn(t[1],t[2]/100,t[3]/100,t[4]):tn.hasOwnProperty(e)?an(tn[e]):"transparent"===e?new cn(NaN,NaN,NaN,0):null}function an(e){return new cn(e>>16&255,e>>8&255,255&e,1)}function sn(e,t,n,r){return r<=0&&(e=t=n=NaN),new cn(e,t,n,r)}function ln(e,t,n,r){return 1===arguments.length?((i=e)instanceof Bt||(i=on(i)),i?new cn((i=i.rgb()).r,i.g,i.b,i.opacity):new cn):new cn(e,t,n,null==r?1:r);var i}function cn(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function un(){return`#${mn(this.r)}${mn(this.g)}${mn(this.b)}`}function dn(){const e=pn(this.opacity);return`${1===e?"rgb(":"rgba("}${hn(this.r)}, ${hn(this.g)}, ${hn(this.b)}${1===e?")":`, ${e})`}`}function pn(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function hn(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function mn(e){return((e=hn(e))<16?"0":"")+e.toString(16)}function fn(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new yn(e,t,n,r)}function gn(e){if(e instanceof yn)return new yn(e.h,e.s,e.l,e.opacity);if(e instanceof Bt||(e=on(e)),!e)return new yn;if(e instanceof yn)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),o=Math.max(t,n,r),a=NaN,s=o-i,l=(o+i)/2;return s?(a=t===o?(n-r)/s+6*(n0&&l<1?0:a,new yn(a,s,l,e.opacity)}function yn(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function vn(e){return(e=(e||0)%360)<0?e+360:e}function bn(e){return Math.max(0,Math.min(1,e||0))}function xn(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}function In(e,t,n,r,i){var o=e*e,a=o*e;return((1-3*e+3*o-a)*t+(4-6*o+3*a)*n+(1+3*e+3*o-3*a)*r+a*i)/6}Ft(Bt,on,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:nn,formatHex:nn,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return gn(this).formatHsl()},formatRgb:rn,toString:rn}),Ft(cn,ln,Ht(Bt,{brighter(e){return e=null==e?Ut:Math.pow(Ut,e),new cn(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?Vt:Math.pow(Vt,e),new cn(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new cn(hn(this.r),hn(this.g),hn(this.b),pn(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:un,formatHex:un,formatHex8:function(){return`#${mn(this.r)}${mn(this.g)}${mn(this.b)}${mn(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:dn,toString:dn})),Ft(yn,function(e,t,n,r){return 1===arguments.length?gn(e):new yn(e,t,n,null==r?1:r)},Ht(Bt,{brighter(e){return e=null==e?Ut:Math.pow(Ut,e),new yn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?Vt:Math.pow(Vt,e),new yn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new cn(xn(e>=240?e-240:e+120,i,r),xn(e,i,r),xn(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new yn(vn(this.h),bn(this.s),bn(this.l),pn(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=pn(this.opacity);return`${1===e?"hsl(":"hsla("}${vn(this.h)}, ${100*bn(this.s)}%, ${100*bn(this.l)}%${1===e?")":`, ${e})`}`}}));const wn=e=>()=>e;function kn(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):wn(isNaN(e)?t:e)}const Sn=function e(t){var n=function(e){return 1===(e=+e)?kn:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):wn(isNaN(t)?n:t)}}(t);function r(e,t){var r=n((e=ln(e)).r,(t=ln(t)).r),i=n(e.g,t.g),o=n(e.b,t.b),a=kn(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=o(t),e.opacity=a(t),e+""}}return r.gamma=e,r}(1);function Mn(e){return function(t){var n,r,i=t.length,o=new Array(i),a=new Array(i),s=new Array(i);for(n=0;n=1?(n=1,t-1):Math.floor(n*t),i=e[r],o=e[r+1],a=r>0?e[r-1]:2*i-o,s=ro&&(i=t.slice(o,i),s[a]?s[a]+=i:s[++a]=i),(n=n[0])===(r=r[0])?s[a]?s[a]+=r:s[++a]=r:(s[++a]=null,l.push({i:a,x:Tn(n,r)})),o=jn.lastIndex;return ot&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}(a[0],a[e-1])),r=e>2?Bn:Hn,i=o=null,d}function d(t){return null==t||isNaN(t=+t)?n:(i||(i=r(a.map(e),s,l)))(e(c(t)))}return d.invert=function(n){return c(t((o||(o=r(s,a.map(e),Tn)))(n)))},d.domain=function(e){return arguments.length?(a=Array.from(e,zn),u()):a.slice()},d.range=function(e){return arguments.length?(s=Array.from(e),u()):s.slice()},d.rangeRound=function(e){return s=Array.from(e),l=$n,u()},d.clamp=function(e){return arguments.length?(c=!!e||_n,u()):c!==_n},d.interpolate=function(e){return arguments.length?(l=e,u()):l},d.unknown=function(e){return arguments.length?(n=e,d):n},function(n,r){return e=n,t=r,u()}}function Yn(){return Un()(_n,_n)}const Wn=Math.sqrt(50),Gn=Math.sqrt(10),Kn=Math.sqrt(2);function qn(e,t,n){const r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=Wn?10:o>=Gn?5:o>=Kn?2:1;let s,l,c;return i<0?(c=Math.pow(10,-i)/a,s=Math.round(e*c),l=Math.round(t*c),s/ct&&--l,c=-c):(c=Math.pow(10,i)*a,s=Math.round(e/c),l=Math.round(t/c),s*ct&&--l),l0))return[];if((e=+e)===(t=+t))return[e];const r=t=i))return[];const s=o-i+1,l=new Array(s);if(r)if(a<0)for(let e=0;e=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function tr(e){if(!(t=er.exec(e)))throw new Error("invalid format: "+e);var t;return new nr({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function nr(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function rr(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var n,r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function ir(e){return(e=rr(Math.abs(e)))?e[1]:NaN}function or(e,t){var n=rr(e,t);if(!n)return e+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}tr.prototype=nr.prototype,nr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const ar={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>or(100*e,t),r:or,s:function(e,t){var n=rr(e,t);if(!n)return e+"";var r=n[0],i=n[1],o=i-(Qn=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+rr(e,Math.max(0,t+o-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function sr(e){return e}var lr,cr,ur,dr=Array.prototype.map,pr=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function hr(e){var t=e.domain;return e.ticks=function(e){var n=t();return Xn(n[0],n[n.length-1],null==e?10:e)},e.tickFormat=function(e,n){var r=t();return function(e,t,n,r){var i,o=Jn(e,t,n);switch((r=tr(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(e),Math.abs(t));return null!=r.precision||isNaN(i=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(ir(t)/3)))-ir(Math.abs(e)))}(o,a))||(r.precision=i),ur(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,ir(t)-ir(e))+1}(o,Math.max(Math.abs(e),Math.abs(t))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(e){return Math.max(0,-ir(Math.abs(e)))}(o))||(r.precision=i-2*("%"===r.type))}return cr(r)}(r[0],r[r.length-1],null==e?10:e,n)},e.nice=function(n){null==n&&(n=10);var r,i,o=t(),a=0,s=o.length-1,l=o[a],c=o[s],u=10;for(c0;){if((i=Zn(l,c,n))===r)return o[a]=l,o[s]=c,t(o);if(i>0)l=Math.floor(l/i)*i,c=Math.ceil(c/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,c=Math.floor(c*i)/i}r=i}return e},e}function mr(){var e=Yn();return e.copy=function(){return Vn(e,mr())},zt.apply(e,arguments),hr(e)}function fr(){var e=hr(function(){var e,t,n,r,i,o=0,a=1,s=_n,l=!1;function c(t){return null==t||isNaN(t=+t)?i:s(0===n?.5:(t=(r(t)-e)*n,l?Math.max(0,Math.min(1,t)):t))}function u(e){return function(t){var n,r;return arguments.length?([n,r]=t,s=e(n,r),c):[s(0),s(1)]}}return c.domain=function(i){return arguments.length?([o,a]=i,e=r(o=+o),t=r(a=+a),n=e===t?0:1/(t-e),c):[o,a]},c.clamp=function(e){return arguments.length?(l=!!e,c):l},c.interpolator=function(e){return arguments.length?(s=e,c):s},c.range=u(Dn),c.rangeRound=u($n),c.unknown=function(e){return arguments.length?(i=e,c):i},function(i){return r=i,e=i(o),t=i(a),n=e===t?0:1/(t-e),c}}()(_n));return e.copy=function(){return t=e,fr().domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown());var t},Nt.apply(e,arguments)}lr=function(e){var t,n,r=void 0===e.grouping||void 0===e.thousands?sr:(t=dr.call(e.grouping,Number),n=e.thousands+"",function(e,r){for(var i=e.length,o=[],a=0,s=t[0],l=0;i>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),o.push(e.substring(i-=s,i+s)),!((l+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(n)}),i=void 0===e.currency?"":e.currency[0]+"",o=void 0===e.currency?"":e.currency[1]+"",a=void 0===e.decimal?".":e.decimal+"",s=void 0===e.numerals?sr:function(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}(dr.call(e.numerals,String)),l=void 0===e.percent?"%":e.percent+"",c=void 0===e.minus?"−":e.minus+"",u=void 0===e.nan?"NaN":e.nan+"";function d(e){var t=(e=tr(e)).fill,n=e.align,d=e.sign,p=e.symbol,h=e.zero,m=e.width,f=e.comma,g=e.precision,y=e.trim,v=e.type;"n"===v?(f=!0,v="g"):ar[v]||(void 0===g&&(g=12),y=!0,v="g"),(h||"0"===t&&"="===n)&&(h=!0,t="0",n="=");var b="$"===p?i:"#"===p&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",x="$"===p?o:/[%p]/.test(v)?l:"",I=ar[v],w=/[defgprs%]/.test(v);function k(e){var i,o,l,p=b,k=x;if("c"===v)k=I(e)+k,e="";else{var S=(e=+e)<0||1/e<0;if(e=isNaN(e)?u:I(Math.abs(e),g),y&&(e=function(e){e:for(var t,n=e.length,r=1,i=-1;r0&&(i=0)}return i>0?e.slice(0,i)+e.slice(t+1):e}(e)),S&&0===+e&&"+"!==d&&(S=!1),p=(S?"("===d?d:c:"-"===d||"("===d?"":d)+p,k=("s"===v?pr[8+Qn/3]:"")+k+(S&&"("===d?")":""),w)for(i=-1,o=e.length;++i(l=e.charCodeAt(i))||l>57){k=(46===l?a+e.slice(i+1):e.slice(i))+k,e=e.slice(0,i);break}}f&&!h&&(e=r(e,1/0));var M=p.length+e.length+k.length,C=M>1)+p+e+k+C.slice(M);break;default:e=C+p+e+k}return s(e)}return g=void 0===g?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),k.toString=function(){return e+""},k}return{format:d,formatPrefix:function(e,t){var n=d(((e=tr(e)).type="f",e)),r=3*Math.max(-8,Math.min(8,Math.floor(ir(t)/3))),i=Math.pow(10,-r),o=pr[8+r/3];return function(e){return n(i*e)+o}}}}({thousands:",",grouping:[3],currency:["$",""]}),cr=lr.format,ur=lr.formatPrefix;class gr extends Map{constructor(e,t=vr){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const[t,n]of e)this.set(t,n)}get(e){return super.get(yr(this,e))}has(e){return super.has(yr(this,e))}set(e,t){return super.set(function({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}(this,e),t)}delete(e){return super.delete(function({_intern:e,_key:t},n){const r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}(this,e))}}function yr({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):n}function vr(e){return null!==e&&"object"==typeof e?e.valueOf():e}Set;const br=Symbol("implicit");function xr(){var e=new gr,t=[],n=[],r=br;function i(i){let o=e.get(i);if(void 0===o){if(r!==br)return r;e.set(i,o=t.push(i)-1)}return n[o%n.length]}return i.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new gr;for(const r of n)e.has(r)||e.set(r,t.push(r)-1);return i},i.range=function(e){return arguments.length?(n=Array.from(e),i):n.slice()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return xr(t,n).unknown(r)},zt.apply(i,arguments),i}function Ir(e){return"piecewise"===e.type?_t(e.thresholds,e.colors):fr([e.min??0,e.max??100],e.color)}function wr(e){return e.values?xr(e.values,e.colors).unknown(e.unknownColor??null):xr(e.colors.map((e,t)=>t),e.colors).unknown(e.unknownColor??null)}function kr(e){return"ordinal"===e.type?wr(e):Ir(e)}function Sr(e,t,n){const{tickMaxStep:r,tickMinStep:i,tickNumber:o}=e,a=void 0===i?999:Math.floor(Math.abs(t[1]-t[0])/i),s=void 0===r?2:Math.ceil(Math.abs(t[1]-t[0])/r),l=o??n;return Math.min(a,Math.max(s,l))}function Mr(e,t){return 0===t[1]-t[0]?1:e/((t[1]-t[0])/100)}function Cr(e){return Math.floor(Math.abs(e)/50)}function Pr(e,t){var n,r=0,i=(e=e.slice()).length-1,o=e[r],a=e[i];return a-e(-t,n)}function Rr(){const e=function(e){const t=e(Er,Tr),n=t.domain;let r,i,o=10;function a(){return r=function(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}(o),i=function(e){return 10===e?jr:e===Math.E?Math.exp:t=>Math.pow(e,t)}(o),n()[0]<0?(r=Lr(r),i=Lr(i),e(Ar,Or)):e(Er,Tr),t}return t.base=function(e){return arguments.length?(o=+e,a()):o},t.domain=function(e){return arguments.length?(n(e),a()):n()},t.ticks=e=>{const t=n();let a=t[0],s=t[t.length-1];const l=s0){for(;d<=p;++d)for(c=1;cs)break;m.push(u)}}else for(;d<=p;++d)for(c=o-1;c>=1;--c)if(u=d>0?c/i(-d):c*i(d),!(us)break;m.push(u)}2*m.length{if(null==e&&(e=10),null==n&&(n=10===o?"s":","),"function"!=typeof n&&(o%1||null!=(n=tr(n)).precision||(n.trim=!0),n=cr(n)),e===1/0)return n;const a=Math.max(1,o*e/t.ticks().length);return e=>{let t=e/i(Math.round(r(e)));return t*on(Pr(n(),{floor:e=>i(Math.floor(r(e))),ceil:e=>i(Math.ceil(r(e)))})),t}(Un()).domain([1,10]);return e.copy=()=>Vn(e,Rr()).base(e.base()),zt.apply(e,arguments),e}function Dr(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function $r(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function zr(e){return e<0?-e*e:e*e}function Nr(){var e=function(e){var t=e(_n,_n),n=1;return t.exponent=function(t){return arguments.length?1===(n=+t)?e(_n,_n):.5===n?e($r,zr):e(Dr(n),Dr(1/n)):n},hr(t)}(Un());return e.copy=function(){return Vn(e,Nr()).exponent(e.exponent())},zt.apply(e,arguments),e}const _r=1e3,Fr=6e4,Hr=36e5,Br=864e5,Vr=6048e5,Ur=31536e6,Yr=new Date,Wr=new Date;function Gr(e,t,n,r){function i(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{const t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),null==n?1:Math.floor(n)),e),i.range=(n,r,o)=>{const a=[];if(n=i.ceil(n),o=null==o?1:Math.floor(o),!(n0))return a;let s;do{a.push(s=new Date(+n)),t(n,o),e(n)}while(sGr(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(Yr.setTime(+t),Wr.setTime(+r),e(Yr),e(Wr),Math.floor(n(Yr,Wr))),i.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i:null)),i}const Kr=Gr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Kr.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?Gr(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):Kr:null),Kr.range;const qr=Gr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*_r)},(e,t)=>(t-e)/_r,e=>e.getUTCSeconds()),Xr=(qr.range,Gr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r)},(e,t)=>{e.setTime(+e+t*Fr)},(e,t)=>(t-e)/Fr,e=>e.getMinutes())),Zr=(Xr.range,Gr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*Fr)},(e,t)=>(t-e)/Fr,e=>e.getUTCMinutes())),Jr=(Zr.range,Gr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r-e.getMinutes()*Fr)},(e,t)=>{e.setTime(+e+t*Hr)},(e,t)=>(t-e)/Hr,e=>e.getHours())),Qr=(Jr.range,Gr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*Hr)},(e,t)=>(t-e)/Hr,e=>e.getUTCHours())),ei=(Qr.range,Gr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Fr)/Br,e=>e.getDate()-1)),ti=(ei.range,Gr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Br,e=>e.getUTCDate()-1)),ni=(ti.range,Gr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Br,e=>Math.floor(e/Br)));function ri(e){return Gr(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+7*t)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Fr)/Vr)}ni.range;const ii=ri(0),oi=ri(1),ai=ri(2),si=ri(3),li=ri(4),ci=ri(5),ui=ri(6);function di(e){return Gr(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)},(e,t)=>(t-e)/Vr)}ii.range,oi.range,ai.range,si.range,li.range,ci.range,ui.range;const pi=di(0),hi=di(1),mi=di(2),fi=di(3),gi=di(4),yi=di(5),vi=di(6),bi=(pi.range,hi.range,mi.range,fi.range,gi.range,yi.range,vi.range,Gr(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear()),e=>e.getMonth())),xi=(bi.range,Gr(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear()),e=>e.getUTCMonth())),Ii=(xi.range,Gr(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear()));Ii.every=e=>isFinite(e=Math.floor(e))&&e>0?Gr(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}):null,Ii.range;const wi=Gr(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());function ki(e,t,n,r,i,o){const a=[[qr,1,_r],[qr,5,5e3],[qr,15,15e3],[qr,30,3e4],[o,1,Fr],[o,5,3e5],[o,15,9e5],[o,30,18e5],[i,1,Hr],[i,3,108e5],[i,6,216e5],[i,12,432e5],[r,1,Br],[r,2,1728e5],[n,1,Vr],[t,1,2592e6],[t,3,7776e6],[e,1,Ur]];function s(t,n,r){const i=Math.abs(n-t)/r,o=jt(([,,e])=>e).right(a,i);if(o===a.length)return e.every(Jn(t/Ur,n/Ur,r));if(0===o)return Kr.every(Math.max(Jn(t,n,r),1));const[s,l]=a[i/a[o-1][2]isFinite(e=Math.floor(e))&&e>0?Gr(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}):null,wi.range;const[Si,Mi]=ki(wi,xi,pi,ni,Qr,Zr),[Ci,Pi]=ki(Ii,bi,ii,ei,Jr,Xr);function Ei(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Ti(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Ai(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}var Oi,ji,Li,Ri={"-":"",_:" ",0:"0"},Di=/^\s*\d+/,$i=/^%/,zi=/[\\^$*+?|[\]().{}]/g;function Ni(e,t,n){var r=e<0?"-":"",i=(r?-e:e)+"",o=i.length;return r+(o[e.toLowerCase(),t]))}function Bi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Vi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Ui(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Yi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Wi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Gi(e,t,n){var r=Di.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Ki(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function qi(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Xi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.q=3*r[0]-3,n+r[0].length):-1}function Zi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Ji(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Qi(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function eo(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function to(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function no(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function ro(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function io(e,t,n){var r=Di.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function oo(e,t,n){var r=$i.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function ao(e,t,n){var r=Di.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function so(e,t,n){var r=Di.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function lo(e,t){return Ni(e.getDate(),t,2)}function co(e,t){return Ni(e.getHours(),t,2)}function uo(e,t){return Ni(e.getHours()%12||12,t,2)}function po(e,t){return Ni(1+ei.count(Ii(e),e),t,3)}function ho(e,t){return Ni(e.getMilliseconds(),t,3)}function mo(e,t){return ho(e,t)+"000"}function fo(e,t){return Ni(e.getMonth()+1,t,2)}function go(e,t){return Ni(e.getMinutes(),t,2)}function yo(e,t){return Ni(e.getSeconds(),t,2)}function vo(e){var t=e.getDay();return 0===t?7:t}function bo(e,t){return Ni(ii.count(Ii(e)-1,e),t,2)}function xo(e){var t=e.getDay();return t>=4||0===t?li(e):li.ceil(e)}function Io(e,t){return e=xo(e),Ni(li.count(Ii(e),e)+(4===Ii(e).getDay()),t,2)}function wo(e){return e.getDay()}function ko(e,t){return Ni(oi.count(Ii(e)-1,e),t,2)}function So(e,t){return Ni(e.getFullYear()%100,t,2)}function Mo(e,t){return Ni((e=xo(e)).getFullYear()%100,t,2)}function Co(e,t){return Ni(e.getFullYear()%1e4,t,4)}function Po(e,t){var n=e.getDay();return Ni((e=n>=4||0===n?li(e):li.ceil(e)).getFullYear()%1e4,t,4)}function Eo(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Ni(t/60|0,"0",2)+Ni(t%60,"0",2)}function To(e,t){return Ni(e.getUTCDate(),t,2)}function Ao(e,t){return Ni(e.getUTCHours(),t,2)}function Oo(e,t){return Ni(e.getUTCHours()%12||12,t,2)}function jo(e,t){return Ni(1+ti.count(wi(e),e),t,3)}function Lo(e,t){return Ni(e.getUTCMilliseconds(),t,3)}function Ro(e,t){return Lo(e,t)+"000"}function Do(e,t){return Ni(e.getUTCMonth()+1,t,2)}function $o(e,t){return Ni(e.getUTCMinutes(),t,2)}function zo(e,t){return Ni(e.getUTCSeconds(),t,2)}function No(e){var t=e.getUTCDay();return 0===t?7:t}function _o(e,t){return Ni(pi.count(wi(e)-1,e),t,2)}function Fo(e){var t=e.getUTCDay();return t>=4||0===t?gi(e):gi.ceil(e)}function Ho(e,t){return e=Fo(e),Ni(gi.count(wi(e),e)+(4===wi(e).getUTCDay()),t,2)}function Bo(e){return e.getUTCDay()}function Vo(e,t){return Ni(hi.count(wi(e)-1,e),t,2)}function Uo(e,t){return Ni(e.getUTCFullYear()%100,t,2)}function Yo(e,t){return Ni((e=Fo(e)).getUTCFullYear()%100,t,2)}function Wo(e,t){return Ni(e.getUTCFullYear()%1e4,t,4)}function Go(e,t){var n=e.getUTCDay();return Ni((e=n>=4||0===n?gi(e):gi.ceil(e)).getUTCFullYear()%1e4,t,4)}function Ko(){return"+0000"}function qo(){return"%"}function Xo(e){return+e}function Zo(e){return Math.floor(+e/1e3)}function Jo(e){return new Date(e)}function Qo(e){return e instanceof Date?+e:+new Date(+e)}function ea(e,t,n,r,i,o,a,s,l,c){var u=Yn(),d=u.invert,p=u.domain,h=c(".%L"),m=c(":%S"),f=c("%I:%M"),g=c("%I %p"),y=c("%a %d"),v=c("%b %d"),b=c("%B"),x=c("%Y");function I(e){return(l(e){const a=n(e),s=t.constant();let l=0,c=0,u=0;a.forEach(e=>{e>-s&&e=s&&(u+=1)});const d=[];if(l>0&&d.push(...r.ticks(l)),c>0){const e=i.ticks(c);d.at(-1)===e[0]?d.push(...e.slice(1)):d.push(...e)}if(u>0){const e=o.ticks(u);d.at(-1)===e[0]?d.push(...e.slice(1)):d.push(...e)}return d},t.tickFormat=(e=10,n)=>{const a=t.constant(),[s,l]=t.domain(),c=l-s,u=r.domain(),d=u[1]-u[0],p=(0===c?0:d/c)*e,h=i.domain(),m=h[1]-h[0],f=(0===c?0:m/c)*e,g=o.domain(),y=g[1]-g[0],v=(0===c?0:y/c)*e,b=r.tickFormat(p,n),x=i.tickFormat(f,n),I=o.tickFormat(v,n);return e=>(e.valueOf()<=-a?b:e.valueOf()>=a?I:x)(e)},t.copy=()=>oa(t.domain(),t.range()).constant(t.constant()),t}function aa(e,t,n){switch(e){case"log":return Rr(t,n);case"pow":return Nr(t,n);case"sqrt":return function(){return Nr.apply(null,arguments).exponent(.5)}(t,n);case"time":return ta(t,n);case"utc":return function(){return zt.apply(ea(Si,Mi,wi,xi,pi,ti,Qr,Zr,qr,Li).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}(t,n);case"symlog":return oa(t,n);default:return mr(t,n)}}Oi=function(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,o=e.days,a=e.shortDays,s=e.months,l=e.shortMonths,c=Fi(i),u=Hi(i),d=Fi(o),p=Hi(o),h=Fi(a),m=Hi(a),f=Fi(s),g=Hi(s),y=Fi(l),v=Hi(l),b={a:function(e){return a[e.getDay()]},A:function(e){return o[e.getDay()]},b:function(e){return l[e.getMonth()]},B:function(e){return s[e.getMonth()]},c:null,d:lo,e:lo,f:mo,g:Mo,G:Po,H:co,I:uo,j:po,L:ho,m:fo,M:go,p:function(e){return i[+(e.getHours()>=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:Xo,s:Zo,S:yo,u:vo,U:bo,V:Io,w:wo,W:ko,x:null,X:null,y:So,Y:Co,Z:Eo,"%":qo},x={a:function(e){return a[e.getUTCDay()]},A:function(e){return o[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return s[e.getUTCMonth()]},c:null,d:To,e:To,f:Ro,g:Yo,G:Go,H:Ao,I:Oo,j:jo,L:Lo,m:Do,M:$o,p:function(e){return i[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:Xo,s:Zo,S:zo,u:No,U:_o,V:Ho,w:Bo,W:Vo,x:null,X:null,y:Uo,Y:Wo,Z:Ko,"%":qo},I={a:function(e,t,n){var r=h.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(e,t,n){var r=y.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(e,t,n){var r=f.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(e,n,r){return S(e,t,n,r)},d:Ji,e:Ji,f:io,g:Ki,G:Gi,H:eo,I:eo,j:Qi,L:ro,m:Zi,M:to,p:function(e,t,n){var r=c.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1},q:Xi,Q:ao,s:so,S:no,u:Vi,U:Ui,V:Yi,w:Bi,W:Wi,x:function(e,t,r){return S(e,n,t,r)},X:function(e,t,n){return S(e,r,t,n)},y:Ki,Y:Gi,Z:qi,"%":oo};function w(e,t){return function(n){var r,i,o,a=[],s=-1,l=0,c=e.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=Ti(Ai(o.y,0,1))).getUTCDay(),r=i>4||0===i?hi.ceil(r):hi(r),r=ti.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=Ei(Ai(o.y,0,1))).getDay(),r=i>4||0===i?oi.ceil(r):oi(r),r=ei.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?Ti(Ai(o.y,0,1)).getUTCDay():Ei(Ai(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,Ti(o)):Ei(o)}}function S(e,t,n,r){for(var i,o,a=0,s=t.length,l=n.length;a=l)return-1;if(37===(i=t.charCodeAt(a++))){if(i=t.charAt(a++),!(o=I[i in Ri?t.charAt(a++):i])||(r=o(e,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(t,b),x.x=w(n,x),x.X=w(r,x),x.c=w(t,x),{format:function(e){var t=w(e+="",b);return t.toString=function(){return e},t},parse:function(e){var t=k(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=w(e+="",x);return t.toString=function(){return e},t},utcParse:function(e){var t=k(e+="",!0);return t.toString=function(){return e},t}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),ji=Oi.format,Oi.parse,Li=Oi.utcFormat,Oi.utcParse;const sa=e=>e?.[0]instanceof Date;function la(e,t,n){const r=ta(e,t);return(e,{location:t})=>"tick"===t?r.tickFormat(n)(e):`${e.toLocaleString()}`}let ca,ua;const da=new class{types=(()=>new Set)();constructor(){if(ca)throw new Error("You can only create one instance!");ca=this.types}addType(e){this.types.add(e)}getTypes(){return this.types}};da.addType("bar"),da.addType("line"),da.addType("scatter");const pa=new class{types=(()=>new Set)();constructor(){if(ua)throw new Error("You can only create one instance!");ua=this.types}addType(e){this.types.add(e)}getTypes(){return this.types}};function ha(e){return da.getTypes().has(e)}function ma(e){return ha(e.type)}function fa(e){return void 0!==e.bandwidth}function ga(e){return fa(e)&&void 0!==e.paddingOuter}function ya({scales:e,drawingArea:t,formattedSeries:n,axis:r,seriesConfig:i,axisDirection:o,zoomMap:a,domains:s}){if(void 0===r)return{axis:{},axisIds:[]};const c=((e,t,n,r)=>{const i=new Set;return Object.keys(t).filter(ha).forEach(o=>{const a=n[o]?.series??{},s=t[o].axisTooltipGetter?.(a);void 0!==s&&s.forEach(({axisId:t,direction:n})=>{n===e&&i.add(t??r)})}),i})(o,i,n,r[0].id),u={};return r.forEach(n=>{const r=n,i=e[r.id],d=a?.get(r.id),p=d?[d.start,d.end]:[0,100],h=function(e,t,n){const r="x"===t?[e.left,e.left+e.width]:[e.top+e.height,e.top];return n?[r[1],r[0]]:r}(t,o,r.reverse??!1),m=s[r.id].tickNumber,f=!r.ignoreTooltip&&c.has(r.id),g=Mr(m,p),y=r.data??[];if(fa(i)){const e="y"===o?[h[1],h[0]]:h;if(ga(i)&&Et(r)){const e=r.categoryGapRatio??.2,t=function(e,t){return e.step()*t<.1}(i,e),n=t?0:e,o=t?0:r.barGapRatio??.1;u[r.id]=l({offset:0,height:0,categoryGapRatio:n,barGapRatio:o,triggerTooltip:f},r,{data:y,scale:t?i.copy().padding(0):i,tickNumber:g,colorScale:r.colorMap&&("ordinal"===r.colorMap.type?wr(l({values:r.data},r.colorMap)):kr(r.colorMap))})}if(Tt(r)&&(u[r.id]=l({offset:0,height:0,triggerTooltip:f},r,{data:y,scale:i,tickNumber:g,colorScale:r.colorMap&&("ordinal"===r.colorMap.type?wr(l({values:r.data},r.colorMap)):kr(r.colorMap))})),sa(r.data)){const t=la(r.data,e,r.tickNumber);u[r.id].valueFormatter=r.valueFormatter??t}return}if("band"===r.scaleType||"point"===r.scaleType)return;const v=r,b=v.scaleType??"linear";u[r.id]=l({offset:0,height:0,triggerTooltip:f},v,{data:y,scaleType:b,scale:i,tickNumber:g,colorScale:v.colorMap&&Ir(v.colorMap),valueFormatter:r.valueFormatter??Pt(g,aa(b,h.map(e=>i.invert(e)),h))})}),{axis:u,axisIds:r.map(({id:e})=>e)}}function va(e){return null!=e}function ba(e,t,n,r){const i=e?.length??0,o=Math.floor(t*i/100),a=Math.ceil(n*i/100);return function(t,n){return null==(t[r]??e?.[n])||n>=o&&n=s&&n<=l}}pa.addType("radar");const Ia=e=>(t=[])=>t.reduce((t,n)=>{const{zoom:r,id:i,reverse:o}=n,a=St(r,i,e,o);return a&&(t[i]=a),t},{}),wa=ae(e=>e.experimentalFeatures,e=>Boolean(e?.preferStrictDomainInLineCharts));function ka(e){return Array.isArray(e)?JSON.stringify(e):"object"==typeof e&&null!==e?e.valueOf():e}function Sa(...e){let t,n,r=new gr(void 0,ka),i=[],o=[],a=0,s=1,l=!1,c=0,u=0,d=.5;const p=e=>{const t=r.get(e);if(void 0!==t)return o[t%o.length]},h=()=>{const e=i.length,r=sg+t*e);return o=r?v.reverse():v,p};p.domain=function(e){if(!arguments.length)return i.slice();i=[],r=new gr(void 0,ka);for(const t of e)r.has(t)||r.set(t,i.push(t)-1);return h()},p.range=function(e){if(!arguments.length)return[a,s];const[t,n]=e;return a=+t,s=+n,h()},p.rangeRound=function(e){const[t,n]=e;return a=+t,s=+n,l=!0,h()},p.bandwidth=function(){return n},p.step=function(){return t},p.round=function(e){return arguments.length?(l=!!e,h()):l},p.padding=function(e){return arguments.length?(c=Math.min(1,u=+e),h()):c},p.paddingInner=function(e){return arguments.length?(c=Math.min(1,e),h()):c},p.paddingOuter=function(e){return arguments.length?(u=+e,h()):u},p.align=function(e){return arguments.length?(d=Math.max(0,Math.min(1,e)),h()):d},p.copy=()=>Sa(i,[a,s]).round(l).paddingInner(c).paddingOuter(u).align(d);const[m,f]=e;return e.length>1?(p.domain(m),p.range(f)):m?p.range(m):h(),p}function Ma(...e){const t=Sa(...e).paddingInner(1),n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=()=>{const e=n();return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=t.copy,e},t}function Ca(e,t,n){const r="x"===t?[e.left,e.left+e.width]:[e.top+e.height,e.top];return n.reverse?[r[1],r[0]]:r}function Pa(e,t){const n=[0,1];if(Et(e)){const r=e.categoryGapRatio??.2;return Sa(t,n).paddingInner(r).paddingOuter(r/2)}if(Tt(e))return Ma(t,n);const r=aa(e.scaleType??"linear",t,n);return"symlog"===e.scaleType&&null!=e.constant&&r.constant(e.constant),r}const Ea=(e,t)=>{const n=e[1]-e[0],r=t[1]-t[0];return[e[0]-t[0]*n/r,e[1]+(100-t[1])*n/r]},Ta=(e,t,n,r,i,o,a)=>{const s="x"===n?r[e].xExtremumGetter:r[e].yExtremumGetter,l=o[e]?.series??{};return s?.({series:l,axis:t,axisIndex:i,isDefaultAxis:0===i,getFilters:a})??[1/0,-1/0]};function Aa(e,t,n,r,i,o){const a=Object.keys(n).filter(ha);let s=[1/0,-1/0];for(const l of a){const[a,c]=Ta(l,e,t,n,r,i,o);s=[Math.min(s[0],a),Math.max(s[1],c)]}return Number.isNaN(s[0])||Number.isNaN(s[1])?[1/0,-1/0]:s}function Oa(e,t,n){return aa(e??"linear",t,[0,1]).nice(n).domain()}function ja(e,t,n,r,[i,o],a,s){const l=Ra(e,t,n,r,s);let c=Da(e,i,o);if("function"==typeof l){const{min:e,max:t}=l(i.valueOf(),o.valueOf());c[0]=e,c[1]=t}const u=Sr(e,c,a);return"nice"===l&&(c=Oa(e.scaleType,c,u)),c=["min"in e?e.min??c[0]:c[0],"max"in e?e.max??c[1]:c[1]],{domain:c,tickNumber:u}}function La(e,t,n,r,[i,o],a,s){const l=Ra(e,t,n,r,s);let c=Da(e,i,o);if("function"==typeof l){const{min:e,max:t}=l(i.valueOf(),o.valueOf());c[0]=e,c[1]=t}return"nice"===l&&(c=Oa(e.scaleType,c,a)),[e.min??c[0],e.max??c[1]]}function Ra(e,t,n,r,i){return i?((e,t,n,r)=>{if(void 0!==e.domainLimit)return e.domainLimit;if("x"===t)for(const t of r.line?.seriesOrder??[]){const i=r.line.series[t];if(i.xAxisId===e.id||void 0===i.xAxisId&&0===n)return"strict"}return"nice"})(e,t,n,r):e.domainLimit??"nice"}function Da(e,t,n){let r=t,i=n;return"max"in e&&null!=e.max&&e.maxt&&(i=e.min),"min"in e||"max"in e?[e.min??r,e.max??i]:[r,i]}class $a{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,t){let n=this.length++;for(;n>0;){const e=n-1>>1,r=this.values[e];if(t>=r)break;this.ids[n]=this.ids[e],this.values[n]=r,n=e}this.ids[n]=e,this.values[n]=t}pop(){if(0===this.length)return;const e=this.ids,t=this.values,n=e[0],r=--this.length;if(r>0){const n=e[r],i=t[r];let o=0;const a=r>>1;for(;o=i)break;e[o]=e[s],t[o]=t[s],o=s}e[o]=n,t[o]=i}return n}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}}const za=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class Na{static from(e,t=0){if(t%8!=0)throw new Error("byteOffset must be 8-byte aligned.");if(!e||void 0===e.byteLength||e.buffer)throw new Error("Data must be an instance of ArrayBuffer or SharedArrayBuffer.");const[n,r]=new Uint8Array(e,t+0,2);if(251!==n)throw new Error("Data does not appear to be in a Flatbush format.");const i=r>>4;if(3!==i)throw new Error(`Got v${i} data when expected v3.`);const o=za[15&r];if(!o)throw new Error("Unrecognized array type.");const[a]=new Uint16Array(e,t+2,1),[s]=new Uint32Array(e,t+4,1);return new Na(s,a,o,void 0,e,t)}constructor(e,t=16,n=Float64Array,r=ArrayBuffer,i,o=0){if(void 0===e)throw new Error("Missing required argument: numItems.");if(isNaN(e)||e<=0)throw new Error(`Unexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+t,2),65535),this.byteOffset=o;let a=e,s=a;this._levelBounds=[4*a];do{a=Math.ceil(a/this.nodeSize),s+=a,this._levelBounds.push(4*s)}while(1!==a);this.ArrayType=n,this.IndexArrayType=s<16384?Uint16Array:Uint32Array;const l=za.indexOf(n),c=4*s*n.BYTES_PER_ELEMENT;if(l<0)throw new Error(`Unexpected typed array class: ${n}.`);if(i)this.data=i,this._boxes=new n(i,o+8,4*s),this._indices=new this.IndexArrayType(i,o+8+c,s),this._pos=4*s,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1];else{const i=this.data=new r(8+c+s*this.IndexArrayType.BYTES_PER_ELEMENT);this._boxes=new n(i,8,4*s),this._indices=new this.IndexArrayType(i,8+c,s),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(i,0,2).set([251,48+l]),new Uint16Array(i,2,1)[0]=t,new Uint32Array(i,4,1)[0]=e}this._queue=new $a}add(e,t,n=e,r=t){const i=this._pos>>2,o=this._boxes;return this._indices[i]=i,o[this._pos++]=e,o[this._pos++]=t,o[this._pos++]=n,o[this._pos++]=r,ethis.maxX&&(this.maxX=n),r>this.maxY&&(this.maxY=r),i}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);const e=this._boxes;if(this.numItems<=this.nodeSize)return e[this._pos++]=this.minX,e[this._pos++]=this.minY,e[this._pos++]=this.maxX,void(e[this._pos++]=this.maxY);const t=this.maxX-this.minX||1,n=this.maxY-this.minY||1,r=new Uint32Array(this.numItems);for(let i=0,o=0;i>2]=t,e[this._pos++]=i,e[this._pos++]=o,e[this._pos++]=a,e[this._pos++]=s}}}search(e,t,n,r,i){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let o=this._boxes.length-4;const a=[],s=[];for(;void 0!==o;){const l=Math.min(o+4*this.nodeSize,Fa(o,this._levelBounds));for(let c=o;cthis._boxes[c+2])continue;if(t>this._boxes[c+3])continue;const l=0|this._indices[c>>2];o>=4*this.numItems?a.push(l):(void 0===i||i(l))&&(s.push(l),s.push(this._boxes[c]),s.push(this._boxes[c+1]))}o=a.pop()}return s}neighbors(e,t,n=1/0,r=1/0,i,o=_a){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let a=this._boxes.length-4;const s=this._queue,l=[];e:for(;void 0!==a;){const c=Math.min(a+4*this.nodeSize,Fa(a,this._levelBounds));for(let n=a;n>2],c=this._boxes[n],u=this._boxes[n+1],d=this._boxes[n+2],p=this._boxes[n+3],h=o(ed?e-d:0,tp?t-p:0);h>r||(a>=4*this.numItems?s.push(l<<1,h):(void 0===i||i(l))&&s.push(1+(l<<1),h))}for(;s.length&&1&s.peek();){if(s.peekValue()>r)break e;if(l.push(s.pop()>>1),l.length===n)break e}a=s.length?s.pop()>>1:void 0}return s.clear(),l}}function _a(e,t){return e*e+t*t}function Fa(e,t){let n=0,r=t.length-1;for(;n>1;t[i]>e?r=i:n=i+1}return t[n]}function Ha(e,t,n,r,i,o){if(Math.floor(r/o)>=Math.floor(i/o))return;const a=e[r],s=e[r+i>>1],l=e[i];let c=l;const u=Math.max(a,s);l>u?c=u:u===a?c=Math.max(s,l):u===s&&(c=Math.max(a,l));let d=r-1,p=i+1;for(;;){do{d++}while(e[d]c);if(d>=p)break;Ba(e,t,n,d,p)}Ha(e,t,n,r,p,o),Ha(e,t,n,p+1,i,o)}function Ba(e,t,n,r,i){const o=e[r];e[r]=e[i],e[i]=o;const a=4*r,s=4*i,l=t[a],c=t[a+1],u=t[a+2],d=t[a+3];t[a]=t[s],t[a+1]=t[s+1],t[a+2]=t[s+2],t[a+3]=t[s+3],t[s]=l,t[s+1]=c,t[s+2]=u,t[s+3]=d;const p=n[r];n[r]=n[i],n[i]=p}function Va(e,t){let n=e^t,r=65535^n,i=65535^(e|t),o=e&(65535^t),a=n|r>>1,s=n>>1^n,l=i>>1^r&o>>1^i,c=n&i>>1^o>>1^o;n=a,r=s,i=l,o=c,a=n&n>>2^r&r>>2,s=n&r>>2^r&(n^r)>>2,l^=n&i>>2^r&o>>2,c^=r&i>>2^(n^r)&o>>2,n=a,r=s,i=l,o=c,a=n&n>>4^r&r>>4,s=n&r>>4^r&(n^r)>>4,l^=n&i>>4^r&o>>4,c^=r&i>>4^(n^r)&o>>4,n=a,r=s,i=l,o=c,l^=n&i>>8^r&o>>8,c^=r&i>>8^(n^r)&o>>8,n=l^l>>1,r=c^c>>1;let u=e^t,d=r|65535^(u|n);return u=16711935&(u|u<<8),u=252645135&(u|u<<4),u=858993459&(u|u<<2),u=1431655765&(u|u<<1),d=16711935&(d|d<<8),d=252645135&(d|d<<4),d=858993459&(d|d<<2),d=1431655765&(d|d<<1),(d<<1|u)>>>0}const Ua=e=>e.zoom,Ya=ae(ce,ue,(e,t)=>e?.some(e=>Boolean(e.zoom))||t?.some(e=>Boolean(e.zoom))||!1),Wa=ae(Ua,e=>e?.isInteracting),Ga=le(Ua,function(e){return e?.zoomData&&(e=>{const t=new Map;return e.forEach(e=>{t.set(e.axisId,e)}),t})(e?.zoomData)}),Ka=ae(Ga,(e,t)=>e?.get(t)),qa=le(ce,ue,function(e,t){return l({},Ia("x")(e),Ia("y")(t))}),Xa=ae(qa,(e,t)=>e[t]),Za=ae(he,function(e){return Cr(e.width)}),Ja=ae(he,function(e){return Cr(e.height)}),Qa=le(ce,ft,ht,wa,Za,function(e,t,n,r,i){const o={};return e?.forEach((e,a)=>{const s=e;if(Et(s)||Tt(s))return o[s.id]={domain:s.data},void(void 0!==s.ordinalTimeTicks&&(o[s.id].tickNumber=Sr(s,[s.data?.find(e=>null!==e),s.data?.findLast(e=>null!==e)],i)));const l=Aa(s,"x",n,a,t);o[s.id]=ja(s,"x",a,t,l,i,r)}),{axes:e,domains:o}}),es=le(ue,ft,ht,wa,Ja,function(e,t,n,r,i){const o={};return e?.forEach((e,a)=>{const s=e;if(Et(s)||Tt(s))return o[s.id]={domain:s.data},void(void 0!==s.ordinalTimeTicks&&(o[s.id].tickNumber=Sr(s,[s.data?.find(e=>null!==e),s.data?.findLast(e=>null!==e)],i)));const l=Aa(s,"y",n,a,t);o[s.id]=ja(s,"y",a,t,l,i,r)}),{axes:e,domains:o}}),ts=le(Ga,qa,Qa,es,function(e,t,{axes:n,domains:r},{axes:i,domains:o}){if(!e||!t)return;let a=!1;const s={},l=[...n??[],...i??[]];for(let i=0;i=100)continue;const d=i<(n?.length??0)?"x":"y";if("band"===c.scaleType||"point"===c.scaleType)s[c.id]=ba(c.data,u.start,u.end,d);else{const{domain:e}="x"===d?r[c.id]:o[c.id];s[c.id]=xa(e,u.start,u.end,d,c.data)}a=!0}return a?(e=>({currentAxisId:t,seriesXAxisId:n,seriesYAxisId:r,isDefaultAxis:i})=>(o,a)=>!(t===n?r:n)||i?Object.values(e??{})[0]?.(o,a)??!0:[r,n].filter(e=>e!==t).map(t=>e[t??""]).filter(va).every(e=>e(o,a)))(s):void 0}),ns=le(ft,ht,Ga,qa,ts,wa,Qa,function(e,t,n,r,i,o,{axes:a,domains:s}){const l={};return a?.forEach((a,c)=>{const u=s[a.id].domain;if(Et(a)||Tt(a))return void(l[a.id]=u);const d=n?.get(a.id),p=r?.[a.id],h=void 0!==d||p?void 0:i;if(!h)return void(l[a.id]=u);const m=s[a.id].tickNumber,f=Aa(a,"x",t,c,e,h);l[a.id]=La(a,"x",c,e,f,m,o)}),l}),rs=le(ft,ht,Ga,qa,ts,wa,es,function(e,t,n,r,i,o,{axes:a,domains:s}){const l={};return a?.forEach((a,c)=>{const u=s[a.id].domain;if(Et(a)||Tt(a))return void(l[a.id]=u);const d=n?.get(a.id),p=r?.[a.id],h=void 0!==d||p?void 0:i;if(!h)return void(l[a.id]=u);const m=s[a.id].tickNumber,f=Aa(a,"y",t,c,e,h);l[a.id]=La(a,"y",c,e,f,m,o)}),l}),is=le(ce,ns,function(e,t){const n={};return e?.forEach(e=>{const r=e,i=t[r.id];n[r.id]=Pa(r,i)}),n}),os=le(ue,rs,function(e,t){const n={};return e?.forEach(e=>{const r=e,i=t[r.id];n[r.id]=Pa(r,i)}),n}),as=le(ce,is,he,Ga,function(e,t,n,r){const i={};return e?.forEach(e=>{const o=e,a=r?.get(o.id),s=a?[a.start,a.end]:[0,100],l=Ca(n,"x",o),c=t[o.id].copy(),u=Ea(l,s);c.range(u),i[o.id]=c}),i}),ss=le(ue,os,he,Ga,function(e,t,n,r){const i={};return e?.forEach(e=>{const o=e,a=r?.get(o.id),s=a?[a.start,a.end]:[0,100],l=Ca(n,"y",o),c=t[o.id].copy(),u=fa(c)?l.reverse():l,d=Ea(u,s);c.range(d),i[o.id]=c}),i}),ls=le(he,ft,ht,Ga,Qa,as,function(e,t,n,r,{axes:i,domains:o},a){return ya({scales:a,drawingArea:e,formattedSeries:t,axis:i,seriesConfig:n,axisDirection:"x",zoomMap:r,domains:o})}),cs=le(he,ft,ht,Ga,es,ss,function(e,t,n,r,{axes:i,domains:o},a){return ya({scales:a,drawingArea:e,formattedSeries:t,axis:i,seriesConfig:n,axisDirection:"y",zoomMap:r,domains:o})}),us=ae(ls,cs,(e,t,n)=>e?.axis[n]??t?.axis[n]),ds=ae(ce,ue,(e,t,n)=>{const r=e?.find(e=>e.id===n)??t?.find(e=>e.id===n)??null;if(r)return r}),ps=ae(ce,e=>e[0].id),hs=ae(ue,e=>e[0].id),ms=new Map,fs=()=>ms,gs=le(ft,is,os,ps,hs,function(e,t,n,r,i){const o=e.scatter,a=new Map;return o?(o.seriesOrder.forEach(e=>{const{data:s,xAxisId:l=r,yAxisId:c=i}=o.series[e],u=new Na(s.length),d=t[l],p=n[c];for(const e of s)u.add(d(e.x),p(e.y));u.finish(),a.set(e,u)}),a):a});function ys(e){return e instanceof Date?e.getTime():e}function vs(e,t){const{scale:n,data:r,reverse:i}=e;if(!fa(n)){const e=n.invert(t);if(void 0===r)return-1;const i=ys(e),o=r?.findIndex((t,n)=>{const o=ys(t);return o>i&&(0===n||Math.abs(i-o)<=Math.abs(i-ys(r[n-1])))||o<=i&&(n===r.length-1||Math.abs(ys(e)-o)=r.length?-1:i?r.length-1-o:o}function bs(e,t,n,r){if(!fa(e)){if(null===r){const t=e.invert(n);return Number.isNaN(t)?null:t}return t[r]}return null===r||r<0||r>=t.length?null:t[r]}function xs(e,t){const n=e.createSVGPoint();return n.x=t.clientX,n.y=t.clientY,n.matrixTransform(e.getScreenCTM().inverse())}const Is=e=>e.interaction,ws=ae(Is,e=>void 0!==e),ks=ae(Is,e=>e?.pointer??null),Ss=ae(ks,e=>e&&e.x),Ms=ae(ks,e=>e&&e.y),Cs=ae(Is,e=>e?.lastUpdate);function Ps(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)){const n=e.length;if(n!==t.length)return!1;for(let r=0;rvs(t.axis[n],e)):vs(t.axis[n],e)}const Ts=(e,t,n)=>{if(null===e)return null;const r=Es(e,t,n);return-1===r?null:r},As=ae(Ss,ls,Ts),Os=ae(Ms,cs,Ts),js=ae(Ss,Ms,ls,cs,(e,t,n,r)=>[...null===e?[]:n.axisIds.map(t=>({axisId:t,dataIndex:Es(e,n,t)})),...null===t?[]:r.axisIds.map(e=>({axisId:e,dataIndex:Es(t,r,e)}))].filter(e=>null!==e.dataIndex&&e.dataIndex>=0));function Ls(e,t,n,r=t.axisIds[0]){return Array.isArray(r)?r.map((r,i)=>{const o=t.axis[r];return bs(o.scale,o.data,e,n[i])}):bs(t.axis[r].scale,t.axis[r].data,e,n)}const Rs=ae(Ss,ls,As,(e,t,n,r)=>null===e||0===t.axisIds.length?null:Ls(e,t,n,r)),Ds=ae(Ms,cs,Os,(e,t,n,r)=>null===e||0===t.axisIds.length?null:Ls(e,t,n,r)),$s=[],zs=se({memoizeOptions:{resultEqualityCheck:Ps}})(Ss,ls,(e,t)=>null===e?$s:t.axisIds.filter(e=>t.axis[e].triggerTooltip).map(n=>({axisId:n,dataIndex:vs(t.axis[n],e)})).filter(({dataIndex:e})=>e>=0)),Ns=se({memoizeOptions:{resultEqualityCheck:Ps}})(Ms,cs,(e,t)=>null===e?$s:t.axisIds.filter(e=>t.axis[e].triggerTooltip).map(n=>({axisId:n,dataIndex:vs(t.axis[n],e)})).filter(({dataIndex:e})=>e>=0)),_s=ae(zs,Ns,(e,t)=>e.length>0||t.length>0);function Fs(e){return void 0!==e.setPointerCoordinate}const Hs=new Set(["bar","rangeBar","line"]),Bs=({params:t,store:n,seriesConfig:r,svgRef:i,instance:o})=>{const{xAxis:a,yAxis:s,dataset:l,onHighlightedAxisChange:c}=t,u=n.use(he),d=n.use(ft),p=n.use(ws),{axis:h,axisIds:m}=n.use(ls),{axis:f,axisIds:g}=n.use(cs);t.highlightedAxis,V(()=>{void 0!==t.highlightedAxis&&n.set("controlledCartesianAxisHighlight",t.highlightedAxis)},[n,t.highlightedAxis]);const y=e.useRef(!0);e.useEffect(()=>{y.current?y.current=!1:n.set("cartesianAxis",{x:Mt(a,l),y:Ct(s,l)})},[r,u,a,s,l,n]);const v=m[0],b=g[0];!function(t,n,r){const i=st(ut,{store:t,selector:n}).current;var o;i.effect=r,o=i.onMount,e.useEffect(o,lt)}(n,js,(e,t)=>{c&&(Object.is(e,t)||(e.length===t.length?e?.some(({axisId:e,dataIndex:n},r)=>t[r].axisId!==e||t[r].dataIndex!==n)&&c(t):c(t)))});const x=Fs(o);return e.useEffect(()=>{const e=i.current;if(!p||!x||!e||t.disableAxisListener)return()=>{};const n=o.addInteractionListener("moveEnd",e=>{e.detail.activeGestures.pan||o.cleanInteraction()}),r=o.addInteractionListener("panEnd",e=>{e.detail.activeGestures.move||o.cleanInteraction()}),a=o.addInteractionListener("quickPressEnd",e=>{e.detail.activeGestures.move||e.detail.activeGestures.pan||o.cleanInteraction()}),s=t=>{const n=t.detail.srcEvent,r=t.detail.target,i=xs(e,n);t.detail.srcEvent.buttons>=1&&r?.hasPointerCapture(t.detail.srcEvent.pointerId)&&!r?.closest("[data-charts-zoom-slider]")&&r?.releasePointerCapture(t.detail.srcEvent.pointerId),o.isPointInside(i.x,i.y,r)?o.setPointerCoordinate(i):o.cleanInteraction?.()},l=o.addInteractionListener("move",s),c=o.addInteractionListener("pan",s),u=o.addInteractionListener("quickPress",s);return()=>{l.cleanup(),n.cleanup(),c.cleanup(),r.cleanup(),u.cleanup(),a.cleanup()}},[i,n,h,v,f,b,o,t.disableAxisListener,p,x]),e.useEffect(()=>{const e=i.current,n=t.onAxisClick;if(null===e||!n)return()=>{};const r=o.addInteractionListener("tap",t=>{let r=null,i=!1;const o=xs(e,t.detail.srcEvent),a=vs(h[v],o.x);i=-1!==a,r=i?a:vs(f[b],o.y);const s=i?m[0]:g[0];if(null==r||-1===r)return;const l=(i?h:f)[s].data[r],c={};Object.keys(d).filter(e=>Hs.has(e)).forEach(e=>{const t=d[e];t?.seriesOrder.forEach(e=>{const n=t.series[e],o=n.xAxisId,a=n.yAxisId,l=i?o:a;void 0!==l&&l!==s||(c[e]=n.data[r])})}),n(t.detail.srcEvent,{dataIndex:r,axisValue:l,seriesValues:c})});return()=>{r.cleanup()}},[t.onAxisClick,d,i,h,m,f,g,v,b,o]),{}};Bs.params={xAxis:!0,yAxis:!0,dataset:!0,onAxisClick:!0,disableAxisListener:!0,onHighlightedAxisChange:!0,highlightedAxis:!0},Bs.getDefaultizedParams=({params:e})=>l({},e,{colors:e.colors??Ce,theme:e.theme??"light",defaultizedXAxis:Mt(e.xAxis,e.dataset),defaultizedYAxis:Ct(e.yAxis,e.dataset)}),Bs.getInitialState=e=>l({cartesianAxis:{x:e.defaultizedXAxis,y:e.defaultizedYAxis}},void 0===e.highlightedAxis?{}:{controlledCartesianAxisHighlight:e.highlightedAxis});const Vs=Object.is;function Us(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;let n=0,r=0;for(const r in e){if(n+=1,!Vs(e[r],t[r]))return!1;if(!(r in t))return!1}for(const e in t)r+=1;return n===r}const Ys=({store:e})=>{const t=ke(function(t){const n=e.state.tooltip.item;t?null!==n&&Us(n,t)&&e.set("tooltip",{item:null}):null!==n&&e.set("tooltip",{item:null})});return{instance:{setTooltipItem:ke(function(t){Us(e.state.tooltip.item,t)||e.set("tooltip",{item:t})}),removeTooltipItem:t}}};Ys.getInitialState=()=>({tooltip:{item:null}}),Ys.params={};const Ws=({store:e})=>({instance:{cleanInteraction:ke(function(){e.update({interaction:l({},e.state.interaction,{pointer:null})})}),setLastUpdateSource:ke(function(t){e.state.interaction.lastUpdate!==t&&e.set("interaction",l({},e.state.interaction,{lastUpdate:t}))}),setPointerCoordinate:ke(function(t){e.set("interaction",l({},e.state.interaction,{pointer:t,lastUpdate:null!==t?"pointer":e.state.interaction.lastUpdate}))})}});function Gs(e,t){return void 0!==e.id?e:l({id:t},e)}function Ks(e){return e.colorMap?l({},e,{colorScale:"ordinal"===e.colorMap.type&&e.data?wr(l({values:e.data},e.colorMap)):kr("continuous"===e.colorMap.type?l({min:e.min,max:e.max},e.colorMap):e.colorMap)}):e}function qs(e,t){if(!e||0===e.length)return{axis:{},axisIds:[]};const n={},r=[];return e.forEach((e,i)=>{const o=e.dataKey,a=e.id??`defaultized-z-axis-${i}`;if(void 0===o||void 0!==e.data)return n[a]=Ks(Gs(e,a)),void r.push(a);if(void 0===t)throw new Error("MUI X Charts: z-axis uses `dataKey` but no `dataset` is provided.");n[a]=Ks(Gs(l({},e,{data:t.map(e=>e[o])}),a)),r.push(a)}),{axis:n,axisIds:r}}Ws.getInitialState=()=>({interaction:{item:null,pointer:null,lastUpdate:"pointer"}}),Ws.params={};const Xs=({params:t,store:n})=>{const{zAxis:r,dataset:i}=t,o=e.useRef(!0);return e.useEffect(()=>{o.current?o.current=!1:n.set("zAxis",qs(r,i))},[r,i,n]),{}};Xs.params={zAxis:!0,dataset:!0},Xs.getInitialState=e=>({zAxis:qs(e.zAxis,e.dataset)});const Zs=({store:e,params:t})=>(t.highlightedItem,V(()=>{e.state.highlight.item!==t.highlightedItem&&e.set("highlight",l({},e.state.highlight,{item:t.highlightedItem}))},[e,t.highlightedItem]),{instance:{clearHighlight:ke(()=>{t.onHighlightChange?.(null);const n=e.state.highlight;null===n.item||n.isControlled||e.set("highlight",{item:null,lastUpdate:"pointer",isControlled:!1})}),setHighlight:ke(n=>{const r=e.state.highlight;Us(r.item,n)||(t.onHighlightChange?.(n),r.isControlled||e.set("highlight",{item:n,lastUpdate:"pointer",isControlled:!1}))})}});function Js(e){let t=1/0,n=-1/0;for(const r of e??[])rn&&(n=r);return[t,n]}Zs.getInitialState=e=>({highlight:{item:e.highlightedItem,lastUpdate:"pointer",isControlled:void 0!==e.highlightedItem}}),Zs.params={highlightedItem:!0,onHighlightChange:!0};const Qs=(e,t)=>"x"===t?{x:e,y:null}:{x:null,y:e},el=e=>{const{axis:t,getFilters:n,isDefaultAxis:r}=e,i=n?.({currentAxisId:t.id,isDefaultAxis:r}),o=i?t.data?.filter((e,t)=>i({x:null,y:null},t)):t.data;return Js(o??[])},tl=e=>t=>{const{series:n,axis:r,getFilters:i,isDefaultAxis:o}=t;return Object.keys(n).filter(t=>{const i="x"===e?n[t].xAxisId:n[t].yAxisId;return i===r.id||o&&void 0===i}).reduce((t,a)=>{const{stackedData:s}=n[a],l=i?.({currentAxisId:r.id,isDefaultAxis:o,seriesXAxisId:n[a].xAxisId,seriesYAxisId:n[a].yAxisId}),[c,u]=s?.reduce((t,n,r)=>!l||l(Qs(n[0],e),r)&&l(Qs(n[1],e),r)?[Math.min(...n,t[0]),Math.max(...n,t[1])]:t,[1/0,-1/0])??[1/0,-1/0];return[Math.min(c,t[0]),Math.max(u,t[1])]},[1/0,-1/0])};function nl(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function rl(e){return function(){return e}}function il(e,t){if((i=e.length)>1)for(var n,r,i,o=1,a=e[t[0]],s=a.length;o=0;)n[t]=t;return n}function al(e,t){return e[t]}function sl(e){const t=[];return t.key=e,t}function ll(){var e=rl([]),t=ol,n=il,r=al;function i(i){var o,a,s=Array.from(e.apply(this,arguments),sl),l=s.length,c=-1;for(const e of i)for(o=0,++c;oo&&(o=t,r=n);return r}function dl(e){var t=e.map(pl);return ol(e).sort(function(e,n){return t[e]-t[n]})}function pl(e){for(var t,n=0,r=-1,i=e.length;++r0){for(var n,r,i,o=0,a=e[0].length;o0?(s[0]=i,i+=l,s[1]=i):l<0?(s[1]=o,o+=l,s[0]=o):s.data[n.key]>0?(s[0]=i,s[1]=i):s.data[n.key]<0?(s[1]=o,s[0]=o):(s[0]=0,s[1]=0)}}},none:il,silhouette:function(e,t){if((n=e.length)>0){for(var n,r=0,i=e[t[0]],o=i.length;r0&&(r=(n=e[t[0]]).length)>0){for(var n,r,i,o=0,a=1;a{const{series:t,seriesOrder:n,defaultStrategy:r}=e,i=[],o={};return n.forEach(e=>{const{stack:n,stackOrder:a,stackOffset:s}=t[e];void 0===n?i.push({ids:[e],stackingOrder:hl.none,stackingOffset:ml.none}):void 0===o[n]?(o[n]=i.length,i.push({ids:[e],stackingOrder:hl[a??r?.stackOrder??"none"],stackingOffset:ml[s??r?.stackOffset??"diverging"]})):(i[o[n]].ids.push(e),void 0!==a&&(i[o[n]].stackingOrder=hl[a]),void 0!==s&&(i[o[n]].stackingOffset=ml[s]))}),i},gl=e=>null==e?"":e.toLocaleString();function yl(e,t){return"function"==typeof e?e(t):e}function vl(e){return e.colorGetter?e.colorGetter:()=>e.color}const bl=(e,t,n)=>{const r="vertical"===e.layout,i=r?t?.colorScale:n?.colorScale,o=r?n?.colorScale:t?.colorScale,a=r?t?.data:n?.data,s=vl(e);return o?t=>{if(void 0===t)return e.color;const n=e.data[t],r=null===n?s({value:n,dataIndex:t}):o(n);return null===r?s({value:n,dataIndex:t}):r}:i&&a?t=>{if(void 0===t)return e.color;const n=a[t],r=null===n?s({value:n,dataIndex:t}):i(n);return null===r?s({value:n,dataIndex:t}):r}:t=>{if(void 0===t)return e.color;const n=e.data[t];return s({value:n,dataIndex:t})}};function xl(e,t){return Object.keys(e).filter(e=>t.has(e)).flatMap(t=>{const n=e[t];return n.seriesOrder.filter(e=>n.series[e].data.length>0&&n.series[e].data.some(e=>null!=e)).map(e=>({type:t,seriesId:e}))})}function Il(e,t,n,r){const i=xl(e,t);if(0===i.length)return null;const o=void 0!==n&&void 0!==r?i.findIndex(e=>e.type===n&&e.seriesId===r):-1;return o<=0?i[i.length-1]:i[(o-1+i.length)%i.length]}function wl(e,t){return Object.keys(e).filter(e=>t.has(e)).flatMap(t=>{const n=e[t];return n.seriesOrder.filter(e=>n.series[e].data.length>0&&n.series[e].data.some(e=>null!=e)).map(e=>n.series[e].data.length)}).reduce((e,t)=>Math.max(e,t),0)}function kl(e,t,n,r){const i=xl(e,t);if(0===i.length)return null;const o=void 0!==n&&void 0!==r?i.findIndex(e=>e.type===n&&e.seriesId===r):-1;return i[(o+1)%i.length]}function Sl(e,t,n){if("sankey"===t)return!1;const r=e[t]?.series[n]?.data;return null!=r&&r.length>0}function Ml(e){return function(t,n){const r=ft(n);let i=t?.seriesId,o=t?.type;if(!o||null==i||!Sl(r,o,i)){const t=kl(r,e,o,i);if(null===t)return null;o=t.type,i=t.seriesId}const a=wl(r,e);return{type:o,seriesId:i,dataIndex:Math.min(a-1,null==t?.dataIndex?0:t.dataIndex+1)}}}function Cl(e){return function(t,n){const r=ft(n);let i=t?.seriesId,o=t?.type;if(!o||null==i||!Sl(r,o,i)){const t=Il(r,e,o,i);if(null===t)return null;o=t.type,i=t.seriesId}const a=wl(r,e);return{type:o,seriesId:i,dataIndex:Math.max(0,null==t?.dataIndex?a-1:t.dataIndex-1)}}}function Pl(e){return function(t,n){const r=ft(n);let i=t?.seriesId,o=t?.type;const a=kl(r,e,o,i);return null===a?null:(o=a.type,i=a.seriesId,{type:o,seriesId:i,dataIndex:null==t?.dataIndex?0:t.dataIndex})}}function El(e){return function(t,n){const r=ft(n);let i=t?.seriesId,o=t?.type;const a=Il(r,e,o,i);if(null===a)return null;o=a.type,i=a.seriesId;const s=r[o].series[i].data;return{type:o,seriesId:i,dataIndex:null==t?.dataIndex?s.length-1:t.dataIndex}}}const Tl=new Set(["bar","line","scatter"]);function Al(e,t,n){if(0===n)return{barWidth:e/t,offset:0};const r=e/(t+(t-1)*n);return{barWidth:r,offset:n*r}}function Ol(e){const{verticalLayout:t,xAxisConfig:n,yAxisConfig:r,series:i,dataIndex:o,numberOfGroups:a,groupIndex:s}=e,l=t?n:r,c=(t?r.reverse:n.reverse)??!1,{barWidth:u,offset:d}=Al(l.scale.bandwidth(),a,l.barGapRatio),p=s*(u+d),h=n.scale,m=r.scale,f=l.data[o],g=i.data[o];if(null==g)return null;const y=i.stackedData[o].map(e=>t?m(e):h(e)),v=Math.round(Math.min(...y)),b=Math.round(Math.max(...y)),x=0===g?0:Math.max(i.minBarSize,b-v),I=function(e,t,n){const r=e&&t>0||!e&&t<0;return n?!r:r}(t,g,c)?b-x:v;return{x:t?h(f)+p:I,y:t?I:m(f)+p,height:t?x:u,width:t?u:x}}const jl=e=>{return`${r=e.type,`Type(${r})`}${n=e.seriesId,`Series(${n})`}${t=e.dataIndex,void 0===t?"":`Index(${t})`}`;var t,n,r},Ll={seriesProcessor:(e,t)=>{const{seriesOrder:n,series:r}=e,i=fl(e),o=t??[];n.forEach(e=>{const n=r[e].data;if(void 0!==n)n.forEach((t,n)=>{o.length<=n?o.push({[e]:t}):o[n][e]=t});else if(void 0===t)throw new Error([`MUI X Charts: bar series with id='${e}' has no data.`,"Either provide a data property to the series or use the dataset prop."].join("\n"))});const a={};return i.forEach(e=>{const{ids:n,stackingOffset:i,stackingOrder:s}=e,c=ll().keys(n.map(e=>{const t=r[e].dataKey;return void 0===r[e].data&&void 0!==t?t:e})).value((e,t)=>e[t]??0).order(s).offset(i)(o);n.forEach((e,n)=>{const i=r[e].dataKey;a[e]=l({layout:"vertical",labelMarkType:"square",minBarSize:0,valueFormatter:r[e].valueFormatter??gl},r[e],{data:i?t.map(e=>{const t=e[i];return"number"==typeof t?t:null}):r[e].data,stackedData:c[n].map(([e,t])=>[e,t])})})}),{seriesOrder:n,stackingGroups:i,series:a}},colorProcessor:bl,legendGetter:e=>{const{seriesOrder:t,series:n}=e;return t.reduce((e,t)=>{const r=yl(n[t].label,"legend");return void 0===r||e.push({type:"bar",markType:n[t].labelMarkType,id:t,seriesId:t,color:n[t].color,label:r}),e},[])},tooltipGetter:e=>{const{series:t,getColor:n,identifier:r}=e;if(!r||void 0===r.dataIndex)return null;const i=yl(t.label,"tooltip"),o=t.data[r.dataIndex];if(null==o)return null;const a=t.valueFormatter(o,{dataIndex:r.dataIndex});return{identifier:r,color:n(r.dataIndex),label:i,value:o,formattedValue:a,markType:t.labelMarkType}},tooltipItemPositionGetter:e=>{const{series:t,identifier:n,axesConfig:r,placement:i}=e;if(!n||void 0===n.dataIndex)return null;const o=t.bar?.series[n.seriesId];if(null==t.bar||null==o)return null;if(void 0===r.x||void 0===r.y)return null;const a=Ol({verticalLayout:"vertical"===o.layout,xAxisConfig:r.x,yAxisConfig:r.y,series:o,dataIndex:n.dataIndex,numberOfGroups:t.bar.stackingGroups.length,groupIndex:t.bar.stackingGroups.findIndex(e=>e.ids.includes(o.id))});if(null==a)return null;const{x:s,y:l,width:c,height:u}=a;switch(i){case"right":return{x:s+c,y:l+u/2};case"bottom":return{x:s+c/2,y:l+u};case"left":return{x:s,y:l+u/2};default:return{x:s+c/2,y:l}}},axisTooltipGetter:e=>Object.values(e).map(e=>"horizontal"===e.layout?{direction:"y",axisId:e.yAxisId}:{direction:"x",axisId:e.xAxisId}),xExtremumGetter:e=>Object.keys(e.series).some(t=>"horizontal"===e.series[t].layout)?tl("x")(e):el(e),yExtremumGetter:e=>Object.keys(e.series).some(t=>"horizontal"===e.series[t].layout)?el(e):tl("y")(e),getSeriesWithDefaultValues:function(e,t,n){return l({},e,{id:e.id??`auto-generated-id-${t}`,color:e.color??n[t%n.length]})},keyboardFocusHandler:e=>{switch(e.key){case"ArrowRight":return Ml(Tl);case"ArrowLeft":return Cl(Tl);case"ArrowDown":return El(Tl);case"ArrowUp":return Pl(Tl);default:return null}},identifierSerializer:jl},Rl=new Set(["bar","line","scatter"]),Dl={seriesProcessor:({series:e,seriesOrder:t},n)=>({series:Object.fromEntries(Object.entries(e).map(([e,t])=>{const r=t?.datasetKeys,i=["x","y"].filter(e=>"string"!=typeof r?.[e]);if(t?.datasetKeys&&i.length>0)throw new Error([`MUI X Charts: scatter series with id='${e}' has incomplete datasetKeys.`,`Properties ${i.map(e=>`"${e}"`).join(", ")} are missing.`].join("\n"));const o=r?n?.map(e=>({x:e[r.x]??null,y:e[r.y]??null,z:r.z&&e[r.z],id:r.id&&e[r.id]}))??[]:t.data??[];return[e,l({labelMarkType:"circle",markerSize:4},t,{preview:l({markerSize:1},t?.preview),data:o,valueFormatter:t.valueFormatter??(e=>e&&`(${e.x}, ${e.y})`)})]})),seriesOrder:t}),colorProcessor:(e,t,n,r)=>{const i=r?.colorScale,o=n?.colorScale,a=t?.colorScale,s=vl(e);return i?t=>{if(void 0===t)return e.color;if(void 0!==r?.data?.[t]){const e=i(r?.data?.[t]);if(null!==e)return e}const n=e.data[t],o=null===n?s({value:n,dataIndex:t}):i(n.z);return null===o?s({value:n,dataIndex:t}):o}:o?t=>{if(void 0===t)return e.color;const n=e.data[t],r=null===n?s({value:n,dataIndex:t}):o(n.y);return null===r?s({value:n,dataIndex:t}):r}:a?t=>{if(void 0===t)return e.color;const n=e.data[t],r=null===n?s({value:n,dataIndex:t}):a(n.x);return null===r?s({value:n,dataIndex:t}):r}:t=>{if(void 0===t)return e.color;const n=e.data[t];return s({value:n,dataIndex:t})}},legendGetter:e=>{const{seriesOrder:t,series:n}=e;return t.reduce((e,t)=>{const r=yl(n[t].label,"legend");return void 0===r||e.push({type:"scatter",markType:n[t].labelMarkType,id:t,seriesId:t,color:n[t].color,label:r}),e},[])},tooltipGetter:e=>{const{series:t,getColor:n,identifier:r}=e;if(!r||void 0===r.dataIndex)return null;const i=yl(t.label,"tooltip"),o=t.data[r.dataIndex],a=t.valueFormatter(o,{dataIndex:r.dataIndex});return{identifier:r,color:n(r.dataIndex),label:i,value:o,formattedValue:a,markType:t.labelMarkType}},tooltipItemPositionGetter:e=>{const{series:t,identifier:n,axesConfig:r}=e;if(!n||void 0===n.dataIndex)return null;const i=t.scatter?.series[n.seriesId];if(null==i)return null;if(void 0===r.x||void 0===r.y)return null;const o=i.data?.[n.dataIndex].x,a=i.data?.[n.dataIndex].y;return null==o||null==a?null:{x:r.x.scale(o),y:r.y.scale(a)}},xExtremumGetter:e=>{const{series:t,axis:n,isDefaultAxis:r,getFilters:i}=e;let o=1/0,a=-1/0;for(const e in t){if(!Object.hasOwn(t,e))continue;const s=t[e].xAxisId;if(!(s===n.id||void 0===s&&r))continue;const l=i?.({currentAxisId:n.id,isDefaultAxis:r,seriesXAxisId:t[e].xAxisId,seriesYAxisId:t[e].yAxisId}),c=t[e].data??[];for(let e=0;ea&&(a=t.x))}}return[o,a]},yExtremumGetter:e=>{const{series:t,axis:n,isDefaultAxis:r,getFilters:i}=e;let o=1/0,a=-1/0;for(const e in t){if(!Object.hasOwn(t,e))continue;const s=t[e].yAxisId;if(!(s===n.id||void 0===s&&r))continue;const l=i?.({currentAxisId:n.id,isDefaultAxis:r,seriesXAxisId:t[e].xAxisId,seriesYAxisId:t[e].yAxisId}),c=t[e].data??[];for(let e=0;ea&&(a=t.y))}}return[o,a]},getSeriesWithDefaultValues:(e,t,n)=>l({},e,{id:e.id??`auto-generated-id-${t}`,color:e.color??n[t%n.length]}),keyboardFocusHandler:e=>{switch(e.key){case"ArrowRight":return Ml(Rl);case"ArrowLeft":return Cl(Rl);case"ArrowDown":return El(Rl);case"ArrowUp":return Pl(Rl);default:return null}},identifierSerializer:jl},$l=(e,t,n)=>{const r=n?.colorScale,i=t?.colorScale,o=vl(e);return r?t=>{if(void 0===t)return e.color;const n=e.data[t],i=null===n?o({value:n,dataIndex:t}):r(n);return null===i?o({value:n,dataIndex:t}):i}:i?n=>{if(void 0===n)return e.color;const r=t.data?.[n],a=null===r?o({value:r,dataIndex:n}):i(r);return null===a?o({value:r,dataIndex:n}):a}:t=>{if(void 0===t)return e.color;const n=e.data[t];return o({value:n,dataIndex:t})}},zl=new Set(["bar","line","scatter"]),Nl={colorProcessor:$l,seriesProcessor:(e,t)=>{const{seriesOrder:n,series:r}=e,i=fl(l({},e,{defaultStrategy:{stackOffset:"none"}})),o=t??[];n.forEach(e=>{const t=r[e].data;void 0!==t&&t.forEach((t,n)=>{o.length<=n?o.push({[e]:t}):o[n][e]=t})});const a={};return i.forEach(e=>{const{ids:n,stackingOrder:i,stackingOffset:s}=e,c=ll().keys(n.map(e=>{const t=r[e].dataKey;return void 0===r[e].data&&void 0!==t?t:e})).value((e,t)=>e[t]??0).order(i).offset(s)(o);n.forEach((e,n)=>{const i=r[e].dataKey;a[e]=l({labelMarkType:"line"},r[e],{data:i?t.map(e=>{const t=e[i];return"number"==typeof t?t:null}):r[e].data,stackedData:c[n].map(([e,t])=>[e,t]),valueFormatter:r[e]?.valueFormatter??(e=>null==e?"":e.toLocaleString())})})}),{seriesOrder:n,stackingGroups:i,series:a}},legendGetter:e=>{const{seriesOrder:t,series:n}=e;return t.reduce((e,t)=>{const r=yl(n[t].label,"legend");return void 0===r||e.push({type:"line",markType:n[t].labelMarkType,id:t,seriesId:t,color:n[t].color,label:r}),e},[])},tooltipGetter:e=>{const{series:t,getColor:n,identifier:r}=e;if(!r||void 0===r.dataIndex)return null;const i=yl(t.label,"tooltip"),o=t.data[r.dataIndex],a=t.valueFormatter(o,{dataIndex:r.dataIndex});return{identifier:r,color:n(r.dataIndex),label:i,value:o,formattedValue:a,markType:t.labelMarkType}},tooltipItemPositionGetter:e=>{const{series:t,identifier:n,axesConfig:r}=e;if(!n||void 0===n.dataIndex)return null;const i=t.line?.series[n.seriesId];if(null==i)return null;if(void 0===r.x||void 0===r.y)return null;const o=r.x.data?.[n.dataIndex],a=i.data[n.dataIndex];return null==o||null==a?null:{x:r.x.scale(o),y:r.y.scale(a)}},axisTooltipGetter:e=>Object.values(e).map(e=>({direction:"x",axisId:e.xAxisId})),xExtremumGetter:e=>{const{axis:t}=e;return Js(t.data??[])},yExtremumGetter:e=>{const{series:t,axis:n,isDefaultAxis:r,getFilters:i}=e;return Object.keys(t).filter(e=>{const i=t[e].yAxisId;return i===n.id||r&&void 0===i}).reduce((e,o)=>{const{area:a,stackedData:s,data:l}=t[o],c=void 0!==a,u=i?.({currentAxisId:n.id,isDefaultAxis:r,seriesXAxisId:t[o].xAxisId,seriesYAxisId:t[o].yAxisId}),d=function(e,t,n,r){return n.reduce((n,i,o)=>{if(null===t[o])return n;const[a,s]=e(i);return!r||r({y:a,x:null},o)&&r({y:s,x:null},o)?[Math.min(a,s,n[0]),Math.max(a,s,n[1])]:n},[1/0,-1/0])}(c&&"log"!==n.scaleType&&"string"!=typeof t[o].baseline?e=>e:e=>[e[1],e[1]],l,s,u),[p,h]=d;return[Math.min(p,e[0]),Math.max(h,e[1])]},[1/0,-1/0])},getSeriesWithDefaultValues:(e,t,n)=>l({},e,{id:e.id??`auto-generated-id-${t}`,color:e.color??n[t%n.length]}),keyboardFocusHandler:e=>{switch(e.key){case"ArrowRight":return Ml(zl);case"ArrowLeft":return Cl(zl);case"ArrowDown":return El(zl);case"ArrowUp":return Pl(zl);default:return null}},identifierSerializer:jl};function _l(e,t){return te?1:t>=e?0:NaN}function Fl(e){return e}const Hl=Math.abs,Bl=Math.atan2,Vl=Math.cos,Ul=Math.max,Yl=Math.min,Wl=Math.sin,Gl=Math.sqrt,Kl=1e-12,ql=Math.PI,Xl=ql/2,Zl=2*ql;function Jl(e){return e>=1?Xl:e<=-1?-Xl:Math.asin(e)}const Ql=(e,t)=>void 0===e?t:Math.PI*e/180;function ec(e,t){if("number"==typeof e)return e;if("100%"===e)return t;if(e.endsWith("%")){const n=Number.parseFloat(e.slice(0,e.length-1));if(!Number.isNaN(n))return n*t/100}if(e.endsWith("px")){const t=Number.parseFloat(e.slice(0,e.length-2));if(!Number.isNaN(t))return t}throw new Error(`MUI X Charts: Received an unknown value "${e}". It should be a number, or a string with a percentage value.`)}function tc(e,t){const{height:n,width:r}=t,{cx:i,cy:o}=e,a=Math.min(r,n)/2;return{cx:ec(i??"50%",r),cy:ec(o??"50%",n),availableRadius:a}}const nc=new Set(["pie"]),rc={bar:Ll,scatter:Dl,line:Nl,pie:{colorProcessor:e=>t=>e.data[t].color,seriesProcessor:e=>{const{seriesOrder:t,series:n}=e,r={};return t.forEach(e=>{const t=function(){var e=Fl,t=_l,n=null,r=rl(0),i=rl(Zl),o=rl(0);function a(a){var s,l,c,u,d,p=(a=nl(a)).length,h=0,m=new Array(p),f=new Array(p),g=+r.apply(this,arguments),y=Math.min(Zl,Math.max(-Zl,i.apply(this,arguments)-g)),v=Math.min(Math.abs(y)/p,o.apply(this,arguments)),b=v*(y<0?-1:1);for(s=0;s0&&(h+=d);for(null!=t?m.sort(function(e,n){return t(f[e],f[n])}):null!=n&&m.sort(function(e,t){return n(a[e],a[t])}),s=0,c=h?(y-p*b)/h:0;s0?d*c:0)+b,f[l]={data:a[l],index:s,value:d,startAngle:g,endAngle:u,padAngle:v};return f}return a.value=function(t){return arguments.length?(e="function"==typeof t?t:rl(+t),a):e},a.sortValues=function(e){return arguments.length?(t=e,n=null,a):t},a.sort=function(e){return arguments.length?(n=e,t=null,a):n},a.startAngle=function(e){return arguments.length?(r="function"==typeof e?e:rl(+e),a):r},a.endAngle=function(e){return arguments.length?(i="function"==typeof e?e:rl(+e),a):i},a.padAngle=function(e){return arguments.length?(o="function"==typeof e?e:rl(+e),a):o},a}().startAngle(Ql(n[e].startAngle??0)).endAngle(Ql(n[e].endAngle??360)).padAngle(Ql(n[e].paddingAngle??0)).sortValues(((e="none")=>{if("function"==typeof e)return e;switch(e){case"none":default:return null;case"desc":return(e,t)=>t-e;case"asc":return(e,t)=>e-t}})(n[e].sortingValues??"none"))(n[e].data.map(e=>e.value));r[e]=l({labelMarkType:"circle",valueFormatter:e=>e.value.toLocaleString()},n[e],{data:n[e].data.map((n,r)=>l({},n,{id:n.id??`auto-generated-pie-id-${e}-${r}`},t[r])).map((t,r)=>l({labelMarkType:"circle"},t,{formattedValue:n[e].valueFormatter?.(l({},t,{label:yl(t.label,"arc")}),{dataIndex:r})??t.value.toLocaleString()}))})}),{seriesOrder:t,series:r}},seriesLayout:(e,t)=>{const n={};for(const r of e.seriesOrder){const{innerRadius:i,outerRadius:o,arcLabelRadius:a,cx:s,cy:l}=e.series[r],{cx:c,cy:u,availableRadius:d}=tc({cx:s,cy:l},{width:t.width,height:t.height}),p=ec(o??d,d),h=ec(i??0,d),m=void 0===a?(h+p)/2:ec(a,d);n[r]={radius:{available:d,inner:h,outer:p,label:m},center:{x:t.left+c,y:t.top+u}}}return n},legendGetter:e=>{const{seriesOrder:t,series:n}=e;return t.reduce((e,t)=>(n[t].data.forEach((r,i)=>{const o=yl(r.label,"legend");if(void 0===o)return;const a=r.id??i;e.push({type:"pie",markType:r.labelMarkType??n[t].labelMarkType,seriesId:t,id:a,itemId:a,dataIndex:i,color:r.color,label:o})}),e),[])},tooltipGetter:e=>{const{series:t,getColor:n,identifier:r}=e;if(!r||void 0===r.dataIndex)return null;const i=t.data[r.dataIndex];if(null==i)return null;const o=yl(i.label,"tooltip"),a=l({},i,{label:o}),s=t.valueFormatter(a,{dataIndex:r.dataIndex});return{identifier:r,color:n(r.dataIndex),label:o,value:a,formattedValue:s,markType:i.labelMarkType??t.labelMarkType}},tooltipItemPositionGetter:e=>{const{series:t,identifier:n,placement:r,seriesLayout:i}=e;if(!n||void 0===n.dataIndex)return null;const o=t.pie?.series[n.seriesId],a=i.pie?.[n.seriesId];if(null==o||null==a)return null;const{center:s,radius:l}=a,{data:c}=o,u=c[n.dataIndex];if(!u)return null;const d=[[l.inner,u.startAngle],[l.inner,u.endAngle],[l.outer,u.startAngle],[l.outer,u.endAngle]].map(([e,t])=>({x:s.x+e*Math.sin(t),y:s.y-e*Math.cos(t)})),[p,h]=Js(d.map(e=>e.x)),[m,f]=Js(d.map(e=>e.y));switch(r){case"bottom":return{x:(h+p)/2,y:f};case"left":return{x:p,y:(f+m)/2};case"right":return{x:h,y:(f+m)/2};default:return{x:(h+p)/2,y:m}}},getSeriesWithDefaultValues:(e,t,n)=>l({},e,{id:e.id??`auto-generated-id-${t}`,data:e.data.map((e,t)=>l({},e,{color:e.color??n[t%n.length]}))}),keyboardFocusHandler:e=>{switch(e.key){case"ArrowRight":return Ml(nc);case"ArrowLeft":return Cl(nc);case"ArrowDown":return El(nc);case"ArrowUp":return Pl(nc);default:return null}},identifierSerializer:jl}},ic=[Xs,Ys,Ws,Bs,Zs];function oc(t){const{children:n,plugins:r=ic,pluginParams:i={},seriesConfig:o=rc}=t,{contextValue:a}=function(t,n,r){const i=z(),o=e.useMemo(()=>[...et,...t],[t]),a=rt({plugins:o,props:n});a.id=a.id??i;const s=e.useRef({}).current,l=function(t){const n=e.useRef({});return t?function(e){return null==e.current&&(e.current={}),e}(t):n}(n.apiRef),c=e.useRef(null),u=e.useRef(null),d=e.useRef(null);if(null==d.current){it+=1;const e={cacheKey:{id:it}};o.forEach(t=>{t.getInitialState&&Object.assign(e,t.getInitialState(a,e,r))}),d.current=new B(e)}return o.forEach(e=>{const t=e({instance:s,params:a,plugins:o,store:d.current,svgRef:u,chartRootRef:c,seriesConfig:r});t.publicAPI&&Object.assign(l.current,t.publicAPI),t.instance&&Object.assign(s,t.instance)}),{contextValue:e.useMemo(()=>({store:d.current,publicAPI:l.current,instance:s,svgRef:u,chartRootRef:c}),[s,l])}}(r,i,o);return(0,O.jsx)(ot.Provider,{value:a,children:n})}const ac=e.createContext(null);function sc(){const t=e.useContext(ac);if(null==t)throw new Error(["MUI X Charts: Could not find the Charts Slots context.","It looks like you rendered your component outside of a ChartDataProvider.","This can also happen if you are bundling multiple versions of the library."].join("\n"));return t}function lc(t){const{slots:n,slotProps:r={},defaultSlots:i,children:o}=t,a=e.useMemo(()=>({slots:l({},i,n),slotProps:r}),[i,n,r]);return(0,O.jsx)(ac.Provider,{value:a,children:o})}function cc(e,t){const n={...t};for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){const i=r;if("components"===i||"slots"===i)n[i]={...e[i],...n[i]};else if("componentsProps"===i||"slotProps"===i){const r=e[i],o=t[i];if(o)if(r){n[i]={...o};for(const e in r)if(Object.prototype.hasOwnProperty.call(r,e)){const t=e;n[i][t]=cc(r[t],o[t])}}else n[i]=o;else n[i]=r||{}}else void 0===n[i]&&(n[i]=e[i])}return n}function uc(e){const{theme:t,name:n,props:r}=e;return t&&t.components&&t.components[n]&&t.components[n].defaultProps?cc(t.components[n].defaultProps,r):r}var dc=a(4405);function pc(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function hc(t){if(e.isValidElement(t)||(0,dc.Hy)(t)||!pc(t))return t;const n={};return Object.keys(t).forEach(e=>{n[e]=hc(t[e])}),n}function mc(t,n,r={clone:!0}){const i=r.clone?{...t}:t;return pc(t)&&pc(n)&&Object.keys(n).forEach(o=>{e.isValidElement(n[o])||(0,dc.Hy)(n[o])?i[o]=n[o]:pc(n[o])&&Object.prototype.hasOwnProperty.call(t,o)&&pc(t[o])?i[o]=mc(t[o],n[o],r):r.clone?i[o]=pc(n[o])?hc(n[o]):n[o]:i[o]=n[o]}),i}function fc(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5,...i}=e,o=(e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})})(t),a=Object.keys(o);function s(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function l(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-r/100}${n})`}function c(e,i){const o=a.indexOf(i);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==o&&"number"==typeof t[a[o]]?t[a[o]]:i)-r/100}${n})`}return{keys:a,values:o,up:s,down:l,between:c,only:function(e){return a.indexOf(e)+1e.startsWith("@container")).sort((e,t)=>{const n=/min-width:\s*([0-9.]+)/;return+(e.match(n)?.[1]||0)-+(t.match(n)?.[1]||0)});return n.length?n.reduce((e,n)=>{const r=t[n];return delete e[n],e[n]=r,e},{...t}):t}const yc={borderRadius:4},vc={xs:0,sm:600,md:900,lg:1200,xl:1536},bc={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${vc[e]}px)`},xc={containerQueries:e=>({up:t=>{let n="number"==typeof t?t:vc[t]||t;return"number"==typeof n&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function Ic(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||bc;return t.reduce((r,i,o)=>(r[e.up(e.keys[o])]=n(t[o]),r),{})}if("object"==typeof t){const e=r.breakpoints||bc;return Object.keys(t).reduce((i,o)=>{if(function(e,t){return"@"===t||t.startsWith("@")&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}(e.keys,o)){const e=function(e,t){const n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,r,i]=n,o=Number.isNaN(+r)?r||0:+r;return e.containerQueries(i).up(o)}(r.containerQueries?r:xc,o);e&&(i[e]=n(t[o],o))}else if(Object.keys(e.values||vc).includes(o))i[e.up(o)]=n(t[o],o);else{const e=o;i[e]=t[e]}return i},{})}return n(t)}function wc(e,t){return e.reduce((e,t)=>{const n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e},t)}function kc(e,...t){const n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append("args[]",e)),`Minified MUI error #${e}; visit ${n} for the full message.`}function Sc(e){if("string"!=typeof e)throw new Error(kc(7));return e.charAt(0).toUpperCase()+e.slice(1)}function Mc(e,t,n=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&n){const n=`vars.${t}`.split(".").reduce((e,t)=>e&&e[t]?e[t]:null,e);if(null!=n)return n}return t.split(".").reduce((e,t)=>e&&null!=e[t]?e[t]:null,e)}function Cc(e,t,n,r=n){let i;return i="function"==typeof e?e(n):Array.isArray(e)?e[n]||r:Mc(e,n)||r,t&&(i=t(i,r,e)),i}const Pc=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:r,transform:i}=e,o=e=>{if(null==e[t])return null;const o=e[t],a=Mc(e.theme,r)||{};return Ic(e,o,e=>{let r=Cc(a,i,e);return e===r&&"string"==typeof e&&(r=Cc(a,i,`${t}${"default"===e?"":Sc(e)}`,e)),!1===n?r:{[n]:r}})};return o.propTypes={},o.filterProps=[t],o},Ec=function(e,t){return t?mc(e,t,{clone:!1}):e},Tc={m:"margin",p:"padding"},Ac={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},Oc={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},jc=function(){const e={};return t=>(void 0===e[t]&&(e[t]=(e=>{if(e.length>2){if(!Oc[e])return[e];e=Oc[e]}const[t,n]=e.split(""),r=Tc[t],i=Ac[n]||"";return Array.isArray(i)?i.map(e=>r+e):[r+i]})(t)),e[t])}(),Lc=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],Rc=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],Dc=[...Lc,...Rc];function $c(e,t,n,r){const i=Mc(e,t,!0)??n;return"number"==typeof i||"string"==typeof i?e=>"string"==typeof e?e:"string"==typeof i?`calc(${e} * ${i})`:i*e:Array.isArray(i)?e=>{if("string"==typeof e)return e;const t=Math.abs(e),n=i[t];return e>=0?n:"number"==typeof n?-n:`-${n}`}:"function"==typeof i?i:()=>{}}function zc(e){return $c(e,"spacing",8)}function Nc(e,t){return"string"==typeof t||null==t?t:e(t)}function _c(e,t){const n=zc(e.theme);return Object.keys(e).map(r=>function(e,t,n,r){if(!t.includes(n))return null;const i=function(e,t){return n=>e.reduce((e,r)=>(e[r]=Nc(t,n),e),{})}(jc(n),r);return Ic(e,e[n],i)}(e,t,r,n)).reduce(Ec,{})}function Fc(e){return _c(e,Lc)}function Hc(e){return _c(e,Rc)}function Bc(e){return _c(e,Dc)}function Vc(e=8,t=zc({spacing:e})){if(e.mui)return e;const n=(...e)=>(0===e.length?[1]:e).map(e=>{const n=t(e);return"number"==typeof n?`${n}px`:n}).join(" ");return n.mui=!0,n}Fc.propTypes={},Fc.filterProps=Lc,Hc.propTypes={},Hc.filterProps=Rc,Bc.propTypes={},Bc.filterProps=Dc;const Uc=function(...e){const t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),n=e=>Object.keys(e).reduce((n,r)=>t[r]?Ec(n,t[r](e)):n,{});return n.propTypes={},n.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),n};function Yc(e){return"number"!=typeof e?e:`${e}px solid`}function Wc(e,t){return Pc({prop:e,themeKey:"borders",transform:t})}const Gc=Wc("border",Yc),Kc=Wc("borderTop",Yc),qc=Wc("borderRight",Yc),Xc=Wc("borderBottom",Yc),Zc=Wc("borderLeft",Yc),Jc=Wc("borderColor"),Qc=Wc("borderTopColor"),eu=Wc("borderRightColor"),tu=Wc("borderBottomColor"),nu=Wc("borderLeftColor"),ru=Wc("outline",Yc),iu=Wc("outlineColor"),ou=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=$c(e.theme,"shape.borderRadius",4),n=e=>({borderRadius:Nc(t,e)});return Ic(e,e.borderRadius,n)}return null};ou.propTypes={},ou.filterProps=["borderRadius"],Uc(Gc,Kc,qc,Xc,Zc,Jc,Qc,eu,tu,nu,ou,ru,iu);const au=e=>{if(void 0!==e.gap&&null!==e.gap){const t=$c(e.theme,"spacing",8),n=e=>({gap:Nc(t,e)});return Ic(e,e.gap,n)}return null};au.propTypes={},au.filterProps=["gap"];const su=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=$c(e.theme,"spacing",8),n=e=>({columnGap:Nc(t,e)});return Ic(e,e.columnGap,n)}return null};su.propTypes={},su.filterProps=["columnGap"];const lu=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=$c(e.theme,"spacing",8),n=e=>({rowGap:Nc(t,e)});return Ic(e,e.rowGap,n)}return null};function cu(e,t){return"grey"===t?t:e}function uu(e){return e<=1&&0!==e?100*e+"%":e}lu.propTypes={},lu.filterProps=["rowGap"],Uc(au,su,lu,Pc({prop:"gridColumn"}),Pc({prop:"gridRow"}),Pc({prop:"gridAutoFlow"}),Pc({prop:"gridAutoColumns"}),Pc({prop:"gridAutoRows"}),Pc({prop:"gridTemplateColumns"}),Pc({prop:"gridTemplateRows"}),Pc({prop:"gridTemplateAreas"}),Pc({prop:"gridArea"})),Uc(Pc({prop:"color",themeKey:"palette",transform:cu}),Pc({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:cu}),Pc({prop:"backgroundColor",themeKey:"palette",transform:cu}));const du=Pc({prop:"width",transform:uu}),pu=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const t=t=>{const n=e.theme?.breakpoints?.values?.[t]||vc[t];return n?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:n}:{maxWidth:uu(t)}};return Ic(e,e.maxWidth,t)}return null};pu.filterProps=["maxWidth"];const hu=Pc({prop:"minWidth",transform:uu}),mu=Pc({prop:"height",transform:uu}),fu=Pc({prop:"maxHeight",transform:uu}),gu=Pc({prop:"minHeight",transform:uu}),yu=(Pc({prop:"size",cssProperty:"width",transform:uu}),Pc({prop:"size",cssProperty:"height",transform:uu}),Uc(du,pu,hu,mu,fu,gu,Pc({prop:"boxSizing"})),{border:{themeKey:"borders",transform:Yc},borderTop:{themeKey:"borders",transform:Yc},borderRight:{themeKey:"borders",transform:Yc},borderBottom:{themeKey:"borders",transform:Yc},borderLeft:{themeKey:"borders",transform:Yc},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:Yc},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:ou},color:{themeKey:"palette",transform:cu},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:cu},backgroundColor:{themeKey:"palette",transform:cu},p:{style:Hc},pt:{style:Hc},pr:{style:Hc},pb:{style:Hc},pl:{style:Hc},px:{style:Hc},py:{style:Hc},padding:{style:Hc},paddingTop:{style:Hc},paddingRight:{style:Hc},paddingBottom:{style:Hc},paddingLeft:{style:Hc},paddingX:{style:Hc},paddingY:{style:Hc},paddingInline:{style:Hc},paddingInlineStart:{style:Hc},paddingInlineEnd:{style:Hc},paddingBlock:{style:Hc},paddingBlockStart:{style:Hc},paddingBlockEnd:{style:Hc},m:{style:Fc},mt:{style:Fc},mr:{style:Fc},mb:{style:Fc},ml:{style:Fc},mx:{style:Fc},my:{style:Fc},margin:{style:Fc},marginTop:{style:Fc},marginRight:{style:Fc},marginBottom:{style:Fc},marginLeft:{style:Fc},marginX:{style:Fc},marginY:{style:Fc},marginInline:{style:Fc},marginInlineStart:{style:Fc},marginInlineEnd:{style:Fc},marginBlock:{style:Fc},marginBlockStart:{style:Fc},marginBlockEnd:{style:Fc},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:au},rowGap:{style:lu},columnGap:{style:su},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:uu},maxWidth:{style:pu},minWidth:{transform:uu},height:{transform:uu},maxHeight:{transform:uu},minHeight:{transform:uu},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}),vu=yu,bu=function(){function e(e,t,n,r){const i={[e]:t,theme:n},o=r[e];if(!o)return{[e]:t};const{cssProperty:a=e,themeKey:s,transform:l,style:c}=o;if(null==t)return null;if("typography"===s&&"inherit"===t)return{[e]:t};const u=Mc(n,s)||{};return c?c(i):Ic(i,t,t=>{let n=Cc(u,l,t);return t===n&&"string"==typeof t&&(n=Cc(u,l,`${e}${"default"===t?"":Sc(t)}`,t)),!1===a?n:{[a]:n}})}return function t(n){const{sx:r,theme:i={},nested:o}=n||{};if(!r)return null;const a=i.unstable_sxConfig??vu;function s(n){let r=n;if("function"==typeof n)r=n(i);else if("object"!=typeof n)return n;if(!r)return null;const s=function(e={}){const t=e.keys?.reduce((t,n)=>(t[e.up(n)]={},t),{});return t||{}}(i.breakpoints),l=Object.keys(s);let c=s;return Object.keys(r).forEach(n=>{const o=function(e,t){return"function"==typeof e?e(t):e}(r[n],i);if(null!=o)if("object"==typeof o)if(a[n])c=Ec(c,e(n,o,i,a));else{const e=Ic({theme:i},o,e=>({[n]:e}));!function(...e){const t=e.reduce((e,t)=>e.concat(Object.keys(t)),[]),n=new Set(t);return e.every(e=>n.size===Object.keys(e).length)}(e,o)?c=Ec(c,e):c[n]=t({sx:o,theme:i,nested:!0})}else c=Ec(c,e(n,o,i,a))}),!o&&i.modularCssLayers?{"@layer sx":gc(i,wc(l,c))}:gc(i,wc(l,c))}return Array.isArray(r)?r.map(s):s(r)}}();bu.filterProps=["sx"];const xu=bu;function Iu(e,t){const n=this;if(n.vars){if(!n.colorSchemes?.[e]||"function"!=typeof n.getColorSchemeSelector)return{};let r=n.getColorSchemeSelector(e);return"&"===r?t:((r.includes("data-")||r.includes("."))&&(r=`*:where(${r.replace(/\s*&$/,"")}) &`),{[r]:t})}return n.palette.mode===e?t:{}}const wu=function(e={},...t){const{breakpoints:n={},palette:r={},spacing:i,shape:o={},...a}=e;let s=mc({breakpoints:fc(n),direction:"ltr",components:{},palette:{mode:"light",...r},spacing:Vc(i),shape:{...yc,...o}},a);return s=function(e){const t=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function n(n,r){n.up=(...n)=>t(e.breakpoints.up(...n),r),n.down=(...n)=>t(e.breakpoints.down(...n),r),n.between=(...n)=>t(e.breakpoints.between(...n),r),n.only=(...n)=>t(e.breakpoints.only(...n),r),n.not=(...n)=>{const i=t(e.breakpoints.not(...n),r);return i.includes("not all and")?i.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):i}}const r={},i=e=>(n(r,e),r);return n(i),{...e,containerQueries:i}}(s),s.applyStyles=Iu,s=t.reduce((e,t)=>mc(e,t),s),s.unstable_sxConfig={...vu,...a?.unstable_sxConfig},s.unstable_sx=function(e){return xu({sx:e,theme:this})},s};var ku=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?Au(Fu,--Nu):0,$u--,10===_u&&($u=1,Du--),_u}function Uu(){return _u=Nu2||Ku(_u)>3?"":" "}function Qu(e,t){for(;--t&&Uu()&&!(_u<48||_u>102||_u>57&&_u<65||_u>70&&_u<97););return Gu(e,Wu()+(t<6&&32==Yu()&&32==Uu()))}function ed(e){for(;Uu();)switch(_u){case e:return Nu;case 34:case 39:34!==e&&39!==e&&ed(_u);break;case 40:41===e&&ed(e);break;case 92:Uu()}return Nu}function td(e,t){for(;Uu()&&e+_u!==57&&(e+_u!==84||47!==Yu()););return"/*"+Gu(t,Nu-1)+"*"+Mu(47===e?e:Uu())}function nd(e){for(;!Ku(Yu());)Uu();return Gu(e,Nu)}var rd="-ms-",id="-moz-",od="-webkit-",ad="comm",sd="rule",ld="decl",cd="@keyframes";function ud(e,t){for(var n="",r=Lu(e),i=0;i0&&ju(k)-d&&Ru(h>32?gd(k+";",r,n,d-1):gd(Eu(k," ","")+";",r,n,d-2),l);break;case 59:k+=";";default:if(Ru(w=md(k,t,n,c,u,i,s,b,x=[],I=[],d),o),123===v)if(0===u)hd(k,t,w,w,x,o,d,s,I);else switch(99===p&&110===Au(k,3)?100:p){case 100:case 108:case 109:case 115:hd(e,w,w,r&&Ru(md(e,w,w,0,0,i,s,b,i,x=[],d),I),i,I,d,s,r?x:I);break;default:hd(k,w,w,w,[""],I,0,s,I)}}c=u=h=0,f=y=1,b=k="",d=a;break;case 58:d=1+ju(k),h=m;default:if(f<1)if(123==v)--f;else if(125==v&&0==f++&&125==Vu())continue;switch(k+=Mu(v),v*f){case 38:y=u>0?1:(k+="\f",-1);break;case 44:s[c++]=(ju(k)-1)*y,y=1;break;case 64:45===Yu()&&(k+=Zu(Uu())),p=Yu(),u=d=ju(b=k+=nd(Wu())),v++;break;case 45:45===m&&2==ju(k)&&(f=0)}}return o}function md(e,t,n,r,i,o,a,s,l,c,u){for(var d=i-1,p=0===i?o:[""],h=Lu(p),m=0,f=0,g=0;m0?p[y]+" "+v:Eu(v,/&\f/g,p[y])))&&(l[g++]=b);return Hu(e,t,n,0===i?sd:s,l,c,u)}function fd(e,t,n){return Hu(e,t,n,ad,Mu(_u),Ou(e,2,-2),0)}function gd(e,t,n,r){return Hu(e,t,n,ld,Ou(e,0,r),Ou(e,r+1,-1),r)}var yd=function(e,t,n){for(var r=0,i=0;r=i,i=Yu(),38===r&&12===i&&(t[n]=1),!Ku(i);)Uu();return Gu(e,Nu)},vd=new WeakMap,bd=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||vd.get(n))&&!r){vd.set(e,!0);for(var i=[],o=function(e,t){return Xu(function(e,t){var n=-1,r=44;do{switch(Ku(r)){case 0:38===r&&12===Yu()&&(t[n]=1),e[n]+=yd(Nu-1,t,n);break;case 2:e[n]+=Zu(r);break;case 4:if(44===r){e[++n]=58===Yu()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=Mu(r)}}while(r=Uu());return e}(qu(e),t))}(t,i),a=n.props,s=0,l=0;s6)switch(Au(e,t+1)){case 109:if(45!==Au(e,t+4))break;case 102:return Eu(e,/(.+:)(.+)-([^]+)/,"$1"+od+"$2-$3$1"+id+(108==Au(e,t+3)?"$3":"$2-$3"))+e;case 115:return~Tu(e,"stretch")?Id(Eu(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==Au(e,t+1))break;case 6444:switch(Au(e,ju(e)-3-(~Tu(e,"!important")&&10))){case 107:return Eu(e,":",":"+od)+e;case 101:return Eu(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+od+(45===Au(e,14)?"inline-":"")+"box$3$1"+od+"$2$3$1"+rd+"$2box$3")+e}break;case 5936:switch(Au(e,t+11)){case 114:return od+e+rd+Eu(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return od+e+rd+Eu(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return od+e+rd+Eu(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return od+e+rd+e+e}return e}var wd=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case ld:e.return=Id(e.value,e.length);break;case cd:return ud([Bu(e,{value:Eu(e.value,"@","@"+od)})],r);case sd:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,function(t){switch(function(e){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return ud([Bu(e,{props:[Eu(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return ud([Bu(e,{props:[Eu(t,/:(plac\w+)/,":"+od+"input-$1")]}),Bu(e,{props:[Eu(t,/:(plac\w+)/,":-moz-$1")]}),Bu(e,{props:[Eu(t,/:(plac\w+)/,rd+"input-$1")]})],r)}return""})}}],kd=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var r,i,o=e.stylisPlugins||wd,a={},s=[];r=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=4;++r,i-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(i){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(i)+l;return{name:c,styles:i,next:$d}}var _d=!!e.useInsertionEffect&&e.useInsertionEffect,Fd=_d||function(e){return e()},Hd=_d||e.useLayoutEffect,Bd=e.createContext("undefined"!=typeof HTMLElement?kd({key:"css"}):null),Vd=(Bd.Provider,function(t){return(0,e.forwardRef)(function(n,r){var i=(0,e.useContext)(Bd);return t(n,i,r)})}),Ud=e.createContext({}),Yd={}.hasOwnProperty,Wd="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",Gd=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return Md(t,n,r),Fd(function(){return Cd(t,n,r)}),null},Kd=Vd(function(t,n,r){var i=t.css;"string"==typeof i&&void 0!==n.registered[i]&&(i=n.registered[i]);var o=t[Wd],a=[i],s="";"string"==typeof t.className?s=Sd(n.registered,a,t.className):null!=t.className&&(s=t.className+" ");var l=Nd(a,void 0,e.useContext(Ud));s+=n.key+"-"+l.name;var c={};for(var u in t)Yd.call(t,u)&&"css"!==u&&u!==Wd&&(c[u]=t[u]);return c.className=s,r&&(c.ref=r),e.createElement(e.Fragment,null,e.createElement(Gd,{cache:n,serialized:l,isStringTag:"string"==typeof o}),e.createElement(o,c))});const qd=function(t=null){const n=e.useContext(Ud);return n&&(r=n,0!==Object.keys(r).length)?n:t;var r},Xd=wu(),Zd=function(e=Xd){return qd(e)},Jd=function(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))};function Qd(e,t=0,n=1){return Jd(e,t,n)}function ep(e){if(e.type)return e;if("#"===e.charAt(0))return ep(function(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?`rgb${4===n.length?"a":""}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}(e));const t=e.indexOf("("),n=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error(kc(9,e));let r,i=e.substring(t+1,e.length-1);if("color"===n){if(i=i.split(" "),r=i.shift(),4===i.length&&"/"===i[3].charAt(0)&&(i[3]=i[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(r))throw new Error(kc(10,r))}else i=i.split(",");return i=i.map(e=>parseFloat(e)),{type:n,values:i,colorSpace:r}}const tp=(e,t)=>{try{return(e=>{const t=ep(e);return t.values.slice(0,3).map((e,n)=>t.type.includes("hsl")&&0!==n?`${e}%`:e).join(" ")})(e)}catch(t){return e}};function np(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return t.includes("rgb")?r=r.map((e,t)=>t<3?parseInt(e,10):e):t.includes("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=t.includes("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}function rp(e){e=ep(e);const{values:t}=e,n=t[0],r=t[1]/100,i=t[2]/100,o=r*Math.min(i,1-i),a=(e,t=(e+n/30)%12)=>i-o*Math.max(Math.min(t-3,9-t,1),-1);let s="rgb";const l=[Math.round(255*a(0)),Math.round(255*a(8)),Math.round(255*a(4))];return"hsla"===e.type&&(s+="a",l.push(t[3])),np({type:s,values:l})}function ip(e){let t="hsl"===(e=ep(e)).type||"hsla"===e.type?ep(rp(e)).values:e.values;return t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function op(e,t){return e=ep(e),t=Qd(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,np(e)}function ap(e,t,n){try{return op(e,t)}catch(t){return e}}function sp(e,t){if(e=ep(e),t=Qd(t),e.type.includes("hsl"))e.values[2]*=1-t;else if(e.type.includes("rgb")||e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return np(e)}function lp(e,t,n){try{return sp(e,t)}catch(t){return e}}function cp(e,t){if(e=ep(e),t=Qd(t),e.type.includes("hsl"))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return np(e)}function up(e,t,n){try{return cp(e,t)}catch(t){return e}}function dp(e,t,n){try{return function(e,t=.15){return ip(e)>.5?sp(e,t):cp(e,t)}(e,t)}catch(t){return e}}const pp={black:"#000",white:"#fff"},hp={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"},mp="#f3e5f5",fp="#ce93d8",gp="#ba68c8",yp="#ab47bc",vp="#9c27b0",bp="#7b1fa2",xp="#e57373",Ip="#ef5350",wp="#f44336",kp="#d32f2f",Sp="#c62828",Mp="#ffb74d",Cp="#ffa726",Pp="#ff9800",Ep="#f57c00",Tp="#e65100",Ap="#e3f2fd",Op="#90caf9",jp="#42a5f5",Lp="#1976d2",Rp="#1565c0",Dp="#4fc3f7",$p="#29b6f6",zp="#03a9f4",Np="#0288d1",_p="#01579b",Fp="#81c784",Hp="#66bb6a",Bp="#4caf50",Vp="#388e3c",Up="#2e7d32",Yp="#1b5e20";function Wp(){return{text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:pp.white,default:pp.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}}const Gp=Wp();function Kp(){return{text:{primary:pp.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:pp.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}}const qp=Kp();function Xp(e,t,n,r){const i=r.light||r,o=r.dark||1.5*r;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=cp(e.main,i):"dark"===t&&(e.dark=sp(e.main,o)))}function Zp(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:r=.2,...i}=e,o=e.primary||function(e="light"){return"dark"===e?{main:Op,light:Ap,dark:jp}:{main:Lp,light:jp,dark:Rp}}(t),a=e.secondary||function(e="light"){return"dark"===e?{main:fp,light:mp,dark:yp}:{main:vp,light:gp,dark:bp}}(t),s=e.error||function(e="light"){return"dark"===e?{main:wp,light:xp,dark:kp}:{main:kp,light:Ip,dark:Sp}}(t),l=e.info||function(e="light"){return"dark"===e?{main:$p,light:Dp,dark:Np}:{main:Np,light:zp,dark:_p}}(t),c=e.success||function(e="light"){return"dark"===e?{main:Hp,light:Fp,dark:Vp}:{main:Up,light:Bp,dark:Yp}}(t),u=e.warning||function(e="light"){return"dark"===e?{main:Cp,light:Mp,dark:Ep}:{main:"#ed6c02",light:Pp,dark:Tp}}(t);function d(e){const t=function(e,t){const n=ip(e),r=ip(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}(e,qp.text.primary)>=n?qp.text.primary:Gp.text.primary;return t}const p=({color:e,name:t,mainShade:n=500,lightShade:i=300,darkShade:o=700})=>{if(!(e={...e}).main&&e[n]&&(e.main=e[n]),!e.hasOwnProperty("main"))throw new Error(kc(11,t?` (${t})`:"",n));if("string"!=typeof e.main)throw new Error(kc(12,t?` (${t})`:"",JSON.stringify(e.main)));return Xp(e,"light",i,r),Xp(e,"dark",o,r),e.contrastText||(e.contrastText=d(e.main)),e};let h;return"light"===t?h=Wp():"dark"===t&&(h=Kp()),mc({common:{...pp},mode:t,primary:p({color:o,name:"primary"}),secondary:p({color:a,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:p({color:s,name:"error"}),warning:p({color:u,name:"warning"}),info:p({color:l,name:"info"}),success:p({color:c,name:"success"}),grey:hp,contrastThreshold:n,getContrastText:d,augmentColor:p,tonalOffset:r,...h},i)}function Jp(e=""){function t(...n){if(!n.length)return"";const r=n[0];return"string"!=typeof r||r.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, ${r}`:`, var(--${e?`${e}-`:""}${r}${t(...n.slice(1))})`}return(n,...r)=>`var(--${e?`${e}-`:""}${n}${t(...r)})`}function Qp(e){const t={};return Object.entries(e).forEach(e=>{const[n,r]=e;"object"==typeof r&&(t[n]=`${r.fontStyle?`${r.fontStyle} `:""}${r.fontVariant?`${r.fontVariant} `:""}${r.fontWeight?`${r.fontWeight} `:""}${r.fontStretch?`${r.fontStretch} `:""}${r.fontSize||""}${r.lineHeight?`/${r.lineHeight} `:""}${r.fontFamily||""}`)}),t}const eh=(e,t,n,r=[])=>{let i=e;t.forEach((e,o)=>{o===t.length-1?Array.isArray(i)?i[Number(e)]=n:i&&"object"==typeof i&&(i[e]=n):i&&"object"==typeof i&&(i[e]||(i[e]=r.includes(e)?[]:{}),i=i[e])})};function th(e,t){const{prefix:n,shouldSkipGeneratingVar:r}=t||{},i={},o={},a={};var s,l;return s=(e,t,s)=>{if(!("string"!=typeof t&&"number"!=typeof t||r&&r(e,t))){const r=`--${n?`${n}-`:""}${e.join("-")}`,l=((e,t)=>"number"==typeof t?["lineHeight","fontWeight","opacity","zIndex"].some(t=>e.includes(t))||e[e.length-1].toLowerCase().includes("opacity")?t:`${t}px`:t)(e,t);Object.assign(i,{[r]:l}),eh(o,e,`var(${r})`,s),eh(a,e,`var(${r}, ${l})`,s)}},l=e=>"vars"===e[0],function e(t,n=[],r=[]){Object.entries(t).forEach(([t,i])=>{(!l||l&&!l([...n,t]))&&null!=i&&("object"==typeof i&&Object.keys(i).length>0?e(i,[...n,t],Array.isArray(i)?[...r,t]:r):s([...n,t],i,r))})}(e),{css:i,vars:o,varsWithDefaults:a}}function nh(e){return Math.round(1e5*e)/1e5}const rh={textTransform:"uppercase"},ih='"Roboto", "Helvetica", "Arial", sans-serif';function oh(e,t){const{fontFamily:n=ih,fontSize:r=14,fontWeightLight:i=300,fontWeightRegular:o=400,fontWeightMedium:a=500,fontWeightBold:s=700,htmlFontSize:l=16,allVariants:c,pxToRem:u,...d}="function"==typeof t?t(e):t,p=r/14,h=u||(e=>e/l*p+"rem"),m=(e,t,r,i,o)=>({fontFamily:n,fontWeight:e,fontSize:h(t),lineHeight:r,...n===ih?{letterSpacing:`${nh(i/t)}em`}:{},...o,...c}),f={h1:m(i,96,1.167,-1.5),h2:m(i,60,1.2,-.5),h3:m(o,48,1.167,0),h4:m(o,34,1.235,.25),h5:m(o,24,1.334,0),h6:m(a,20,1.6,.15),subtitle1:m(o,16,1.75,.15),subtitle2:m(a,14,1.57,.1),body1:m(o,16,1.5,.15),body2:m(o,14,1.43,.15),button:m(a,14,1.75,.4,rh),caption:m(o,12,1.66,.4),overline:m(o,12,2.66,1,rh),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return mc({htmlFontSize:l,pxToRem:h,fontFamily:n,fontSize:r,fontWeightLight:i,fontWeightRegular:o,fontWeightMedium:a,fontWeightBold:s,...f},d,{clone:!1})}function ah(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,0.2)`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,0.14)`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,0.12)`].join(",")}const sh=["none",ah(0,2,1,-1,0,1,1,0,0,1,3,0),ah(0,3,1,-2,0,2,2,0,0,1,5,0),ah(0,3,3,-2,0,3,4,0,0,1,8,0),ah(0,2,4,-1,0,4,5,0,0,1,10,0),ah(0,3,5,-1,0,5,8,0,0,1,14,0),ah(0,3,5,-1,0,6,10,0,0,1,18,0),ah(0,4,5,-2,0,7,10,1,0,2,16,1),ah(0,5,5,-3,0,8,10,1,0,3,14,2),ah(0,5,6,-3,0,9,12,1,0,3,16,2),ah(0,6,6,-3,0,10,14,1,0,4,18,3),ah(0,6,7,-4,0,11,15,1,0,4,20,3),ah(0,7,8,-4,0,12,17,2,0,5,22,4),ah(0,7,8,-4,0,13,19,2,0,5,24,4),ah(0,7,9,-4,0,14,21,2,0,5,26,4),ah(0,8,9,-5,0,15,22,2,0,6,28,5),ah(0,8,10,-5,0,16,24,2,0,6,30,5),ah(0,8,11,-5,0,17,26,2,0,6,32,5),ah(0,9,11,-5,0,18,28,2,0,7,34,6),ah(0,9,12,-6,0,19,29,2,0,7,36,6),ah(0,10,13,-6,0,20,31,3,0,8,38,7),ah(0,10,13,-6,0,21,33,3,0,8,40,7),ah(0,10,14,-6,0,22,35,3,0,8,42,7),ah(0,11,14,-7,0,23,36,3,0,9,44,8),ah(0,11,15,-7,0,24,38,3,0,9,46,8)],lh={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},ch={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function uh(e){return`${Math.round(e)}ms`}function dh(e){if(!e)return 0;const t=e/36;return Math.min(Math.round(10*(4+15*t**.25+t/5)),3e3)}function ph(e){const t={...lh,...e.easing},n={...ch,...e.duration};return{getAutoHeightDuration:dh,create:(e=["all"],r={})=>{const{duration:i=n.standard,easing:o=t.easeInOut,delay:a=0,...s}=r;return(Array.isArray(e)?e:[e]).map(e=>`${e} ${"string"==typeof i?i:uh(i)} ${o} ${"string"==typeof a?a:uh(a)}`).join(",")},...e,easing:t,duration:n}}const hh={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function mh(e){return pc(e)||void 0===e||"string"==typeof e||"boolean"==typeof e||"number"==typeof e||Array.isArray(e)}function fh(e={}){const t={...e};return function e(t){const n=Object.entries(t);for(let r=0;rmc(e,t),p),p.unstable_sxConfig={...vu,...c?.unstable_sxConfig},p.unstable_sx=function(e){return xu({sx:e,theme:this})},p.toRuntimeSource=fh,p};function yh(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(10*t)/1e3}const vh=[...Array(25)].map((e,t)=>{if(0===t)return"none";const n=yh(t);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`});function bh(e){return{inputPlaceholder:"dark"===e?.5:.42,inputUnderline:"dark"===e?.7:.42,switchTrackDisabled:"dark"===e?.2:.12,switchTrack:"dark"===e?.3:.38}}function xh(e){return"dark"===e?vh:[]}function Ih(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||"palette"===e[0]&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}const wh=e=>(t,n)=>{const r=e.rootSelector||":root",i=e.colorSchemeSelector;let o=i;if("class"===i&&(o=".%s"),"data"===i&&(o="[data-%s]"),i?.startsWith("data-")&&!i.includes("%s")&&(o=`[${i}="%s"]`),e.defaultColorScheme===t){if("dark"===t){const i={};return(a=e.cssVarPrefix,[...[...Array(25)].map((e,t)=>`--${a?`${a}-`:""}overlays-${t}`),`--${a?`${a}-`:""}palette-AppBar-darkBg`,`--${a?`${a}-`:""}palette-AppBar-darkColor`]).forEach(e=>{i[e]=n[e],delete n[e]}),"media"===o?{[r]:n,"@media (prefers-color-scheme: dark)":{[r]:i}}:o?{[o.replace("%s",t)]:i,[`${r}, ${o.replace("%s",t)}`]:n}:{[r]:{...n,...i}}}if(o&&"media"!==o)return`${r}, ${o.replace("%s",String(t))}`}else if(t){if("media"===o)return{[`@media (prefers-color-scheme: ${String(t)})`]:{[r]:n}};if(o)return o.replace("%s",String(t))}var a;return r};function kh(e,t,n){!e[t]&&n&&(e[t]=n)}function Sh(e){return"string"==typeof e&&e.startsWith("hsl")?rp(e):e}function Mh(e,t){`${t}Channel`in e||(e[`${t}Channel`]=tp(Sh(e[t])))}const Ch=e=>{try{return e()}catch(e){}};function Ph(e,t,n,r){if(!t)return;t=!0===t?{}:t;const i="dark"===r?"dark":"light";if(!n)return void(e[r]=function(e){const{palette:t={mode:"light"},opacity:n,overlays:r,...i}=e,o=Zp(t);return{palette:o,opacity:{...bh(o.mode),...n},overlays:r||xh(o.mode),...i}}({...t,palette:{mode:i,...t?.palette}}));const{palette:o,...a}=gh({...n,palette:{mode:i,...t?.palette}});return e[r]={...t,palette:o,opacity:{...bh(i),...t?.opacity},overlays:t?.overlays||xh(i)},a}function Eh(e={},...t){const{colorSchemes:n={light:!0},defaultColorScheme:r,disableCssColorScheme:i=!1,cssVarPrefix:o="mui",shouldSkipGeneratingVar:a=Ih,colorSchemeSelector:s=(n.light&&n.dark?"media":void 0),rootSelector:l=":root",...c}=e,u=Object.keys(n)[0],d=r||(n.light&&"light"!==u?"light":u),p=((e="mui")=>Jp(e))(o),{[d]:h,light:m,dark:f,...g}=n,y={...g};let v=h;if(("dark"===d&&!("dark"in n)||"light"===d&&!("light"in n))&&(v=!0),!v)throw new Error(kc(21,d));const b=Ph(y,v,c,d);m&&!y.light&&Ph(y,m,void 0,"light"),f&&!y.dark&&Ph(y,f,void 0,"dark");let x={defaultColorScheme:d,...b,cssVarPrefix:o,colorSchemeSelector:s,rootSelector:l,getCssVar:p,colorSchemes:y,font:{...Qp(b.typography),...b.font},spacing:(I=c.spacing,"number"==typeof I?`${I}px`:"string"==typeof I||"function"==typeof I||Array.isArray(I)?I:"8px")};var I;Object.keys(x.colorSchemes).forEach(e=>{const t=x.colorSchemes[e].palette,n=e=>{const n=e.split("-"),r=n[1],i=n[2];return p(e,t[r][i])};var r;if("light"===t.mode&&(kh(t.common,"background","#fff"),kh(t.common,"onBackground","#000")),"dark"===t.mode&&(kh(t.common,"background","#000"),kh(t.common,"onBackground","#fff")),r=t,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"].forEach(e=>{r[e]||(r[e]={})}),"light"===t.mode){kh(t.Alert,"errorColor",lp(t.error.light,.6)),kh(t.Alert,"infoColor",lp(t.info.light,.6)),kh(t.Alert,"successColor",lp(t.success.light,.6)),kh(t.Alert,"warningColor",lp(t.warning.light,.6)),kh(t.Alert,"errorFilledBg",n("palette-error-main")),kh(t.Alert,"infoFilledBg",n("palette-info-main")),kh(t.Alert,"successFilledBg",n("palette-success-main")),kh(t.Alert,"warningFilledBg",n("palette-warning-main")),kh(t.Alert,"errorFilledColor",Ch(()=>t.getContrastText(t.error.main))),kh(t.Alert,"infoFilledColor",Ch(()=>t.getContrastText(t.info.main))),kh(t.Alert,"successFilledColor",Ch(()=>t.getContrastText(t.success.main))),kh(t.Alert,"warningFilledColor",Ch(()=>t.getContrastText(t.warning.main))),kh(t.Alert,"errorStandardBg",up(t.error.light,.9)),kh(t.Alert,"infoStandardBg",up(t.info.light,.9)),kh(t.Alert,"successStandardBg",up(t.success.light,.9)),kh(t.Alert,"warningStandardBg",up(t.warning.light,.9)),kh(t.Alert,"errorIconColor",n("palette-error-main")),kh(t.Alert,"infoIconColor",n("palette-info-main")),kh(t.Alert,"successIconColor",n("palette-success-main")),kh(t.Alert,"warningIconColor",n("palette-warning-main")),kh(t.AppBar,"defaultBg",n("palette-grey-100")),kh(t.Avatar,"defaultBg",n("palette-grey-400")),kh(t.Button,"inheritContainedBg",n("palette-grey-300")),kh(t.Button,"inheritContainedHoverBg",n("palette-grey-A100")),kh(t.Chip,"defaultBorder",n("palette-grey-400")),kh(t.Chip,"defaultAvatarColor",n("palette-grey-700")),kh(t.Chip,"defaultIconColor",n("palette-grey-700")),kh(t.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),kh(t.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),kh(t.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),kh(t.LinearProgress,"primaryBg",up(t.primary.main,.62)),kh(t.LinearProgress,"secondaryBg",up(t.secondary.main,.62)),kh(t.LinearProgress,"errorBg",up(t.error.main,.62)),kh(t.LinearProgress,"infoBg",up(t.info.main,.62)),kh(t.LinearProgress,"successBg",up(t.success.main,.62)),kh(t.LinearProgress,"warningBg",up(t.warning.main,.62)),kh(t.Skeleton,"bg",`rgba(${n("palette-text-primaryChannel")} / 0.11)`),kh(t.Slider,"primaryTrack",up(t.primary.main,.62)),kh(t.Slider,"secondaryTrack",up(t.secondary.main,.62)),kh(t.Slider,"errorTrack",up(t.error.main,.62)),kh(t.Slider,"infoTrack",up(t.info.main,.62)),kh(t.Slider,"successTrack",up(t.success.main,.62)),kh(t.Slider,"warningTrack",up(t.warning.main,.62));const e=dp(t.background.default,.8);kh(t.SnackbarContent,"bg",e),kh(t.SnackbarContent,"color",Ch(()=>t.getContrastText(e))),kh(t.SpeedDialAction,"fabHoverBg",dp(t.background.paper,.15)),kh(t.StepConnector,"border",n("palette-grey-400")),kh(t.StepContent,"border",n("palette-grey-400")),kh(t.Switch,"defaultColor",n("palette-common-white")),kh(t.Switch,"defaultDisabledColor",n("palette-grey-100")),kh(t.Switch,"primaryDisabledColor",up(t.primary.main,.62)),kh(t.Switch,"secondaryDisabledColor",up(t.secondary.main,.62)),kh(t.Switch,"errorDisabledColor",up(t.error.main,.62)),kh(t.Switch,"infoDisabledColor",up(t.info.main,.62)),kh(t.Switch,"successDisabledColor",up(t.success.main,.62)),kh(t.Switch,"warningDisabledColor",up(t.warning.main,.62)),kh(t.TableCell,"border",up(ap(t.divider,1),.88)),kh(t.Tooltip,"bg",ap(t.grey[700],.92))}if("dark"===t.mode){kh(t.Alert,"errorColor",up(t.error.light,.6)),kh(t.Alert,"infoColor",up(t.info.light,.6)),kh(t.Alert,"successColor",up(t.success.light,.6)),kh(t.Alert,"warningColor",up(t.warning.light,.6)),kh(t.Alert,"errorFilledBg",n("palette-error-dark")),kh(t.Alert,"infoFilledBg",n("palette-info-dark")),kh(t.Alert,"successFilledBg",n("palette-success-dark")),kh(t.Alert,"warningFilledBg",n("palette-warning-dark")),kh(t.Alert,"errorFilledColor",Ch(()=>t.getContrastText(t.error.dark))),kh(t.Alert,"infoFilledColor",Ch(()=>t.getContrastText(t.info.dark))),kh(t.Alert,"successFilledColor",Ch(()=>t.getContrastText(t.success.dark))),kh(t.Alert,"warningFilledColor",Ch(()=>t.getContrastText(t.warning.dark))),kh(t.Alert,"errorStandardBg",lp(t.error.light,.9)),kh(t.Alert,"infoStandardBg",lp(t.info.light,.9)),kh(t.Alert,"successStandardBg",lp(t.success.light,.9)),kh(t.Alert,"warningStandardBg",lp(t.warning.light,.9)),kh(t.Alert,"errorIconColor",n("palette-error-main")),kh(t.Alert,"infoIconColor",n("palette-info-main")),kh(t.Alert,"successIconColor",n("palette-success-main")),kh(t.Alert,"warningIconColor",n("palette-warning-main")),kh(t.AppBar,"defaultBg",n("palette-grey-900")),kh(t.AppBar,"darkBg",n("palette-background-paper")),kh(t.AppBar,"darkColor",n("palette-text-primary")),kh(t.Avatar,"defaultBg",n("palette-grey-600")),kh(t.Button,"inheritContainedBg",n("palette-grey-800")),kh(t.Button,"inheritContainedHoverBg",n("palette-grey-700")),kh(t.Chip,"defaultBorder",n("palette-grey-700")),kh(t.Chip,"defaultAvatarColor",n("palette-grey-300")),kh(t.Chip,"defaultIconColor",n("palette-grey-300")),kh(t.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),kh(t.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),kh(t.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),kh(t.LinearProgress,"primaryBg",lp(t.primary.main,.5)),kh(t.LinearProgress,"secondaryBg",lp(t.secondary.main,.5)),kh(t.LinearProgress,"errorBg",lp(t.error.main,.5)),kh(t.LinearProgress,"infoBg",lp(t.info.main,.5)),kh(t.LinearProgress,"successBg",lp(t.success.main,.5)),kh(t.LinearProgress,"warningBg",lp(t.warning.main,.5)),kh(t.Skeleton,"bg",`rgba(${n("palette-text-primaryChannel")} / 0.13)`),kh(t.Slider,"primaryTrack",lp(t.primary.main,.5)),kh(t.Slider,"secondaryTrack",lp(t.secondary.main,.5)),kh(t.Slider,"errorTrack",lp(t.error.main,.5)),kh(t.Slider,"infoTrack",lp(t.info.main,.5)),kh(t.Slider,"successTrack",lp(t.success.main,.5)),kh(t.Slider,"warningTrack",lp(t.warning.main,.5));const e=dp(t.background.default,.98);kh(t.SnackbarContent,"bg",e),kh(t.SnackbarContent,"color",Ch(()=>t.getContrastText(e))),kh(t.SpeedDialAction,"fabHoverBg",dp(t.background.paper,.15)),kh(t.StepConnector,"border",n("palette-grey-600")),kh(t.StepContent,"border",n("palette-grey-600")),kh(t.Switch,"defaultColor",n("palette-grey-300")),kh(t.Switch,"defaultDisabledColor",n("palette-grey-600")),kh(t.Switch,"primaryDisabledColor",lp(t.primary.main,.55)),kh(t.Switch,"secondaryDisabledColor",lp(t.secondary.main,.55)),kh(t.Switch,"errorDisabledColor",lp(t.error.main,.55)),kh(t.Switch,"infoDisabledColor",lp(t.info.main,.55)),kh(t.Switch,"successDisabledColor",lp(t.success.main,.55)),kh(t.Switch,"warningDisabledColor",lp(t.warning.main,.55)),kh(t.TableCell,"border",lp(ap(t.divider,1),.68)),kh(t.Tooltip,"bg",ap(t.grey[700],.92))}Mh(t.background,"default"),Mh(t.background,"paper"),Mh(t.common,"background"),Mh(t.common,"onBackground"),Mh(t,"divider"),Object.keys(t).forEach(e=>{const n=t[e];"tonalOffset"!==e&&n&&"object"==typeof n&&(n.main&&kh(t[e],"mainChannel",tp(Sh(n.main))),n.light&&kh(t[e],"lightChannel",tp(Sh(n.light))),n.dark&&kh(t[e],"darkChannel",tp(Sh(n.dark))),n.contrastText&&kh(t[e],"contrastTextChannel",tp(Sh(n.contrastText))),"text"===e&&(Mh(t[e],"primary"),Mh(t[e],"secondary")),"action"===e&&(n.active&&Mh(t[e],"active"),n.selected&&Mh(t[e],"selected")))})}),x=t.reduce((e,t)=>mc(e,t),x);const w={prefix:o,disableCssColorScheme:i,shouldSkipGeneratingVar:a,getSelector:wh(x)},{vars:k,generateThemeVars:S,generateStyleSheets:M}=function(e,t={}){const{getSelector:n=g,disableCssColorScheme:r,colorSchemeSelector:i}=t,{colorSchemes:o={},components:a,defaultColorScheme:s="light",...l}=e,{vars:c,css:u,varsWithDefaults:d}=th(l,t);let p=d;const h={},{[s]:m,...f}=o;if(Object.entries(f||{}).forEach(([e,n])=>{const{vars:r,css:i,varsWithDefaults:o}=th(n,t);p=mc(p,o),h[e]={css:i,vars:r}}),m){const{css:e,vars:n,varsWithDefaults:r}=th(m,t);p=mc(p,r),h[s]={css:e,vars:n}}function g(t,n){let r=i;if("class"===i&&(r=".%s"),"data"===i&&(r="[data-%s]"),i?.startsWith("data-")&&!i.includes("%s")&&(r=`[${i}="%s"]`),t){if("media"===r){if(e.defaultColorScheme===t)return":root";const r=o[t]?.palette?.mode||t;return{[`@media (prefers-color-scheme: ${r})`]:{":root":n}}}if(r)return e.defaultColorScheme===t?`:root, ${r.replace("%s",String(t))}`:r.replace("%s",String(t))}return":root"}return{vars:p,generateThemeVars:()=>{let e={...c};return Object.entries(h).forEach(([,{vars:t}])=>{e=mc(e,t)}),e},generateStyleSheets:()=>{const t=[],i=e.defaultColorScheme||"light";function a(e,n){Object.keys(n).length&&t.push("string"==typeof e?{[e]:{...n}}:e)}a(n(void 0,{...u}),u);const{[i]:s,...l}=h;if(s){const{css:e}=s,t=o[i]?.palette?.mode,l=!r&&t?{colorScheme:t,...e}:{...e};a(n(i,{...l}),l)}return Object.entries(l).forEach(([e,{css:t}])=>{const i=o[e]?.palette?.mode,s=!r&&i?{colorScheme:i,...t}:{...t};a(n(e,{...s}),s)}),t}}}(x,w);return x.vars=k,Object.entries(x.colorSchemes[x.defaultColorScheme]).forEach(([e,t])=>{x[e]=t}),x.generateThemeVars=S,x.generateStyleSheets=M,x.generateSpacing=function(){return Vc(c.spacing,zc(this))},x.getColorSchemeSelector=function(e){return function(t){return"media"===e?`@media (prefers-color-scheme: ${t})`:e?e.startsWith("data-")&&!e.includes("%s")?`[${e}="${t}"] &`:"class"===e?`.${t} &`:"data"===e?`[data-${t}] &`:`${e.replace("%s",t)} &`:"&"}}(s),x.spacing=x.generateSpacing(),x.shouldSkipGeneratingVar=a,x.unstable_sxConfig={...vu,...c?.unstable_sxConfig},x.unstable_sx=function(e){return xu({sx:e,theme:this})},x.toRuntimeSource=fh,x}function Th(e,t,n){e.colorSchemes&&n&&(e.colorSchemes[t]={...!0!==n&&n,palette:Zp({...!0===n?{}:n.palette,mode:t})})}function Ah(e={},...t){const{palette:n,cssVariables:r=!1,colorSchemes:i=(n?void 0:{light:!0}),defaultColorScheme:o=n?.mode,...a}=e,s=o||"light",l=i?.[s],c={...i,...n?{[s]:{..."boolean"!=typeof l&&l,palette:n}}:void 0};if(!1===r){if(!("colorSchemes"in e))return gh(e,...t);let r=n;"palette"in e||c[s]&&(!0!==c[s]?r=c[s].palette:"dark"===s&&(r={mode:"dark"}));const i=gh({...e,palette:r},...t);return i.defaultColorScheme=s,i.colorSchemes=c,"light"===i.palette.mode&&(i.colorSchemes.light={...!0!==c.light&&c.light,palette:i.palette},Th(i,"dark",c.dark)),"dark"===i.palette.mode&&(i.colorSchemes.dark={...!0!==c.dark&&c.dark,palette:i.palette},Th(i,"light",c.light)),i}return n||"light"in c||"light"!==s||(c.light=!0),Eh({...a,colorSchemes:c,defaultColorScheme:s,..."boolean"!=typeof r&&r},...t)}const Oh=Ah(),jh="$$material";function Lh({props:e,name:t}){return function({props:e,name:t,defaultTheme:n,themeId:r}){let i=Zd(n);return r&&(i=i[r]||i),uc({theme:i,name:t,props:e})}({props:e,name:t,defaultTheme:Oh,themeId:jh})}const Rh={"image/png":"PNG","image/jpeg":"JPEG","image/webp":"WebP"},Dh={loading:"Loading data…",noData:"No data to display",zoomIn:"Zoom in",zoomOut:"Zoom out",toolbarExport:"Export",toolbarExportPrint:"Print",toolbarExportImage:e=>`Export as ${Rh[e]??e}`,chartTypeBar:"Bar",chartTypeColumn:"Column",chartTypeLine:"Line",chartTypeArea:"Area",chartTypePie:"Pie",chartPaletteLabel:"Color palette",chartPaletteNameRainbowSurge:"Rainbow Surge",chartPaletteNameBlueberryTwilight:"Blueberry Twilight",chartPaletteNameMangoFusion:"Mango Fusion",chartPaletteNameCheerfulFiesta:"Cheerful Fiesta",chartPaletteNameStrawberrySky:"Strawberry Sky",chartPaletteNameBlue:"Blue",chartPaletteNameGreen:"Green",chartPaletteNamePurple:"Purple",chartPaletteNameRed:"Red",chartPaletteNameOrange:"Orange",chartPaletteNameYellow:"Yellow",chartPaletteNameCyan:"Cyan",chartPaletteNamePink:"Pink",chartConfigurationSectionChart:"Chart",chartConfigurationSectionColumns:"Columns",chartConfigurationSectionBars:"Bars",chartConfigurationSectionAxes:"Axes",chartConfigurationGrid:"Grid",chartConfigurationBorderRadius:"Border radius",chartConfigurationCategoryGapRatio:"Category gap ratio",chartConfigurationBarGapRatio:"Series gap ratio",chartConfigurationStacked:"Stacked",chartConfigurationShowToolbar:"Show toolbar",chartConfigurationSkipAnimation:"Skip animation",chartConfigurationInnerRadius:"Inner radius",chartConfigurationOuterRadius:"Outer radius",chartConfigurationColors:"Colors",chartConfigurationHideLegend:"Hide legend",chartConfigurationShowMark:"Show mark",chartConfigurationHeight:"Height",chartConfigurationWidth:"Width",chartConfigurationSeriesGap:"Series gap",chartConfigurationTickPlacement:"Tick placement",chartConfigurationTickLabelPlacement:"Tick label placement",chartConfigurationCategoriesAxisLabel:"Categories axis label",chartConfigurationSeriesAxisLabel:"Series axis label",chartConfigurationXAxisPosition:"X-axis position",chartConfigurationYAxisPosition:"Y-axis position",chartConfigurationSeriesAxisReverse:"Reverse series axis",chartConfigurationTooltipPlacement:"Placement",chartConfigurationTooltipTrigger:"Trigger",chartConfigurationLegendPosition:"Position",chartConfigurationLegendDirection:"Direction",chartConfigurationBarLabels:"Bar labels",chartConfigurationColumnLabels:"Column labels",chartConfigurationInterpolation:"Interpolation",chartConfigurationSectionTooltip:"Tooltip",chartConfigurationSectionLegend:"Legend",chartConfigurationSectionLines:"Lines",chartConfigurationSectionAreas:"Areas",chartConfigurationSectionArcs:"Arcs",chartConfigurationPaddingAngle:"Padding angle",chartConfigurationCornerRadius:"Corner radius",chartConfigurationArcLabels:"Arc labels",chartConfigurationStartAngle:"Start angle",chartConfigurationEndAngle:"End angle",chartConfigurationPieTooltipTrigger:"Trigger",chartConfigurationPieLegendPosition:"Position",chartConfigurationPieLegendDirection:"Direction",chartConfigurationOptionNone:"None",chartConfigurationOptionValue:"Value",chartConfigurationOptionAuto:"Auto",chartConfigurationOptionTop:"Top",chartConfigurationOptionTopLeft:"Top Left",chartConfigurationOptionTopRight:"Top Right",chartConfigurationOptionBottom:"Bottom",chartConfigurationOptionBottomLeft:"Bottom Left",chartConfigurationOptionBottomRight:"Bottom Right",chartConfigurationOptionLeft:"Left",chartConfigurationOptionRight:"Right",chartConfigurationOptionAxis:"Axis",chartConfigurationOptionItem:"Item",chartConfigurationOptionHorizontal:"Horizontal",chartConfigurationOptionVertical:"Vertical",chartConfigurationOptionBoth:"Both",chartConfigurationOptionStart:"Start",chartConfigurationOptionMiddle:"Middle",chartConfigurationOptionEnd:"End",chartConfigurationOptionExtremities:"Extremities",chartConfigurationOptionTick:"Tick",chartConfigurationOptionMonotoneX:"Monotone X",chartConfigurationOptionMonotoneY:"Monotone Y",chartConfigurationOptionCatmullRom:"Catmull-Rom",chartConfigurationOptionLinear:"Linear",chartConfigurationOptionNatural:"Natural",chartConfigurationOptionStep:"Step",chartConfigurationOptionStepBefore:"Step Before",chartConfigurationOptionStepAfter:"Step After",chartConfigurationOptionBumpX:"Bump X",chartConfigurationOptionBumpY:"Bump Y"},$h=Dh;l({},Dh);const zh=["localeText"],Nh=e.createContext(null);function _h(t){const{localeText:n}=t,r=tt(t,zh),{localeText:i}=e.useContext(Nh)??{localeText:void 0},o=Lh({props:r,name:"MuiChartsLocalizationProvider"}),{children:a,localeText:s}=o,c=e.useMemo(()=>l({},$h,s,i,n),[s,i,n]),u=e.useMemo(()=>({localeText:c}),[c]);return(0,O.jsx)(Nh.Provider,{value:u,children:a})}function Fh(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e)){var i=e.length;for(t=0;t{this.currentId=null,t()},e)}clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)};disposeEffect=()=>this.clear}function Wh(){const t=Vh(Yh.create).current;var n;return n=t.disposeEffect,e.useEffect(n,Uh),t}function Gh(e,t,n=void 0){const r={};for(const i in e){const o=e[i];let a="",s=!0;for(let e=0;ee.useContext(Kh)??!1,Xh=function({value:e,...t}){return(0,O.jsx)(Kh.Provider,{value:e??!0,...t})};function Zh(e){try{return e.matches(":focus-visible")}catch(e){}return!1}function Jh(t){return parseInt(e.version,10)>=19?t?.props?.ref||null:t?.ref||null}var Qh=/^((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|popover|popoverTarget|popoverTargetAction|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)-.*))$/,em=Ed(function(e){return Qh.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}),tm=function(e){return"theme"!==e},nm=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?em:tm},rm=function(e,t,n){var r;if(t){var i=t.shouldForwardProp;r=e.__emotion_forwardProp&&i?function(t){return e.__emotion_forwardProp(t)&&i(t)}:i}return"function"!=typeof r&&n&&(r=e.__emotion_forwardProp),r},im=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return Md(t,n,r),Fd(function(){return Cd(t,n,r)}),null},om=function t(n,r){var i,o,a=n.__emotion_real===n,s=a&&n.__emotion_base||n;void 0!==r&&(i=r.label,o=r.target);var c=rm(n,r,a),u=c||nm(s),d=!u("as");return function(){var p=arguments,h=a&&void 0!==n.__emotion_styles?n.__emotion_styles.slice(0):[];if(void 0!==i&&h.push("label:"+i+";"),null==p[0]||void 0===p[0].raw)h.push.apply(h,p);else{var m=p[0];h.push(m[0]);for(var f=p.length,g=1;g{"function"!=typeof e.style&&(e.style=sm(e.style))}),r}const cm=wu();function um(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function dm(e,t){return t&&e&&"object"==typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function pm(e){return e?(t,n)=>n[e]:null}function hm(e,t,n){const r="function"==typeof t?t(e):t;if(Array.isArray(r))return r.flatMap(t=>hm(e,t,n));if(Array.isArray(r?.variants)){let t;if(r.isProcessed)t=n?dm(r.style,n):r.style;else{const{variants:e,...i}=r;t=n?dm(sm(i),n):i}return mm(e,r.variants,[t],n)}return r?.isProcessed?n?dm(sm(r.style),n):r.style:n?dm(sm(r),n):r}function mm(e,t,n=[],r=void 0){let i;e:for(let o=0;ogm(e)&&"classes"!==e,vm=function(e={}){const{themeId:t,defaultTheme:n=cm,rootShouldForwardProp:r=um,slotShouldForwardProp:i=um}=e;function o(e){!function(e,t,n){e.theme=function(e){for(const t in e)return!1;return!0}(e.theme)?n:e.theme[t]||e.theme}(e,t,n)}return(e,t={})=>{!function(e){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=(e=>e.filter(e=>e!==xu))(e.__emotion_styles))}(e);const{name:n,slot:a,skipVariantsResolver:s,skipSx:l,overridesResolver:c=pm(fm(a)),...u}=t,d=n&&n.startsWith("Mui")||a?"components":"custom",p=void 0!==s?s:a&&"Root"!==a&&"root"!==a||!1,h=l||!1;let m=um;"Root"===a||"root"===a?m=r:a?m=i:function(e){return"string"==typeof e&&e.charCodeAt(0)>96}(e)&&(m=void 0);const f=function(e,t){return om(e,t)}(e,{shouldForwardProp:m,label:void 0,...u}),g=e=>{if(e.__emotion_real===e)return e;if("function"==typeof e)return function(t){return hm(t,e,t.theme.modularCssLayers?d:void 0)};if(pc(e)){const t=lm(e);return function(e){return t.variants?hm(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?dm(t.style,d):t.style}}return e},y=(...t)=>{const r=[],i=t.map(g),a=[];if(r.push(o),n&&c&&a.push(function(e){const t=e.theme,r=t.components?.[n]?.styleOverrides;if(!r)return null;const i={};for(const t in r)i[t]=hm(e,r[t],e.theme.modularCssLayers?"theme":void 0);return c(e,i)}),n&&!p&&a.push(function(e){const t=e.theme,r=t?.components?.[n]?.variants;return r?mm(e,r,[],e.theme.modularCssLayers?"theme":void 0):null}),h||a.push(xu),Array.isArray(i[0])){const e=i.shift(),t=new Array(r.length).fill(""),n=new Array(a.length).fill("");let o;o=[...t,...e,...n],o.raw=[...t,...e.raw,...n],r.unshift(o)}const s=[...r,...i,...a],l=f(...s);return e.muiName&&(l.muiName=e.muiName),l};return f.withConfig&&(y.withConfig=f.withConfig),y}}({themeId:jh,defaultTheme:Oh,rootShouldForwardProp:ym}),bm=vm;function xm(){const e=Zd(Oh);return e[jh]||e}const Im={theme:void 0},wm=function(e){let t,n;return function(r){let i=t;return void 0!==i&&r.theme===n||(Im.theme=r.theme,i=lm(e(Im)),t=i,n=r.theme),i}},km=e.createContext(void 0);const Sm=function({value:e,children:t}){return(0,O.jsx)(km.Provider,{value:e,children:t})};function Mm(t){return function({props:t,name:n}){return function(e){const{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;const i=t.components[n];return i.defaultProps?cc(i.defaultProps,r):i.styleOverrides||i.variants?r:cc(i,r)}({props:t,name:n,theme:{components:e.useContext(km)}})}(t)}const Cm=Sc;function Pm(e,t){return Pm=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Pm(e,t)}function Em(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Pm(e,t)}const Tm=window.ReactDOM;var Am=a.n(Tm);const Om=n().createContext(null);var jm="unmounted",Lm="exited",Rm="entering",Dm="entered",$m="exiting",zm=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var i,o=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?o?(i=Lm,r.appearStatus=Rm):i=Dm:i=t.unmountOnExit||t.mountOnEnter?jm:Lm,r.state={status:i},r.nextCallback=null,r}Em(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===jm?{status:Lm}:null};var r=t.prototype;return r.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},r.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==Rm&&n!==Dm&&(t=Rm):n!==Rm&&n!==Dm||(t=$m)}this.updateStatus(!1,t)},r.componentWillUnmount=function(){this.cancelNextCallback()},r.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},r.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===Rm){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:Am().findDOMNode(this);n&&function(e){e.scrollTop}(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Lm&&this.setState({status:jm})},r.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,i=this.props.nodeRef?[r]:[Am().findDOMNode(this),r],o=i[0],a=i[1],s=this.getTimeouts(),l=r?s.appear:s.enter;e||n?(this.props.onEnter(o,a),this.safeSetState({status:Rm},function(){t.props.onEntering(o,a),t.onTransitionEnd(l,function(){t.safeSetState({status:Dm},function(){t.props.onEntered(o,a)})})})):this.safeSetState({status:Dm},function(){t.props.onEntered(o)})},r.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:Am().findDOMNode(this);t?(this.props.onExit(r),this.safeSetState({status:$m},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:Lm},function(){e.props.onExited(r)})})})):this.safeSetState({status:Lm},function(){e.props.onExited(r)})},r.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},r.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},r.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},r.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:Am().findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],o=i[0],a=i[1];this.props.addEndListener(o,a)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},r.render=function(){var e=this.state.status;if(e===jm)return null;var t=this.props,r=t.children,i=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,tt(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return n().createElement(Om.Provider,{value:null},"function"==typeof r?r(e,i):n().cloneElement(n().Children.only(r),i))},t}(n().Component);function Nm(){}zm.contextType=Om,zm.propTypes={},zm.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Nm,onEntering:Nm,onEntered:Nm,onExit:Nm,onExiting:Nm,onExited:Nm},zm.UNMOUNTED=jm,zm.EXITED=Lm,zm.ENTERING=Rm,zm.ENTERED=Dm,zm.EXITING=$m;const _m=zm,Fm=e=>e.scrollTop;function Hm(e,t){const{timeout:n,easing:r,style:i={}}=e;return{duration:i.transitionDuration??("number"==typeof n?n:n[t.mode]||0),easing:i.transitionTimingFunction??("object"==typeof r?r[t.mode]:r),delay:i.transitionDelay}}function Bm(...t){const n=e.useRef(void 0),r=e.useCallback(e=>{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}const Vm=Bm;function Um(e){return`scale(${e}, ${e**2})`}const Ym={entering:{opacity:1,transform:Um(1)},entered:{opacity:1,transform:"none"}},Wm="undefined"!=typeof navigator&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),Gm=e.forwardRef(function(t,n){const{addEndListener:r,appear:i=!0,children:o,easing:a,in:s,onEnter:l,onEntered:c,onEntering:u,onExit:d,onExited:p,onExiting:h,style:m,timeout:f="auto",TransitionComponent:g=_m,...y}=t,v=Wh(),b=e.useRef(),x=xm(),I=e.useRef(null),w=Vm(I,Jh(o),n),k=e=>t=>{if(e){const n=I.current;void 0===t?e(n):e(n,t)}},S=k(u),M=k((e,t)=>{Fm(e);const{duration:n,delay:r,easing:i}=Hm({style:m,timeout:f,easing:a},{mode:"enter"});let o;"auto"===f?(o=x.transitions.getAutoHeightDuration(e.clientHeight),b.current=o):o=n,e.style.transition=[x.transitions.create("opacity",{duration:o,delay:r}),x.transitions.create("transform",{duration:Wm?o:.666*o,delay:r,easing:i})].join(","),l&&l(e,t)}),C=k(c),P=k(h),E=k(e=>{const{duration:t,delay:n,easing:r}=Hm({style:m,timeout:f,easing:a},{mode:"exit"});let i;"auto"===f?(i=x.transitions.getAutoHeightDuration(e.clientHeight),b.current=i):i=t,e.style.transition=[x.transitions.create("opacity",{duration:i,delay:n}),x.transitions.create("transform",{duration:Wm?i:.666*i,delay:Wm?n:n||.333*i,easing:r})].join(","),e.style.opacity=0,e.style.transform=Um(.75),d&&d(e)}),T=k(p);return(0,O.jsx)(g,{appear:i,in:s,nodeRef:I,onEnter:M,onEntered:C,onEntering:S,onExit:E,onExited:T,onExiting:P,addEndListener:e=>{"auto"===f&&v.start(b.current||0,e),r&&r(I.current,e)},timeout:"auto"===f?null:f,...y,children:(t,{ownerState:n,...r})=>e.cloneElement(o,{style:{opacity:0,transform:Um(.75),visibility:"exited"!==t||s?void 0:"hidden",...Ym[t],...m,...o.props.style},ref:w,...r})})});Gm&&(Gm.muiSupportAuto=!0);const Km=Gm,qm="undefined"!=typeof window?e.useLayoutEffect:e.useEffect;function Xm(e){return e&&e.ownerDocument||document}function Zm(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Jm(e){return e instanceof Zm(e).Element||e instanceof Element}function Qm(e){return e instanceof Zm(e).HTMLElement||e instanceof HTMLElement}function ef(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Zm(e).ShadowRoot||e instanceof ShadowRoot)}var tf=Math.max,nf=Math.min,rf=Math.round;function of(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function af(){return!/^((?!chrome|android).)*safari/i.test(of())}function sf(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),i=1,o=1;t&&Qm(e)&&(i=e.offsetWidth>0&&rf(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&rf(r.height)/e.offsetHeight||1);var a=(Jm(e)?Zm(e):window).visualViewport,s=!af()&&n,l=(r.left+(s&&a?a.offsetLeft:0))/i,c=(r.top+(s&&a?a.offsetTop:0))/o,u=r.width/i,d=r.height/o;return{width:u,height:d,top:c,right:l+u,bottom:c+d,left:l,x:l,y:c}}function lf(e){var t=Zm(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function cf(e){return e?(e.nodeName||"").toLowerCase():null}function uf(e){return((Jm(e)?e.ownerDocument:e.document)||window.document).documentElement}function df(e){return sf(uf(e)).left+lf(e).scrollLeft}function pf(e){return Zm(e).getComputedStyle(e)}function hf(e){var t=pf(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function mf(e,t,n){void 0===n&&(n=!1);var r=Qm(t),i=Qm(t)&&function(e){var t=e.getBoundingClientRect(),n=rf(t.width)/e.offsetWidth||1,r=rf(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),o=uf(t),a=sf(e,i,n),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&(("body"!==cf(t)||hf(o))&&(s=function(e){return e!==Zm(e)&&Qm(e)?{scrollLeft:(t=e).scrollLeft,scrollTop:t.scrollTop}:lf(e);var t}(t)),Qm(t)?((l=sf(t,!0)).x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=df(o))),{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function ff(e){var t=sf(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function gf(e){return"html"===cf(e)?e:e.assignedSlot||e.parentNode||(ef(e)?e.host:null)||uf(e)}function yf(e){return["html","body","#document"].indexOf(cf(e))>=0?e.ownerDocument.body:Qm(e)&&hf(e)?e:yf(gf(e))}function vf(e,t){var n;void 0===t&&(t=[]);var r=yf(e),i=r===(null==(n=e.ownerDocument)?void 0:n.body),o=Zm(r),a=i?[o].concat(o.visualViewport||[],hf(r)?r:[]):r,s=t.concat(a);return i?s:s.concat(vf(gf(a)))}function bf(e){return["table","td","th"].indexOf(cf(e))>=0}function xf(e){return Qm(e)&&"fixed"!==pf(e).position?e.offsetParent:null}function If(e){for(var t=Zm(e),n=xf(e);n&&bf(n)&&"static"===pf(n).position;)n=xf(n);return n&&("html"===cf(n)||"body"===cf(n)&&"static"===pf(n).position)?t:n||function(e){var t=/firefox/i.test(of());if(/Trident/i.test(of())&&Qm(e)&&"fixed"===pf(e).position)return null;var n=gf(e);for(ef(n)&&(n=n.host);Qm(n)&&["html","body"].indexOf(cf(n))<0;){var r=pf(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}var wf="top",kf="bottom",Sf="right",Mf="left",Cf="auto",Pf=[wf,kf,Sf,Mf],Ef="start",Tf="end",Af="viewport",Of="popper",jf=Pf.reduce(function(e,t){return e.concat([t+"-"+Ef,t+"-"+Tf])},[]),Lf=[].concat(Pf,[Cf]).reduce(function(e,t){return e.concat([t,t+"-"+Ef,t+"-"+Tf])},[]),Rf=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function Df(e){var t=new Map,n=new Set,r=[];function i(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!n.has(e)){var r=t.get(e);r&&i(r)}}),r.push(e)}return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){n.has(e.name)||i(e)}),r}var $f={placement:"bottom",modifiers:[],strategy:"absolute"};function zf(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function Vf(e){var t,n=e.reference,r=e.element,i=e.placement,o=i?Ff(i):null,a=i?Hf(i):null,s=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(o){case wf:t={x:s,y:n.y-r.height};break;case kf:t={x:s,y:n.y+n.height};break;case Sf:t={x:n.x+n.width,y:l};break;case Mf:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var c=o?Bf(o):null;if(null!=c){var u="y"===c?"height":"width";switch(a){case Ef:t[c]=t[c]-(n[u]/2-r[u]/2);break;case Tf:t[c]=t[c]+(n[u]/2-r[u]/2)}}return t}var Uf={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Yf(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,a=e.offsets,s=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,d=e.isFixed,p=a.x,h=void 0===p?0:p,m=a.y,f=void 0===m?0:m,g="function"==typeof u?u({x:h,y:f}):{x:h,y:f};h=g.x,f=g.y;var y=a.hasOwnProperty("x"),v=a.hasOwnProperty("y"),b=Mf,x=wf,I=window;if(c){var w=If(n),k="clientHeight",S="clientWidth";w===Zm(n)&&"static"!==pf(w=uf(n)).position&&"absolute"===s&&(k="scrollHeight",S="scrollWidth"),(i===wf||(i===Mf||i===Sf)&&o===Tf)&&(x=kf,f-=(d&&w===I&&I.visualViewport?I.visualViewport.height:w[k])-r.height,f*=l?1:-1),i!==Mf&&(i!==wf&&i!==kf||o!==Tf)||(b=Sf,h-=(d&&w===I&&I.visualViewport?I.visualViewport.width:w[S])-r.width,h*=l?1:-1)}var M,C=Object.assign({position:s},c&&Uf),P=!0===u?function(e,t){var n=e.x,r=e.y,i=t.devicePixelRatio||1;return{x:rf(n*i)/i||0,y:rf(r*i)/i||0}}({x:h,y:f},Zm(n)):{x:h,y:f};return h=P.x,f=P.y,l?Object.assign({},C,((M={})[x]=v?"0":"",M[b]=y?"0":"",M.transform=(I.devicePixelRatio||1)<=1?"translate("+h+"px, "+f+"px)":"translate3d("+h+"px, "+f+"px, 0)",M)):Object.assign({},C,((t={})[x]=v?f+"px":"",t[b]=y?h+"px":"",t.transform="",t))}const Wf={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},i=t.elements[e];Qm(i)&&cf(i)&&(Object.assign(i.style,n),Object.keys(r).forEach(function(e){var t=r[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var r=t.elements[e],i=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce(function(e,t){return e[t]="",e},{});Qm(r)&&cf(r)&&(Object.assign(r.style,o),Object.keys(i).forEach(function(e){r.removeAttribute(e)}))})}},requires:["computeStyles"]};var Gf={left:"right",right:"left",bottom:"top",top:"bottom"};function Kf(e){return e.replace(/left|right|bottom|top/g,function(e){return Gf[e]})}var qf={start:"end",end:"start"};function Xf(e){return e.replace(/start|end/g,function(e){return qf[e]})}function Zf(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&ef(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Jf(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Qf(e,t,n){return t===Af?Jf(function(e,t){var n=Zm(e),r=uf(e),i=n.visualViewport,o=r.clientWidth,a=r.clientHeight,s=0,l=0;if(i){o=i.width,a=i.height;var c=af();(c||!c&&"fixed"===t)&&(s=i.offsetLeft,l=i.offsetTop)}return{width:o,height:a,x:s+df(e),y:l}}(e,n)):Jm(t)?function(e,t){var n=sf(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):Jf(function(e){var t,n=uf(e),r=lf(e),i=null==(t=e.ownerDocument)?void 0:t.body,o=tf(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=tf(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-r.scrollLeft+df(e),l=-r.scrollTop;return"rtl"===pf(i||n).direction&&(s+=tf(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}(uf(e)))}function eg(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function tg(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}function ng(e,t){void 0===t&&(t={});var n=t,r=n.placement,i=void 0===r?e.placement:r,o=n.strategy,a=void 0===o?e.strategy:o,s=n.boundary,l=void 0===s?"clippingParents":s,c=n.rootBoundary,u=void 0===c?Af:c,d=n.elementContext,p=void 0===d?Of:d,h=n.altBoundary,m=void 0!==h&&h,f=n.padding,g=void 0===f?0:f,y=eg("number"!=typeof g?g:tg(g,Pf)),v=p===Of?"reference":Of,b=e.rects.popper,x=e.elements[m?v:p],I=function(e,t,n,r){var i="clippingParents"===t?function(e){var t=vf(gf(e)),n=["absolute","fixed"].indexOf(pf(e).position)>=0&&Qm(e)?If(e):e;return Jm(n)?t.filter(function(e){return Jm(e)&&Zf(e,n)&&"body"!==cf(e)}):[]}(e):[].concat(t),o=[].concat(i,[n]),a=o[0],s=o.reduce(function(t,n){var i=Qf(e,n,r);return t.top=tf(i.top,t.top),t.right=nf(i.right,t.right),t.bottom=nf(i.bottom,t.bottom),t.left=tf(i.left,t.left),t},Qf(e,a,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}(Jm(x)?x:x.contextElement||uf(e.elements.popper),l,u,a),w=sf(e.elements.reference),k=Vf({reference:w,element:b,strategy:"absolute",placement:i}),S=Jf(Object.assign({},b,k)),M=p===Of?S:w,C={top:I.top-M.top+y.top,bottom:M.bottom-I.bottom+y.bottom,left:I.left-M.left+y.left,right:M.right-I.right+y.right},P=e.modifiersData.offset;if(p===Of&&P){var E=P[i];Object.keys(C).forEach(function(e){var t=[Sf,kf].indexOf(e)>=0?1:-1,n=[wf,kf].indexOf(e)>=0?"y":"x";C[e]+=E[n]*t})}return C}const rg={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=void 0===i||i,a=n.altAxis,s=void 0===a||a,l=n.fallbackPlacements,c=n.padding,u=n.boundary,d=n.rootBoundary,p=n.altBoundary,h=n.flipVariations,m=void 0===h||h,f=n.allowedAutoPlacements,g=t.options.placement,y=Ff(g),v=l||(y!==g&&m?function(e){if(Ff(e)===Cf)return[];var t=Kf(e);return[Xf(e),t,Xf(t)]}(g):[Kf(g)]),b=[g].concat(v).reduce(function(e,n){return e.concat(Ff(n)===Cf?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?Lf:l,u=Hf(r),d=u?s?jf:jf.filter(function(e){return Hf(e)===u}):Pf,p=d.filter(function(e){return c.indexOf(e)>=0});0===p.length&&(p=d);var h=p.reduce(function(t,n){return t[n]=ng(e,{placement:n,boundary:i,rootBoundary:o,padding:a})[Ff(n)],t},{});return Object.keys(h).sort(function(e,t){return h[e]-h[t]})}(t,{placement:n,boundary:u,rootBoundary:d,padding:c,flipVariations:m,allowedAutoPlacements:f}):n)},[]),x=t.rects.reference,I=t.rects.popper,w=new Map,k=!0,S=b[0],M=0;M=0,A=T?"width":"height",O=ng(t,{placement:C,boundary:u,rootBoundary:d,altBoundary:p,padding:c}),j=T?E?Sf:Mf:E?kf:wf;x[A]>I[A]&&(j=Kf(j));var L=Kf(j),R=[];if(o&&R.push(O[P]<=0),s&&R.push(O[j]<=0,O[L]<=0),R.every(function(e){return e})){S=C,k=!1;break}w.set(C,R)}if(k)for(var D=function(e){var t=b.find(function(t){var n=w.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return S=t,"break"},$=m?3:1;$>0&&"break"!==D($);$--);t.placement!==S&&(t.modifiersData[r]._skip=!0,t.placement=S,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ig(e,t,n){return tf(e,nf(t,n))}const og={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=void 0===i||i,a=n.altAxis,s=void 0!==a&&a,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,d=n.padding,p=n.tether,h=void 0===p||p,m=n.tetherOffset,f=void 0===m?0:m,g=ng(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:u}),y=Ff(t.placement),v=Hf(t.placement),b=!v,x=Bf(y),I="x"===x?"y":"x",w=t.modifiersData.popperOffsets,k=t.rects.reference,S=t.rects.popper,M="function"==typeof f?f(Object.assign({},t.rects,{placement:t.placement})):f,C="number"==typeof M?{mainAxis:M,altAxis:M}:Object.assign({mainAxis:0,altAxis:0},M),P=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,E={x:0,y:0};if(w){if(o){var T,A="y"===x?wf:Mf,O="y"===x?kf:Sf,j="y"===x?"height":"width",L=w[x],R=L+g[A],D=L-g[O],$=h?-S[j]/2:0,z=v===Ef?k[j]:S[j],N=v===Ef?-S[j]:-k[j],_=t.elements.arrow,F=h&&_?ff(_):{width:0,height:0},H=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},B=H[A],V=H[O],U=ig(0,k[j],F[j]),Y=b?k[j]/2-$-U-B-C.mainAxis:z-U-B-C.mainAxis,W=b?-k[j]/2+$+U+V+C.mainAxis:N+U+V+C.mainAxis,G=t.elements.arrow&&If(t.elements.arrow),K=G?"y"===x?G.clientTop||0:G.clientLeft||0:0,q=null!=(T=null==P?void 0:P[x])?T:0,X=L+W-q,Z=ig(h?nf(R,L+Y-q-K):R,L,h?tf(D,X):D);w[x]=Z,E[x]=Z-L}if(s){var J,Q="x"===x?wf:Mf,ee="x"===x?kf:Sf,te=w[I],ne="y"===I?"height":"width",re=te+g[Q],ie=te-g[ee],oe=-1!==[wf,Mf].indexOf(y),ae=null!=(J=null==P?void 0:P[I])?J:0,se=oe?re:te-k[ne]-S[ne]-ae+C.altAxis,le=oe?te+k[ne]+S[ne]-ae-C.altAxis:ie,ce=h&&oe?function(e,t,n){var r=ig(e,t,n);return r>n?n:r}(se,te,le):ig(h?se:re,te,h?le:ie);w[I]=ce,E[I]=ce-te}t.modifiersData[r]=E}},requiresIfExists:["offset"]},ag={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=Ff(n.placement),l=Bf(s),c=[Mf,Sf].indexOf(s)>=0?"height":"width";if(o&&a){var u=function(e,t){return eg("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:tg(e,Pf))}(i.padding,n),d=ff(o),p="y"===l?wf:Mf,h="y"===l?kf:Sf,m=n.rects.reference[c]+n.rects.reference[l]-a[l]-n.rects.popper[c],f=a[l]-n.rects.reference[l],g=If(o),y=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,v=m/2-f/2,b=u[p],x=y-d[c]-u[h],I=y/2-d[c]/2+v,w=ig(b,I,x),k=l;n.modifiersData[r]=((t={})[k]=w,t.centerOffset=w-I,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&Zf(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function sg(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function lg(e){return[wf,Sf,kf,Mf].some(function(t){return e[t]>=0})}var cg=Nf({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=void 0===i||i,a=r.resize,s=void 0===a||a,l=Zm(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(e){e.addEventListener("scroll",n.update,_f)}),s&&l.addEventListener("resize",n.update,_f),function(){o&&c.forEach(function(e){e.removeEventListener("scroll",n.update,_f)}),s&&l.removeEventListener("resize",n.update,_f)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=Vf({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=void 0===r||r,o=n.adaptive,a=void 0===o||o,s=n.roundOffsets,l=void 0===s||s,c={placement:Ff(t.placement),variation:Hf(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Yf(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Yf(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Wf,{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=void 0===i?[0,0]:i,a=Lf.reduce(function(e,n){return e[n]=function(e,t,n){var r=Ff(e),i=[Mf,wf].indexOf(r)>=0?-1:1,o="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*i,[Mf,Sf].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,o),e},{}),s=a[t.placement],l=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},rg,og,ag,{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,a=ng(t,{elementContext:"reference"}),s=ng(t,{altBoundary:!0}),l=sg(a,r),c=sg(s,i,o),u=lg(l),d=lg(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}}]});const ug=function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}},dg=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n},pg=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},hg=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=dg({...i,...r}),s=pg(r),l=pg(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}},mg=function(e,t,n){return"function"==typeof e?e(t,n):e},fg=function(e){const{elementType:t,externalSlotProps:n,ownerState:r,skipResolvingSlotProps:i=!1,...o}=e,a=i?{}:mg(n,r),{props:s,internalRef:l}=hg({...o,externalSlotProps:a}),c=Bm(l,a?.ref,e.additionalProps?.ref);return ug(t,{...s,ref:c},r)};function gg(e,t){"function"==typeof e?e(t):e&&(e.current=t)}const yg=e.forwardRef(function(t,n){const{children:r,container:i,disablePortal:o=!1}=t,[a,s]=e.useState(null),l=Bm(e.isValidElement(r)?Jh(r):null,n);if(qm(()=>{o||s(function(e){return"function"==typeof e?e():e}(i)||document.body)},[i,o]),qm(()=>{if(a&&!o)return gg(n,a),()=>{gg(n,null)}},[n,a,o]),o){if(e.isValidElement(r)){const t={ref:l};return e.cloneElement(r,t)}return r}return a?Tm.createPortal(r,a):a}),vg=e=>e,bg=(()=>{let e=vg;return{configure(t){e=t},generate:t=>e(t),reset(){e=vg}}})(),xg={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 Ig(e,t,n="Mui"){const r=xg[t];return r?`${n}-${r}`:`${bg.generate(e)}-${t}`}function wg(e,t,n="Mui"){const r={};return t.forEach(t=>{r[t]=Ig(e,t,n)}),r}function kg(e){return Ig("MuiPopper",e)}function Sg(e){return"function"==typeof e?e():e}wg("MuiPopper",["root"]);const Mg={},Cg=e.forwardRef(function(t,n){const{anchorEl:r,children:i,direction:o,disablePortal:a,modifiers:s,open:l,placement:c,popperOptions:u,popperRef:d,slotProps:p={},slots:h={},TransitionProps:m,ownerState:f,...g}=t,y=e.useRef(null),v=Bm(y,n),b=e.useRef(null),x=Bm(b,d),I=e.useRef(x);qm(()=>{I.current=x},[x]),e.useImperativeHandle(d,()=>b.current,[]);const w=function(e,t){if("ltr"===t)return e;switch(e){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 e}}(c,o),[k,S]=e.useState(w),[M,C]=e.useState(Sg(r));e.useEffect(()=>{b.current&&b.current.forceUpdate()}),e.useEffect(()=>{r&&C(Sg(r))},[r]),qm(()=>{if(!M||!l)return;let e=[{name:"preventOverflow",options:{altBoundary:a}},{name:"flip",options:{altBoundary:a}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:e})=>{S(e.placement)}}];null!=s&&(e=e.concat(s)),u&&null!=u.modifiers&&(e=e.concat(u.modifiers));const t=cg(M,y.current,{placement:w,...u,modifiers:e});return I.current(t),()=>{t.destroy(),I.current(null)}},[M,a,s,l,u,w]);const P={placement:k};null!==m&&(P.TransitionProps=m);const E=(e=>{const{classes:t}=e;return Gh({root:["root"]},kg,t)})(t),T=h.root??"div",A=fg({elementType:T,externalSlotProps:p.root,externalForwardedProps:g,additionalProps:{role:"tooltip",ref:v},ownerState:t,className:E.root});return(0,O.jsx)(T,{...A,children:"function"==typeof i?i(P):i})}),Pg=bm(e.forwardRef(function(t,n){const{anchorEl:r,children:i,container:o,direction:a="ltr",disablePortal:s=!1,keepMounted:l=!1,modifiers:c,open:u,placement:d="bottom",popperOptions:p=Mg,popperRef:h,style:m,transition:f=!1,slotProps:g={},slots:y={},...v}=t,[b,x]=e.useState(!0);if(!l&&!u&&(!f||b))return null;let I;if(o)I=o;else if(r){const e=Sg(r);I=e&&void 0!==e.nodeType?Xm(e).body:Xm(null).body}const w=u||!l||f&&!b?void 0:"none",k=f?{in:u,onEnter:()=>{x(!1)},onExited:()=>{x(!0)}}:void 0;return(0,O.jsx)(yg,{disablePortal:s,container:I,children:(0,O.jsx)(Cg,{anchorEl:r,direction:a,disablePortal:s,modifiers:c,ref:n,open:f?!b:u,placement:d,popperOptions:p,popperRef:h,slotProps:g,slots:y,...v,style:{position:"fixed",top:0,left:0,display:w,...m},TransitionProps:k,children:i})})}),{name:"MuiPopper",slot:"Root",overridesResolver:(e,t)=>t.root})({}),Eg=e.forwardRef(function(e,t){const n=qh(),r=Mm({props:e,name:"MuiPopper"}),{anchorEl:i,component:o,components:a,componentsProps:s,container:l,disablePortal:c,keepMounted:u,modifiers:d,open:p,placement:h,popperOptions:m,popperRef:f,transition:g,slots:y,slotProps:v,...b}=r,x=y?.root??a?.Root,I={anchorEl:i,container:l,disablePortal:c,keepMounted:u,modifiers:d,open:p,placement:h,popperOptions:m,popperRef:f,transition:g,...b};return(0,O.jsx)(Pg,{as:o,direction:n?"rtl":"ltr",slots:{root:x},slotProps:v??s,...I,ref:t})}),Tg=Eg,Ag=function(t){const n=e.useRef(t);return qm(()=>{n.current=t}),e.useRef((...e)=>(0,n.current)(...e)).current},Og=Ag;let jg=0;const Lg={...e}.useId;function Rg(t){if(void 0!==Lg){const e=Lg();return t??e}return function(t){const[n,r]=e.useState(t),i=t||n;return e.useEffect(()=>{null==n&&(jg+=1,r(`mui-${jg}`))},[n]),i}(t)}const Dg=Rg;function $g({controlled:t,default:n,name:r,state:i="value"}){const{current:o}=e.useRef(void 0!==t),[a,s]=e.useState(n);return[o?t:a,e.useCallback(e=>{o||s(e)},[])]}const zg=$g;function Ng(e,t){const{className:n,elementType:r,ownerState:i,externalForwardedProps:o,internalForwardedProps:a,shouldForwardComponentProp:s=!1,...l}=t,{component:c,slots:u={[e]:void 0},slotProps:d={[e]:void 0},...p}=o,h=u[e]||r,m=mg(d[e],i),{props:{component:f,...g},internalRef:y}=hg({className:n,...l,externalForwardedProps:"root"===e?p:void 0,externalSlotProps:m}),v=Bm(y,m?.ref,t.ref),b="root"===e?f||c:f;return[h,ug(h,{..."root"===e&&!c&&!u[e]&&a,..."root"!==e&&!u[e]&&a,...g,...b&&!s&&{as:b},...b&&s&&{component:b},ref:v},i)]}function _g(e){return Ig("MuiTooltip",e)}const Fg=wg("MuiTooltip",["popper","popperInteractive","popperArrow","popperClose","tooltip","tooltipArrow","touch","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","arrow"]);function Hg(e){return Math.round(1e5*e)/1e5}const Bg=bm(Tg,{name:"MuiTooltip",slot:"Popper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.popper,!n.disableInteractive&&t.popperInteractive,n.arrow&&t.popperArrow,!n.open&&t.popperClose]}})(wm(({theme:e})=>({zIndex:(e.vars||e).zIndex.tooltip,pointerEvents:"none",variants:[{props:({ownerState:e})=>!e.disableInteractive,style:{pointerEvents:"auto"}},{props:({open:e})=>!e,style:{pointerEvents:"none"}},{props:({ownerState:e})=>e.arrow,style:{[`&[data-popper-placement*="bottom"] .${Fg.arrow}`]:{top:0,marginTop:"-0.71em","&::before":{transformOrigin:"0 100%"}},[`&[data-popper-placement*="top"] .${Fg.arrow}`]:{bottom:0,marginBottom:"-0.71em","&::before":{transformOrigin:"100% 0"}},[`&[data-popper-placement*="right"] .${Fg.arrow}`]:{height:"1em",width:"0.71em","&::before":{transformOrigin:"100% 100%"}},[`&[data-popper-placement*="left"] .${Fg.arrow}`]:{height:"1em",width:"0.71em","&::before":{transformOrigin:"0 0"}}}},{props:({ownerState:e})=>e.arrow&&!e.isRtl,style:{[`&[data-popper-placement*="right"] .${Fg.arrow}`]:{left:0,marginLeft:"-0.71em"}}},{props:({ownerState:e})=>e.arrow&&!!e.isRtl,style:{[`&[data-popper-placement*="right"] .${Fg.arrow}`]:{right:0,marginRight:"-0.71em"}}},{props:({ownerState:e})=>e.arrow&&!e.isRtl,style:{[`&[data-popper-placement*="left"] .${Fg.arrow}`]:{right:0,marginRight:"-0.71em"}}},{props:({ownerState:e})=>e.arrow&&!!e.isRtl,style:{[`&[data-popper-placement*="left"] .${Fg.arrow}`]:{left:0,marginLeft:"-0.71em"}}}]}))),Vg=bm("div",{name:"MuiTooltip",slot:"Tooltip",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.tooltip,n.touch&&t.touch,n.arrow&&t.tooltipArrow,t[`tooltipPlacement${Cm(n.placement.split("-")[0])}`]]}})(wm(({theme:e})=>({backgroundColor:e.vars?e.vars.palette.Tooltip.bg:op(e.palette.grey[700],.92),borderRadius:(e.vars||e).shape.borderRadius,color:(e.vars||e).palette.common.white,fontFamily:e.typography.fontFamily,padding:"4px 8px",fontSize:e.typography.pxToRem(11),maxWidth:300,margin:2,wordWrap:"break-word",fontWeight:e.typography.fontWeightMedium,[`.${Fg.popper}[data-popper-placement*="left"] &`]:{transformOrigin:"right center"},[`.${Fg.popper}[data-popper-placement*="right"] &`]:{transformOrigin:"left center"},[`.${Fg.popper}[data-popper-placement*="top"] &`]:{transformOrigin:"center bottom",marginBottom:"14px"},[`.${Fg.popper}[data-popper-placement*="bottom"] &`]:{transformOrigin:"center top",marginTop:"14px"},variants:[{props:({ownerState:e})=>e.arrow,style:{position:"relative",margin:0}},{props:({ownerState:e})=>e.touch,style:{padding:"8px 16px",fontSize:e.typography.pxToRem(14),lineHeight:`${Hg(16/14)}em`,fontWeight:e.typography.fontWeightRegular}},{props:({ownerState:e})=>!e.isRtl,style:{[`.${Fg.popper}[data-popper-placement*="left"] &`]:{marginRight:"14px"},[`.${Fg.popper}[data-popper-placement*="right"] &`]:{marginLeft:"14px"}}},{props:({ownerState:e})=>!e.isRtl&&e.touch,style:{[`.${Fg.popper}[data-popper-placement*="left"] &`]:{marginRight:"24px"},[`.${Fg.popper}[data-popper-placement*="right"] &`]:{marginLeft:"24px"}}},{props:({ownerState:e})=>!!e.isRtl,style:{[`.${Fg.popper}[data-popper-placement*="left"] &`]:{marginLeft:"14px"},[`.${Fg.popper}[data-popper-placement*="right"] &`]:{marginRight:"14px"}}},{props:({ownerState:e})=>!!e.isRtl&&e.touch,style:{[`.${Fg.popper}[data-popper-placement*="left"] &`]:{marginLeft:"24px"},[`.${Fg.popper}[data-popper-placement*="right"] &`]:{marginRight:"24px"}}},{props:({ownerState:e})=>e.touch,style:{[`.${Fg.popper}[data-popper-placement*="top"] &`]:{marginBottom:"24px"}}},{props:({ownerState:e})=>e.touch,style:{[`.${Fg.popper}[data-popper-placement*="bottom"] &`]:{marginTop:"24px"}}}]}))),Ug=bm("span",{name:"MuiTooltip",slot:"Arrow",overridesResolver:(e,t)=>t.arrow})(wm(({theme:e})=>({overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:e.vars?e.vars.palette.Tooltip.bg:op(e.palette.grey[700],.9),"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",backgroundColor:"currentColor",transform:"rotate(45deg)"}})));let Yg=!1;const Wg=new Yh;let Gg={x:0,y:0};function Kg(e,t){return(n,...r)=>{t&&t(n,...r),e(n,...r)}}const qg=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiTooltip"}),{arrow:i=!1,children:o,classes:a,components:s={},componentsProps:l={},describeChild:c=!1,disableFocusListener:u=!1,disableHoverListener:d=!1,disableInteractive:p=!1,disableTouchListener:h=!1,enterDelay:m=100,enterNextDelay:f=0,enterTouchDelay:g=700,followCursor:y=!1,id:v,leaveDelay:b=0,leaveTouchDelay:x=1500,onClose:I,onOpen:w,open:k,placement:S="bottom",PopperComponent:M,PopperProps:C={},slotProps:P={},slots:E={},title:T,TransitionComponent:A,TransitionProps:j,...L}=r,R=e.isValidElement(o)?o:(0,O.jsx)("span",{children:o}),D=xm(),$=qh(),[z,N]=e.useState(),[_,F]=e.useState(null),H=e.useRef(!1),B=p||y,V=Wh(),U=Wh(),Y=Wh(),W=Wh(),[G,K]=zg({controlled:k,default:!1,name:"Tooltip",state:"open"});let q=G;const X=Dg(v),Z=e.useRef(),J=Og(()=>{void 0!==Z.current&&(document.body.style.WebkitUserSelect=Z.current,Z.current=void 0),W.clear()});e.useEffect(()=>J,[J]);const Q=e=>{Wg.clear(),Yg=!0,K(!0),w&&!q&&w(e)},ee=Og(e=>{Wg.start(800+b,()=>{Yg=!1}),K(!1),I&&q&&I(e),V.start(D.transitions.duration.shortest,()=>{H.current=!1})}),te=e=>{H.current&&"touchstart"!==e.type||(z&&z.removeAttribute("title"),U.clear(),Y.clear(),m||Yg&&f?U.start(Yg?f:m,()=>{Q(e)}):Q(e))},ne=e=>{U.clear(),Y.start(b,()=>{ee(e)})},[,re]=e.useState(!1),ie=e=>{Zh(e.target)||(re(!1),ne(e))},oe=e=>{z||N(e.currentTarget),Zh(e.target)&&(re(!0),te(e))},ae=e=>{H.current=!0;const t=R.props;t.onTouchStart&&t.onTouchStart(e)};e.useEffect(()=>{if(q)return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)};function e(e){"Escape"===e.key&&ee(e)}},[ee,q]);const se=Vm(Jh(R),N,n);T||0===T||(q=!1);const le=e.useRef(),ce={},ue="string"==typeof T;c?(ce.title=q||!ue||d?null:T,ce["aria-describedby"]=q?X:null):(ce["aria-label"]=ue?T:null,ce["aria-labelledby"]=q&&!ue?X:null);const de={...ce,...L,...R.props,className:Hh(L.className,R.props.className),onTouchStart:ae,ref:se,...y?{onMouseMove:e=>{const t=R.props;t.onMouseMove&&t.onMouseMove(e),Gg={x:e.clientX,y:e.clientY},le.current&&le.current.update()}}:{}},pe={};h||(de.onTouchStart=e=>{ae(e),Y.clear(),V.clear(),J(),Z.current=document.body.style.WebkitUserSelect,document.body.style.WebkitUserSelect="none",W.start(g,()=>{document.body.style.WebkitUserSelect=Z.current,te(e)})},de.onTouchEnd=e=>{R.props.onTouchEnd&&R.props.onTouchEnd(e),J(),Y.start(x,()=>{ee(e)})}),d||(de.onMouseOver=Kg(te,de.onMouseOver),de.onMouseLeave=Kg(ne,de.onMouseLeave),B||(pe.onMouseOver=te,pe.onMouseLeave=ne)),u||(de.onFocus=Kg(oe,de.onFocus),de.onBlur=Kg(ie,de.onBlur),B||(pe.onFocus=oe,pe.onBlur=ie));const he={...r,isRtl:$,arrow:i,disableInteractive:B,placement:S,PopperComponentProp:M,touch:H.current},me="function"==typeof P.popper?P.popper(he):P.popper,fe=e.useMemo(()=>{let e=[{name:"arrow",enabled:Boolean(_),options:{element:_,padding:4}}];return C.popperOptions?.modifiers&&(e=e.concat(C.popperOptions.modifiers)),me?.popperOptions?.modifiers&&(e=e.concat(me.popperOptions.modifiers)),{...C.popperOptions,...me?.popperOptions,modifiers:e}},[_,C.popperOptions,me?.popperOptions]),ge=(e=>{const{classes:t,disableInteractive:n,arrow:r,touch:i,placement:o}=e;return Gh({popper:["popper",!n&&"popperInteractive",r&&"popperArrow"],tooltip:["tooltip",r&&"tooltipArrow",i&&"touch",`tooltipPlacement${Cm(o.split("-")[0])}`],arrow:["arrow"]},_g,t)})(he),ye="function"==typeof P.transition?P.transition(he):P.transition,ve={slots:{popper:s.Popper,transition:s.Transition??A,tooltip:s.Tooltip,arrow:s.Arrow,...E},slotProps:{arrow:P.arrow??l.arrow,popper:{...C,...me??l.popper},tooltip:P.tooltip??l.tooltip,transition:{...j,...ye??l.transition}}},[be,xe]=Ng("popper",{elementType:Bg,externalForwardedProps:ve,ownerState:he,className:Hh(ge.popper,C?.className)}),[Ie,we]=Ng("transition",{elementType:Km,externalForwardedProps:ve,ownerState:he}),[ke,Se]=Ng("tooltip",{elementType:Vg,className:ge.tooltip,externalForwardedProps:ve,ownerState:he}),[Me,Ce]=Ng("arrow",{elementType:Ug,className:ge.arrow,externalForwardedProps:ve,ownerState:he,ref:F});return(0,O.jsxs)(e.Fragment,{children:[e.cloneElement(R,de),(0,O.jsx)(be,{as:M??Tg,placement:S,anchorEl:y?{getBoundingClientRect:()=>({top:Gg.y,left:Gg.x,right:Gg.x,bottom:Gg.y,width:0,height:0})}:z,popperRef:le,open:!!z&&q,id:X,transition:!0,...pe,...xe,popperOptions:fe,children:({TransitionProps:e})=>(0,O.jsx)(Ie,{timeout:D.transitions.duration.shorter,...e,...we,children:(0,O.jsxs)(ke,{...Se,children:[T,i?(0,O.jsx)(Me,{...Ce}):null]})})})]})}),Xg=Xm,Zg=e.createContext({});function Jg(e){return Ig("MuiList",e)}wg("MuiList",["root","padding","dense","subheader"]);const Qg=bm("ul",{name:"MuiList",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disablePadding&&t.padding,n.dense&&t.dense,n.subheader&&t.subheader]}})({listStyle:"none",margin:0,padding:0,position:"relative",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>e.subheader,style:{paddingTop:0}}]}),ey=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiList"}),{children:i,className:o,component:a="ul",dense:s=!1,disablePadding:l=!1,subheader:c,...u}=r,d=e.useMemo(()=>({dense:s}),[s]),p={...r,component:a,dense:s,disablePadding:l},h=(e=>{const{classes:t,disablePadding:n,dense:r,subheader:i}=e;return Gh({root:["root",!n&&"padding",r&&"dense",i&&"subheader"]},Jg,t)})(p);return(0,O.jsx)(Zg.Provider,{value:d,children:(0,O.jsxs)(Qg,{as:a,className:Hh(h.root,o),ref:n,ownerState:p,...u,children:[c,i]})})}),ty=ey;function ny(e=window){const t=e.document.documentElement.clientWidth;return e.innerWidth-t}const ry=ny,iy=qm;function oy(e){return Xm(e).defaultView||window}const ay=oy;function sy(e,t,n){return e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:n?null:e.firstChild}function ly(e,t,n){return e===t?n?e.firstChild:e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:n?null:e.lastChild}function cy(e,t){if(void 0===t)return!0;let n=e.innerText;return void 0===n&&(n=e.textContent),n=n.trim().toLowerCase(),0!==n.length&&(t.repeating?n[0]===t.keys[0]:n.startsWith(t.keys.join("")))}function uy(e,t,n,r,i,o){let a=!1,s=i(e,t,!!t&&n);for(;s;){if(s===e.firstChild){if(a)return!1;a=!0}const t=!r&&(s.disabled||"true"===s.getAttribute("aria-disabled"));if(s.hasAttribute("tabindex")&&cy(s,o)&&!t)return s.focus(),!0;s=i(e,s,n)}return!1}const dy=e.forwardRef(function(t,n){const{actions:r,autoFocus:i=!1,autoFocusItem:o=!1,children:a,className:s,disabledItemsFocusable:l=!1,disableListWrap:c=!1,onKeyDown:u,variant:d="selectedMenu",...p}=t,h=e.useRef(null),m=e.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});iy(()=>{i&&h.current.focus()},[i]),e.useImperativeHandle(r,()=>({adjustStyleForScrollbar:(e,{direction:t})=>{const n=!h.current.style.width;if(e.clientHeight{e.isValidElement(t)?(t.props.disabled||("selectedMenu"===d&&t.props.selected||-1===g)&&(g=n),g===n&&(t.props.disabled||t.props.muiSkipListHighlight||t.type.muiSkipListHighlight)&&(g+=1,g>=a.length&&(g=-1))):g===n&&(g+=1,g>=a.length&&(g=-1))});const y=e.Children.map(a,(t,n)=>{if(n===g){const n={};return o&&(n.autoFocus=!0),void 0===t.props.tabIndex&&"selectedMenu"===d&&(n.tabIndex=0),e.cloneElement(t,n)}return t});return(0,O.jsx)(ty,{role:"menu",ref:f,className:s,onKeyDown:e=>{const t=h.current,n=e.key;if(e.ctrlKey||e.metaKey||e.altKey)return void(u&&u(e));const r=Xg(t).activeElement;if("ArrowDown"===n)e.preventDefault(),uy(t,r,c,l,sy);else if("ArrowUp"===n)e.preventDefault(),uy(t,r,c,l,ly);else if("Home"===n)e.preventDefault(),uy(t,null,c,l,sy);else if("End"===n)e.preventDefault(),uy(t,null,c,l,ly);else if(1===n.length){const i=m.current,o=n.toLowerCase(),a=performance.now();i.keys.length>0&&(a-i.lastTime>500?(i.keys=[],i.repeating=!0,i.previousKeyMatched=!0):i.repeating&&o!==i.keys[0]&&(i.repeating=!1)),i.lastTime=a,i.keys.push(o);const s=r&&!i.repeating&&cy(r,i);i.previousKeyMatched&&(s||uy(t,r,!1,l,sy,i))?e.preventDefault():i.previousKeyMatched=!1}u&&u(e)},tabIndex:i?0:-1,...p,children:y})});function py(e){return Ig("MuiDivider",e)}const hy=wg("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]),my=bm("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.absolute&&t.absolute,t[n.variant],n.light&&t.light,"vertical"===n.orientation&&t.vertical,n.flexItem&&t.flexItem,n.children&&t.withChildren,n.children&&"vertical"===n.orientation&&t.withChildrenVertical,"right"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignRight,"left"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignLeft]}})(wm(({theme:e})=>({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(e.vars||e).palette.divider,borderBottomWidth:"thin",variants:[{props:{absolute:!0},style:{position:"absolute",bottom:0,left:0,width:"100%"}},{props:{light:!0},style:{borderColor:e.vars?`rgba(${e.vars.palette.dividerChannel} / 0.08)`:op(e.palette.divider,.08)}},{props:{variant:"inset"},style:{marginLeft:72}},{props:{variant:"middle",orientation:"horizontal"},style:{marginLeft:e.spacing(2),marginRight:e.spacing(2)}},{props:{variant:"middle",orientation:"vertical"},style:{marginTop:e.spacing(1),marginBottom:e.spacing(1)}},{props:{orientation:"vertical"},style:{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"}},{props:{flexItem:!0},style:{alignSelf:"stretch",height:"auto"}},{props:({ownerState:e})=>!!e.children,style:{display:"flex",textAlign:"center",border:0,borderTopStyle:"solid",borderLeftStyle:"solid","&::before, &::after":{content:'""',alignSelf:"center"}}},{props:({ownerState:e})=>e.children&&"vertical"!==e.orientation,style:{"&::before, &::after":{width:"100%",borderTop:`thin solid ${(e.vars||e).palette.divider}`,borderTopStyle:"inherit"}}},{props:({ownerState:e})=>"vertical"===e.orientation&&e.children,style:{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:`thin solid ${(e.vars||e).palette.divider}`,borderLeftStyle:"inherit"}}},{props:({ownerState:e})=>"right"===e.textAlign&&"vertical"!==e.orientation,style:{"&::before":{width:"90%"},"&::after":{width:"10%"}}},{props:({ownerState:e})=>"left"===e.textAlign&&"vertical"!==e.orientation,style:{"&::before":{width:"10%"},"&::after":{width:"90%"}}}]}))),fy=bm("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.wrapper,"vertical"===n.orientation&&t.wrapperVertical]}})(wm(({theme:e})=>({display:"inline-block",paddingLeft:`calc(${e.spacing(1)} * 1.2)`,paddingRight:`calc(${e.spacing(1)} * 1.2)`,whiteSpace:"nowrap",variants:[{props:{orientation:"vertical"},style:{paddingTop:`calc(${e.spacing(1)} * 1.2)`,paddingBottom:`calc(${e.spacing(1)} * 1.2)`}}]}))),gy=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiDivider"}),{absolute:r=!1,children:i,className:o,orientation:a="horizontal",component:s=(i||"vertical"===a?"div":"hr"),flexItem:l=!1,light:c=!1,role:u=("hr"!==s?"separator":void 0),textAlign:d="center",variant:p="fullWidth",...h}=n,m={...n,absolute:r,component:s,flexItem:l,light:c,orientation:a,role:u,textAlign:d,variant:p},f=(e=>{const{absolute:t,children:n,classes:r,flexItem:i,light:o,orientation:a,textAlign:s,variant:l}=e;return Gh({root:["root",t&&"absolute",l,o&&"light","vertical"===a&&"vertical",i&&"flexItem",n&&"withChildren",n&&"vertical"===a&&"withChildrenVertical","right"===s&&"vertical"!==a&&"textAlignRight","left"===s&&"vertical"!==a&&"textAlignLeft"],wrapper:["wrapper","vertical"===a&&"wrapperVertical"]},py,r)})(m);return(0,O.jsx)(my,{as:s,className:Hh(f.root,o),role:u,ref:t,ownerState:m,"aria-orientation":"separator"!==u||"hr"===s&&"vertical"!==a?void 0:a,...h,children:i?(0,O.jsx)(fy,{className:f.wrapper,ownerState:m,children:i}):null})});gy&&(gy.muiSkipListHighlight=!0);const yy=gy;function vy(e=[]){return([,t])=>t&&function(e,t=[]){if(!function(e){return"string"==typeof e.main}(e))return!1;for(const n of t)if(!e.hasOwnProperty(n)||"string"!=typeof e[n])return!1;return!0}(t,e)}class by{static create(){return new by}static use(){const t=Vh(by.create).current,[n,r]=e.useState(!1);return t.shouldMount=n,t.setShouldMount=r,e.useEffect(t.mountEffect,[n]),t}constructor(){this.ref={current:null},this.mounted=null,this.didMount=!1,this.shouldMount=!1,this.setShouldMount=null}mount(){return this.mounted||(this.mounted=function(){let e,t;const n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n}(),this.shouldMount=!0,this.setShouldMount(this.shouldMount)),this.mounted}mountEffect=()=>{this.shouldMount&&!this.didMount&&null!==this.ref.current&&(this.didMount=!0,this.mounted.resolve())};start(...e){this.mount().then(()=>this.ref.current?.start(...e))}stop(...e){this.mount().then(()=>this.ref.current?.stop(...e))}pulsate(...e){this.mount().then(()=>this.ref.current?.pulsate(...e))}}function xy(t,n){var r=Object.create(null);return t&&e.Children.map(t,function(e){return e}).forEach(function(t){r[t.key]=function(t){return n&&(0,e.isValidElement)(t)?n(t):t}(t)}),r}function Iy(e,t,n){return null!=n[t]?n[t]:e.props[t]}function wy(t,n,r){var i=xy(t.children),o=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,i=Object.create(null),o=[];for(var a in e)a in t?o.length&&(i[a]=o,o=[]):o.push(a);var s={};for(var l in t){if(i[l])for(r=0;r{const{ownerState:n}=e;return[t.root,t[n.variant],t[`color${Cm(n.color)}`]]}})(wm(({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:qy||{animation:`${Gy} 1.4s linear infinite`}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}}))]}))),Jy=bm("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),Qy=bm("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.circle,t[`circle${Cm(n.variant)}`],n.disableShrink&&t.circleDisableShrink]}})(wm(({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:Xy||{animation:`${Ky} 1.4s ease-in-out infinite`}}]}))),ev=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiCircularProgress"}),{className:r,color:i="primary",disableShrink:o=!1,size:a=40,style:s,thickness:l=3.6,value:c=0,variant:u="indeterminate",...d}=n,p={...n,color:i,disableShrink:o,size:a,thickness:l,value:c,variant:u},h=(e=>{const{classes:t,variant:n,color:r,disableShrink:i}=e;return Gh({root:["root",n,`color${Cm(r)}`],svg:["svg"],circle:["circle",`circle${Cm(n)}`,i&&"circleDisableShrink"]},Wy,t)})(p),m={},f={},g={};if("determinate"===u){const e=2*Math.PI*((44-l)/2);m.strokeDasharray=e.toFixed(3),g["aria-valuenow"]=Math.round(c),m.strokeDashoffset=`${((100-c)/100*e).toFixed(3)}px`,f.transform="rotate(-90deg)"}return(0,O.jsx)(Zy,{className:Hh(h.root,r),style:{width:a,height:a,...f,...s},ownerState:p,ref:t,role:"progressbar",...g,...d,children:(0,O.jsx)(Jy,{className:h.svg,ownerState:p,viewBox:"22 22 44 44",children:(0,O.jsx)(Qy,{className:h.circle,style:m,ownerState:p,cx:44,cy:44,r:(44-l)/2,fill:"none",strokeWidth:l})})})}),tv=ev;function nv(e){return Ig("MuiIconButton",e)}const rv=wg("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge","loading","loadingIndicator","loadingWrapper"]),iv=bm(Yy,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.loading&&t.loading,"default"!==n.color&&t[`color${Cm(n.color)}`],n.edge&&t[`edge${Cm(n.edge)}`],t[`size${Cm(n.size)}`]]}})(wm(({theme:e})=>({textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:8,borderRadius:"50%",color:(e.vars||e).palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),variants:[{props:e=>!e.disableRipple,style:{"--IconButton-hoverBg":e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette.action.active,e.palette.action.hoverOpacity),"&:hover":{backgroundColor:"var(--IconButton-hoverBg)","@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}}]})),wm(({theme:e})=>({variants:[{props:{color:"inherit"},style:{color:"inherit"}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{"--IconButton-hoverBg":e.vars?`rgba(${(e.vars||e).palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:op((e.vars||e).palette[t].main,e.palette.action.hoverOpacity)}})),{props:{size:"small"},style:{padding:5,fontSize:e.typography.pxToRem(18)}},{props:{size:"large"},style:{padding:12,fontSize:e.typography.pxToRem(28)}}],[`&.${rv.disabled}`]:{backgroundColor:"transparent",color:(e.vars||e).palette.action.disabled},[`&.${rv.loading}`]:{color:"transparent"}}))),ov=bm("span",{name:"MuiIconButton",slot:"LoadingIndicator",overridesResolver:(e,t)=>t.loadingIndicator})(({theme:e})=>({display:"none",position:"absolute",visibility:"visible",top:"50%",left:"50%",transform:"translate(-50%, -50%)",color:(e.vars||e).palette.action.disabled,variants:[{props:{loading:!0},style:{display:"flex"}}]})),av=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiIconButton"}),{edge:r=!1,children:i,className:o,color:a="default",disabled:s=!1,disableFocusRipple:l=!1,size:c="medium",id:u,loading:d=null,loadingIndicator:p,...h}=n,m=Dg(u),f=p??(0,O.jsx)(tv,{"aria-labelledby":m,color:"inherit",size:16}),g={...n,edge:r,color:a,disabled:s,disableFocusRipple:l,loading:d,loadingIndicator:f,size:c},y=(e=>{const{classes:t,disabled:n,color:r,edge:i,size:o,loading:a}=e;return Gh({root:["root",a&&"loading",n&&"disabled","default"!==r&&`color${Cm(r)}`,i&&`edge${Cm(i)}`,`size${Cm(o)}`],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]},nv,t)})(g);return(0,O.jsxs)(iv,{id:d?m:u,className:Hh(y.root,o),centerRipple:!0,focusRipple:!l,disabled:s||d,ref:t,...h,ownerState:g,children:["boolean"==typeof d&&(0,O.jsx)("span",{className:y.loadingWrapper,style:{display:"contents"},children:(0,O.jsx)(ov,{className:y.loadingIndicator,ownerState:g,children:d&&f})}),i]})}),sv=av;function lv(e){return Ig("MuiButton",e)}const cv=wg("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"]),uv=e.createContext({}),dv=e.createContext(void 0),pv=[{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}}}],hv=bm(Yy,{shouldForwardProp:e=>ym(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`${n.variant}${Cm(n.color)}`],t[`size${Cm(n.size)}`],t[`${n.variant}Size${Cm(n.size)}`],"inherit"===n.color&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth,n.loading&&t.loading]}})(wm(({theme:e})=>{const t="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],n="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return{...e.typography.button,minWidth:64,padding:"6px 16px",border:0,borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":{textDecoration:"none"},[`&.${cv.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{variant:"contained"},style:{color:"var(--variant-containedColor)",backgroundColor:"var(--variant-containedBg)",boxShadow:(e.vars||e).shadows[2],"&:hover":{boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2]}},"&:active":{boxShadow:(e.vars||e).shadows[8]},[`&.${cv.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},[`&.${cv.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).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)",[`&.${cv.disabled}`]:{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`}}},{props:{variant:"text"},style:{padding:"6px 8px",color:"var(--variant-textColor)",backgroundColor:"var(--variant-textBg)"}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{"--variant-textColor":(e.vars||e).palette[t].main,"--variant-outlinedColor":(e.vars||e).palette[t].main,"--variant-outlinedBorder":e.vars?`rgba(${e.vars.palette[t].mainChannel} / 0.5)`:op(e.palette[t].main,.5),"--variant-containedColor":(e.vars||e).palette[t].contrastText,"--variant-containedBg":(e.vars||e).palette[t].main,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":(e.vars||e).palette[t].dark,"--variant-textBg":e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette[t].main,e.palette.action.hoverOpacity),"--variant-outlinedBorder":(e.vars||e).palette[t].main,"--variant-outlinedBg":e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette[t].main,e.palette.action.hoverOpacity)}}}})),{props:{color:"inherit"},style:{color:"inherit",borderColor:"currentColor","--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedBg:t,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedHoverBg:n,"--variant-textBg":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette.text.primary,e.palette.action.hoverOpacity),"--variant-outlinedBg":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette.text.primary,e.palette.action.hoverOpacity)}}}},{props:{size:"small",variant:"text"},style:{padding:"4px 5px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"text"},style:{padding:"8px 11px",fontSize:e.typography.pxToRem(15)}},{props:{size:"small",variant:"outlined"},style:{padding:"3px 9px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"outlined"},style:{padding:"7px 21px",fontSize:e.typography.pxToRem(15)}},{props:{size:"small",variant:"contained"},style:{padding:"4px 10px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"contained"},style:{padding:"8px 22px",fontSize:e.typography.pxToRem(15)}},{props:{disableElevation:!0},style:{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${cv.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${cv.disabled}`]:{boxShadow:"none"}}},{props:{fullWidth:!0},style:{width:"100%"}},{props:{loadingPosition:"center"},style:{transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),[`&.${cv.loading}`]:{color:"transparent"}}}]}})),mv=bm("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.startIcon,n.loading&&t.startIconLoadingStart,t[`iconSize${Cm(n.size)}`]]}})(({theme:e})=>({display:"inherit",marginRight:8,marginLeft:-4,variants:[{props:{size:"small"},style:{marginLeft:-2}},{props:{loadingPosition:"start",loading:!0},style:{transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"start",loading:!0,fullWidth:!0},style:{marginRight:-8}},...pv]})),fv=bm("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.endIcon,n.loading&&t.endIconLoadingEnd,t[`iconSize${Cm(n.size)}`]]}})(({theme:e})=>({display:"inherit",marginRight:-4,marginLeft:8,variants:[{props:{size:"small"},style:{marginRight:-2}},{props:{loadingPosition:"end",loading:!0},style:{transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"end",loading:!0,fullWidth:!0},style:{marginLeft:-8}},...pv]})),gv=bm("span",{name:"MuiButton",slot:"LoadingIndicator",overridesResolver:(e,t)=>t.loadingIndicator})(({theme:e})=>({display:"none",position:"absolute",visibility:"visible",variants:[{props:{loading:!0},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:(e.vars||e).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:!0},style:{position:"relative",left:-10}},{props:{loadingPosition:"end",fullWidth:!0},style:{position:"relative",right:-10}}]})),yv=bm("span",{name:"MuiButton",slot:"LoadingIconPlaceholder",overridesResolver:(e,t)=>t.loadingIconPlaceholder})({display:"inline-block",width:"1em",height:"1em"}),vv=e.forwardRef(function(t,n){const r=e.useContext(uv),i=e.useContext(dv),o=Mm({props:cc(r,t),name:"MuiButton"}),{children:a,color:s="primary",component:l="button",className:c,disabled:u=!1,disableElevation:d=!1,disableFocusRipple:p=!1,endIcon:h,focusVisibleClassName:m,fullWidth:f=!1,id:g,loading:y=null,loadingIndicator:v,loadingPosition:b="center",size:x="medium",startIcon:I,type:w,variant:k="text",...S}=o,M=Dg(g),C=v??(0,O.jsx)(tv,{"aria-labelledby":M,color:"inherit",size:16}),P={...o,color:s,component:l,disabled:u,disableElevation:d,disableFocusRipple:p,fullWidth:f,loading:y,loadingIndicator:C,loadingPosition:b,size:x,type:w,variant:k},E=(e=>{const{color:t,disableElevation:n,fullWidth:r,size:i,variant:o,loading:a,loadingPosition:s,classes:l}=e,c=Gh({root:["root",a&&"loading",o,`${o}${Cm(t)}`,`size${Cm(i)}`,`${o}Size${Cm(i)}`,`color${Cm(t)}`,n&&"disableElevation",r&&"fullWidth",a&&`loadingPosition${Cm(s)}`],startIcon:["icon","startIcon",`iconSize${Cm(i)}`],endIcon:["icon","endIcon",`iconSize${Cm(i)}`],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]},lv,l);return{...l,...c}})(P),T=(I||y&&"start"===b)&&(0,O.jsx)(mv,{className:E.startIcon,ownerState:P,children:I||(0,O.jsx)(yv,{className:E.loadingIconPlaceholder,ownerState:P})}),A=(h||y&&"end"===b)&&(0,O.jsx)(fv,{className:E.endIcon,ownerState:P,children:h||(0,O.jsx)(yv,{className:E.loadingIconPlaceholder,ownerState:P})}),j=i||"",L="boolean"==typeof y?(0,O.jsx)("span",{className:E.loadingWrapper,style:{display:"contents"},children:y&&(0,O.jsx)(gv,{className:E.loadingIndicator,ownerState:P,children:C})}):null;return(0,O.jsxs)(hv,{ownerState:P,className:Hh(r.className,E.root,c,j),component:l,disabled:u||y,focusRipple:!p,focusVisibleClassName:Hh(E.focusVisible,m),ref:n,type:w,id:y?M:g,...S,classes:E,children:[T,"end"!==b&&L,a,"end"===b&&L,A]})}),bv=l({},{baseButton:vv,baseIconButton:sv},{});function xv(e){return Ig("MuiListItemIcon",e)}const Iv=wg("MuiListItemIcon",["root","alignItemsFlexStart"]);function wv(e){return Ig("MuiListItemText",e)}const kv=wg("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);function Sv(e){return Ig("MuiMenuItem",e)}const Mv=wg("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),Cv=bm(Yy,{shouldForwardProp:e=>ym(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,n.divider&&t.divider,!n.disableGutters&&t.gutters]}})(wm(({theme:e})=>({...e.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:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${Mv.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:op(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${Mv.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:op(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`&.${Mv.selected}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:op(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:op(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${Mv.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${Mv.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`& + .${hy.root}`]:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},[`& + .${hy.inset}`]:{marginLeft:52},[`& .${kv.root}`]:{marginTop:0,marginBottom:0},[`& .${kv.inset}`]:{paddingLeft:36},[`& .${Iv.root}`]:{minWidth:36},variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>!e.dense,style:{[e.breakpoints.up("sm")]:{minHeight:"auto"}}},{props:({ownerState:e})=>e.dense,style:{minHeight:32,paddingTop:4,paddingBottom:4,...e.typography.body2,[`& .${Iv.root} svg`]:{fontSize:"1.25rem"}}}]}))),Pv=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiMenuItem"}),{autoFocus:i=!1,component:o="li",dense:a=!1,divider:s=!1,disableGutters:l=!1,focusVisibleClassName:c,role:u="menuitem",tabIndex:d,className:p,...h}=r,m=e.useContext(Zg),f=e.useMemo(()=>({dense:a||m.dense||!1,disableGutters:l}),[m.dense,a,l]),g=e.useRef(null);iy(()=>{i&&g.current&&g.current.focus()},[i]);const y={...r,dense:f.dense,divider:s,disableGutters:l},v=(e=>{const{disabled:t,dense:n,divider:r,disableGutters:i,selected:o,classes:a}=e,s=Gh({root:["root",n&&"dense",t&&"disabled",!i&&"gutters",r&&"divider",o&&"selected"]},Sv,a);return{...a,...s}})(r),b=Vm(g,n);let x;return r.disabled||(x=void 0!==d?d:-1),(0,O.jsx)(Zg.Provider,{value:f,children:(0,O.jsx)(Cv,{ref:b,role:u,tabIndex:x,component:o,focusVisibleClassName:Hh(v.focusVisible,c),className:Hh(v.root,p),...h,ownerState:y,classes:v})})}),Ev=Pv,Tv=bm("div",{name:"MuiListItemIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"flex-start"===n.alignItems&&t.alignItemsFlexStart]}})(wm(({theme:e})=>({minWidth:56,color:(e.vars||e).palette.action.active,flexShrink:0,display:"inline-flex",variants:[{props:{alignItems:"flex-start"},style:{marginTop:8}}]}))),Av=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiListItemIcon"}),{className:i,...o}=r,a=e.useContext(Zg),s={...r,alignItems:a.alignItems},l=(e=>{const{alignItems:t,classes:n}=e;return Gh({root:["root","flex-start"===t&&"alignItemsFlexStart"]},xv,n)})(s);return(0,O.jsx)(Tv,{className:Hh(l.root,i),ownerState:s,ref:n,...o})});function Ov(e){return Ig("MuiTypography",e)}const jv=wg("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const Lv={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},Rv=function(e){const{sx:t,...n}=e,{systemProps:r,otherProps:i}=(e=>{const t={systemProps:{},otherProps:{}},n=e?.theme?.unstable_sxConfig??vu;return Object.keys(e).forEach(r=>{n[r]?t.systemProps[r]=e[r]:t.otherProps[r]=e[r]}),t})(n);let o;return o=Array.isArray(t)?[r,...t]:"function"==typeof t?(...e)=>{const n=t(...e);return pc(n)?{...r,...n}:r}:{...r,...t},{...i,sx:o}},Dv=bm("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],"inherit"!==n.align&&t[`align${Cm(n.align)}`],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})(wm(({theme:e})=>({margin:0,variants:[{props:{variant:"inherit"},style:{font:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},...Object.entries(e.typography).filter(([e,t])=>"inherit"!==e&&t&&"object"==typeof t).map(([e,t])=>({props:{variant:e},style:t})),...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),...Object.entries(e.palette?.text||{}).filter(([,e])=>"string"==typeof e).map(([t])=>({props:{color:`text${Cm(t)}`},style:{color:(e.vars||e).palette.text[t]}})),{props:({ownerState:e})=>"inherit"!==e.align,style:{textAlign:"var(--Typography-textAlign)"}},{props:({ownerState:e})=>e.noWrap,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},{props:({ownerState:e})=>e.gutterBottom,style:{marginBottom:"0.35em"}},{props:({ownerState:e})=>e.paragraph,style:{marginBottom:16}}]}))),$v={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},zv=e.forwardRef(function(e,t){const{color:n,...r}=Mm({props:e,name:"MuiTypography"}),i=Rv({...r,...!Lv[n]&&{color:n}}),{align:o="inherit",className:a,component:s,gutterBottom:l=!1,noWrap:c=!1,paragraph:u=!1,variant:d="body1",variantMapping:p=$v,...h}=i,m={...i,align:o,color:n,className:a,component:s,gutterBottom:l,noWrap:c,paragraph:u,variant:d,variantMapping:p},f=s||(u?"p":p[d]||$v[d])||"span",g=(e=>{const{align:t,gutterBottom:n,noWrap:r,paragraph:i,variant:o,classes:a}=e;return Gh({root:["root",o,"inherit"!==e.align&&`align${Cm(t)}`,n&&"gutterBottom",r&&"noWrap",i&&"paragraph"]},Ov,a)})(m);return(0,O.jsx)(Dv,{as:f,ref:t,className:Hh(g.root,a),...h,ownerState:m,style:{..."inherit"!==o&&{"--Typography-textAlign":o},...h.style}})}),Nv=zv,_v=bm("div",{name:"MuiListItemText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${kv.primary}`]:t.primary},{[`& .${kv.secondary}`]:t.secondary},t.root,n.inset&&t.inset,n.primary&&n.secondary&&t.multiline,n.dense&&t.dense]}})({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4,[`.${jv.root}:where(& .${kv.primary})`]:{display:"block"},[`.${jv.root}:where(& .${kv.secondary})`]:{display:"block"},variants:[{props:({ownerState:e})=>e.primary&&e.secondary,style:{marginTop:6,marginBottom:6}},{props:({ownerState:e})=>e.inset,style:{paddingLeft:56}}]}),Fv=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiListItemText"}),{children:i,className:o,disableTypography:a=!1,inset:s=!1,primary:l,primaryTypographyProps:c,secondary:u,secondaryTypographyProps:d,slots:p={},slotProps:h={},...m}=r,{dense:f}=e.useContext(Zg);let g=null!=l?l:i,y=u;const v={...r,disableTypography:a,inset:s,primary:!!g,secondary:!!y,dense:f},b=(e=>{const{classes:t,inset:n,primary:r,secondary:i,dense:o}=e;return Gh({root:["root",n&&"inset",o&&"dense",r&&i&&"multiline"],primary:["primary"],secondary:["secondary"]},wv,t)})(v),x={slots:p,slotProps:{primary:c,secondary:d,...h}},[I,w]=Ng("root",{className:Hh(b.root,o),elementType:_v,externalForwardedProps:{...x,...m},ownerState:v,ref:n}),[k,S]=Ng("primary",{className:b.primary,elementType:Nv,externalForwardedProps:x,ownerState:v}),[M,C]=Ng("secondary",{className:b.secondary,elementType:Nv,externalForwardedProps:x,ownerState:v});return null==g||g.type===Nv||a||(g=(0,O.jsx)(k,{variant:f?"body2":"body1",component:S?.variant?void 0:"span",...S,children:g})),null==y||y.type===Nv||a||(y=(0,O.jsx)(M,{variant:"body2",color:"textSecondary",...C,children:y})),(0,O.jsxs)(I,{...w,children:[g,y]})}),Hv=["inert","iconStart","iconEnd","children"],Bv=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function Vv(e){const t=[],n=[];return Array.from(e.querySelectorAll(Bv)).forEach((e,r)=>{const i=function(e){const t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}(e);-1!==i&&function(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;const t=t=>e.ownerDocument.querySelector(`input[type="radio"]${t}`);let n=t(`[name="${e.name}"]:checked`);return n||(n=t(`[name="${e.name}"]`)),n!==e}(e))}(e)&&(0===i?t.push(e):n.push({documentOrder:r,tabIndex:i,node:e}))}),n.sort((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex).map(e=>e.node).concat(t)}function Uv(){return!0}const Yv=function(t){const{children:n,disableAutoFocus:r=!1,disableEnforceFocus:i=!1,disableRestoreFocus:o=!1,getTabbable:a=Vv,isEnabled:s=Uv,open:l}=t,c=e.useRef(!1),u=e.useRef(null),d=e.useRef(null),p=e.useRef(null),h=e.useRef(null),m=e.useRef(!1),f=e.useRef(null),g=Bm(Jh(n),f),y=e.useRef(null);e.useEffect(()=>{l&&f.current&&(m.current=!r)},[r,l]),e.useEffect(()=>{if(!l||!f.current)return;const e=Xm(f.current);return f.current.contains(e.activeElement)||(f.current.hasAttribute("tabIndex")||f.current.setAttribute("tabIndex","-1"),m.current&&f.current.focus()),()=>{o||(p.current&&p.current.focus&&(c.current=!0,p.current.focus()),p.current=null)}},[l]),e.useEffect(()=>{if(!l||!f.current)return;const e=Xm(f.current),t=t=>{y.current=t,!i&&s()&&"Tab"===t.key&&e.activeElement===f.current&&t.shiftKey&&(c.current=!0,d.current&&d.current.focus())},n=()=>{const t=f.current;if(null===t)return;if(!e.hasFocus()||!s()||c.current)return void(c.current=!1);if(t.contains(e.activeElement))return;if(i&&e.activeElement!==u.current&&e.activeElement!==d.current)return;if(e.activeElement!==h.current)h.current=null;else if(null!==h.current)return;if(!m.current)return;let n=[];if(e.activeElement!==u.current&&e.activeElement!==d.current||(n=a(f.current)),n.length>0){const e=Boolean(y.current?.shiftKey&&"Tab"===y.current?.key),t=n[0],r=n[n.length-1];"string"!=typeof t&&"string"!=typeof r&&(e?r.focus():t.focus())}else t.focus()};e.addEventListener("focusin",n),e.addEventListener("keydown",t,!0);const r=setInterval(()=>{e.activeElement&&"BODY"===e.activeElement.tagName&&n()},50);return()=>{clearInterval(r),e.removeEventListener("focusin",n),e.removeEventListener("keydown",t,!0)}},[r,i,o,s,l,a]);const v=e=>{null===p.current&&(p.current=e.relatedTarget),m.current=!0};return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("div",{tabIndex:l?0:-1,onFocus:v,ref:u,"data-testid":"sentinelStart"}),e.cloneElement(n,{ref:g,onFocus:e=>{null===p.current&&(p.current=e.relatedTarget),m.current=!0,h.current=e.target;const t=n.props.onFocus;t&&t(e)}}),(0,O.jsx)("div",{tabIndex:l?0:-1,onFocus:v,ref:d,"data-testid":"sentinelEnd"})]})};function Wv(e){return e.substring(2).toLowerCase()}function Gv(t){const{children:n,disableReactTree:r=!1,mouseEvent:i="onClick",onClickAway:o,touchEvent:a="onTouchEnd"}=t,s=e.useRef(!1),l=e.useRef(null),c=e.useRef(!1),u=e.useRef(!1);e.useEffect(()=>(setTimeout(()=>{c.current=!0},0),()=>{c.current=!1}),[]);const d=Bm(Jh(n),l),p=Ag(e=>{const t=u.current;u.current=!1;const n=Xm(l.current);if(!c.current||!l.current||"clientX"in e&&function(e,t){return t.documentElement.clientWidtht=>{u.current=!0;const r=n.props[e];r&&r(t)},m={ref:d};return!1!==a&&(m[a]=h(a)),e.useEffect(()=>{if(!1!==a){const e=Wv(a),t=Xm(l.current),n=()=>{s.current=!0};return t.addEventListener(e,p),t.addEventListener("touchmove",n),()=>{t.removeEventListener(e,p),t.removeEventListener("touchmove",n)}}},[p,a]),!1!==i&&(m[i]=h(i)),e.useEffect(()=>{if(!1!==i){const e=Wv(i),t=Xm(l.current);return t.addEventListener(e,p),()=>{t.removeEventListener(e,p)}}},[p,i]),e.cloneElement(n,m)}function Kv(e){return Ig("MuiPaper",e)}wg("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 qv=bm("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t[`elevation${n.elevation}`]]}})(wm(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow"),variants:[{props:({ownerState:e})=>!e.square,style:{borderRadius:e.shape.borderRadius}},{props:{variant:"outlined"},style:{border:`1px solid ${(e.vars||e).palette.divider}`}},{props:{variant:"elevation"},style:{boxShadow:"var(--Paper-shadow)",backgroundImage:"var(--Paper-overlay)"}}]}))),Xv=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiPaper"}),r=xm(),{className:i,component:o="div",elevation:a=1,square:s=!1,variant:l="elevation",...c}=n,u={...n,component:o,elevation:a,square:s,variant:l},d=(e=>{const{square:t,elevation:n,variant:r,classes:i}=e;return Gh({root:["root",r,!t&&"rounded","elevation"===r&&`elevation${n}`]},Kv,i)})(u);return(0,O.jsx)(qv,{as:o,ownerState:u,className:Hh(d.root,i),ref:t,...c,style:{..."elevation"===l&&{"--Paper-shadow":(r.vars||r).shadows[a],...r.vars&&{"--Paper-overlay":r.vars.overlays?.[a]},...!r.vars&&"dark"===r.palette.mode&&{"--Paper-overlay":`linear-gradient(${op("#fff",yh(a))}, ${op("#fff",yh(a))})`}},...c.style}})}),Zv=Xv,Jv=["ref","open","children","className","clickAwayTouchEvent","clickAwayMouseEvent","flip","focusTrap","onExited","onClickAway","onDidShow","onDidHide","id","target","transition","placement"];function Qv(e,t){return function(e,t){return void 0===e.focusTrap?t:(0,O.jsx)(Yv,{open:!0,disableEnforceFocus:!0,disableAutoFocus:!0,children:(0,O.jsx)("div",{tabIndex:-1,children:t})})}(e,function(e,t){return void 0===e.onClickAway?t:(0,O.jsx)(Gv,{onClickAway:e.onClickAway,touchEvent:e.clickAwayTouchEvent,mouseEvent:e.clickAwayMouseEvent,children:t})}(e,t))}const eb={"bottom-start":"top left","bottom-end":"top right"};function tb(e){return Ig("MuiSvgIcon",e)}wg("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);const nb=bm("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t[`color${Cm(n.color)}`],t[`fontSize${Cm(n.fontSize)}`]]}})(wm(({theme:e})=>({userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:e.transitions?.create?.("fill",{duration:(e.vars??e).transitions?.duration?.shorter}),variants:[{props:e=>!e.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:e.typography?.pxToRem?.(20)||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:e.typography?.pxToRem?.(24)||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:e.typography?.pxToRem?.(35)||"2.1875rem"}},...Object.entries((e.vars??e).palette).filter(([,e])=>e&&e.main).map(([t])=>({props:{color:t},style:{color:(e.vars??e).palette?.[t]?.main}})),{props:{color:"action"},style:{color:(e.vars??e).palette?.action?.active}},{props:{color:"disabled"},style:{color:(e.vars??e).palette?.action?.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}))),rb=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiSvgIcon"}),{children:i,className:o,color:a="inherit",component:s="svg",fontSize:l="medium",htmlColor:c,inheritViewBox:u=!1,titleAccess:d,viewBox:p="0 0 24 24",...h}=r,m=e.isValidElement(i)&&"svg"===i.type,f={...r,color:a,component:s,fontSize:l,instanceFontSize:t.fontSize,inheritViewBox:u,viewBox:p,hasSvgAsChild:m},g={};u||(g.viewBox=p);const y=(e=>{const{color:t,fontSize:n,classes:r}=e;return Gh({root:["root","inherit"!==t&&`color${Cm(t)}`,`fontSize${Cm(n)}`]},tb,r)})(f);return(0,O.jsxs)(nb,{as:s,className:Hh(y.root,o),focusable:"false",color:c,"aria-hidden":!d||void 0,role:d?"img":void 0,ref:n,...g,...h,...m&&i.props,ownerState:f,children:[m?i.props.children:i,d?(0,O.jsx)("title",{children:d}):null]})});rb.muiName="SvgIcon";const ib=rb;function ob(t,n){function r(e,r){return(0,O.jsx)(ib,{"data-testid":`${n}Icon`,ref:r,...e,children:t})}return r.muiName=ib.muiName,e.memo(e.forwardRef(r))}const ab=ob,sb=ab((0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"}),(0,O.jsx)("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"})]}),"ZoomIn"),lb=ab((0,O.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z"}),"ZoomOut"),cb=ab((0,O.jsx)("path",{d:"M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z"}),"Export"),ub={baseTooltip:qg,basePopper:function(t){const{open:n,children:r,className:i,flip:o,onExited:a,onDidShow:s,onDidHide:c,id:u,target:d,transition:p,placement:h}=t,m=tt(t,Jv),f=e.useMemo(()=>{const e=[{name:"preventOverflow",options:{padding:8}}];return o&&e.push({name:"flip",enabled:!0,options:{rootBoundary:"document"}}),(s||c)&&e.push({name:"isPlaced",enabled:!0,phase:"main",fn:()=>{s?.()},effect:()=>()=>{c?.()}}),e},[o,s,c]);let g;if(p){const e=e=>t=>{e&&e(),a&&a(t)};g=n=>Qv(t,(0,O.jsx)(Km,l({},n.TransitionProps,{style:{transformOrigin:eb[n.placement]},onExited:e(n.TransitionProps?.onExited),children:(0,O.jsx)(Zv,{children:r})})))}else g=Qv(t,r);return(0,O.jsx)(Tg,l({id:u,className:i,open:n,anchorEl:d,transition:p,placement:h,modifiers:f},m,{children:g}))},baseMenuList:dy,baseMenuItem:function(e){const{inert:t,iconStart:n,iconEnd:r,children:i}=e,o=tt(e,Hv);return(0,O.jsxs)(Ev,l({},o,{disableRipple:!!t||o.disableRipple,children:[n&&(0,O.jsx)(Av,{children:n},"1"),(0,O.jsx)(Fv,{children:i},"2"),r&&(0,O.jsx)(Av,{children:r},"3")]}))},baseDivider:yy},db=l({},bv,ub,{zoomInIcon:sb,zoomOutIcon:lb,exportIcon:cb}),pb=e=>e.brush,hb=(ae(pb,e=>e?.start),ae(pb,e=>e?.current),ae(pb,e=>e?.start?.x??null)),mb=ae(pb,e=>e?.start?.y??null),fb=ae(pb,e=>e?.current?.x??null),gb=ae(pb,e=>e?.current?.y??null),yb=le(hb,mb,fb,gb,(e,t,n,r)=>null===e||null===t||null===n||null===r?null:{start:{x:e,y:t},current:{x:n,y:r}}),vb=ae(ft,e=>{let t=!1,n=!1;return e&&Object.entries(e).forEach(([e,r])=>{Object.values(r.series).some(e=>"horizontal"===e.layout)&&(t=!0),"scatter"===e&&r.seriesOrder.length>0&&(n=!0)}),n?"xy":t?"y":"x"}),bb=ae(qa,function(e){let t=!1,n=!1;return Object.values(e).forEach(e=>{"y"===e.axisDirection&&(n=!0),"x"===e.axisDirection&&(t=!0)}),t&&n?"xy":n?"y":t?"x":null}),xb=ae(vb,bb,(e,t)=>t??e),Ib=ae(pb,e=>e?.enabled||e?.isZoomBrushEnabled),wb=ae(Ib,pb,(e,t)=>e&&null!==t?.start&&null!==t?.current),kb=ae(pb,wb,(e,t)=>t&&e?.preventHighlight),Sb=ae(pb,wb,(e,t)=>t&&e?.preventTooltip),Mb=({store:t,svgRef:n,instance:r,params:i})=>{const o=t.use(Ib);V(()=>{t.set("brush",l({},t.state.brush,{enabled:i.brushConfig.enabled,preventTooltip:i.brushConfig.preventTooltip,preventHighlight:i.brushConfig.preventHighlight}))},[t,i.brushConfig.enabled,i.brushConfig.preventTooltip,i.brushConfig.preventHighlight]);const a=ke(function(e){t.set("brush",l({},t.state.brush,{start:t.state.brush.start??e,current:e}))}),s=ke(function(){t.set("brush",l({},t.state.brush,{start:null,current:null}))}),c=ke(function(e){t.state.brush.isZoomBrushEnabled!==e&&t.set("brush",l({},t.state.brush,{isZoomBrushEnabled:e}))});return e.useEffect(()=>{const e=n.current;if(null===e||!o)return()=>{};const t=r.addInteractionListener("brushStart",t=>{if(t.detail.target?.closest("[data-charts-zoom-slider]"))return;const n=xs(e,{clientX:t.detail.initialCentroid.x,clientY:t.detail.initialCentroid.y});a(n)}),i=r.addInteractionListener("brush",t=>{const n=xs(e,{clientX:t.detail.centroid.x,clientY:t.detail.centroid.y});a(n)}),l=r.addInteractionListener("brushCancel",s),c=r.addInteractionListener("brushEnd",s);return()=>{t.cleanup(),i.cleanup(),c.cleanup(),l.cleanup()}},[n,r,t,s,a,o]),{instance:{setBrushCoordinates:a,clearBrush:s,setZoomBrushEnabled:c}}};function Cb(e,t,n){const r="rotation"===n?"DEFAULT_ROTATION_AXIS_KEY":"DEFAULT_RADIUS_AXIS_KEY";return(e&&e.length>0?e:[{id:r}]).map((e,r)=>{const i=`defaultized-${n}-axis-${r}`,o=e.dataKey;if(void 0===o||void 0!==e.data)return l({id:i},e);if(void 0===t)throw new Error(`MUI X Charts: ${n}-axis uses \`dataKey\` but no \`dataset\` is provided.`);return l({id:i,data:t.map(e=>e[o])},e)})}function Pb(e){return pa.getTypes().has(e)}Mb.params={brushConfig:!0},Mb.getDefaultizedParams=({params:e})=>l({},e,{brushConfig:{enabled:e?.brushConfig?.enabled??!1,preventTooltip:e?.brushConfig?.preventTooltip??!0,preventHighlight:e?.brushConfig?.preventHighlight??!0}}),Mb.getInitialState=e=>({brush:{enabled:e.brushConfig.enabled,isZoomBrushEnabled:!1,preventTooltip:e.brushConfig.preventTooltip,preventHighlight:e.brushConfig.preventHighlight,start:null,current:null}});function Eb({drawingArea:e,formattedSeries:t,axis:n,seriesConfig:r,axisDirection:i}){if(void 0===n)return{axis:{},axisIds:[]};const o=((e,t,n,r)=>{const i=new Set;return Object.keys(t).filter(Pb).forEach(o=>{const a=n[o]?.series??{},s=t[o].axisTooltipGetter?.(a);void 0!==s&&s.forEach(({axisId:t,direction:n})=>{n===e&&i.add(t??r)})}),i})(i,r,t,n[0].id),a={};return n.forEach((n,s)=>{const c=n,u=function(e,t,n){if("rotation"===t){if("point"===n.scaleType){const e=[Ql(n.startAngle,0),Ql(n.endAngle,2*Math.PI)],t=e[1]-e[0];return t>2*Math.PI-.1&&(e[1]-=t/n.data.length),e}return[Ql(n.startAngle,0),Ql(n.endAngle,2*Math.PI)]}return[0,Math.min(e.height,e.width)/2]}(e,i,c),[d,p]=((e,t,n,r,i)=>{const o=Object.keys(n).filter(Pb).reduce((o,a)=>((e,t,n,r,i,o,a)=>{const s="rotation"===r?i[t].rotationExtremumGetter:i[t].radiusExtremumGetter,l=a[t]?.series??{},[c,u]=s?.({series:l,axis:n,axisIndex:o,isDefaultAxis:0===o})??[1/0,-1/0],[d,p]=e;return[Math.min(c,d),Math.max(u,p)]})(o,a,e,t,n,r,i),[1/0,-1/0]);return Number.isNaN(o[0])||Number.isNaN(o[1])?[1/0,-1/0]:o})(c,i,r,s,t),h=!c.ignoreTooltip&&o.has(c.id),m=c.data??[];if(Et(c)){const e=c.categoryGapRatio??.2,t=c.barGapRatio??.1;if(a[c.id]=l({offset:0,categoryGapRatio:e,barGapRatio:t,triggerTooltip:h},c,{data:m,scale:Sa(c.data,u).paddingInner(e).paddingOuter(e/2),tickNumber:c.data.length,colorScale:c.colorMap&&("ordinal"===c.colorMap.type?wr(l({values:c.data},c.colorMap)):kr(c.colorMap))}),sa(c.data)){const e=la(c.data,u,c.tickNumber);a[c.id].valueFormatter=c.valueFormatter??e}}if(Tt(c)&&(a[c.id]=l({offset:0,triggerTooltip:h},c,{data:m,scale:Ma(c.data,u),tickNumber:c.data.length,colorScale:c.colorMap&&("ordinal"===c.colorMap.type?wr(l({values:c.data},c.colorMap)):kr(c.colorMap))}),sa(c.data))){const e=la(c.data,u,c.tickNumber);a[c.id].valueFormatter=c.valueFormatter??e}if("point"===(f=c).scaleType||"band"===f.scaleType)return;var f;const g=c.scaleType??"linear",y=c.domainLimit??"nice",v=[c.min??d,c.max??p];if("function"==typeof y){const{min:e,max:t}=y(d,p);v[0]=e,v[1]=t}const b=Sr(c,v,Cr(Math.abs(u[1]-u[0]))),x=Mr(b,u),I=aa(g,v,u),w="nice"===y?I.nice(b):I,[k,S]=w.domain(),M=[c.min??k,c.max??S];a[c.id]=l({offset:0,triggerTooltip:h},c,{data:m,scaleType:g,scale:w.domain(M),tickNumber:x,colorScale:c.colorMap&&kr(c.colorMap)})}),{axis:a,axisIds:n.map(({id:e})=>e)}}const Tb=e=>e.polarAxis,Ab=ae(Tb,e=>e?.rotation),Ob=ae(Tb,e=>e?.radius),jb=le(Ab,he,ft,ht,(e,t,n,r)=>Eb({drawingArea:t,formattedSeries:n,axis:e,seriesConfig:r,axisDirection:"rotation"})),Lb=le(Ob,he,ft,ht,(e,t,n,r)=>Eb({drawingArea:t,formattedSeries:n,axis:e,seriesConfig:r,axisDirection:"radius"})),Rb=le(he,function(e){return{cx:e.left+e.width/2,cy:e.top+e.height/2}}),Db=e=>(t,n)=>Math.atan2(t-e.cx,e.cy-n);function $b(e){return(e%360+360)%360}const zb=2*Math.PI;function Nb(e,t){const{scale:n,data:r,reverse:i}=e;if(!fa(n))throw new Error("MUI X Charts: getAxisValue is not implemented for polare continuous axes.");if(!r)return-1;const o=((t-Math.min(...n.range()))%zb+zb)%zb,a=0===n.bandwidth()?Math.floor((o+n.step()/2)/n.step())%r.length:Math.floor(o/n.step());return a<0||a>=r.length?-1:i?r.length-1-a:a}const _b=({params:t,store:n,seriesConfig:r,svgRef:i,instance:o})=>{const{rotationAxis:a,radiusAxis:s,dataset:c}=t,u=n.use(he),d=n.use(ft),p=n.use(Rb),h=n.use(ws),{axis:m,axisIds:f}=n.use(jb),{axis:g,axisIds:y}=n.use(Lb),v=e.useRef(!0);e.useEffect(()=>{v.current?v.current=!1:n.set("polarAxis",l({},n.state.polarAxis,{rotation:Cb(a,c,"rotation"),radius:Cb(s,c,"radius")}))},[r,u,a,s,c,n]);const b=e.useMemo(()=>Db({cx:p.cx,cy:p.cy}),[p.cx,p.cy]),x=e.useMemo(()=>(e=>(t,n)=>{const r=Math.atan2(t-e.cx,e.cy-n);return[Math.sqrt((t-e.cx)**2+(e.cy-n)**2),r]})({cx:p.cx,cy:p.cy}),[p.cx,p.cy]),I=e.useMemo(()=>(e=>(t,n)=>[e.cx+t*Math.sin(n),e.cy-t*Math.cos(n)])({cx:p.cx,cy:p.cy}),[p.cx,p.cy]),w=f[0],k=y[0],S=e.useRef({isInChart:!1}),M=Fs(o);return e.useEffect(()=>{const e=i.current;if(!h||!M||null===e||t.disableAxisListener)return()=>{};const n=o.addInteractionListener("moveEnd",e=>{e.detail.activeGestures.pan||(S.current.isInChart=!1,o.cleanInteraction())}),r=o.addInteractionListener("panEnd",e=>{e.detail.activeGestures.move||(S.current.isInChart=!1,o.cleanInteraction?.())}),a=o.addInteractionListener("quickPressEnd",e=>{e.detail.activeGestures.move||e.detail.activeGestures.pan||(S.current.isInChart=!1,o.cleanInteraction?.())}),s=t=>{const n=t.detail.srcEvent;if("touch"===t.detail.srcEvent.pointerType){const t=e.getBoundingClientRect();if(n.clientXt.right||n.clientYt.bottom)return S.current.isInChart=!1,void o.cleanInteraction?.();const r=xs(e,n);return S.current.isInChart=!0,void o.setPointerCoordinate?.(r)}const r=xs(e,n);o.isPointInside(r.x,r.y,t.detail.target)?(p.cx-r.x)**2+(p.cy-r.y)**2>g[k].scale.range()[1]**2?S.current.isInChart&&(o.cleanInteraction?.(),S.current.isInChart=!1):(S.current.isInChart=!0,o.setPointerCoordinate?.(r)):S.current.isInChart&&(o.cleanInteraction?.(),S.current.isInChart=!1)},l=o.addInteractionListener("move",s),c=o.addInteractionListener("pan",s),u=o.addInteractionListener("quickPress",s);return()=>{l.cleanup(),n.cleanup(),c.cleanup(),r.cleanup(),u.cleanup(),a.cleanup()}},[i,n,p,g,k,m,w,o,t.disableAxisListener,h,b,M]),e.useEffect(()=>{const e=i.current,n=t.onAxisClick;if(null===e||!n)return()=>{};const r=o.addInteractionListener("tap",t=>{let r=null,i=!1;const o=xs(e,t.detail.srcEvent),a=Db(p)(o.x,o.y),s=Nb(m[w],a);if(i=-1!==s,r=i?s:null,null==r||-1===r)return;const l=(i?m:g)[i?w:k].data[r],c={};Object.keys(d).filter(e=>"radar"===e).forEach(e=>{d[e]?.seriesOrder.forEach(t=>{const n=d[e].series[t];c[t]=n.data[r]})}),n(t.detail.srcEvent,{dataIndex:r,axisValue:l,seriesValues:c})});return()=>{r.cleanup()}},[p,o,t.onAxisClick,d,g,m,i,k,w]),{instance:{svg2polar:x,svg2rotation:b,polar2svg:I}}};_b.params={rotationAxis:!0,radiusAxis:!0,dataset:!0,disableAxisListener:!0,onAxisClick:!0},_b.getInitialState=e=>({polarAxis:{rotation:Cb(e.rotationAxis,e.dataset,"rotation"),radius:Cb(e.radiusAxis,e.dataset,"radius")}});const Fb=new Map,Hb=(le(ae(e=>e.visibilityManager,e=>e?.visibilityMap??Fb),e=>(t,n)=>((e,t,n)=>{const r=Ee(n,t);return!e.has(r)})(e,n,t)),(e,t)=>{const n=new Map;return e&&e.forEach(e=>{const r=Ee(t,e);n.set(r,e)}),n}),Bb=({store:e,params:t,seriesConfig:n,instance:r})=>{Y(()=>{void 0!==t.hiddenItems&&e.set("visibilityManager",l({},e.state.visibilityManager,{visibilityMap:Hb(t.hiddenItems,n)}))},[e,t.hiddenItems,n]);const i=ke(n=>{const i=e.state.visibilityManager.visibilityMap,o=r.serializeIdentifier(n);if(i.has(o))return;const a=new Map(i);a.set(o,n),e.set("visibilityManager",l({},e.state.visibilityManager,{visibilityMap:a})),t.onHiddenItemsChange?.(Array.from(a.values()))}),o=ke(n=>{const i=e.state.visibilityManager.visibilityMap,o=r.serializeIdentifier(n);if(!i.has(o))return;const a=new Map(i);a.delete(o),e.set("visibilityManager",l({},e.state.visibilityManager,{visibilityMap:a})),t.onHiddenItemsChange?.(Array.from(a.values()))}),a=ke(t=>{const n=e.state.visibilityManager.visibilityMap,a=r.serializeIdentifier(t);n.has(a)?o(t):i(t)});return{instance:{hideItem:i,showItem:o,toggleItemVisibility:a}}};function Vb(e){return e&&e.ownerDocument||document}function Ub(e,t,n){const r=[],i=t.querySelectorAll("style, link[rel='stylesheet']");for(let t=0;t{a.addEventListener("load",()=>e())}))}n&&a.setAttribute("nonce",n),e.head.appendChild(a),n&&a.setAttribute("nonce",n)}return r}function Yb(e){const t=document.createElement("iframe");return t.style.position="absolute",t.style.width="0px",t.style.height="0px",t.title=e||document.title,t}function Wb(e,t){const n={};return Object.entries(t).forEach(([t,r])=>{const i=e.style.getPropertyValue(t);n[t]=i,e.style.setProperty(t,r)}),n}Bb.getInitialState=(e,t,n)=>({visibilityManager:{visibilityMap:e.hiddenItems?Hb(e.hiddenItems,n):Fb,isControlled:void 0!==e.hiddenItems}}),Bb.params={onHiddenItemsChange:!0,hiddenItems:!0};const Gb=e=>e,Kb=(()=>{let e=Gb;return{configure(t){e=t},generate:t=>e(t),reset(){e=Gb}}})(),qb={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 Xb(e,t,n="Mui"){const r=qb[t];return r?`${n}-${r}`:`${Kb.generate(e)}-${t}`}function Zb(e,t,n="Mui"){const r={};return t.forEach(t=>{r[t]=Xb(e,t,n)}),r}const Jb=Zb("MuiChartsToolbar",["root"]);function Qb(e){const t=e.contentDocument.querySelector(`.${Jb.root}`);t?.remove()}function ex(){let e;const t=new Promise(t=>{e=t});return window.requestAnimationFrame(()=>{e()}),t}const tx=({chartRootRef:e,svgRef:t,instance:n})=>{const r=async t=>{const r=e.current;if(r){const e=n.disableAnimation();try{await ex(),function(e,{fileName:t,onBeforeExport:n=Qb,copyStyles:r=!0,nonce:i}={}){const o=Yb(t),a=Vb(e);o.onload=async()=>{const t=o.contentDocument,s=e.cloneNode(!0);t.body.replaceChildren(s),t.body.style.margin="0px";const l=e.getRootNode(),c="ShadowRoot"===l.constructor.name?l:a;r&&await Promise.all(Ub(t,c,i)),o.contentWindow.matchMedia("print").addEventListener("change",e=>{!1===e.matches&&a.body.removeChild(o)}),await n(o),o.contentWindow.print()},a.body.appendChild(o)}(r,t)}catch(e){console.error("MUI X Charts: Error exporting chart as print:",e)}finally{e()}}},i=async r=>{const i=e.current,o=t.current;if(i&&o){const e=n.disableAnimation();try{await ex(),await async function(e,t,n){const{fileName:r,type:i="image/png",quality:o=.9,onBeforeExport:s=Qb,copyStyles:l=!0,nonce:c}=n??{},u=(async()=>{try{const e=await a.e(235).then(a.t.bind(a,3436,19));return(e.default||e).drawDocument}catch(e){throw new Error("MUI X Charts: Failed to import 'rasterizehtml' module. This dependency is mandatory when exporting a chart as an image. Make sure you have it installed as a dependency.",{cause:e})}})(),d=Vb(e),p=Yb(r),h=Wb(t,{width:`${t.getBoundingClientRect().width}px`});let m;const f=new Promise(e=>{m=e});p.onload=async()=>{const n=p.contentDocument,r=e.cloneNode(!0);Wb(t,h),n.body.replaceChildren(r),n.body.style.margin="0px",n.body.style.width="fit-content";const i=e.getRootNode(),o="ShadowRoot"===i.constructor.name?i:d;l&&await Promise.all(Ub(n,o,c)),m()},d.body.appendChild(p),await f,await s(p);const g=await u,y=p.contentDocument.body.getBoundingClientRect(),v=document.createElement("canvas"),b=window.devicePixelRatio||1;v.width=y.width*b,v.height=y.height*b,v.style.width=`${y.width}px`,v.style.height=`${y.height}px`;try{await g(p.contentDocument,v,{zoom:b,nonce:c})}finally{d.body.removeChild(p)}let x;const I=new Promise(e=>{x=e});let w;try{v.toBlob(e=>x(e),i,o),w=await I}catch(e){throw new Error("MUI X Charts: Failed to create blob from canvas.",{cause:e})}if(!w)throw new Error("MUI X Charts: Failed to create blob from canvas.");const k=URL.createObjectURL(w);!function(e,t){const n=document.createElement("a");n.href=e,n.download=t,n.click()}(k,r||document.title),URL.revokeObjectURL(k)}(i,o,r)}catch(e){console.error("MUI X Charts: Error exporting chart as image:",e)}finally{e()}}};return{publicAPI:{exportAsPrint:r,exportAsImage:i},instance:{exportAsPrint:r,exportAsImage:i}}};function nx(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)){const n=e.length;if(n!==t.length)return!1;for(let r=0;r{n=null,e(...t)};function i(...e){t=e,n||(n=requestAnimationFrame(r))}return i.clear=()=>{n&&(cancelAnimationFrame(n),n=null)},i}tx.params={},tx.getDefaultizedParams=({params:e})=>l({},e),tx.getInitialState=()=>({export:{}});const ix=(e,t,n,r)=>{const i=r.minStart,o=r.maxEnd,a=r.minSpan,s=n.start,l=n.end,c=s+e*(l-s);let u=(s+c*(t-1))/t,d=(l+c*(t-1))/t,p=0,h=0;return uo&&(h=Math.abs(d-o),d=o),p>0&&h>0?[i,o]:(d+=p,u-=h,u=Math.min(o-a,Math.max(i,u)),d=Math.max(a,Math.min(o,d)),[u,d])};function ox(e,t,n,r){const i=t-e;return!(i<0||n&&ir.maxSpan||er.maxEnd)}function ax(e,t,n){const{left:r,width:i}=t,o=(e.x-r)/i;return n?1-o:o}function sx(e,t,n){const{top:r,height:i}=t,o=(r-e.y)/i+1;return n?1-o:o}function lx(e,t,n,r,i="xy"){return e.map(e=>{const o=r[e.axisId];if(!o||!o.panning||"x"===o.axisDirection&&"y"===i||"y"===o.axisDirection&&"x"===i)return e;const a=e.start,s=e.end,c=s-a,u=o.minStart,d=o.maxEnd,p="x"===o.axisDirection?t.x:t.y,h=o.reverse?-p:p,m="x"===o.axisDirection?n.width:n.height;let f=a-h/m*c,g=s-h/m*c;return fd&&(g=d,f=g-c),fd||co.maxSpan?e:l({},e,{start:f,end:g})})}ne({memoize:J,memoizeOptions:{maxSize:1,equalityCheck:Object.is}});const cx=(e,t,n,r,i,o,a,s,...l)=>{if(l.length>0)throw new Error("Unsupported number of selectors");let c;if(e&&t&&n&&r&&i&&o&&a&&s)c=(l,c,u,d)=>{const p=e(l,c,u,d),h=t(l,c,u,d),m=n(l,c,u,d),f=r(l,c,u,d),g=i(l,c,u,d),y=o(l,c,u,d),v=a(l,c,u,d);return s(p,h,m,f,g,y,v,c,u,d)};else if(e&&t&&n&&r&&i&&o&&a)c=(s,l,c,u)=>{const d=e(s,l,c,u),p=t(s,l,c,u),h=n(s,l,c,u),m=r(s,l,c,u),f=i(s,l,c,u),g=o(s,l,c,u);return a(d,p,h,m,f,g,l,c,u)};else if(e&&t&&n&&r&&i&&o)c=(a,s,l,c)=>{const u=e(a,s,l,c),d=t(a,s,l,c),p=n(a,s,l,c),h=r(a,s,l,c),m=i(a,s,l,c);return o(u,d,p,h,m,s,l,c)};else if(e&&t&&n&&r&&i)c=(o,a,s,l)=>{const c=e(o,a,s,l),u=t(o,a,s,l),d=n(o,a,s,l),p=r(o,a,s,l);return i(c,u,d,p,a,s,l)};else if(e&&t&&n&&r)c=(i,o,a,s)=>{const l=e(i,o,a,s),c=t(i,o,a,s),u=n(i,o,a,s);return r(l,c,u,o,a,s)};else if(e&&t&&n)c=(r,i,o,a)=>{const s=e(r,i,o,a),l=t(r,i,o,a);return n(s,l,i,o,a)};else if(e&&t)c=(n,r,i,o)=>{const a=e(n,r,i,o);return t(a,r,i,o)};else{if(!e)throw new Error("Missing arguments");c=e}return c},ux=e=>e.zoom,dx=(cx(ux,e=>e.isInteracting),cx(qa,e=>Object.keys(e).length>0)),px=cx(Ga,(e,t)=>e?.get(t)),hx=cx(ux,qa,(e,t)=>e.zoomData.every(e=>{const n=e.end-e.start,r=t[e.axisId];return e.start===r.minStart&&e.end===r.maxEnd||n===r.maxSpan})),mx=cx(ux,qa,(e,t)=>e.zoomData.every(e=>e.end-e.start===t[e.axisId].minSpan)),fx=cx(ux,(e,t)=>e.zoomInteractionConfig.zoom[t]??null),gx=cx(ux,(e,t)=>e.zoomInteractionConfig.pan[t]??null),yx=(cx(qa,e=>fx(e,"brush"),(e,t)=>Object.keys(e).length>0&&t||!1),({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=e.useRef(!1),l=e.useRef(null),c=t.use(fx,"wheel"),u=Object.keys(a).length>0&&Boolean(c);e.useEffect(()=>{u&&n.updateZoomInteractionListeners("zoomTurnWheel",{requiredKeys:c.requiredKeys})},[c,u,n]),e.useEffect(()=>{const e=r.current;if(null===e||!u)return()=>{};const t=rx(i),c=n.addInteractionListener("zoomTurnWheel",r=>{const i=xs(e,{clientX:r.detail.centroid.x,clientY:r.detail.centroid.y});if(s.current||!n.isPointInside(i.x,i.y))return s.current=!0,l.current&&clearTimeout(l.current),void(l.current=setTimeout(()=>{s.current=!1,l.current=null},100));r.detail.srcEvent.preventDefault(),t(e=>e.map(e=>{const t=a[e.axisId];if(!t)return e;const n="x"===t.axisDirection?ax(i,o,t.reverse):sx(i,o,t.reverse),{scaleRatio:s,isZoomIn:l}=function(e,t){const n=-e.deltaY,r=function(e){const t=e.ctrlKey?3:1;return 1===e.deltaMode?1*t:e.deltaMode?10*t:.2*t}(e),i=t*r*n/1e3;return{scaleRatio:Math.min(Math.max(1+i,.1),1.9),isZoomIn:n>0}}(r.detail.srcEvent,t.step),[c,u]=ix(n,s,e,t);return ox(c,u,l,t)?{axisId:e.axisId,start:c,end:u}:e}))});return()=>{c.cleanup(),l.current&&(clearTimeout(l.current),l.current=null),s.current=!1,t.clear()}},[r,o,u,a,n,i,t])}),vx=(e,t)=>{const n={zoom:{},pan:{}};if(n.zoom=e?.zoom?bx("zoom",e.zoom):{wheel:{type:"wheel",requiredKeys:[],mouse:{},touch:{}},pinch:{type:"pinch",requiredKeys:[],mouse:{},touch:{}}},e?.pan)n.pan=bx("pan",e.pan);else{n.pan={drag:{type:"drag",requiredKeys:[],mouse:{},touch:{}}};let e=!1,r=!1;t&&Object.values(t).forEach(t=>{"x"===t.axisDirection&&(e=!0),"y"===t.axisDirection&&(r=!0)}),e&&!r&&(n.pan.wheel={type:"wheel",requiredKeys:[],allowedDirection:"x",mouse:{},touch:{}})}return n};function bx(e,t){const n=t.reduce((e,t)=>{if("string"==typeof t)return e[t]||(e[t]=[]),e[t].push({type:t,requiredKeys:[]}),e;const n=t.type;return e[n]||(e[n]=[]),e[n].push({type:n,pointerMode:t.pointerMode,requiredKeys:t.requiredKeys,allowedDirection:t.allowedDirection}),e},{}),r={};for(const[t,i]of Object.entries(n)){const n=i.findLast(e=>!e.pointerMode),o=i.findLast(e=>"mouse"===e.pointerMode),a=i.findLast(e=>"touch"===e.pointerMode);r[t]={type:t,pointerMode:n?[]:Array.from(new Set(i.filter(e=>e.pointerMode).map(e=>e.pointerMode))),requiredKeys:n?.requiredKeys??[],mouse:o?{requiredKeys:o?.requiredKeys??[]}:{},touch:a?{requiredKeys:a?.requiredKeys??[]}:{}},"wheel"===t&&"pan"===e&&(r[t].allowedDirection=n?.allowedDirection??"x")}return r}function xx(e,t){const n=new Map;return t?.forEach(t=>{e[t.axisId]&&n.set(t.axisId,t)}),Object.values(e).map(({axisId:e,minStart:t,maxEnd:r})=>n.has(e)?n.get(e):{axisId:e,start:t,end:r})}const Ix=t=>{const{store:n,params:r}=t,{zoomData:i,onZoomChange:o,zoomInteractionConfig:a}=r,s=Og(o??(()=>{})),c=n.use(qa);!function(t,r){const i=e.useRef(!0);e.useEffect(()=>{i.current?i.current=!1:n.set("zoom",l({},n.state.zoom,{zoomInteractionConfig:vx(a,c)}))},r)}(0,[n,a,c]);const u=e.useMemo(()=>function(e,t=166){let n;function r(...r){clearTimeout(n),n=setTimeout(()=>{e.apply(this,r)},t)}return r.clear=()=>{clearTimeout(n)},r}(()=>n.set("zoom",l({},n.state.zoom,{isInteracting:!1})),166),[n]);e.useEffect(()=>{void 0!==i&&(n.set("zoom",l({},n.state.zoom,{isInteracting:!0,zoomData:i})),u())},[n,i,u]);const d=e.useCallback(e=>{const t="function"==typeof e?e([...n.state.zoom.zoomData]):e;nx(n.state.zoom.zoomData,t)||(s(t),n.state.zoom.isControlled?n.set("zoom",l({},n.state.zoom,{isInteracting:!0})):(n.set("zoom",l({},n.state.zoom,{isInteracting:!0,zoomData:t})),u()))},[s,n,u]),p=e.useCallback((e,t)=>{d(n=>n.map(n=>n.axisId!==e?n:"function"==typeof t?t(n):t))},[d]),h=e.useCallback((e,t)=>{d(n=>n.map(n=>{if(n.axisId!==e)return n;const r=c[e];if(!r)return n;let i=n.start,o=n.end;if(t>0){const e=o-i;o=Math.min(o+t,r.maxEnd),i=o-e}else{const e=o-i;i=Math.max(i+t,r.minStart),o=i+e}return l({},n,{start:i,end:o})}))},[c,d]);e.useEffect(()=>()=>{u.clear()},[u]),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=t.use(gx,"drag"),l=Object.values(a).some(e=>e.panning)&&Boolean(s);e.useEffect(()=>{l&&n.updateZoomInteractionListeners("zoomPan",{requiredKeys:s.requiredKeys,pointerMode:s.pointerMode,pointerOptions:{mouse:s.mouse,touch:s.touch}})},[l,s,n]),e.useEffect(()=>{const e=r.current;let t=!1;const s={x:0,y:0};if(null===e||!l)return()=>{};const c=rx(()=>{const e=s.x,t=s.y;s.x=0,s.y=0,i(n=>lx(n,{x:e,y:-t},{width:o.width,height:o.height},a))}),u=n.addInteractionListener("zoomPan",e=>{t&&(s.x+=e.detail.deltaX,s.y+=e.detail.deltaY,c())}),d=n.addInteractionListener("zoomPanStart",e=>{e.detail.target?.closest("[data-charts-zoom-slider]")||(t=!0)}),p=n.addInteractionListener("zoomPanEnd",()=>{t=!1});return()=>{d.cleanup(),u.cleanup(),p.cleanup(),c.clear()}},[n,r,l,a,o.width,o.height,i,t])})(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=e.useRef(!1),l=e.useRef({x:0,y:0}),c=t.use(gx,"pressAndDrag"),u=Object.values(a).some(e=>e.panning)&&Boolean(c);e.useEffect(()=>{u&&n.updateZoomInteractionListeners("zoomPressAndDrag",{requiredKeys:c.requiredKeys,pointerMode:c.pointerMode,pointerOptions:{mouse:c.mouse,touch:c.touch}})},[u,c,n]),e.useEffect(()=>{if(null===r.current||!u)return()=>{};const e=rx(()=>{const e=l.current.x,t=l.current.y;l.current.x=0,l.current.y=0,i(n=>lx(n,{x:e,y:-t},{width:o.width,height:o.height},a))}),t=n.addInteractionListener("zoomPressAndDrag",t=>{s.current&&(l.current.x+=t.detail.deltaX,l.current.y+=t.detail.deltaY,e())}),c=n.addInteractionListener("zoomPressAndDragStart",e=>{e.detail.target?.closest("[data-charts-zoom-slider]")||(s.current=!0,l.current={x:0,y:0})}),d=n.addInteractionListener("zoomPressAndDragEnd",()=>{s.current=!1});return()=>{c.cleanup(),t.cleanup(),d.cleanup(),e.clear()}},[n,r,u,a,o.width,o.height,i,t,s])})(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=e.useRef(!1),l=e.useRef(null),c=t.use(gx,"wheel"),u=Object.keys(a).length>0&&Boolean(c);e.useEffect(()=>{u&&n.updateZoomInteractionListeners("panTurnWheel",{requiredKeys:c.requiredKeys})},[c,u,n]),e.useEffect(()=>{const e=r.current,t={x:0,y:0};if(null===e||!u)return()=>{};const d=rx(i),p=n.addInteractionListener("panTurnWheel",r=>{const i=xs(e,{clientX:r.detail.centroid.x,clientY:r.detail.centroid.y});if(s.current||!n.isPointInside(i.x,i.y))return s.current=!0,l.current&&clearTimeout(l.current),void(l.current=setTimeout(()=>{s.current=!1,l.current=null},100));r.detail.srcEvent.preventDefault();const u=c?.allowedDirection??"x";0===r.detail.deltaX&&0===r.detail.deltaY||(t.x+=r.detail.deltaX,t.y+=r.detail.deltaY,d(e=>{const n=t.x,r=t.y;t.x=0,t.y=0;let i=0,s=0;return"x"!==u&&"xy"!==u||(i=-n),"y"!==u&&"xy"!==u||(s=r),0===i&&0===s?e:lx(e,{x:i,y:s},o,a,u)}))});return()=>{p.cleanup(),l.current&&(clearTimeout(l.current),l.current=null),s.current=!1,d.clear()}},[r,o,u,a,n,i,t,c])})(t,d),yx(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=t.use(fx,"pinch"),l=Object.keys(a).length>0&&Boolean(s);e.useEffect(()=>{l&&n.updateZoomInteractionListeners("zoomPinch",{requiredKeys:s.requiredKeys})},[s,l,n]),e.useEffect(()=>{const e=r.current;if(null===e||!l)return()=>{};const t=rx(t=>{0!==t.detail.direction&&i(n=>n.map(n=>{const r=a[n.axisId];if(!r)return n;const i=t.detail.direction>0,s=1+t.detail.deltaScale,l=xs(e,{clientX:t.detail.centroid.x,clientY:t.detail.centroid.y}),c="x"===r.axisDirection?ax(l,o,r.reverse):sx(l,o,r.reverse),[u,d]=ix(c,s,n,r);return ox(u,d,i,r)?{axisId:n.axisId,start:u,end:d}:n}))}),s=n.addInteractionListener("zoomPinch",t);return()=>{s.cleanup(),t.clear()}},[r,o,l,a,t,n,i])})(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=t.use(fx,"tapAndDrag"),l=Object.keys(a).length>0&&Boolean(s);e.useEffect(()=>{l&&n.updateZoomInteractionListeners("zoomTapAndDrag",{requiredKeys:s.requiredKeys,pointerMode:s.pointerMode,pointerOptions:{mouse:s.mouse,touch:s.touch}})},[s,l,n]),e.useEffect(()=>{const e=r.current;if(null===e||!l)return()=>{};const t=rx(t=>{0!==t.detail.deltaY&&i(n=>n.map(n=>{const r=a[n.axisId];if(!r)return n;const i=t.detail.deltaY>0,s=1+t.detail.deltaY/100,l=xs(e,{clientX:t.detail.initialCentroid.x,clientY:t.detail.initialCentroid.y}),c="x"===r.axisDirection?ax(l,o,r.reverse):sx(l,o,r.reverse),[u,d]=ix(c,s,n,r);return ox(u,d,i,r)?{axisId:n.axisId,start:u,end:d}:n}))}),s=n.addInteractionListener("zoomTapAndDrag",t);return()=>{s.cleanup(),t.clear()}},[r,o,l,a,t,n,i])})(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=t.use(fx,"brush"),l=Object.keys(a).length>0&&Boolean(s);e.useEffect(()=>{n.setZoomBrushEnabled(l)},[l,n]),e.useEffect(()=>{const e=r.current;if(null===e||!l)return()=>{};const t=n.addInteractionListener("brushEnd",t=>{i(n=>{const r=xs(e,{clientX:t.detail.initialCentroid.x,clientY:t.detail.initialCentroid.y}),i=xs(e,{clientX:t.detail.centroid.x,clientY:t.detail.centroid.y}),s=Math.min(r.x,i.x),l=Math.max(r.x,i.x),c=Math.min(r.y,i.y),u=Math.max(r.y,i.y);return n.map(e=>{const t=a[e.axisId];if(!t)return e;let n,r;const i=t.reverse;"x"===t.axisDirection?(n=ax({x:s,y:0},o,i),r=ax({x:l,y:0},o,i)):(n=sx({x:0,y:u},o,i),r=sx({x:0,y:c},o,i));const d=Math.min(n,r),p=Math.max(n,r),h=e.start,m=e.end-h,f=h+d*m,g=h+p*m,y=Math.max(t.minStart,Math.min(t.maxEnd,f)),v=Math.max(t.minStart,Math.min(t.maxEnd,g));return ox(y,v,!0,t)?{axisId:e.axisId,start:y,end:v}:e})})});return()=>{t.cleanup()}},[r,o,l,a,n,i,t])})(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(qa),a=t.use(fx,"doubleTapReset"),s=Object.keys(o).length>0&&Boolean(a);e.useEffect(()=>{s&&n.updateZoomInteractionListeners("zoomDoubleTapReset",{requiredKeys:a.requiredKeys,pointerMode:a.pointerMode,pointerOptions:{mouse:a.mouse,touch:a.touch}})},[a,s,n]),e.useEffect(()=>{if(null===r.current||!s)return()=>{};const e=n.addInteractionListener("zoomDoubleTapReset",()=>{i(e=>e.map(e=>{const t=o[e.axisId];return t?{axisId:e.axisId,start:t.minStart,end:t.maxEnd}:e}))});return()=>{e.cleanup()}},[r,s,o,n,i,t])})(t,d);const m=e.useCallback(e=>{d(t=>t.map(t=>{const r=Xa(n.state,t.axisId);return function(e,t,{minSpan:n,maxSpan:r,minStart:i,maxEnd:o}){const a=e.end-e.start;let s=a*t/2;return s=s>0?Math.min(s,(a-n)/2):Math.max(s,(a-r)/2),l({},e,{start:Math.max(i,e.start+s),end:Math.min(o,e.end-s)})}(t,e,r)}))},[d,n]),f=e.useCallback(()=>m(.1),[m]),g=e.useCallback(()=>m(-.1),[m]);return{publicAPI:{setZoomData:d,setAxisZoomData:p,zoomIn:f,zoomOut:g},instance:{setZoomData:d,setAxisZoomData:p,moveZoomRange:h,zoomIn:f,zoomOut:g}}};Ix.params={initialZoom:!0,onZoomChange:!0,zoomData:!0,zoomInteractionConfig:!0},Ix.getInitialState=e=>{const{initialZoom:t,zoomData:n,defaultizedXAxis:r,defaultizedYAxis:i}=e,o=l({},Ia("x")(r),Ia("y")(i));return{zoom:{zoomData:xx(o,void 0!==n?n:void 0!==t?t:void 0),isInteracting:!1,isControlled:void 0!==n,zoomInteractionConfig:vx(e.zoomInteractionConfig,o)}}};const wx=[Xs,Mb,Ys,Ws,Bs,Zs,Bb,Ix,tx],kx=({params:t,store:n,svgRef:r})=>{const i=ke(function(){null!==n.state.keyboardNavigation.item&&n.set("keyboardNavigation",l({},n.state.keyboardNavigation,{item:null}))});return e.useEffect(()=>{const e=r.current;if(e&&t.enableKeyboardNavigation)return e.addEventListener("keydown",o),e.addEventListener("blur",i),()=>{e.removeEventListener("keydown",o),e.removeEventListener("blur",i)};function o(e){let t=n.state.keyboardNavigation.item,r=t?.type;if(!r&&(r=Object.keys(pt(n.state)).find(e=>void 0!==n.state.series.seriesConfig[e]),void 0===r))return;const i=n.state.series.seriesConfig[r]?.keyboardFocusHandler?.(e);i&&(t=i(t,n.state),t!==n.state.keyboardNavigation.item&&(e.preventDefault(),n.update(l({},n.state.highlight&&{highlight:l({},n.state.highlight,{lastUpdate:"keyboard"})},n.state.interaction&&{interaction:l({},n.state.interaction,{lastUpdate:"keyboard"})},{keyboardNavigation:l({},n.state.keyboardNavigation,{item:t})}))))}},[r,i,t.enableKeyboardNavigation,n]),V(()=>{n.state.keyboardNavigation.enableKeyboardNavigation!==t.enableKeyboardNavigation&&n.set("keyboardNavigation",l({},n.state.keyboardNavigation,{enableKeyboardNavigation:!!t.enableKeyboardNavigation}))},[n,t.enableKeyboardNavigation]),{}};function Sx(e,t,n,r,i,o,a,s,l,c,u=1/0,d=1){const p=n.copy(),h=r.copy();p.range([0,1]),h.range([0,1]);const m=n.range()[1]-n.range()[0],f=r.range()[1]-r.range()[0],g=m*m,y=f*f,v=p(Mx(n,l,e=>t[e]?.x)),b=h(Mx(r,c,e=>t[e]?.y));return e.neighbors(v,b,d,null!=u?u*u:1/0,function(e){const n=p(t[e].x),r=h(t[e].y);return n>=i&&n<=o&&r>=a&&r<=s},function(e,t){return g*e*e+y*t*t})}function Mx(e,t,n){return fa(e)?n(0===e.bandwidth()?Math.floor((t-Math.min(...e.range())+e.step()/2)/e.step()):Math.floor((t-Math.min(...e.range()))/e.step())):e.invert(t)}kx.getInitialState=e=>({keyboardNavigation:{item:null,enableKeyboardNavigation:!!e.enableKeyboardNavigation}}),kx.params={enableKeyboardNavigation:!0};const Cx=({svgRef:t,params:n,store:r,instance:i})=>{const{disableVoronoi:o,voronoiMaxRadius:a,onItemClick:s}=n,{axis:l,axisIds:c}=r.use(ls),{axis:u,axisIds:d}=r.use(cs),p=r.use(Wa),{series:h,seriesOrder:m}=r.use(ft)?.scatter??{},f=r.use(p?fs:gs),g=c[0],y=d[0];return V(()=>{r.set("voronoi",{isVoronoiEnabled:!o})},[r,o]),e.useEffect(()=>{if(null===t.current||o)return;const e=t.current;function n(t){const n=xs(e,t);if(!i.isPointInside(n.x,n.y))return"outside-chart";let o;for(const e of m??[]){const t=(h??{})[e],i=f.get(e);if(!i)continue;const s=t.xAxisId??g,c=t.yAxisId??y,d=Ka(r.state,s),p=Ka(r.state,c),m="item"===a?t.markerSize:a,v=(d?.start??0)/100,b=(d?.end??100)/100,x=(p?.start??0)/100,I=(p?.end??100)/100,w=l[s].scale,k=u[c].scale,S=Sx(i,t.data,w,k,v,b,x,I,n.x,n.y,m)[0];if(void 0===S)continue;const M=t.data[S],C=w(M.x),P=k(M.y),E=(C-n.x)**2+(P-n.y)**2;(void 0===o||E{e.detail.activeGestures.pan||(i.cleanInteraction?.(),i.clearHighlight?.(),i.removeTooltipItem?.())}),d=i.addInteractionListener("panEnd",e=>{e.detail.activeGestures.move||(i.cleanInteraction?.(),i.clearHighlight?.(),i.removeTooltipItem?.())}),p=i.addInteractionListener("quickPressEnd",e=>{e.detail.activeGestures.move||e.detail.activeGestures.pan||(i.cleanInteraction?.(),i.clearHighlight?.(),i.removeTooltipItem?.())}),v=e=>{const t=n(e.detail.srcEvent);if("outside-chart"===t)return i.cleanInteraction?.(),i.clearHighlight?.(),void i.removeTooltipItem?.();if("outside-voronoi-max-radius"===t||"no-point-found"===t)return i.removeTooltipItem?.(),i.clearHighlight?.(),void i.removeTooltipItem?.();const{seriesId:r,dataIndex:o}=t;i.setTooltipItem?.({type:"scatter",seriesId:r,dataIndex:o}),i.setLastUpdateSource?.("pointer"),i.setHighlight?.({seriesId:r,dataIndex:o})},b=i.addInteractionListener("tap",e=>{const t=n(e.detail.srcEvent);if("string"!=typeof t&&s){const{seriesId:n,dataIndex:r}=t;s(e.detail.srcEvent,{type:"scatter",seriesId:n,dataIndex:r})}}),x=i.addInteractionListener("move",v),I=i.addInteractionListener("pan",v),w=i.addInteractionListener("quickPress",v);return()=>{b.cleanup(),x.cleanup(),c.cleanup(),I.cleanup(),d.cleanup(),w.cleanup(),p.cleanup()}},[t,u,l,a,s,o,i,m,h,f,g,y,r]),{instance:{enableVoronoi:ke(()=>{r.set("voronoi",{isVoronoiEnabled:!0})}),disableVoronoi:ke(()=>{r.set("voronoi",{isVoronoiEnabled:!1})})}}};Cx.getDefaultizedParams=({params:e})=>l({},e,{disableVoronoi:e.disableVoronoi??!e.series.some(e=>"scatter"===e.type)}),Cx.getInitialState=e=>({voronoi:{isVoronoiEnabled:!e.disableVoronoi}}),Cx.params={disableVoronoi:!0,voronoiMaxRadius:!0,onItemClick:!0};const Px=[Xs,Mb,Ys,Ws,Bs,Zs,Bb,Cx,kx],Ex=["children","localeText","plugins","seriesConfig","slots","slotProps"],Tx=e=>{const t=Lh({props:e,name:"MuiChartDataProvider"}),{children:n,localeText:r,plugins:i=Px,seriesConfig:o,slots:a,slotProps:s}=t,c=tt(t,Ex);return{children:n,localeText:r,chartProviderProps:{plugins:i,seriesConfig:o,pluginParams:l({theme:xm().palette.mode},c)},slots:a,slotProps:s}},Ax=e=>{const{chartProviderProps:t,localeText:n,slots:r,slotProps:i,children:o}=Tx(e);return{children:o,localeText:n,chartProviderProps:t,slots:r,slotProps:i}},Ox="MTc2NzgzMDQwMDAwMA==",jx="x-charts-pro",Lx=rc;function Rx(e){const{children:t,localeText:n,chartProviderProps:r,slots:i,slotProps:o}=Ax(l({},e,{seriesConfig:e.seriesConfig??Lx,plugins:e.plugins??wx}));return A(jx,Ox),(0,O.jsxs)(oc,l({},r,{children:[(0,O.jsx)(_h,{localeText:n,children:(0,O.jsx)(lc,{slots:i,slotProps:o,defaultSlots:db,children:t})}),(0,O.jsx)(L,{packageName:jx,releaseInfo:Ox})]}))}function Dx(...t){const n=e.useRef(void 0),r=e.useCallback(e=>{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}const $x=()=>{const t=e.useContext(ot);if(null==t)throw new Error(["MUI X Charts: Could not find the Chart context.","It looks like you rendered your component outside of a ChartDataProvider.","This can also happen if you are bundling multiple versions of the library."].join("\n"));return t};function zx(){const e=$x();if(!e)throw new Error(["MUI X Charts: Could not find the charts context.","It looks like you rendered your component outside of a ChartContainer parent component."].join("\n"));return e.store}function Nx(){return zx().use(he)}function _x(){const e=zx(),{axis:t,axisIds:n}=e.use(ls);return{xAxis:t,xAxisIds:n}}function Fx(){const e=zx(),{axis:t,axisIds:n}=e.use(cs);return{yAxis:t,yAxisIds:n}}function Hx(e){const t=zx(),{axis:n,axisIds:r}=t.use(ls);return n[e??r[0]]}function Bx(e){const t=zx(),{axis:n,axisIds:r}=t.use(cs);return n[e??r[0]]}function Vx(){const e=zx(),{axis:t,axisIds:n}=e.use(jb);return{rotationAxis:t,rotationAxisIds:n}}function Ux(t){const{isReversed:n,gradientId:r,size:i,direction:o,scale:a,colorMap:s}=t;return i<=0?null:(0,O.jsx)("linearGradient",{id:r,x1:"0",x2:"0",y1:"0",y2:"0",[`${o}${n?1:2}`]:`${i}px`,gradientUnits:"userSpaceOnUse",children:s.thresholds.map((t,r)=>{const o=a(t);if(void 0===o)return null;const l=n?1-o/i:o/i;return Number.isNaN(l)?null:(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("stop",{offset:l,stopColor:s.colors[r],stopOpacity:1}),(0,O.jsx)("stop",{offset:l,stopColor:s.colors[r+1],stopOpacity:1})]},t.toString()+r)})})}function Yx(e){const{gradientUnits:t,isReversed:n,gradientId:r,size:i,direction:o,scale:a,colorScale:s,colorMap:l}=e,c=[l.min??0,l.max??100],u=c.map(a).filter(e=>void 0!==e);if(2!==u.length)return null;const d="number"==typeof c[0]?Tn(c[0],c[1]):En(c[0],c[1]),p=Math.round((Math.max(...u)-Math.min(...u))/10),h=`${c[0]}-${c[1]}-`;return(0,O.jsx)("linearGradient",{id:r,x1:"0",x2:"0",y1:"0",y2:"0",[`${o}${n?1:2}`]:"objectBoundingBox"===t?1:`${i}px`,gradientUnits:t??"userSpaceOnUse",children:Array.from({length:p+1},(e,t)=>{const r=d(t/p);if(void 0===r)return null;const o=a(r);if(void 0===o)return null;const l=n?1-o/i:o/i,c=s(r);return null===c?null:(0,O.jsx)("stop",{offset:l,stopColor:c,stopOpacity:1},h+t)})})}function Wx(e){const{isReversed:t,gradientId:n,colorScale:r,colorMap:i}=e,o=[i.min??0,i.max??100],a="number"==typeof o[0]?Tn(o[0],o[1]):En(o[0],o[1]),s=`${o[0]}-${o[1]}-`;return(0,O.jsx)("linearGradient",l({id:n},(e=>e?{x1:"1",x2:"0",y1:"0",y2:"0"}:{x1:"0",x2:"1",y1:"0",y2:"0"})(t),{gradientUnits:"objectBoundingBox",children:Array.from({length:11},(e,t)=>{const n=t/10,i=a(n);if(void 0===i)return null;const o=r(i);return null===o?null:(0,O.jsx)("stop",{offset:n,stopColor:o,stopOpacity:1},s+t)})}))}const Gx=ae(e=>e,e=>e.zAxis);function Kx(){const e=zx(),{axis:t,axisIds:n}=e.use(Gx)??{axis:{},axisIds:[]};return{zAxis:t,zAxisIds:n}}const qx=ae(e=>e.id,e=>e.chartId);function Xx(){return zx().use(qx)}function Zx(){const t=Xx();return e.useCallback(e=>`${t}-gradient-${e}`,[t])}function Jx(){const t=Xx();return e.useCallback(e=>`${t}-gradient-${e}-object-bound`,[t])}function Qx(){const{top:t,height:n,bottom:r,left:i,width:o,right:a}=Nx(),s=t+n+r,l=i+o+a,c=Zx(),u=Jx(),{xAxis:d,xAxisIds:p}=_x(),{yAxis:h,yAxisIds:m}=Fx(),{zAxis:f,zAxisIds:g}=Kx(),y=m.filter(e=>void 0!==h[e].colorMap),v=p.filter(e=>void 0!==d[e].colorMap),b=g.filter(e=>void 0!==f[e].colorMap);return 0===y.length&&0===v.length&&0===b.length?null:(0,O.jsxs)("defs",{children:[y.map(t=>{const n=c(t),r=u(t),{colorMap:i,scale:o,colorScale:a,reverse:l}=h[t];return"piecewise"===i?.type?(0,O.jsx)(Ux,{isReversed:!l,scale:o,colorMap:i,size:s,gradientId:n,direction:"y"},n):"continuous"===i?.type?(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(Yx,{isReversed:!l,scale:o,colorScale:a,colorMap:i,size:s,gradientId:n,direction:"y"}),(0,O.jsx)(Wx,{isReversed:l,colorScale:a,colorMap:i,gradientId:r})]},n):null}),v.map(t=>{const n=c(t),r=u(t),{colorMap:i,scale:o,reverse:a,colorScale:s}=d[t];return"piecewise"===i?.type?(0,O.jsx)(Ux,{isReversed:a,scale:o,colorMap:i,size:l,gradientId:n,direction:"x"},n):"continuous"===i?.type?(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(Yx,{isReversed:a,scale:o,colorScale:s,colorMap:i,size:l,gradientId:n,direction:"x"}),(0,O.jsx)(Wx,{isReversed:a,colorScale:s,colorMap:i,gradientId:r})]},n):null}),b.map(e=>{const t=u(e),{colorMap:n,colorScale:r}=f[e];return"continuous"===n?.type?(0,O.jsx)(Wx,{colorScale:r,colorMap:n,gradientId:t},t):null})]})}function eI(){const e=$x();if(!e)throw new Error(["MUI X Charts: Could not find the svg ref context.","It looks like you rendered your component outside of a ChartContainer parent component."].join("\n"));return e.svgRef}const tI=e=>e.keyboardNavigation,nI=ae(tI,(e,t)=>null!=e?.item&&Us(e.item,t)),rI=ae(tI,e=>null!=e?.item),iI=ae(tI,e=>e?.item??null),oI=ae(tI,e=>!!e?.enableKeyboardNavigation),aI=e=>(t,n,r)=>{if(null==t||!("dataIndex"in t)||void 0===t.dataIndex)return;const i=r[t.type]?.series[t.seriesId];if(!i)return;let o="x"===e?"xAxisId"in i&&i.xAxisId:"yAxisId"in i&&i.yAxisId;return void 0!==o&&!1!==o||(o=n.axisIds[0]),{axisId:o,dataIndex:t.dataIndex}},sI=ae(iI,ls,ft,aI("x")),lI=ae(iI,cs,ft,aI("y")),cI=ae(tI,function(e){if(null==e?.item)return null;const{type:t,seriesId:n}=e.item;return void 0===t||void 0===n?null:e.item});function uI(e,t,n=void 0){const r={};for(const i in e){const o=e[i];let a="",s=!0;for(let e=0;e({width:e.width??"100%",height:e.height??"100%",display:"flex",position:"relative",flexDirection:"column",alignItems:"center",justifyContent:"center",overflow:"hidden",touchAction:e.hasZoom?"pan-y":void 0,userSelect:"none",gridArea:"chart","&:focus":{outline:"none"}})),mI=e.forwardRef(function(e,t){const n=zx(),r=n.use(me),i=n.use(fe),o=n.use(ge),a=n.use(ye),s=n.use(oI),c=n.use(rI),u=n.use(Ya),d=Dx(eI(),t),p=Lh({props:e,name:"MuiChartsSurface"}),{children:h,className:m,title:f,desc:g}=p,y=tt(p,pI),v=uI({root:["root"]},dI),b=i>0&&r>0;return(0,O.jsxs)(hI,l({ownerState:{width:o,height:a,hasZoom:u},viewBox:`0 0 ${r} ${i}`,className:Hh(v.root,m),tabIndex:s?0:void 0,"data-has-focused-item":c||void 0},y,{ref:d,children:[f&&(0,O.jsx)("title",{children:f}),g&&(0,O.jsx)("desc",{children:g}),(0,O.jsx)(Qx,{}),b&&h]}))}),fI=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},gI=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n}({...i,...r}),s=fI(r),l=fI(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}},yI=function(e){const{elementType:t,externalSlotProps:n,ownerState:r,skipResolvingSlotProps:i=!1,...o}=e,a=i?{}:function(e,t,n){return"function"==typeof e?e(t,n):e}(n,r),{props:s,internalRef:l}=gI({...o,externalSlotProps:a});return function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}}(t,{...s,ref:Dx(l,a?.ref,e.additionalProps?.ref)},r)};function vI(e){"hasPointerCapture"in e.currentTarget&&e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId)}const bI=(t,n)=>{const{instance:r}=$x(),i=e.useRef(!1),o=ke(()=>{i.current=!0,r.setLastUpdateSource("pointer"),r.setTooltipItem(t),r.setHighlight("sankey"===t.type?t:{seriesId:t.seriesId,dataIndex:t.dataIndex})}),a=ke(()=>{i.current=!1,r.removeTooltipItem(t),r.clearHighlight()});return e.useEffect(()=>()=>{i.current&&a()},[a]),e.useMemo(()=>n?{}:{onPointerEnter:o,onPointerLeave:a,onPointerDown:vI},[n,o,a])};function xI(){return!1}function II(e,t){return e&&t?function(n){return!!n&&("series"===e.highlight||"item"===e.highlight&&n.dataIndex===t.dataIndex)&&n.seriesId===t.seriesId}:xI}function wI(){return!1}function kI(e,t){return e&&t?function(n){return!!n&&("series"===e.fade?n.seriesId===t.seriesId&&n.dataIndex!==t.dataIndex:"global"===e.fade&&(n.seriesId!==t.seriesId||n.dataIndex!==t.dataIndex))}:wI}function SI(e,t,n){return"series"===e?.highlight&&t?.seriesId===n}function MI(e,t,n){return"item"===e?.highlight&&t?.seriesId===n?t.dataIndex:null}const CI=ae(ft,e=>{const t=new Map;return Object.keys(e).forEach(n=>{const r=e[n];r?.seriesOrder?.forEach(e=>{const n=r?.series[e];t.set(e,n?.highlightScope)})}),t}),PI=le(e=>e.highlight,cI,function(e,t){return e.isControlled||"pointer"===e.lastUpdate?e.item:t}),EI=ae(CI,PI,function(e,t){if(!t)return null;const n=e.get(t.seriesId);return void 0===n?null:n}),TI=le(EI,PI,II),AI=le(EI,PI,kI),OI=ae(EI,PI,function(e,t,n){return II(e,t)(n)}),jI=ae(EI,PI,SI),LI=ae(EI,PI,function(e,t,n){return!SI(e,t,n)&&("global"===e?.fade&&null!=t||"series"===e?.fade&&t?.seriesId===n)}),RI=ae(EI,PI,function(e,t,n){return SI(e,t,n)||MI(e,t,n)===t?.dataIndex||"series"!==e?.fade&&"global"!==e?.fade||t?.seriesId!==n?null:t.dataIndex}),DI=ae(EI,PI,MI),$I=ae(EI,PI,function(e,t,n){return kI(e,t)(n)});function zI(e){const t=zx(),n=t.use(OI,e),r=t.use($I,e);return{isHighlighted:n,isFaded:!n&&r}}var NI=a(9853);const _I=300,FI="cubic-bezier(0.66, 0, 0.34, 1)",HI=NI(.66,0,.34,1);var BI,VI,UI=0,YI=0,WI=0,GI=0,KI=0,qI=0,XI="object"==typeof performance&&performance.now?performance:Date,ZI="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function JI(){return KI||(ZI(QI),KI=XI.now()+qI)}function QI(){KI=0}function ew(){this._call=this._time=this._next=null}function tw(e,t,n){var r=new ew;return r.restart(e,t,n),r}function nw(){KI=(GI=XI.now())+qI,UI=YI=0;try{!function(){JI(),++UI;for(var e,t=BI;t;)(e=KI-t._time)>=0&&t._call.call(void 0,e),t=t._next;--UI}()}finally{UI=0,function(){for(var e,t,n=BI,r=1/0;n;)n._call?(r>n._time&&(r=n._time),e=n,n=n._next):(t=n._next,n._next=null,n=e?e._next=t:BI=t);VI=e,iw(r)}(),KI=0}}function rw(){var e=XI.now(),t=e-GI;t>1e3&&(qI-=t,GI=e)}function iw(e){UI||(YI&&(YI=clearTimeout(YI)),e-KI>24?(e<1/0&&(YI=setTimeout(nw,e-XI.now()-qI)),WI&&(WI=clearInterval(WI))):(WI||(GI=XI.now(),WI=setInterval(rw,1e3)),UI=1,ZI(nw)))}ew.prototype=tw.prototype={constructor:ew,restart:function(e,t,n){if("function"!=typeof e)throw new TypeError("callback is not a function");n=(null==n?JI():+n)+(null==t?0:+t),this._next||VI===this||(VI?VI._next=this:BI=this,VI=this),this._call=e,this._time=n,iw()},stop:function(){this._call&&(this._call=null,this._time=1/0,iw())}};class ow{elapsed=0;timer=null;constructor(e,t,n){this.duration=e,this.easingFn=t,this.onTickCallback=n,this.resume()}get running(){return null!==this.timer}timerCallback(e){this.elapsed=Math.min(e,this.duration);const t=0===this.duration?1:this.elapsed/this.duration,n=this.easingFn(t);this.onTickCallback(n),this.elapsed>=this.duration&&this.stop()}resume(){if(this.running||this.elapsed>=this.duration)return this;const e=JI()-this.elapsed;return this.timer=tw(e=>this.timerCallback(e),0,e),this}stop(){return this.running?(this.timer&&(this.timer.stop(),this.timer=null),this):this}finish(){return this.stop(),e=()=>this.timerCallback(this.duration),n=new ew,t=null==t?0:+t,n.restart(t=>{n.stop(),e()},t,void 0),this;var e,t,n}}function aw(t,{createInterpolator:n,transformProps:r,applyProps:i,skip:o,initialProps:a=t,ref:s}){const c=r??(e=>e),[u,d]=function(t,{createInterpolator:n,applyProps:r,skip:i,initialProps:o=t}){const a=e.useRef(o),s=e.useRef(null),l=e.useRef(null),c=e.useRef(t);V(()=>{c.current=t},[t]),V(()=>{i&&(s.current?.finish(),s.current=null,l.current=null,a.current=t)},[t,i]);const u=e.useCallback(e=>{const i=a.current,o=n(i,t);s.current=new ow(_I,HI,t=>{const n=o(t);a.current=n,r(e,n)})},[r,n,t]),d=e.useCallback(e=>{if(null===e)return void s.current?.stop();const n=l.current;if(n===e){if(function(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r=0;ri(e,c(t)),skip:o});return l({},r(o?t:d),{ref:Dx(u,s)})}function sw(e){return e.replace(" ","_")}const lw=Zb("MuiAppearingMask",["animate"]),cw=bm("rect",{slot:"internal",shouldForwardProp:void 0})({animationName:"animate-width",animationTimingFunction:FI,animationDuration:"0s",[`&.${lw.animate}`]:{animationDuration:`${_I}ms`},"@keyframes animate-width":{from:{width:0}}});function uw(t){const n=Nx(),r=sw(`${Xx()}-${t.id}`);return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("clipPath",{id:r,children:(0,O.jsx)(cw,{className:t.skipAnimation?"":lw.animate,x:0,y:0,width:n.left+n.width+n.right,height:n.top+n.height+n.bottom})}),(0,O.jsx)("g",{clipPath:`url(#${r})`,children:t.children})]})}const dw=["skipAnimation","ownerState"];function pw(e){const{skipAnimation:t,ownerState:n}=e,r=tt(e,dw),i=function(e){return aw({d:e.d},{createInterpolator:(e,t)=>{const n=Ln(e.d,t.d);return e=>({d:n(e)})},applyProps:(e,{d:t})=>e.setAttribute("d",t),transformProps:e=>e,skip:e.skipAnimation,ref:e.ref})}(e);return(0,O.jsx)(uw,{skipAnimation:t,id:`${n.id}-area-clip`,children:(0,O.jsx)("path",l({fill:n.gradientId?`url(#${n.gradientId})`:n.color,filter:n.isHighlighted?"brightness(140%)":n.gradientId?void 0:"brightness(120%)",opacity:n.isFaded?.3:1,stroke:"none","data-series":n.id,"data-highlighted":n.isHighlighted||void 0,"data-faded":n.isFaded||void 0},r,i))})}const hw=["id","classes","color","gradientId","slots","slotProps","onClick"];function mw(e){return Xb("MuiAreaElement",e)}const fw=Zb("MuiAreaElement",["root","highlighted","faded","series"]),gw=e=>{const{classes:t,id:n,isFaded:r,isHighlighted:i}=e;return uI({root:["root",`series-${n}`,i&&"highlighted",r&&"faded"]},mw,t)};function yw(e){const{id:t,classes:n,color:r,gradientId:i,slots:o,slotProps:a,onClick:s}=e,c=tt(e,hw),u=bI({type:"line",seriesId:t}),{isFaded:d,isHighlighted:p}=zI({seriesId:t}),h={id:t,classes:n,color:r,gradientId:i,isFaded:d,isHighlighted:p},m=gw(h),f=o?.area??pw,g=yI({elementType:f,externalSlotProps:a?.area,additionalProps:l({},u,{onClick:s,cursor:s?"pointer":"unset"}),className:m.root,ownerState:h});return(0,O.jsx)(f,l({},c,g))}const vw=ae(e=>e.animation,e=>e.skip||e.skipAnimationRequests>0);function bw(e){const t=zx().use(vw);return e||t}function xw(){return zx().use(Wa)}function Iw(e){this._context=e}function ww(e){return new Iw(e)}Iw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};const kw=Math.PI,Sw=2*kw,Mw=1e-6,Cw=Sw-Mw;function Pw(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Pw;const n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;tMw)if(Math.abs(u*s-l*c)>Mw&&i){let p=n-o,h=r-a,m=s*s+l*l,f=p*p+h*h,g=Math.sqrt(m),y=Math.sqrt(d),v=i*Math.tan((kw-Math.acos((m+d-f)/(2*g*y)))/2),b=v/y,x=v/g;Math.abs(b-1)>Mw&&this._append`L${e+b*c},${t+b*u}`,this._append`A${i},${i},0,0,${+(u*p>c*h)},${this._x1=e+x*s},${this._y1=t+x*l}`}else this._append`L${this._x1=e},${this._y1=t}`}arc(e,t,n,r,i,o){if(e=+e,t=+t,o=!!o,(n=+n)<0)throw new Error(`negative radius: ${n}`);let a=n*Math.cos(r),s=n*Math.sin(r),l=e+a,c=t+s,u=1^o,d=o?r-i:i-r;null===this._x1?this._append`M${l},${c}`:(Math.abs(this._x1-l)>Mw||Math.abs(this._y1-c)>Mw)&&this._append`L${l},${c}`,n&&(d<0&&(d=d%Sw+Sw),d>Cw?this._append`A${n},${n},0,1,${u},${e-a},${t-s}A${n},${n},0,1,${u},${this._x1=l},${this._y1=c}`:d>Mw&&this._append`A${n},${n},0,${+(d>=kw)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}}function Tw(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(null==n)t=null;else{const e=Math.floor(n);if(!(e>=0))throw new RangeError(`invalid digits: ${n}`);t=e}return e},()=>new Ew(t)}function Aw(e){return e[0]}function Ow(e){return e[1]}function jw(e,t){var n=rl(!0),r=null,i=ww,o=null,a=Tw(s);function s(s){var l,c,u,d=(s=nl(s)).length,p=!1;for(null==r&&(o=i(u=a())),l=0;l<=d;++l)!(l=d;--p)s.point(y[p],v[p]);s.lineEnd(),s.areaEnd()}g&&(y[u]=+e(h,u,c),v[u]=+t(h,u,c),s.point(r?+r(h,u,c):y[u],n?+n(h,u,c):v[u]))}if(m)return s=null,m+""||null}function u(){return jw().defined(i).curve(a).context(o)}return e="function"==typeof e?e:void 0===e?Aw:rl(+e),t="function"==typeof t?t:rl(void 0===t?0:+t),n="function"==typeof n?n:void 0===n?Ow:rl(+n),c.x=function(t){return arguments.length?(e="function"==typeof t?t:rl(+t),r=null,c):e},c.x0=function(t){return arguments.length?(e="function"==typeof t?t:rl(+t),c):e},c.x1=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:rl(+e),c):r},c.y=function(e){return arguments.length?(t="function"==typeof e?e:rl(+e),n=null,c):t},c.y0=function(e){return arguments.length?(t="function"==typeof e?e:rl(+e),c):t},c.y1=function(e){return arguments.length?(n=null==e?null:"function"==typeof e?e:rl(+e),c):n},c.lineX0=c.lineY0=function(){return u().x(e).y(t)},c.lineY1=function(){return u().x(e).y(n)},c.lineX1=function(){return u().x(r).y(t)},c.defined=function(e){return arguments.length?(i="function"==typeof e?e:rl(!!e),c):i},c.curve=function(e){return arguments.length?(a=e,null!=o&&(s=a(o)),c):a},c.context=function(e){return arguments.length?(null==e?o=s=null:s=a(o=e),c):o},c}function Rw(e,t,n){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-n),e._x2,e._y2)}function Dw(e,t){this._context=e,this._k=(1-t)/6}function $w(e,t){this._context=e,this._alpha=t}Ew.prototype,Dw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Rw(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Rw(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}},function e(t){function n(e){return new Dw(e,t)}return n.tension=function(t){return e(+t)},n}(0),$w.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var n=this._x2-e,r=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:!function(e,t,n){var r=e._x1,i=e._y1,o=e._x2,a=e._y2;if(e._l01_a>Kl){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,l=3*e._l01_a*(e._l01_a+e._l12_a);r=(r*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/l,i=(i*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/l}if(e._l23_a>Kl){var c=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,u=3*e._l23_a*(e._l23_a+e._l12_a);o=(o*c+e._x1*e._l23_2a-t*e._l12_2a)/u,a=(a*c+e._y1*e._l23_2a-n*e._l12_2a)/u}e._context.bezierCurveTo(r,i,o,a,e._x2,e._y2)}(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const zw=function e(t){function n(e){return t?new $w(e,t):new Dw(e,0)}return n.alpha=function(t){return e(+t)},n}(.5);function Nw(e){return e<0?-1:1}function _w(e,t,n){var r=e._x1-e._x0,i=t-e._x1,o=(e._y1-e._y0)/(r||i<0&&-0),a=(n-e._y1)/(i||r<0&&-0),s=(o*i+a*r)/(r+i);return(Nw(o)+Nw(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function Fw(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function Hw(e,t,n){var r=e._x0,i=e._y0,o=e._x1,a=e._y1,s=(o-r)/3;e._context.bezierCurveTo(r+s,i+s*t,o-s,a-s*n,o,a)}function Bw(e){this._context=e}function Vw(e){this._context=new Uw(e)}function Uw(e){this._context=e}function Yw(e){return new Bw(e)}function Ww(e){return new Vw(e)}function Gw(e){this._context=e}function Kw(e){var t,n,r=e.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=e[0]+2*e[1],t=1;t=0;--t)i[t]=(a[t]-i[t+1])/o[t];for(o[r-1]=(e[r]+i[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}}this._x=e,this._y=t}};class ek{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t)}this._x0=e,this._y0=t}}function tk(e){return new ek(e,!0)}function nk(e){return new ek(e,!1)}function rk(e){switch(e){case"catmullRom":return zw.alpha(.5);case"linear":return ww;case"monotoneX":default:return Yw;case"monotoneY":return Ww;case"natural":return qw;case"step":return Zw;case"stepBefore":return Jw;case"stepAfter":return Qw;case"bumpY":return nk;case"bumpX":return tk}}const ik=ae(ft,(e,t)=>e[t]),ok=le(ft,(e,t,n)=>{if(void 0===n||Array.isArray(n)&&0===n.length)return e[t]?.seriesOrder?.map(n=>e[t]?.series[n])??[];if(!Array.isArray(n))return e[t]?.series?.[n];const r=[],i=[];for(const o of n){const n=e[t]?.series?.[o];n?r.push(n):i.push(o)}return r}),ak=e=>zx().use(ik,e),sk=(e,t)=>zx().use(ok,e,t);function lk(){return ak("line")}function ck(e){if(fa(e))return t=>(e(t)??0)+e.bandwidth()/2;const t=e.domain();return t[0]===t[1]?n=>n===t[0]?e(n):NaN:t=>e(t)}function uk(e){return Hx(e).scale}function dk(e){return Bx(e).scale}function pk(t,n){const r=lk(),i=_x().xAxisIds[0],o=Fx().yAxisIds[0],a=Zx(),s=e.useMemo(()=>{if(void 0===r)return[];const{series:e,stackingGroups:s}=r,l=[];for(const r of s){const s=r.ids;for(let r=s.length-1;r>=0;r-=1){const c=s[r],{xAxisId:u=i,yAxisId:d=o,stackedData:p,data:h,connectNulls:m,baseline:f,curve:g,strictStepCurve:y,area:v}=e[c];if(!v||!(u in t)||!(d in n))continue;const b=t[u].scale,x=ck(b),I=n[d].scale,w=t[u].data,k=n[d].colorScale&&a(d)||t[u].colorScale&&a(u)||void 0,S=g?.includes("step")&&!y&&fa(b),M=w?.flatMap((e,t)=>{const n=null==h[t];if(S){const r=[{x:e,y:p[t],nullData:n,isExtension:!1}];return n||0!==t&&null!=h[t-1]||r.unshift({x:(b(e)??0)-(b.step()-b.bandwidth())/2,y:p[t],nullData:n,isExtension:!0}),n||t!==h.length-1&&null!=h[t+1]||r.push({x:(b(e)??0)+(b.step()+b.bandwidth())/2,y:p[t],nullData:n,isExtension:!0}),r}return{x:e,y:p[t],nullData:n}})??[],C=m?M.filter(e=>!e.nullData):M,P=Lw().x(e=>e.isExtension?e.x:x(e.x)).defined(e=>m||!e.nullData||!!e.isExtension).y0(e=>{if("number"==typeof f)return I(f);if("max"===f)return I.range()[1];if("min"===f)return I.range()[0];const t=e.y&&I(e.y[0]);return Number.isNaN(t)?I.range()[0]:t}).y1(e=>e.y&&I(e.y[1])),E=P.curve(rk(g))(C)||"";l.push({area:e[c].area,color:e[c].color,gradientId:k,d:E,seriesId:c})}}return l},[r,i,o,t,n,a]);return s}const hk=["slots","slotProps","onItemClick","skipAnimation"],mk=bm("g",{name:"MuiAreaPlot",slot:"Root"})({[`& .${fw.root}`]:{transitionProperty:"opacity, fill",transitionDuration:`${_I}ms`,transitionTimingFunction:FI}}),fk=()=>{const{xAxis:e}=_x(),{yAxis:t}=Fx();return pk(e,t)};function gk(e){const{slots:t,slotProps:n,onItemClick:r,skipAnimation:i}=e,o=tt(e,hk),a=bw(xw()||i),s=fk();return(0,O.jsx)(mk,l({},o,{children:s.map(({d:e,seriesId:i,color:o,area:s,gradientId:l})=>!!s&&(0,O.jsx)(yw,{id:i,d:e,color:o,gradientId:l,slots:t,slotProps:n,onClick:r&&(e=>r(e,{type:"line",seriesId:i})),skipAnimation:a},i))}))}const yk=["skipAnimation","ownerState"],vk=e.forwardRef(function(e,t){const{skipAnimation:n,ownerState:r}=e,i=tt(e,yk),o=function(e){return aw({d:e.d},{createInterpolator:(e,t)=>{const n=Ln(e.d,t.d);return e=>({d:n(e)})},applyProps:(e,{d:t})=>e.setAttribute("d",t),skip:e.skipAnimation,transformProps:e=>e,ref:e.ref})}({d:e.d,skipAnimation:n,ref:t}),a=r.isFaded?.3:1;return(0,O.jsx)(uw,{skipAnimation:n,id:`${r.id}-line-clip`,children:(0,O.jsx)("path",l({stroke:r.gradientId?`url(#${r.gradientId})`:r.color,strokeWidth:2,strokeLinejoin:"round",fill:"none",filter:r.isHighlighted?"brightness(120%)":void 0,opacity:r.hidden?0:a,"data-series":r.id,"data-highlighted":r.isHighlighted||void 0,"data-faded":r.isFaded||void 0},i,o))})}),bk=["id","classes","color","gradientId","slots","slotProps","onClick","hidden"];function xk(e){return Xb("MuiLineElement",e)}const Ik=Zb("MuiLineElement",["root","highlighted","faded","series"]),wk=e=>{const{classes:t,id:n,isFaded:r,isHighlighted:i}=e;return uI({root:["root",`series-${n}`,i&&"highlighted",r&&"faded"]},xk,t)};function kk(e){const{id:t,classes:n,color:r,gradientId:i,slots:o,slotProps:a,onClick:s,hidden:c}=e,u=tt(e,bk),d=bI({type:"line",seriesId:t}),{isFaded:p,isHighlighted:h}=zI({seriesId:t}),m={id:t,classes:n,color:r,gradientId:i,isFaded:p,isHighlighted:h,hidden:c},f=wk(m),g=o?.line??vk,y=yI({elementType:g,externalSlotProps:a?.line,additionalProps:l({},d,{onClick:s,cursor:s?"pointer":"unset"}),className:f.root,ownerState:m});return(0,O.jsx)(g,l({},u,y))}function Sk(t,n){const r=lk(),i=_x().xAxisIds[0],o=Fx().yAxisIds[0],a=Zx();return e.useMemo(()=>{if(void 0===r)return[];const{series:e,stackingGroups:s}=r,l=[];for(const r of s){const s=r.ids;for(const r of s){const{xAxisId:s=i,yAxisId:c=o,stackedData:u,data:d,connectNulls:p,curve:h,strictStepCurve:m}=e[r];if(!(s in t)||!(c in n))continue;const f=t[s].scale,g=ck(f),y=n[c].scale,v=t[s].data,b=n[c].colorScale&&a(c)||t[s].colorScale&&a(s)||void 0,x=h?.includes("step")&&!m&&fa(f),I=v?.flatMap((e,t)=>{const n=null==d[t];if(x){const r=[{x:e,y:u[t],nullData:n,isExtension:!1}];return n||0!==t&&null!=d[t-1]||r.unshift({x:(f(e)??0)-(f.step()-f.bandwidth())/2,y:u[t],nullData:n,isExtension:!0}),n||t!==d.length-1&&null!=d[t+1]||r.push({x:(f(e)??0)+(f.step()+f.bandwidth())/2,y:u[t],nullData:n,isExtension:!0}),r}return{x:e,y:u[t],nullData:n}})??[],w=p?I.filter(e=>!e.nullData):I,k=jw().x(e=>e.isExtension?e.x:g(e.x)).defined(e=>p||!e.nullData||!!e.isExtension).y(e=>y(e.y[1])),S=k.curve(rk(h))(w)||"";l.push({color:e[r].color,gradientId:b,d:S,seriesId:r})}}return l},[r,i,o,t,n,a])}const Mk=["slots","slotProps","skipAnimation","onItemClick"],Ck=bm("g",{name:"MuiAreaPlot",slot:"Root"})({[`& .${Ik.root}`]:{transitionProperty:"opacity, fill",transitionDuration:`${_I}ms`,transitionTimingFunction:FI}}),Pk=()=>{const{xAxis:e}=_x(),{yAxis:t}=Fx();return Sk(e,t)};function Ek(e){const{slots:t,slotProps:n,skipAnimation:r,onItemClick:i}=e,o=tt(e,Mk),a=bw(xw()||r),s=Pk();return(0,O.jsx)(Ck,l({},o,{children:s.map(({d:e,seriesId:r,color:o,gradientId:s})=>(0,O.jsx)(kk,{id:r,d:e,color:o,gradientId:s,skipAnimation:a,slots:t,slotProps:n,onClick:i&&(e=>i(e,{type:"line",seriesId:r}))},r))}))}function Tk(e){return Xb("MuiMarkElement",e)}const Ak=Zb("MuiMarkElement",["root","highlighted","faded","animate","series"]),Ok=e=>{const{classes:t,id:n,isFaded:r,isHighlighted:i,skipAnimation:o}=e;return uI({root:["root",`series-${n}`,i&&"highlighted",r&&"faded",o?void 0:"animate"]},Tk,t)},jk=["x","y","id","classes","color","dataIndex","onClick","skipAnimation","isFaded","isHighlighted","shape","hidden"],Lk=bm("circle",{slot:"internal",shouldForwardProp:void 0})({[`&.${Ak.animate}`]:{transitionDuration:`${_I}ms`,transitionProperty:"cx, cy, opacity",transitionTimingFunction:FI}});function Rk(e){const{x:t,y:n,id:r,classes:i,color:o,dataIndex:a,onClick:s,skipAnimation:c,isFaded:u=!1,isHighlighted:d=!1,hidden:p}=e,h=tt(e,jk),m=xm(),f=bI({type:"line",seriesId:r,dataIndex:a}),g=Ok({id:r,classes:i,isHighlighted:d,isFaded:u,skipAnimation:c});return(0,O.jsx)(Lk,l({},h,{cx:t,cy:n,r:5,fill:(m.vars||m).palette.background.paper,stroke:o,strokeWidth:2,className:g.root,onClick:s,cursor:s?"pointer":"unset",pointerEvents:p?"none":void 0},f,{"data-highlighted":d||void 0,"data-faded":u||void 0,opacity:p?0:1}))}Gl(3);const Dk={draw(e,t){const n=Gl(t/ql);e.moveTo(n,0),e.arc(0,0,n,0,Zl)}},$k={draw(e,t){const n=Gl(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},zk=Gl(1/3),Nk=2*zk,_k={draw(e,t){const n=Gl(t/Nk),r=n*zk;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},Fk={draw(e,t){const n=Gl(t),r=-n/2;e.rect(r,r,n,n)}},Hk=Wl(ql/10)/Wl(7*ql/10),Bk=Wl(Zl/10)*Hk,Vk=-Vl(Zl/10)*Hk,Uk={draw(e,t){const n=Gl(.8908130915292852*t),r=Bk*n,i=Vk*n;e.moveTo(0,-n),e.lineTo(r,i);for(let t=1;t<5;++t){const o=Zl*t/5,a=Vl(o),s=Wl(o);e.lineTo(s*n,-a*n),e.lineTo(a*r-s*i,s*r+a*i)}e.closePath()}},Yk=Gl(3),Wk={draw(e,t){const n=-Gl(t/(3*Yk));e.moveTo(0,2*n),e.lineTo(-Yk*n,-n),e.lineTo(Yk*n,-n),e.closePath()}},Gk=(Gl(3),-.5),Kk=Gl(3)/2,qk=1/Gl(12),Xk=3*(qk/2+1),Zk={draw(e,t){const n=Gl(t/Xk),r=n/2,i=n*qk,o=r,a=n*qk+n,s=-o,l=a;e.moveTo(r,i),e.lineTo(o,a),e.lineTo(s,l),e.lineTo(Gk*r-Kk*i,Kk*r+Gk*i),e.lineTo(Gk*o-Kk*a,Kk*o+Gk*a),e.lineTo(Gk*s-Kk*l,Kk*s+Gk*l),e.lineTo(Gk*r+Kk*i,Gk*i-Kk*r),e.lineTo(Gk*o+Kk*a,Gk*a-Kk*o),e.lineTo(Gk*s+Kk*l,Gk*l-Kk*s),e.closePath()}},Jk=[Dk,$k,_k,Fk,Uk,Wk,Zk];function Qk(e,t){let n=null,r=Tw(i);function i(){let i;if(n||(n=i=r()),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+""||null}return e="function"==typeof e?e:rl(e||Dk),t="function"==typeof t?t:rl(void 0===t?64:+t),i.type=function(t){return arguments.length?(e="function"==typeof t?t:rl(t),i):e},i.size=function(e){return arguments.length?(t="function"==typeof e?e:rl(+e),i):t},i.context=function(e){return arguments.length?(n=null==e?null:e,i):n},i}function eS(e){switch(e){case"circle":default:return 0;case"cross":return 1;case"diamond":return 2;case"square":return 3;case"star":return 4;case"triangle":return 5;case"wye":return 6}}const tS=["x","y","id","classes","color","shape","dataIndex","onClick","skipAnimation","isFaded","isHighlighted","hidden","style"],nS=bm("path",{name:"MuiMarkElement",slot:"Root"})(({theme:e})=>({fill:(e.vars||e).palette.background.paper,[`&.${Ak.animate}`]:{transitionDuration:`${_I}ms`,transitionProperty:"transform, transform-origin, opacity",transitionTimingFunction:FI}}));function rS(e){const{x:t,y:n,id:r,classes:i,color:o,shape:a,dataIndex:s,onClick:c,skipAnimation:u,isFaded:d=!1,isHighlighted:p=!1,hidden:h,style:m}=e,f=tt(e,tS),g=bI({type:"line",seriesId:r,dataIndex:s}),y={id:r,classes:i,isHighlighted:p,isFaded:d,skipAnimation:u},v=Ok(y);return(0,O.jsx)(nS,l({},f,{style:l({},m,{transform:`translate(${t}px, ${n}px)`,transformOrigin:`${t}px ${n}px`}),ownerState:y,className:v.root,d:Qk(Jk[eS(a)])(),onClick:c,cursor:c?"pointer":"unset",pointerEvents:h?"none":void 0},g,{"data-highlighted":p||void 0,"data-faded":d||void 0,opacity:h?0:1,strokeWidth:2,stroke:o}))}function iS(){const e=zx();return{isHighlighted:e.use(TI),isFaded:e.use(AI)}}const oS=e=>e.controlledCartesianAxisHighlight,aS=(e,t,n,r)=>r?[]:void 0!==n?n.filter(e=>void 0!==t.axis[e.axisId]).map(e=>e):null===e?[]:[{axisId:t.axisIds[0],dataIndex:e}],sS=le(As,ls,oS,kb,aS),lS=(le(Os,cs,oS,kb,aS),(e,t,n,r,i,o,a)=>{if(a)return[];if(void 0!==r)return r.map(e=>l({},e,{value:n.axis[e.axisId]?.data?.[e.dataIndex]})).filter(({value:e})=>void 0!==e);const s=null!==t&&{axisId:n.axisIds[0],dataIndex:e,value:t},c=i&&n.axis[i.axisId]?.data?.[i.dataIndex],u=i&&null!=c&&l({},i,{value:c});if("pointer"===o){if(s)return[s];if(u)return[u]}if("keyboard"===o){if(u)return[u];if(s)return[s]}return[]}),cS=le(As,Rs,ls,oS,sI,Cs,kb,lS),uS=le(Os,Ds,cs,oS,lI,Cs,kb,lS),dS=(e,t)=>void 0===e?[t.axis[t.axisIds[0]]]:e.map(e=>t.axis[e.axisId]??null).filter(e=>null!==e);ae(oS,ls,dS),ae(oS,cs,dS);const pS=["slots","slotProps","skipAnimation","onItemClick"];function hS(t){const{slots:n,slotProps:r,skipAnimation:i,onItemClick:o}=t,a=tt(t,pS),s=bw(xw()||i),{xAxis:c}=_x(),{yAxis:u}=Fx(),{store:d}=$x(),{isFaded:p,isHighlighted:h}=iS(),m=d.use(sS),f=e.useMemo(()=>{const e={};for(const{dataIndex:t,axisId:n}of m)void 0===e[n]?e[n]=new Set([t]):e[n].add(t);return e},[m]),g=function(t,n){const r=lk(),i=_x().xAxisIds[0],o=Fx().yAxisIds[0],a=Xx(),{instance:s}=$x(),l=e.useMemo(()=>{if(void 0===r)return[];const{series:e,stackingGroups:l}=r,c=[];for(const r of l){const l=r.ids;for(const r of l){const{xAxisId:l=i,yAxisId:u=o,stackedData:d,data:p,showMark:h=!0,shape:m="circle"}=e[r];if(!1===h)continue;if(!(l in t)||!(u in n))continue;const f=ck(t[l].scale),g=n[u].scale,y=t[l].data,v=sw(`${a}-${r}-line-clip`),b=$l(e[r],t[l],n[u]),x=[];if(y)for(let e=0;e{const u=n?.mark??("circle"===i?Rk:rS),d=h({seriesId:e}),m=!d&&p({seriesId:e});return(0,O.jsx)("g",{clipPath:`url(#${t})`,"data-series":e,children:c.map(({x:t,y:n,index:c,color:p})=>(0,O.jsx)(u,l({id:e,dataIndex:c,shape:i,color:p,x:t,y:n,skipAnimation:s,onClick:o&&(t=>o(t,{type:"line",seriesId:e,dataIndex:c})),isHighlighted:f[a]?.has(c)||d,isFaded:m},r?.mark),`${e}-${c}`))},e)})}))}new Set;const mS=e.createContext(),fS=()=>e.useContext(mS)??!1;function gS(){const[t,n]=e.useState(!1);return e.useEffect(()=>{n(!0)},[]),t}function yS(e){return"number"==typeof e&&!Number.isFinite(e)}function vS(e,t){return Math.abs(12*t.getFullYear()+t.getMonth()-12*e.getFullYear()-e.getMonth())}function bS(e,t){return Math.abs(t.getTime()-e.getTime())/864e5}const xS={years:{getTickNumber:function(e,t){return Math.abs(t.getFullYear()-e.getFullYear())},isTick:(e,t)=>t.getFullYear()!==e.getFullYear(),format:e=>e.getFullYear().toString()},quarterly:{getTickNumber:(e,t)=>Math.floor(vS(e,t)/3),isTick:(e,t)=>t.getMonth()!==e.getMonth()&&t.getMonth()%3==0,format:new Intl.DateTimeFormat("default",{month:"short"}).format},months:{getTickNumber:vS,isTick:(e,t)=>t.getMonth()!==e.getMonth(),format:new Intl.DateTimeFormat("default",{month:"short"}).format},biweekly:{getTickNumber:(e,t)=>bS(e,t)/14,isTick:(e,t)=>(t.getDay()7)&&Math.floor(t.getDate()/7)%2==1,format:new Intl.DateTimeFormat("default",{day:"numeric"}).format},weeks:{getTickNumber:(e,t)=>bS(e,t)/7,isTick:(e,t)=>t.getDay()=7,format:new Intl.DateTimeFormat("default",{day:"numeric"}).format},days:{getTickNumber:bS,isTick:(e,t)=>t.getDate()!==e.getDate(),format:new Intl.DateTimeFormat("default",{day:"numeric"}).format},hours:{getTickNumber:function(e,t){return Math.abs(t.getTime()-e.getTime())/36e5},isTick:(e,t)=>t.getHours()!==e.getHours(),format:new Intl.DateTimeFormat("default",{hour:"2-digit",minute:"2-digit"}).format}},IS={start:0,extremities:0,end:1,middle:.5};function wS(e,t,n){return e(t)-(e.step()-e.bandwidth())/2+IS[n]*e.step()}function kS(t){const{scale:n,tickNumber:r,valueFormatter:i,tickInterval:o,tickPlacement:a="extremities",tickLabelPlacement:s,tickSpacing:l,direction:c,ordinalTimeTicks:u}=t,{instance:d}=$x(),p="x"===c?d.isXInside:d.isYInside;return e.useMemo(()=>function(e){const{scale:t,tickNumber:n,valueFormatter:r,tickInterval:i,tickPlacement:o,tickLabelPlacement:a,tickSpacing:s,isInside:l,ordinalTimeTicks:c}=e;if(void 0!==c&&sa(t.domain())&&fa(t)){const e=t.domain();if(0===e.length||1===e.length)return[];const r="middle",i=function(e,t,n,r,i){if(0===n.length)return[];const o=r.range()[0]>r.range()[1],a=e.findIndex(e=>i(wS(r,e,o?"start":"end"))),s=e.findLastIndex(e=>i(wS(r,e,o?"end":"start"))),l=e[0],c=e[e.length-1];if(!(l instanceof Date&&c instanceof Date))return[];let u=0;for(let e=0;et||t/r"string"==typeof e?xS[e]:e),t,l);return i.map(({index:n,formatter:i})=>{const o=e[n];return{value:o,formattedValue:i(o),offset:wS(t,o,r),labelOffset:0}})}const u=o??"extremities";if(fa(t)){const e=t.domain(),o=a??"middle";let c=e;if("object"==typeof i&&null!=i?c=i:("function"==typeof i&&(c=c.filter(i)),void 0!==s&&s>0&&(c=function(e,t,n){const r=Math.abs(t[1]-t[0]),i=Math.ceil(e.length/(r/n));return Number.isNaN(i)||i<=1?e:e.filter((e,t)=>t%i===0)}(c,t.range(),s))),0===c.length)return[];if(t.bandwidth()>0){const i=t.range()[0]>t.range()[1],a=c.findIndex(e=>l(wS(t,e,i?"start":"end"))),s=c.findLastIndex(e=>l(wS(t,e,i?"end":"start")));return[...c.slice(a,s+1).map(e=>{const i=`${e}`;return{value:e,formattedValue:r?.(e,{location:"tick",scale:t,tickNumber:n,defaultTickLabel:i})??i,offset:wS(t,e,u),labelOffset:"tick"===o?0:t.step()*(IS[o]-IS[u])}}),..."extremities"===u&&s===e.length-1&&l(t.range()[1])?[{formattedValue:void 0,offset:t.range()[1],labelOffset:0}]:[]]}return c.map(e=>{const i=`${e}`;return{value:e,formattedValue:r?.(e,{location:"tick",scale:t,tickNumber:n,defaultTickLabel:i})??i,offset:t(e),labelOffset:0}})}if(t.domain().some(yS))return[];const d=a,p="object"==typeof i?i:function(e,t){const n=e.domain();return n[0]===n[1]?[n[0]]:e.ticks(t)}(t,n),h=[];for(let e=0;e=t)break;return r}:function(e,t){return e.slice(0,t)},ES="…";function TS(e,t){const{width:n,height:r,measureText:i}=t,o=t.angle*(Math.PI/180),a=i(e),s=Math.abs(a.width*Math.cos(o))+Math.abs(a.height*Math.sin(o)),l=Math.abs(a.width*Math.sin(o))+Math.abs(a.height*Math.cos(o));return s<=n&&l<=r}function AS(e,t){if(t(e))return e;let n=e,r=1,i=.5;const o=MS(e);let a=o,s=o,l=null;do{if(s=a,a=Math.floor(o*i),0===a)break;n=PS(e,a).trim(),r+=1,t(n+ES)?(l=n,i+=1/2**r):i-=1/2**r}while(1!==Math.abs(a-s));return l?l+ES:""}function OS(){return"undefined"==typeof window}const jS=new Map,LS=2e3,RS=new Set(["minWidth","maxWidth","width","minHeight","maxHeight","height","top","left","fontSize","padding","margin","paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom"]);function DS(e,t){return RS.has(e)&&t===+t?`${t}px`:t}const $S=/([A-Z])/g;function zS(e){return String(e).replace($S,e=>`-${e.toLowerCase()}`)}function NS(e){let t="";for(const n in e)if(Object.hasOwn(e,n)){const r=n,i=e[r];if(void 0===i)continue;t+=`${zS(r)}:${DS(r,i)};`}return t}const _S=(e,t={})=>{if(null==e||OS())return{width:0,height:0};const n=String(e),r=`${n}-${NS(t)}`,i=jS.get(r);if(i)return i;try{const e=BS(),i=document.createElementNS("http://www.w3.org/2000/svg","text");Object.keys(t).map(e=>(i.style[zS(e)]=DS(e,t[e]),e)),i.textContent=n,e.replaceChildren(i);const o=FS(i);return jS.set(r,o),jS.size+1>LS&&jS.clear(),o}catch{return{width:0,height:0}}};function FS(e){try{const t=e.getBBox();return{width:t.width,height:t.height}}catch{const t=e.getBoundingClientRect();return{width:t.width,height:t.height}}}let HS=null;function BS(){return null===HS&&(HS=document.createElementNS("http://www.w3.org/2000/svg","svg"),HS.setAttribute("aria-hidden","true"),HS.style.position="absolute",HS.style.top="-20000px",HS.style.left="0",HS.style.padding="0",HS.style.margin="0",HS.style.border="none",HS.style.pointerEvents="none",HS.style.visibility="hidden",HS.style.contain="strict",document.body.appendChild(HS)),HS}const VS=5;function US(e){return Xb("MuiChartsAxis",e)}const YS=Zb("MuiChartsAxis",["root","line","tickContainer","tick","tickLabel","label","directionX","directionY","top","bottom","left","right","id"]),WS=e=>{const{classes:t,position:n,id:r}=e;return uI({root:["root","directionX",n,`id-${r}`],line:["line"],tickContainer:["tickContainer"],tick:["tick"],tickLabel:["tickLabel"],label:["label"]},US,t)},GS=3,KS=4,qS={disableLine:!1,disableTicks:!1,tickSize:6,tickLabelMinGap:4},XS=["x","y","style","text","ownerState"],ZS=["angle","textAnchor","dominantBaseline"];function JS(t){const{x:n,y:r,style:i,text:o}=t,a=tt(t,XS),s=i??{},{angle:c,textAnchor:u,dominantBaseline:d}=s,p=tt(s,ZS),h=gS(),m=e.useMemo(()=>function({style:e,needsComputation:t,text:n}){return n.split("\n").map(n=>l({text:n},t?_S(n,e):{width:0,height:0}))}({style:p,needsComputation:h&&o.includes("\n"),text:o}),[p,o,h]);let f;switch(d){case"hanging":case"text-before-edge":f=0;break;case"central":f=(m.length-1)/2*-m[0].height;break;default:f=(m.length-1)*-m[0].height}return(0,O.jsx)("text",l({},a,{transform:c?`rotate(${c}, ${n}, ${r})`:void 0,x:n,y:r,textAnchor:u,dominantBaseline:d,style:p,children:m.map((e,t)=>(0,O.jsx)("tspan",{x:n,dy:`${0===t?f:m[0].height}px`,dominantBaseline:d,children:e.text},t))}))}function QS(e){const t=$b(e);return t<=30||t>=330||t<=210&&t>=150?"middle":t<=180?"end":"start"}function eM(e){const t=$b(e);return t<=30||t>=330?"hanging":t<=210&&t>=150?"auto":"central"}function tM(e){switch(e){case"start":return"end";case"end":return"start";default:return e}}const nM=["scale","tickNumber","reverse"];function rM(e){const{xAxis:t,xAxisIds:n}=_x(),r=t[e.axisId??n[0]],{scale:i,tickNumber:o,reverse:a}=r,s=Lh({props:l({},tt(r,nM),e),name:"MuiChartsXAxis"}),c=l({},qS,s),{position:u,tickLabelStyle:d,slots:p,slotProps:h}=c,m=xm(),f=fS(),g=WS(c),y="bottom"===u?1:-1,v=p?.axisTick??"line",b=p?.axisTickLabel??JS,x=QS(("bottom"===u?0:180)-(d?.angle??0)),I=eM(("bottom"===u?0:180)-(d?.angle??0));return{xScale:i,defaultizedProps:c,tickNumber:o,positionSign:y,classes:g,Tick:v,TickLabel:b,axisTickLabelProps:yI({elementType:b,externalSlotProps:h?.axisTickLabel,additionalProps:{style:l({},m.typography.caption,{fontSize:12,lineHeight:1.25,textAnchor:f?tM(x):x,dominantBaseline:I},d)},className:g.tickLabel,ownerState:{}}),reverse:a}}function iM(t){const{axisLabelHeight:n,ordinalTimeTicks:r}=t,{xScale:i,defaultizedProps:o,tickNumber:a,positionSign:s,classes:c,Tick:u,TickLabel:d,axisTickLabelProps:p,reverse:h}=rM(t),m=fS(),f=function(t=!1){const[n,r]=e.useState(!1);return V(()=>{t||r(!0)},[t]),e.useEffect(()=>{t&&r(!0)},[t]),n}(),{disableTicks:g,tickSize:y,valueFormatter:v,slotProps:b,tickInterval:x,tickLabelInterval:I,tickPlacement:w,tickLabelPlacement:k,tickLabelMinGap:S,tickSpacing:M,height:C}=o,P=Nx(),{instance:E}=$x(),T=gS(),A=g?4:y,j=kS({scale:i,tickNumber:a,valueFormatter:v,tickInterval:x,tickPlacement:w,tickLabelPlacement:k,tickSpacing:M,direction:"x",ordinalTimeTicks:r}),L=function(e,{tickLabelStyle:t,tickLabelInterval:n,tickLabelMinGap:r,reverse:i,isMounted:o,isXInside:a}){if("function"==typeof n)return new Set(e.filter((e,t)=>n(e.value,t)));let s=0;const c=i?-1:1,u=e.filter(e=>{const{offset:t,labelOffset:n,formattedValue:r}=e;return""!==r&&a(t+n)}),d=function(e,t){const n=new Set;for(const t of e)t.formattedValue&&t.formattedValue.split("\n").forEach(e=>n.add(e));return function(e,t={}){if(OS())return new Map(Array.from(e).map(e=>[e,{width:0,height:0}]));const n=new Map,r=[],i=NS(t);for(const t of e){const e=`${t}-${i}`,o=jS.get(e);o?n.set(t,o):r.push(t)}const o=BS(),a=l({},t);Object.keys(a).map(e=>(o.style[zS(e)]=DS(e,a[e]),e));const s=[];for(const e of r){const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.textContent=`${e}`,s.push(t)}o.replaceChildren(...s);for(let e=0;eLS&&jS.clear(),n}(n,t)}(u,t);return new Set(u.filter((e,n)=>{const{offset:i,labelOffset:a}=e,l=i+a;if(n>0&&c*l90-VS)return t;const i=Ql(r);return i0&&c*(l-c*h/2)0?n+KS:0)-A-GS),D=T?function(e,t,n,r,i){const o=new Map,a=$b(i?.angle??0);let s=1,l=1;"start"===i?.textAnchor?(s=1/0,l=1):"end"===i?.textAnchor?(s=1,l=1/0):(s=2,l=2),a>90&&a<270&&([s,l]=[l,s]),r&&([s,l]=[l,s]);for(const r of e)if(r.formattedValue){const e=Math.min((r.offset+r.labelOffset)*s,(t.left+t.width+t.right-r.offset-r.labelOffset)*l),c=t=>TS(t,{width:e,height:n,angle:a,measureText:e=>_S(e,i)});o.set(r,AS(r.formattedValue.toString(),c))}return o}(L,P,R,m,p.style):new Map(Array.from(L).map(e=>[e,e.formattedValue]));return(0,O.jsx)(e.Fragment,{children:j.map((e,t)=>{const{offset:n,labelOffset:r}=e,i=r??0,o=s*(A+GS),a=E.isXInside(n),h=D.get(e),m=L.has(e);return(0,O.jsxs)("g",{transform:`translate(${n}, 0)`,className:c.tickContainer,children:[!g&&a&&(0,O.jsx)(u,l({y2:s*A,className:c.tick},b?.axisTick)),void 0!==h&&m&&(0,O.jsx)(d,l({x:i,y:o},p,{text:h}))]},t)})})}const oM={start:0,extremities:0,end:1,middle:.5,tick:0};function aM(t){const{scale:n,tickInterval:r,tickLabelPlacement:i="middle",tickPlacement:o="extremities",groups:a}=t;return e.useMemo(()=>{const e=n.domain(),t="function"==typeof r&&e.filter(r)||"object"==typeof r&&r||e;if(n.bandwidth()>0){const e=sM(t,a,o,i,n);return e[0]&&(e[0].ignoreTick=!0),[{formattedValue:void 0,offset:n.range()[0],labelOffset:0,groupIndex:a.length-1},...e,{formattedValue:void 0,offset:n.range()[1],labelOffset:0,groupIndex:a.length-1}]}return sM(t,a,o,i,n)},[n,r,a,o,i])}function sM(e,t,n,r,i){const o=[],a=new Map;let s=0;for(let l=0;l{const r=e[t]??{},i=n??lM.tickSize,o=i*t*2+i;return l({},lM,r,{tickSize:r.tickSize??o})};function uM(t){const{xScale:n,defaultizedProps:r,tickNumber:i,positionSign:o,classes:a,Tick:s,TickLabel:c,axisTickLabelProps:u}=rM(t);if(!fa(n))throw new Error("MUI X Charts: ChartsGroupedXAxis only supports the `band` and `point` scale types.");const{disableTicks:d,tickSize:p,valueFormatter:h,slotProps:m,tickInterval:f,tickPlacement:g,tickLabelPlacement:y}=r,v=r.groups,{instance:b}=$x(),x=aM({scale:n,tickNumber:i,valueFormatter:h,tickInterval:f,tickPlacement:g,tickLabelPlacement:y,direction:"x",groups:v});return(0,O.jsx)(e.Fragment,{children:x.map((e,t)=>{const{offset:n,labelOffset:r}=e,i=r??0,h=b.isXInside(n),f=e.formattedValue,g=e.ignoreTick??!1,y=e.groupIndex??0,x=cM(v,y,p),I=o*x.tickSize,w=o*(x.tickSize+GS);return(0,O.jsxs)("g",{transform:`translate(${n}, 0)`,className:a.tickContainer,"data-group-index":y,children:[!d&&!g&&h&&(0,O.jsx)(s,l({y2:I,className:a.tick},m?.axisTick)),void 0!==f&&(0,O.jsx)(c,l({x:i,y:w},u,{style:l({},u.style,x.tickLabelStyle),text:f}))]},t)})})}const dM=bm("g",{name:"MuiChartsAxis",slot:"Root"})(({theme:e})=>({[`& .${YS.tickLabel}`]:l({},e.typography.caption,{fill:(e.vars||e).palette.text.primary}),[`& .${YS.label}`]:{fill:(e.vars||e).palette.text.primary},[`& .${YS.line}`]:{stroke:(e.vars||e).palette.text.primary,shapeRendering:"crispEdges",strokeWidth:1},[`& .${YS.tick}`]:{stroke:(e.vars||e).palette.text.primary,shapeRendering:"crispEdges"}})),pM=["axis"],hM=["scale","tickNumber","reverse","ordinalTimeTicks"],mM=bm(dM,{name:"MuiChartsXAxis",slot:"Root"})({});function fM(e){let{axis:t}=e,n=tt(e,pM);const{scale:r,ordinalTimeTicks:i}=t,o=Lh({props:l({},tt(t,hM),n),name:"MuiChartsXAxis"}),a=l({},qS,o),{position:s,labelStyle:c,offset:u,slots:d,slotProps:p,sx:h,disableLine:m,label:f,height:g}=a,y=xm(),v=WS(a),{left:b,top:x,width:I,height:w}=Nx(),k="bottom"===s?1:-1,S=d?.axisLine??"line",M=d?.axisLabel??JS,C=yI({elementType:M,externalSlotProps:p?.axisLabel,additionalProps:{style:l({},y.typography.body1,{lineHeight:1,fontSize:14,textAnchor:"middle",dominantBaseline:"bottom"===s?"text-after-edge":"text-before-edge"},c)},ownerState:{}});if("none"===s)return null;const P=f?_S(f,C.style).height:0,E=r.domain();let T=null;(fa(r)?0===E.length:E.some(yS))||(T="groups"in t&&Array.isArray(t.groups)?(0,O.jsx)(uM,l({},n)):(0,O.jsx)(iM,l({},n,{axisLabelHeight:P,ordinalTimeTicks:i})));const A={x:b+I/2,y:k*g};return(0,O.jsxs)(mM,{transform:`translate(0, ${"bottom"===s?x+w+u:x-u})`,className:v.root,sx:h,children:[!m&&(0,O.jsx)(S,l({x1:b,x2:b+I,className:v.line},p?.axisLine)),T,f&&(0,O.jsx)("g",{className:v.label,children:(0,O.jsx)(M,l({},A,C,{text:f}))})]})}function gM(e){const{xAxis:t,xAxisIds:n}=_x(),r=t[e.axisId??n[0]];return r?(0,O.jsx)(fM,l({},e,{axis:r})):(e.axisId,null)}const yM=e=>{const{classes:t,position:n,id:r}=e;return uI({root:["root","directionY",n,`id-${r}`],line:["line"],tickContainer:["tickContainer"],tick:["tick"],tickLabel:["tickLabel"],label:["label"]},US,t)},vM=2,bM=2,xM={disableLine:!1,disableTicks:!1,tickSize:6},IM=["scale","tickNumber","reverse"];function wM(e){const{yAxis:t,yAxisIds:n}=Fx(),r=t[e.axisId??n[0]],{scale:i,tickNumber:o}=r,a=Lh({props:l({},tt(r,IM),e),name:"MuiChartsYAxis"}),s=l({},xM,a),{position:c,tickLabelStyle:u,slots:d,slotProps:p}=s,h=xm(),m=fS(),f=yM(s),g="right"===c?1:-1,y="number"==typeof u?.fontSize?u.fontSize:12,v=d?.axisTick??"line",b=d?.axisTickLabel??JS,x=QS(("right"===c?-90:90)-(u?.angle??0)),I=eM(("right"===c?-90:90)-(u?.angle??0));return{yScale:i,defaultizedProps:s,tickNumber:o,positionSign:g,classes:f,Tick:v,TickLabel:b,axisTickLabelProps:yI({elementType:b,externalSlotProps:p?.axisTickLabel,additionalProps:{style:l({},h.typography.caption,{fontSize:y,textAnchor:m?tM(x):x,dominantBaseline:I},u)},className:f.tickLabel,ownerState:{}})}}function kM(t){const{axisLabelHeight:n,ordinalTimeTicks:r}=t,{yScale:i,defaultizedProps:o,tickNumber:a,positionSign:s,classes:c,Tick:u,TickLabel:d,axisTickLabelProps:p}=wM(t),h=fS(),{disableTicks:m,tickSize:f,valueFormatter:g,slotProps:y,tickPlacement:v,tickLabelPlacement:b,tickInterval:x,tickLabelInterval:I,tickSpacing:w,width:k}=o,S=Nx(),{instance:M}=$x(),C=gS(),P=m?4:f,E=kS({scale:i,tickNumber:a,valueFormatter:g,tickPlacement:v,tickLabelPlacement:b,tickInterval:x,tickSpacing:w,direction:"y",ordinalTimeTicks:r}),T=Math.max(0,k-(n>0?n+bM:0)-P-vM),A=C?function(e,t,n,r,i){const o=new Map,a=$b(i?.angle??0);let s=1,l=1;"start"===i?.textAnchor?(s=1/0,l=1):"end"===i?.textAnchor?(s=1,l=1/0):(s=2,l=2),a>180&&([s,l]=[l,s]),r&&([s,l]=[l,s]);for(const r of e)if(r.formattedValue){const e=Math.min((r.offset+r.labelOffset)*s,(t.top+t.height+t.bottom-r.offset-r.labelOffset)*l),c=t=>TS(t,{width:n,height:e,angle:a,measureText:e=>_S(e,i)});o.set(r,AS(r.formattedValue.toString(),c))}return o}(E,S,T,h,p.style):new Map(Array.from(E).map(e=>[e,e.formattedValue]));return(0,O.jsx)(e.Fragment,{children:E.map((e,t)=>{const{offset:n,labelOffset:r,value:i}=e,o=s*(P+vM),a=r,h="function"==typeof I&&!I?.(i,t),f=M.isYInside(n),g=A.get(e);return f?(0,O.jsxs)("g",{transform:`translate(0, ${n})`,className:c.tickContainer,children:[!m&&(0,O.jsx)(u,l({x2:s*P,className:c.tick},y?.axisTick)),void 0!==g&&!h&&(0,O.jsx)(d,l({x:o,y:a,text:g},p))]},t):null})})}const SM={tickSize:6},MM=(e,t,n)=>{const r=e[t]??{},i=n??SM.tickSize,o=i*t*2+i;return l({},SM,r,{tickSize:r.tickSize??o})};function CM(t){const{yScale:n,defaultizedProps:r,tickNumber:i,positionSign:o,classes:a,Tick:s,TickLabel:c,axisTickLabelProps:u}=wM(t);if(!fa(n))throw new Error("MUI X Charts: ChartsGroupedYAxis only supports the `band` and `point` scale types.");const{disableTicks:d,tickSize:p,valueFormatter:h,slotProps:m,tickInterval:f,tickPlacement:g,tickLabelPlacement:y}=r,v=r.groups,{instance:b}=$x(),x=aM({scale:n,tickNumber:i,valueFormatter:h,tickInterval:f,tickPlacement:g,tickLabelPlacement:y,direction:"y",groups:v});return(0,O.jsx)(e.Fragment,{children:x.map((e,t)=>{const{offset:n,labelOffset:r}=e,i=r??0,h=b.isYInside(n),f=e.formattedValue,g=e.ignoreTick??!1,y=e.groupIndex??0,x=MM(v,y,p),I=o*x.tickSize,w=o*(x.tickSize+vM);return(0,O.jsxs)("g",{transform:`translate(0, ${n})`,className:a.tickContainer,"data-group-index":y,children:[!d&&!g&&h&&(0,O.jsx)(s,l({x2:I,className:a.tick},m?.axisTick)),void 0!==f&&(0,O.jsx)(c,l({x:w,y:i},u,{style:l({},u.style,x.tickLabelStyle),text:f}))]},t)})})}const PM=["axis"],EM=["scale","tickNumber","reverse","ordinalTimeTicks"],TM=bm(dM,{name:"MuiChartsYAxis",slot:"Root"})({});function AM(e){let{axis:t}=e,n=tt(e,PM);const{scale:r,ordinalTimeTicks:i}=t,o=tt(t,EM),a=gS(),s=Lh({props:l({},o,n),name:"MuiChartsYAxis"}),c=l({},xM,s),{position:u,disableLine:d,label:p,labelStyle:h,offset:m,width:f,sx:g,slots:y,slotProps:v}=c,b=xm(),x=yM(c),{left:I,top:w,width:k,height:S}=Nx(),M="right"===u?1:-1,C=y?.axisLine??"line",P=y?.axisLabel??JS,E=yI({elementType:C,externalSlotProps:v?.axisLine,additionalProps:{strokeLinecap:"square"},ownerState:{}}),T=yI({elementType:P,externalSlotProps:v?.axisLabel,additionalProps:{style:l({},b.typography.body1,{lineHeight:1,fontSize:14,angle:90*M,textAnchor:"middle",dominantBaseline:"text-before-edge"},h)},ownerState:{}});if("none"===u)return null;const A={x:M*f,y:w+S/2},j=null==p?0:_S(p,T.style).height,L=r.domain();let R=null;return(fa(r)?0===L.length:L.some(yS))||(R="groups"in t&&Array.isArray(t.groups)?(0,O.jsx)(CM,l({},n)):(0,O.jsx)(kM,l({},n,{axisLabelHeight:j,ordinalTimeTicks:i}))),(0,O.jsxs)(TM,{transform:`translate(${"right"===u?I+k+m:I-m}, 0)`,className:x.root,sx:g,children:[!d&&(0,O.jsx)(C,l({y1:w,y2:w+S,className:x.line},E)),R,p&&a&&(0,O.jsx)("g",{className:x.label,children:(0,O.jsx)(P,l({},A,T,{text:p}))})]})}function OM(e){const{yAxis:t,yAxisIds:n}=Fx(),r=t[e.axisId??n[0]];return r?(0,O.jsx)(AM,l({},e,{axis:r})):(e.axisId,null)}function jM(e){return Xb("MuiChartsGrid",e)}const LM=Zb("MuiChartsGrid",["root","line","horizontalLine","verticalLine"]),RM=bm("g",{name:"MuiChartsGrid",slot:"Root",overridesResolver:(e,t)=>[{[`&.${LM.verticalLine}`]:t.verticalLine},{[`&.${LM.horizontalLine}`]:t.horizontalLine},t.root]})({}),DM=bm("line",{name:"MuiChartsGrid",slot:"Line"})(({theme:e})=>({stroke:(e.vars||e).palette.divider,shapeRendering:"crispEdges",strokeWidth:1}));function $M(t){const{instance:n}=$x(),{axis:r,start:i,end:o,classes:a}=t,{scale:s,tickNumber:l,tickInterval:c,tickSpacing:u}=r,d=kS({scale:s,tickNumber:l,tickInterval:c,tickSpacing:u,direction:"x",ordinalTimeTicks:"ordinalTimeTicks"in r?r.ordinalTimeTicks:void 0});return(0,O.jsx)(e.Fragment,{children:d.map(({value:e,offset:t})=>n.isXInside(t)?(0,O.jsx)(DM,{y1:i,y2:o,x1:t,x2:t,className:a.verticalLine},`vertical-${e?.getTime?.()??e}`):null)})}function zM(t){const{instance:n}=$x(),{axis:r,start:i,end:o,classes:a}=t,{scale:s,tickNumber:l,tickInterval:c,tickSpacing:u}=r,d=kS({scale:s,tickNumber:l,tickInterval:c,tickSpacing:u,direction:"y",ordinalTimeTicks:"ordinalTimeTicks"in r?r.ordinalTimeTicks:void 0});return(0,O.jsx)(e.Fragment,{children:d.map(({value:e,offset:t})=>n.isYInside(t)?(0,O.jsx)(DM,{y1:t,y2:t,x1:i,x2:o,className:a.horizontalLine},`horizontal-${e?.getTime?.()??e}`):null)})}const NM=["vertical","horizontal"],_M=({classes:e})=>uI({root:["root"],verticalLine:["line","verticalLine"],horizontalLine:["line","horizontalLine"]},jM,e);function FM(e){const t=Lh({props:e,name:"MuiChartsGrid"}),n=Nx(),{vertical:r,horizontal:i}=t,o=tt(t,NM),{xAxis:a,xAxisIds:s}=_x(),{yAxis:c,yAxisIds:u}=Fx(),d=_M(t),p=c[u[0]],h=a[s[0]];return(0,O.jsxs)(RM,l({},o,{className:d.root,children:[r&&(0,O.jsx)($M,{axis:h,start:n.top,end:n.height+n.top,classes:d}),i&&(0,O.jsx)(zM,{axis:p,start:n.left,end:n.width+n.left,classes:d})]}))}function HM(e){return Xb("MuiChartsTooltip",e)}const BM=Zb("MuiChartsTooltip",["root","paper","table","row","cell","mark","markContainer","labelCell","valueCell","axisValueCell"]),VM=e=>uI({root:["root"],paper:["paper"],table:["table"],row:["row"],cell:["cell"],mark:["mark"],markContainer:["markContainer"],labelCell:["labelCell"],valueCell:["valueCell"],axisValueCell:["axisValueCell"]},HM,e);function UM(){return zx().use(ft)}const YM=ae(e=>e.tooltip,e=>e?.item??null),WM=ae(YM,e=>null!==e),GM=ae(Cs,YM,cI,(e,t,n)=>"keyboard"===e?n:t??null),KM=ae(Cs,WM,rI,(e,t,n)=>"keyboard"===e?n:t),qM=le(GM,ls,cs,jb,Lb,ft,function(e,{axis:t,axisIds:n},{axis:r,axisIds:i},o,a,s){if(!e)return{};const l=s[e.type]?.series[e.seriesId];if(!l)return{};const c={rotationAxes:o,radiusAxes:a},u=ma(l)?l.xAxisId??n[0]:void 0,d=ma(l)?l.yAxisId??i[0]:void 0;return void 0!==u&&(c.x=t[u]),void 0!==d&&(c.y=r[d]),c}),XM=le(GM,he,ht,ft,gt,qM,function(e,t,n,r,i,o,a="top"){if(!e)return null;const s=r[e.type]?.series[e.seriesId];return s?n[s.type].tooltipItemPositionGetter?.({series:r,seriesLayout:i,drawingArea:t,axesConfig:o,identifier:e,placement:a})??null:null});function ZM(){const e=zx(),t=e.use(GM),n=e.use(ht),r=UM(),{xAxis:i,xAxisIds:o}=_x(),{yAxis:a,yAxisIds:s}=Fx(),{zAxis:l,zAxisIds:c}=Kx(),{rotationAxis:u,rotationAxisIds:d}=Vx();if(!t)return null;const p=r[t.type]?.series[t.seriesId];if(!p)return null;const h=ma(p)?p.xAxisId??o[0]:void 0,m=ma(p)?p.yAxisId??s[0]:void 0,f="zAxisId"in p?p.zAxisId??c[0]:c[0],g=d[0],y=n[p.type].colorProcessor?.(p,void 0!==h?i[h]:void 0,void 0!==m?a[m]:void 0,void 0!==f?l[f]:void 0)??(()=>""),v={};return void 0!==h&&(v.x=i[h]),void 0!==m&&(v.y=a[m]),void 0!==g&&(v.rotation=u[g]),n[p.type].tooltipGetter({series:p,axesConfig:v,getColor:y,identifier:t})}const JM=bm("div",{name:"MuiChartsTooltip",slot:"Container",overridesResolver:(e,t)=>t.paper})(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,borderRadius:(e.vars||e).shape?.borderRadius,border:`solid ${(e.vars||e).palette.divider} 1px`})),QM=bm("table",{name:"MuiChartsTooltip",slot:"Table"})(({theme:e})=>({borderSpacing:0,[`& .${BM.markContainer}`]:{display:"inline-block",width:`calc(20px + ${e.spacing(1.5)})`,verticalAlign:"middle"},"& caption":{borderBottom:`solid ${(e.vars||e).palette.divider} 1px`,padding:e.spacing(.5,1.5),textAlign:"start",whiteSpace:"nowrap","& span":{marginRight:e.spacing(1.5)}}})),eC=bm("tr",{name:"MuiChartsTooltip",slot:"Row"})(({theme:e})=>({"tr:first-of-type& td":{paddingTop:e.spacing(.5)},"tr:last-of-type& td":{paddingBottom:e.spacing(.5)}})),tC=bm(Nv,{name:"MuiChartsTooltip",slot:"Cell"})(({theme:e})=>({verticalAlign:"middle",color:(e.vars||e).palette.text.secondary,textAlign:"start",[`&.${BM.cell}`]:{paddingLeft:e.spacing(1),paddingRight:e.spacing(1)},[`&.${BM.labelCell}`]:{whiteSpace:"nowrap",fontWeight:e.typography.fontWeightRegular},[`&.${BM.valueCell}, &.${BM.axisValueCell}`]:{color:(e.vars||e).palette.text.primary,fontWeight:e.typography.fontWeightMedium},[`&.${BM.valueCell}`]:{paddingLeft:e.spacing(1.5),paddingRight:e.spacing(1.5)},"td:first-of-type&, th:first-of-type&":{paddingLeft:e.spacing(1.5)},"td:last-of-type&, th:last-of-type&":{paddingRight:e.spacing(1.5)}}));function nC(e){return Xb("MuiChartsLabelMark",e)}const rC=Zb("MuiChartsLabelMark",["root","line","square","circle","mask","fill"]);function iC(e,t,n=!1){const r={...t};for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)){const o=i;if("components"===o||"slots"===o)r[o]={...e[o],...r[o]};else if("componentsProps"===o||"slotProps"===o){const i=e[o],a=t[o];if(a)if(i){r[o]={...a};for(const e in i)if(Object.prototype.hasOwnProperty.call(i,e)){const t=e;r[o][t]=iC(i[t],a[t],n)}}else r[o]=a;else r[o]=i||{}}else"className"===o&&n&&t.className?r.className=Hh(e?.className,t?.className):"style"===o&&n&&t.style?r.style={...e?.style,...t?.style}:void 0===r[o]&&(r[o]=e[o])}return r}const oC=(t,n,r)=>e.forwardRef(function(i,o){const a=Lh({props:i,name:t}),s=iC("function"==typeof n.defaultProps?n.defaultProps(a):n.defaultProps??{},a),c=xm(),u=n.classesResolver?.(s,c),d=e.forwardRef(r);return(0,O.jsx)(d,l({},s,{classes:u,ref:o}))}),aC=["type","color","className","classes"],sC=bm("div",{name:"MuiChartsLabelMark",slot:"Root"})(()=>({display:"flex",width:14,height:14,[`&.${rC.line}`]:{width:16,height:"unset",alignItems:"center",[`.${rC.mask}`]:{height:4,width:"100%",borderRadius:1,overflow:"hidden"}},[`&.${rC.square}`]:{height:13,width:13,borderRadius:2,overflow:"hidden"},[`&.${rC.circle}`]:{height:15,width:15},svg:{display:"block"},[`& .${rC.mask} > *`]:{height:"100%",width:"100%"},[`& .${rC.mask}`]:{height:"100%",width:"100%"}})),lC=oC("MuiChartsLabelMark",{defaultProps:{type:"square"},classesResolver:e=>{const{type:t}=e;return uI({root:"function"==typeof t?["root"]:["root",t],mask:["mask"],fill:["fill"]},nC,e.classes)}},function(e,t){const{type:n,color:r,className:i,classes:o}=e,a=tt(e,aC),s=n;return(0,O.jsx)(sC,l({className:Hh(o?.root,i),ownerState:e,"aria-hidden":"true",ref:t},a,{children:(0,O.jsx)("div",{className:o?.mask,children:"function"==typeof s?(0,O.jsx)(s,{className:o?.fill,color:r}):(0,O.jsx)("svg",{viewBox:"0 0 24 24",preserveAspectRatio:"line"===n?"none":void 0,children:"circle"===n?(0,O.jsx)("circle",{className:o?.fill,r:"12",cx:"12",cy:"12",fill:r}):(0,O.jsx)("rect",{className:o?.fill,width:"24",height:"24",fill:r})})})}))});function cC(e){const{classes:t,sx:n}=e,r=ZM(),i=VM(t);if(!r)return null;if("values"in r){const{label:e,color:t,markType:o}=r;return(0,O.jsx)(JM,{sx:n,className:i.paper,children:(0,O.jsxs)(QM,{className:i.table,children:[(0,O.jsxs)(Nv,{component:"caption",children:[(0,O.jsx)("div",{className:i.markContainer,children:(0,O.jsx)(lC,{type:o,color:t,className:i.mark})}),e]}),(0,O.jsx)("tbody",{children:r.values.map(({formattedValue:e,label:t})=>(0,O.jsxs)(eC,{className:i.row,children:[(0,O.jsx)(tC,{className:Hh(i.labelCell,i.cell),component:"th",children:t}),(0,O.jsx)(tC,{className:Hh(i.valueCell,i.cell),component:"td",children:e})]},t))})]})})}const{color:o,label:a,formattedValue:s,markType:l}=r;return(0,O.jsx)(JM,{sx:n,className:i.paper,children:(0,O.jsx)(QM,{className:i.table,children:(0,O.jsx)("tbody",{children:(0,O.jsxs)(eC,{className:i.row,children:[(0,O.jsxs)(tC,{className:Hh(i.labelCell,i.cell),component:"th",children:[(0,O.jsx)("div",{className:i.markContainer,children:(0,O.jsx)(lC,{type:l,color:o,className:i.mark})}),a]}),(0,O.jsx)(tC,{className:Hh(i.valueCell,i.cell),component:"td",children:s})]})})})})}function uC(t,n,r,i,o){const[a,s]=e.useState(()=>o&&r?r(t).matches:i?i(t).matches:n);return qm(()=>{if(!r)return;const e=r(t),n=()=>{s(e.matches)};return n(),e.addEventListener("change",n),()=>{e.removeEventListener("change",n)}},[t,r]),a}const dC={...e}.useSyncExternalStore;function pC(t,n,r,i,o){const a=e.useCallback(()=>n,[n]),s=e.useMemo(()=>{if(o&&r)return()=>r(t).matches;if(null!==i){const{matches:e}=i(t);return()=>e}return a},[a,t,i,o,r]),[l,c]=e.useMemo(()=>{if(null===r)return[a,()=>()=>{}];const e=r(t);return[()=>e.matches,t=>(e.addEventListener("change",t),()=>{e.removeEventListener("change",t)})]},[a,r,t]);return dC(c,l,s)}function hC(e={}){const{themeId:t}=e;return function(e,n={}){let r=qd();r&&t&&(r=r[t]||r);const i="undefined"!=typeof window&&void 0!==window.matchMedia,{defaultMatches:o=!1,matchMedia:a=(i?window.matchMedia:null),ssrMatchMedia:s=null,noSsr:l=!1}=uc({name:"MuiUseMediaQuery",props:n,theme:r});let c="function"==typeof e?e(r):e;return c=c.replace(/^@media( ?)/m,""),c.includes("print")&&console.warn(["MUI: You have provided a `print` query to the `useMediaQuery` hook.","Using the print media query to modify print styles can lead to unexpected results.","Consider using the `displayPrint` field in the `sx` prop instead.","More information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."].join("\n")),(void 0!==dC?pC:uC)(c,o,a,s,l)}}hC();const mC=hC({themeId:jh}),fC=()=>mC("@media (pointer: fine)",{defaultMatches:!0}),gC=(e,t)=>t,yC=(e,t)=>t;function vC(e,t,n){return Array.isArray(n)?n.map(n=>Nb(t.axis[n],e)):Nb(t.axis[n],e)}const bC=ae(Ss,Ms,Rb,(e,t,n)=>null===e||null===t?null:Db(n)(e,t)),xC=ae(bC,jb,gC,(e,t,n=t.axisIds[0])=>null===e?null:vC(e,t,n)),IC=ae(bC,jb,yC,(e,t,n=t.axisIds)=>null===e?null:vC(e,t,n)),wC=(ae(jb,xC,gC,(e,t,n=e.axisIds[0])=>{if(null===t||-1===t||0===e.axisIds.length)return null;const r=e.axis[n]?.data;return r?r[t]:null}),ae(jb,IC,yC,(e,t,n=e.axisIds)=>null===t?null:n.map((n,r)=>{const i=t[r];return-1===i?null:e.axis[n].data?.[i]})),se({memoizeOptions:{resultEqualityCheck:Ps}})(IC,jb,(e,t)=>null===e?[]:t.axisIds.map((t,n)=>({axisId:t,dataIndex:e[n]})).filter(({axisId:e,dataIndex:n})=>t.axis[e].triggerTooltip&&n>=0))),kC=ae(wC,e=>e.length>0);function SC(e,t,n){const r=e.data?.[t]??null,i=(e.valueFormatter??(t=>"utc"===e.scaleType?function(e){return e instanceof Date?e.toUTCString():e.toLocaleString()}(t):t.toLocaleString()))(r,{location:"tooltip",scale:e.scale});return{axisDirection:n,axisId:e.id,mainAxis:e,dataIndex:t,axisValue:r,axisFormattedValue:i,seriesItems:[]}}function MC(t){return function(t={}){const{multipleAxes:n,directions:r}=t,i=Hx(),o=Bx(),a=function(){const e=zx(),{axis:t,axisIds:n}=e.use(jb);return t[n[0]]}(),s=zx(),l=s.use(zs),c=s.use(Ns),u=s.use(wC),d=UM(),{xAxis:p}=_x(),{yAxis:h}=Fx(),{zAxis:m,zAxisIds:f}=Kx(),{rotationAxis:g}=Vx(),y=function(){const t=zx().use(ht);return e.useMemo(()=>{const e={};return Object.keys(t).forEach(n=>{e[n]=t[n].colorProcessor}),e},[t])}();if(0===l.length&&0===c.length&&0===u.length)return null;const v=[];return(void 0===r||r.includes("x"))&&l.forEach(({axisId:e,dataIndex:t})=>{!n&&v.length>1||v.push(SC(p[e],t,"x"))}),(void 0===r||r.includes("y"))&&c.forEach(({axisId:e,dataIndex:t})=>{!n&&v.length>1||v.push(SC(h[e],t,"y"))}),(void 0===r||r.includes("rotation"))&&u.forEach(({axisId:e,dataIndex:t})=>{!n&&v.length>1||v.push(SC(g[e],t,"rotation"))}),Object.keys(d).filter(ha).forEach(e=>{const t=d[e];return t?t.seriesOrder.forEach(n=>{const r=t.series[n],a=r.xAxisId??i.id,s=r.yAxisId??o.id,l=v.findIndex(({axisDirection:e,axisId:t})=>"x"===e&&t===a||"y"===e&&t===s);if(l>=0){const t="zAxisId"in r?r.zAxisId:f[0],{dataIndex:i}=v[l],o=y[e]?.(r,p[a],h[s],t?m[t]:void 0)(i)??"",c=r.data[i]??null,u=r.valueFormatter(c,{dataIndex:i}),d=yl(r.label,"tooltip")??null;v[l].seriesItems.push({seriesId:n,color:o,value:c,formattedValue:u,formattedLabel:d,markType:r.labelMarkType})}}):[]}),Object.keys(d).filter(Pb).forEach(e=>{const t=d[e];return t?t.seriesOrder.forEach(n=>{const r=t.series[n],i=r.rotationAxisId??a?.id,o=v.findIndex(({axisDirection:e,axisId:t})=>"rotation"===e&&t===i);if(o>=0){const{dataIndex:t}=v[o],i=y[e]?.(r)(t)??"",a=r.data[t]??null,s=r.valueFormatter(a,{dataIndex:t}),l=yl(r.label,"tooltip")??null;v[o].seriesItems.push({seriesId:n,color:i,value:a,formattedValue:s,formattedLabel:l,markType:r.labelMarkType})}}):[]}),n?v:0===v.length?v[0]:null}(l({},t,{multipleAxes:!0}))}function CC(e){const t=VM(e.classes),n=MC();return null===n?null:(0,O.jsx)(JM,{sx:e.sx,className:t.paper,children:n.map(({axisId:e,mainAxis:n,axisValue:r,axisFormattedValue:i,seriesItems:o})=>(0,O.jsxs)(QM,{className:t.table,children:[null!=r&&!n.hideTooltip&&(0,O.jsx)(Nv,{component:"caption",children:i}),(0,O.jsx)("tbody",{children:o.map(({seriesId:e,color:n,formattedValue:r,formattedLabel:i,markType:o})=>null==r?null:(0,O.jsxs)(eC,{className:t.row,children:[(0,O.jsxs)(tC,{className:Hh(t.labelCell,t.cell),component:"th",children:[(0,O.jsx)("div",{className:t.markContainer,children:(0,O.jsx)(lC,{type:o,color:n,className:t.mark})}),i||null]}),(0,O.jsx)(tC,{className:Hh(t.valueCell,t.cell),component:"td",children:r})]},e))})]},e))})}const PC=function(t){const{children:n,defer:r=!1,fallback:i=null}=t,[o,a]=e.useState(!1);return qm(()=>{r||a(!0)},[r]),e.useEffect(()=>{r&&a(!0)},[r]),o?n:i},EC=["trigger","position","anchor","classes","children"],TC=()=>!1,AC=()=>null,OC=bm(Tg,{name:"MuiChartsTooltip",slot:"Root"})(({theme:e})=>({pointerEvents:"none",zIndex:e.zIndex.modal}));function jC(t){const n=Lh({props:t,name:"MuiChartsTooltipContainer"}),{trigger:r="axis",position:i,anchor:o="pointer",classes:a,children:s}=n,c=tt(n,EC),u=eI(),d=e.useRef(null),p=VM(a),h=function(){const t=eI(),[n,r]=e.useState(null);return e.useEffect(()=>{const e=t.current;if(null===e)return()=>{};const n=e=>{"mouse"!==e.pointerType&&r(null)},i=e=>{r({pointerType:e.pointerType})};return e.addEventListener("pointerenter",i),e.addEventListener("pointerup",n),()=>{e.removeEventListener("pointerenter",i),e.removeEventListener("pointerup",n)}},[t]),n}(),m=fC(),f=e.useRef(null),g=st(()=>({x:0,y:0})),y=function(){const e=zx(),t=e.use(Ab),n=e.use(ce);return void 0!==t?"polar":void 0!==n?"cartesian":"none"}(),v=zx(),b=v.use(Sb),x=v.use(function(e,t,n){return n?TC:"item"===e?KM:"polar"===t?kC:"cartesian"===t?_s:TC}(r,y,b)),I="keyboard"===v.use(Cs)?"node":o,w=v.use("item"===r&&"node"===I?XM:AC,i);e.useEffect(()=>{const e=u.current;if(null===e)return()=>{};if(null!==w)return;const t=function(){let e,t;const n=()=>{t=null,((e,t)=>{g.current={x:e,y:t},f.current?.update()})(...e)};function r(...r){e=r,t||(t=requestAnimationFrame(n))}return r.clear=()=>{t&&(cancelAnimationFrame(t),t=null)},r}(),n=e=>{t(e.clientX,e.clientY)};return e.addEventListener("pointerdown",n),e.addEventListener("pointermove",n),e.addEventListener("pointerenter",n),()=>{e.removeEventListener("pointerdown",n),e.removeEventListener("pointermove",n),e.removeEventListener("pointerenter",n),t.clear()}},[u,g,w]);const k=e.useMemo(()=>({getBoundingClientRect:()=>({x:g.current.x,y:g.current.y,top:g.current.y,left:g.current.x,right:g.current.x,bottom:g.current.y,width:0,height:0,toJSON:()=>""})}),[g]),S="mouse"===h?.pointerType||m,M="touch"===h?.pointerType||!m,C=e.useMemo(()=>[{name:"offset",options:{offset:()=>M?[0,64]:[0,8]}},...S?[]:[{name:"flip",options:{fallbackPlacements:["top-end","top-start","bottom-end","bottom"]}}],{name:"preventOverflow",options:{altAxis:!0}}],[S,M]);return"none"===r?null:(null!==w&&d.current&&(d.current.setAttribute("x",String(w.x)),d.current.setAttribute("y",String(w.y))),(0,O.jsxs)(e.Fragment,{children:[u.current&&Tm.createPortal((0,O.jsx)("rect",{ref:d,display:"hidden"}),u.current),(0,O.jsx)(PC,{children:x&&(0,O.jsx)(OC,l({},c,{className:p?.root,open:x,placement:c.placement??i??(null!==h&&S?"right-start":"top"),popperRef:f,anchorEl:w?d.current:k,modifiers:C,children:s}))})]}))}function LC(e){const{classes:t,trigger:n="axis"}=e,r=VM(t);return(0,O.jsx)(jC,l({},e,{classes:t,children:"axis"===n?(0,O.jsx)(CC,{classes:r}):(0,O.jsx)(cC,{classes:r})}))}function RC(e){return Xb("MuiChartsAxisHighlight",e)}Zb("MuiChartsAxisHighlight",["root"]);const DC=bm("path",{name:"MuiChartsAxisHighlight",slot:"Root"})(({theme:e})=>({pointerEvents:"none",variants:[{props:{axisHighlight:"band"},style:l({fill:"white",fillOpacity:.1},e.applyStyles("light",{fill:"gray"}))},{props:{axisHighlight:"line"},style:l({strokeDasharray:"5 2",stroke:"#ffffff"},e.applyStyles("light",{stroke:"#000000"}))}]}));function $C(t){const{type:n,classes:r}=t,{left:i,width:o}=Nx(),a=zx(),s=a.use(uS),l=a.use(cs);return 0===s.length?null:s.map(({axisId:t,value:a})=>{const s=l.axis[t].scale,c=ck(s),u="band"===n&&null!==a&&fa(s);return(0,O.jsxs)(e.Fragment,{children:[u&&void 0!==s(a)&&(0,O.jsx)(DC,{d:`M ${i} ${s(a)-(s.step()-s.bandwidth())/2} l 0 ${s.step()} l ${o} 0 l 0 ${-s.step()} Z`,className:r.root,ownerState:{axisHighlight:"band"}}),"line"===n&&null!==a&&(0,O.jsx)(DC,{d:`M ${i} ${c(a)} L ${i+o} ${c(a)}`,className:r.root,ownerState:{axisHighlight:"line"}})]},`${t}-${a}`)})}function zC(t){const{type:n,classes:r}=t,{top:i,height:o}=Nx(),a=zx(),s=a.use(cS),l=a.use(ls);return 0===s.length?null:s.map(({axisId:t,value:a})=>{const s=l.axis[t].scale,c=ck(s),u="band"===n&&null!==a&&fa(s);return(0,O.jsxs)(e.Fragment,{children:[u&&void 0!==s(a)&&(0,O.jsx)(DC,{d:`M ${s(a)-(s.step()-s.bandwidth())/2} ${i} l ${s.step()} 0 l 0 ${o} l ${-s.step()} 0 Z`,className:r.root,ownerState:{axisHighlight:"band"}}),"line"===n&&null!==a&&(0,O.jsx)(DC,{d:`M ${c(a)} ${i} L ${c(a)} ${i+o}`,className:r.root,ownerState:{axisHighlight:"line"}})]},`${t}-${a}`)})}const NC=()=>uI({root:["root"]},RC);function _C(t){const{x:n,y:r}=t,i=NC();return(0,O.jsxs)(e.Fragment,{children:[n&&"none"!==n&&(0,O.jsx)(zC,{type:n,classes:i}),r&&"none"!==r&&(0,O.jsx)($C,{type:r,classes:i})]})}function FC(e,t){return Object.keys(e).flatMap(n=>{const r=t[n].legendGetter;return void 0===r?[]:r(e[n])})}function HC(e){return Xb("MuiChartsLegend",e)}const BC=Zb("MuiChartsLegend",["root","item","series","mark","label","vertical","horizontal"]),VC=["slots","slotProps"],UC=["ownerState"];function YC(e){return Xb("MuiChartsLabel",e)}Zb("MuiChartsLabel",["root"]);const WC=["children","className","classes"],GC=oC("MuiChartsLabel",{classesResolver:e=>uI({root:["root"]},YC,e.classes)},function(e,t){const{children:n,className:r,classes:i}=e,o=tt(e,WC);return(0,O.jsx)("span",l({className:Hh(i?.root,r),ref:t},o,{children:n}))}),KC=["direction","onItemClick","className","classes"],qC=bm("ul",{name:"MuiChartsLegend",slot:"Root"})(({ownerState:e,theme:t})=>l({},t.typography.caption,{color:(t.vars||t).palette.text.primary,lineHeight:"100%",display:"flex",flexDirection:"vertical"===e.direction?"column":"row",alignItems:"vertical"===e.direction?void 0:"center",flexShrink:0,gap:t.spacing(2),listStyleType:"none",paddingInlineStart:0,marginBlock:t.spacing(1),marginInline:t.spacing(1),flexWrap:"wrap",li:{display:"horizontal"===e.direction?"inline-flex":void 0},[`button.${BC.series}`]:{background:"none",border:"none",padding:0,fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",letterSpacing:"inherit",color:"inherit"},[`& .${BC.series}`]:{display:"vertical"===e.direction?"flex":"inline-flex",alignItems:"center",gap:t.spacing(1)},gridArea:"legend"})),XC=((t,n,r,i)=>{function o(e,t){const o=Lh({props:e,name:"MuiChartsLegend"}),a=iC("function"==typeof r.defaultProps?r.defaultProps(o):r.defaultProps??{},o),s=a,{slots:c,slotProps:u}=s,d=tt(s,VC),p=xm(),h=r.classesResolver?.(a,p),m=c?.[n]??i,f=r.propagateSlots&&!c?.[n],g=yI({elementType:m,externalSlotProps:u?.[n],additionalProps:l({},d,{classes:h},f&&{slots:c,slotProps:u}),ownerState:{}}),y=l({},tt(g,UC));for(const e of r.omitProps??[])delete y[e];return(0,O.jsx)(m,l({},y,{ref:t}))}return e.forwardRef(o)})(0,"legend",{defaultProps:{direction:"horizontal"},omitProps:["position"],classesResolver:e=>{const{classes:t,direction:n}=e;return uI({root:["root",n],item:["item"],mark:["mark"],label:["label"],series:["series"]},HC,t)}},e.forwardRef(function(e,t){const n={items:FC(UM(),zx().use(ht))},{onItemClick:r,className:i,classes:o}=e,a=tt(e,KC);if(0===n.items.length)return null;const s=r?"button":"div";return(0,O.jsx)(qC,l({className:Hh(o?.root,i),ref:t},a,{ownerState:e,children:n.items.map((e,t)=>(0,O.jsx)("li",{className:o?.item,"data-series":e.seriesId,children:(0,O.jsxs)(s,{className:o?.series,role:r?"button":void 0,type:r?"button":void 0,onClick:r?n=>{return r(n,{type:"series",color:(i=e).color,label:i.label,seriesId:i.seriesId,itemId:i.itemId,dataIndex:i.dataIndex},t);var i}:void 0,children:[(0,O.jsx)(lC,{className:o?.mark,color:e.color,type:e.markType}),(0,O.jsx)(GC,{className:o?.label,children:e.label})]})},`${e.seriesId}-${e.dataIndex}`))}))}));function ZC(e){const{id:t,offset:n}=e,{left:r,top:i,width:o,height:a}=Nx(),s=l({top:0,right:0,bottom:0,left:0},n);return(0,O.jsx)("clipPath",{id:t,children:(0,O.jsx)("rect",{x:r-s.left,y:i-s.top,width:o+s.left+s.right,height:a+s.top+s.bottom})})}function JC(e,...t){const n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append("args[]",e)),`Minified MUI error #${e}; visit ${n} for the full message.`}function QC(e,t=0,n=1){return function(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}(e,t,n)}function eP(e){if(e.type)return e;if("#"===e.charAt(0))return eP(function(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?`rgb${4===n.length?"a":""}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}(e));const t=e.indexOf("("),n=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error(JC(9,e));let r,i=e.substring(t+1,e.length-1);if("color"===n){if(i=i.split(" "),r=i.shift(),4===i.length&&"/"===i[3].charAt(0)&&(i[3]=i[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(r))throw new Error(JC(10,r))}else i=i.split(",");return i=i.map(e=>parseFloat(e)),{type:n,values:i,colorSpace:r}}function tP(e,t){return e=eP(e),t=QC(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,function(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return t.includes("rgb")?r=r.map((e,t)=>t<3?parseInt(e,10):e):t.includes("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=t.includes("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}(e)}let nP=0;const rP={...t}.useId;function iP(t){if(void 0!==rP){const e=rP();return t??e}return function(t){const[n,r]=e.useState(t),i=t||n;return e.useEffect(()=>{null==n&&(nP+=1,r(`mui-${nP}`))},[n]),i}(t)}function oP(e,t){return"x"===e?{left:0,top:0,width:t.width,height:vt,right:t.width,bottom:vt}:{left:0,top:0,width:vt,height:t.height,right:vt,bottom:t.height}}const aP=le(ce,he,qa,is,function(e,t,n,r,i){const o=e?.some(e=>e.id===i),a=oP(o?"x":"y",t),s=n[i],l={};return e?.forEach(e=>{const t=e,n=r[t.id].copy(),i=Ca(a,"x",t),o=Ea(i,[s.minStart,s.maxEnd]);n.range(o),l[t.id]=n}),l}),sP=le(ft,ht,qa,he,aP,Qa,(e,t,n,r,i,{axes:o,domains:a},s)=>{const l=o?.some(e=>e.id===s),c=oP(l?"x":"y",r),u=n[s],d=ya({scales:i,drawingArea:c,formattedSeries:e,axis:o,seriesConfig:t,axisDirection:"x",zoomMap:new Map([[s,{axisId:s,start:u.minStart,end:u.maxEnd}]]),domains:a});return d.axis[s]?{[s]:d.axis[s]}:d.axis}),lP=le(ue,he,qa,os,function(e,t,n,r,i){const o=e?.some(e=>e.id===i),a=oP(o?"y":"x",t),s=n[i],l={};return e?.forEach(e=>{const t=e,n=r[t.id].copy();let i=Ca(a,"y",t);fa(n)&&(i=i.reverse());const o=Ea(i,[s.minStart,s.maxEnd]);n.range(o),l[t.id]=n}),l}),cP=le(ft,ht,qa,he,lP,es,(e,t,n,r,i,{axes:o,domains:a},s)=>{const l=o?.some(e=>e.id===s),c=oP(l?"y":"x",r),u=n[s],d=ya({scales:i,drawingArea:c,formattedSeries:e,axis:o,seriesConfig:t,axisDirection:"y",zoomMap:new Map([[s,{axisId:s,start:u.minStart,end:u.maxEnd}]]),domains:a});return d.axis[s]?{[s]:d.axis[s]}:d.axis}),uP=(e,t)=>t===("x"===e?W:G)?`The first \`${e}Axis\``:`The ${e}-axis with id "${t}"`;function dP(){return ak("bar")}function pP(e,t,n){const r=dP()??{series:{},stackingGroups:[],seriesOrder:[]},i=_x().xAxisIds[0],o=Fx().yAxisIds[0],a=Xx(),{series:s,stackingGroups:c}=r,u={},d=c.flatMap(({ids:r},d)=>{const p=e.left,h=e.left+e.width,m=e.top,f=e.top+e.height,g=new Map,y=new Map;return r.map(e=>{const r=s[e].xAxisId??i,v=s[e].yAxisId??o,b=s[e].layout,x=t[r],I=n[v],w="vertical"===s[e].layout,k=(w?I.reverse:x.reverse)??!1;!function(e,t,n,r,i,o,a){const s=i[r],l=a[o],c=e?s:l,u=e?l:s,d=e?r:o,p=e?o:r,h=e?"x":"y",m=e?"y":"x";if("band"!==c.scaleType)throw new Error(`MUI X Charts: ${uP(h,d)} should be of type "band" to display the bar series of id "${t}".`);if(void 0===c.data)throw new Error(`MUI X Charts: ${uP(h,d)} should have data property.`);if("band"===u.scaleType||"point"===u.scaleType)throw new Error(`MUI X Charts: ${uP(m,p)} should be a continuous type to display the bar series of id "${t}".`)}(w,e,s[e].stackedData.length,r,t,v,n);const S=w?x:I,M=x.scale,C=I.scale,P=Math.round(M(0)??0),E=Math.round(C(0)??0),T=bl(s[e],t[r],n[v]),A=[];for(let t=0;th||i.x+i.widthf||i.y+i.height0?(v&&delete v.borderRadiusSide,i.borderRadiusSide=w?"top":"right",y.set(t,i)):S<0&&(o&&delete o.borderRadiusSide,i.borderRadiusSide=w?"bottom":"left",g.set(t,i)),u[i.maskId]||(u[i.maskId]={id:i.maskId,width:0,height:0,hasNegative:!1,hasPositive:!1,layout:b,xOrigin:P,yOrigin:E,x:0,y:0});const M=u[i.maskId];M.width="vertical"===b?i.width:M.width+i.width,M.height="vertical"===b?M.height+i.height:i.height,M.x=Math.min(0===M.x?1/0:M.x,i.x),M.y=Math.min(0===M.y?1/0:M.y,i.y);const C=i.value??0;M.hasNegative=M.hasNegative||(k?C>0:C<0),M.hasPositive=M.hasPositive||(k?C<0:C>0),A.push(i)}return{seriesId:e,barLabel:s[e].barLabel,barLabelPlacement:s[e].barLabelPlacement,data:A,layout:b,xOrigin:P,yOrigin:E}})});return{completedData:d,masksData:Object.values(u)}}function hP(e){return Xb("MuiBarElement",e)}const mP=Zb("MuiBarElement",["root","highlighted","faded","series"]);function fP(e,t){const n=Tn(e.x,t.x),r=Tn(e.y,t.y),i=Tn(e.width,t.width),o=Tn(e.height,t.height);return e=>({x:n(e),y:r(e),width:i(e),height:o(e)})}const gP=["ownerState","skipAnimation","id","dataIndex","xOrigin","yOrigin"];function yP(e){const{ownerState:t}=e,n=tt(e,gP),r=function(e){const t={x:"vertical"===e.layout?e.x:e.xOrigin,y:"vertical"===e.layout?e.yOrigin:e.y,width:"vertical"===e.layout?e.width:0,height:"vertical"===e.layout?0:e.height};return aw({x:e.x,y:e.y,width:e.width,height:e.height},{createInterpolator:fP,applyProps(e,t){e.setAttribute("x",t.x.toString()),e.setAttribute("y",t.y.toString()),e.setAttribute("width",t.width.toString()),e.setAttribute("height",t.height.toString())},transformProps:e=>e,initialProps:t,skip:e.skipAnimation,ref:e.ref})}(e);return(0,O.jsx)("rect",l({},n,{filter:t.isHighlighted?"brightness(120%)":void 0,opacity:t.isFaded?.3:1,"data-highlighted":t.isHighlighted||void 0,"data-faded":t.isFaded||void 0},r))}const vP=["id","dataIndex","classes","color","slots","slotProps","style","onClick","skipAnimation","layout","x","xOrigin","y","yOrigin","width","height"];function bP(t){const{id:n,dataIndex:r,classes:i,color:o,slots:a,slotProps:s,style:c,onClick:u,skipAnimation:d,layout:p,x:h,xOrigin:m,y:f,yOrigin:g,width:y,height:v}=t,b=tt(t,vP),x=e.useMemo(()=>({type:"bar",seriesId:n,dataIndex:r}),[n,r]),I=bI(x),{isFaded:w,isHighlighted:k}=zI(x),S=(M=e.useMemo(()=>({type:"bar",seriesId:n,dataIndex:r}),[n,r]),zx().use(nI,M));var M;const C={id:n,dataIndex:r,classes:i,color:o,isFaded:w,isHighlighted:k,isFocused:S},P=(e=>{const{classes:t,id:n,isHighlighted:r,isFaded:i}=e;return uI({root:["root",`series-${n}`,r&&"highlighted",i&&"faded"]},hP,t)})(C),E=a?.bar??yP,T=yI({elementType:E,externalSlotProps:s?.bar,externalForwardedProps:b,additionalProps:l({},I,{id:n,dataIndex:r,color:o,x:h,xOrigin:m,y:f,yOrigin:g,width:y,height:v,style:c,onClick:u,cursor:u?"pointer":"unset",stroke:"none",fill:o,skipAnimation:d,layout:p}),className:P.root,ownerState:C});return(0,O.jsx)(E,l({},T))}function xP(t,n,r,i){return e.useMemo(()=>{const e=ck(n),o=ck(r),a=[];for(let n=0;ne>=s&&e<=s+c&&t>=l&&t<=l+u,[u,c,s,l]),p=xP(n,r,i,d);return(0,O.jsx)("g",{"data-series":n.id,children:p.map((e,t)=>(0,O.jsx)(kP,{dataIndex:e.dataIndex,color:a?a(t):o,x:e.x,y:e.y,seriesId:n.id,size:n.preview.markerSize,isHighlighted:!1,isFaded:!1},e.id??e.dataIndex))})}const MP=["id","color","gradientId","onClick"],CP=bm("g",{name:"MuiAreaPlot",slot:"Root"})({});function PP({axisId:e}){const t=function(e){const t=zx();return pk(t.use(sP,e),t.use(cP,e))}(e);return(0,O.jsx)(CP,{children:t.map(({d:e,seriesId:t,color:n,area:r,gradientId:i})=>!!r&&(0,O.jsx)(EP,{id:t,d:e,color:n,gradientId:i},t))})}function EP(e){let{id:t,color:n,gradientId:r}=e,i=tt(e,MP);return(0,O.jsx)("path",l({fill:r?`url(#${r})`:n,stroke:"none","data-series":t},i))}const TP=["id","color","gradientId","onClick"];function AP({axisId:e}){const t=function(e){const t=zx();return Sk(t.use(sP,e),t.use(cP,e))}(e);return(0,O.jsx)("g",{children:t.map(({d:e,seriesId:t,color:n,gradientId:r})=>(0,O.jsx)(OP,{id:t,d:e,color:n,gradientId:r},t))})}function OP(e){let{id:t,color:n,gradientId:r}=e,i=tt(e,TP);return(0,O.jsx)("path",l({stroke:r?`url(#${r})`:n,strokeWidth:2,strokeLinejoin:"round",fill:"none","data-series":t},i))}const jP=new Map([["bar",function(e){const t={left:e.x,top:e.y,width:e.width,height:e.height,right:e.x+e.width,bottom:e.y+e.height},{completedData:n}=function(e,t){const n=zx();return pP(t,n.use(sP,e),n.use(cP,e))}(e.axisId,t);return(0,O.jsx)("g",{children:n.map(({seriesId:e,layout:t,xOrigin:n,yOrigin:r,data:i})=>(0,O.jsx)("g",{children:i.map(({dataIndex:i,color:o,x:a,y:s,width:l,height:c})=>(0,O.jsx)(bP,{id:e,dataIndex:i,color:o,skipAnimation:!0,layout:t??"vertical",x:a,xOrigin:n,y:s,yOrigin:r,width:l,height:c},i))},e))})}],["line",function({axisId:t}){return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(PP,{axisId:t}),(0,O.jsx)(AP,{axisId:t})]})}],["scatter",function({axisId:t,x:n,y:r,height:i,width:o}){const a=zx(),s=IP(),l=a.use(sP,t),c=a.use(cP,t),u=_x().xAxisIds[0],d=Fx().yAxisIds[0],{zAxis:p,zAxisIds:h}=Kx(),m=h[0];if(void 0===s)return null;const{series:f,seriesOrder:g}=s;return(0,O.jsx)(e.Fragment,{children:g.map(e=>{const{id:t,xAxisId:a,yAxisId:s,zAxisId:h,color:g}=f[e],y=Dl.colorProcessor(f[e],l[a??u],c[s??d],p[h??m]),v=l[a??u].scale,b=c[s??d].scale;return(0,O.jsx)(SP,{xScale:v,yScale:b,color:g,colorGetter:y,series:f[e],x:n,y:r,height:i,width:o},t)})})}]]);function LP(t){const{axisId:n,x:r,y:i,width:o,height:a}=t,s=zx().use(ft),c=[],u=`zoom-preview-mask-${n}`;for(const[e,n]of jP)(s[e]?.seriesOrder?.length??0)>0&&c.push((0,O.jsx)(n,l({},t),e));return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("clipPath",{id:u,children:(0,O.jsx)("rect",{x:r,y:i,width:o,height:a})}),(0,O.jsx)("g",{clipPath:`url(#${u})`,children:c})]})}const RP=["axisId","axisDirection","reverse"],DP=bm("rect",{slot:"internal",shouldForwardProp:void 0})(({theme:e})=>({rx:4,ry:4,stroke:e.palette.grey[700],fill:tP(e.palette.grey[700],.4)}));function $P(e){let{axisId:t,axisDirection:n}=e,r=tt(e,RP);return(0,O.jsxs)("g",l({},r,{children:[(0,O.jsx)(zP,l({},r,{axisId:t,axisDirection:n})),(0,O.jsx)("rect",l({},r,{fill:"transparent",rx:4,ry:4})),(0,O.jsx)(LP,l({axisId:t},r))]}))}function zP(t){const{axisId:n,axisDirection:r}=t,i=zx(),o=i.use(px,n),a=i.use(Xa,n),s=iP();if(!o)return null;const l=`zoom-preview-mask-${n}-${s}`;let c,u,d,p;const h=a.maxEnd-a.minStart;return"x"===r?(c=t.x+(o.start-a.minStart)/h*t.width,u=t.y,d=(o.end-o.start)/h*t.width,p=t.height):(c=t.x,u=t.y+(1-o.end/h)*t.height,d=t.width,p=(o.end-o.start)/h*t.height),(0,O.jsxs)(e.Fragment,{children:[(0,O.jsxs)("mask",{id:l,children:[(0,O.jsx)("rect",{x:t.x,y:t.y,width:t.width,height:t.height,fill:"white"}),(0,O.jsx)("rect",{x:c,y:u,width:d,height:p,fill:"black",rx:4,ry:4})]}),(0,O.jsx)(DP,{x:t.x,y:t.y,width:t.width,height:t.height,mask:`url(#${l})`})]})}const NP=8,_P=10,FP=20,HP=10,BP=Math.max(NP,_P,FP,HP);const VP=[];function UP(e){return VP[0]=e,Nd(VP)}function YP(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function WP(t){if(e.isValidElement(t)||(0,dc.Hy)(t)||!YP(t))return t;const n={};return Object.keys(t).forEach(e=>{n[e]=WP(t[e])}),n}function GP(t,n,r={clone:!0}){const i=r.clone?{...t}:t;return YP(t)&&YP(n)&&Object.keys(n).forEach(o=>{e.isValidElement(n[o])||(0,dc.Hy)(n[o])?i[o]=n[o]:YP(n[o])&&Object.prototype.hasOwnProperty.call(t,o)&&YP(t[o])?i[o]=GP(t[o],n[o],r):r.clone?i[o]=YP(n[o])?WP(n[o]):n[o]:i[o]=n[o]}),i}function KP(e,t){if(!e.containerQueries)return t;const n=Object.keys(t).filter(e=>e.startsWith("@container")).sort((e,t)=>{const n=/min-width:\s*([0-9.]+)/;return+(e.match(n)?.[1]||0)-+(t.match(n)?.[1]||0)});return n.length?n.reduce((e,n)=>{const r=t[n];return delete e[n],e[n]=r,e},{...t}):t}const qP={borderRadius:4},XP={xs:0,sm:600,md:900,lg:1200,xl:1536},ZP={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${XP[e]}px)`},JP={containerQueries:e=>({up:t=>{let n="number"==typeof t?t:XP[t]||t;return"number"==typeof n&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function QP(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||ZP;return t.reduce((r,i,o)=>(r[e.up(e.keys[o])]=n(t[o]),r),{})}if("object"==typeof t){const e=r.breakpoints||ZP;return Object.keys(t).reduce((i,o)=>{if(function(e,t){return"@"===t||t.startsWith("@")&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}(e.keys,o)){const e=function(e,t){const n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,r,i]=n,o=Number.isNaN(+r)?r||0:+r;return e.containerQueries(i).up(o)}(r.containerQueries?r:JP,o);e&&(i[e]=n(t[o],o))}else if(Object.keys(e.values||XP).includes(o))i[e.up(o)]=n(t[o],o);else{const e=o;i[e]=t[e]}return i},{})}return n(t)}function eE(e,t){return e.reduce((e,t)=>{const n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e},t)}function tE(e){if("string"!=typeof e)throw new Error(JC(7));return e.charAt(0).toUpperCase()+e.slice(1)}function nE(e,t,n=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&n){const n=`vars.${t}`.split(".").reduce((e,t)=>e&&e[t]?e[t]:null,e);if(null!=n)return n}return t.split(".").reduce((e,t)=>e&&null!=e[t]?e[t]:null,e)}function rE(e,t,n,r=n){let i;return i="function"==typeof e?e(n):Array.isArray(e)?e[n]||r:nE(e,n)||r,t&&(i=t(i,r,e)),i}const iE=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:r,transform:i}=e,o=e=>{if(null==e[t])return null;const o=e[t],a=nE(e.theme,r)||{};return QP(e,o,e=>{let r=rE(a,i,e);return e===r&&"string"==typeof e&&(r=rE(a,i,`${t}${"default"===e?"":tE(e)}`,e)),!1===n?r:{[n]:r}})};return o.propTypes={},o.filterProps=[t],o},oE=function(e,t){return t?GP(e,t,{clone:!1}):e},aE={m:"margin",p:"padding"},sE={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},lE={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},cE=function(){const e={};return t=>(void 0===e[t]&&(e[t]=(e=>{if(e.length>2){if(!lE[e])return[e];e=lE[e]}const[t,n]=e.split(""),r=aE[t],i=sE[n]||"";return Array.isArray(i)?i.map(e=>r+e):[r+i]})(t)),e[t])}(),uE=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],dE=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],pE=[...uE,...dE];function hE(e,t,n,r){const i=nE(e,t,!0)??n;return"number"==typeof i||"string"==typeof i?e=>"string"==typeof e?e:"string"==typeof i?i.startsWith("var(")&&0===e?0:i.startsWith("var(")&&1===e?i:`calc(${e} * ${i})`:i*e:Array.isArray(i)?e=>{if("string"==typeof e)return e;const t=Math.abs(e),n=i[t];return e>=0?n:"number"==typeof n?-n:"string"==typeof n&&n.startsWith("var(")?`calc(-1 * ${n})`:`-${n}`}:"function"==typeof i?i:()=>{}}function mE(e){return hE(e,"spacing",8)}function fE(e,t){return"string"==typeof t||null==t?t:e(t)}function gE(e,t){const n=mE(e.theme);return Object.keys(e).map(r=>function(e,t,n,r){if(!t.includes(n))return null;const i=function(e,t){return n=>e.reduce((e,r)=>(e[r]=fE(t,n),e),{})}(cE(n),r);return QP(e,e[n],i)}(e,t,r,n)).reduce(oE,{})}function yE(e){return gE(e,uE)}function vE(e){return gE(e,dE)}function bE(e){return gE(e,pE)}yE.propTypes={},yE.filterProps=uE,vE.propTypes={},vE.filterProps=dE,bE.propTypes={},bE.filterProps=pE;const xE=function(...e){const t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),n=e=>Object.keys(e).reduce((n,r)=>t[r]?oE(n,t[r](e)):n,{});return n.propTypes={},n.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),n};function IE(e){return"number"!=typeof e?e:`${e}px solid`}function wE(e,t){return iE({prop:e,themeKey:"borders",transform:t})}const kE=wE("border",IE),SE=wE("borderTop",IE),ME=wE("borderRight",IE),CE=wE("borderBottom",IE),PE=wE("borderLeft",IE),EE=wE("borderColor"),TE=wE("borderTopColor"),AE=wE("borderRightColor"),OE=wE("borderBottomColor"),jE=wE("borderLeftColor"),LE=wE("outline",IE),RE=wE("outlineColor"),DE=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=hE(e.theme,"shape.borderRadius",4),n=e=>({borderRadius:fE(t,e)});return QP(e,e.borderRadius,n)}return null};DE.propTypes={},DE.filterProps=["borderRadius"],xE(kE,SE,ME,CE,PE,EE,TE,AE,OE,jE,DE,LE,RE);const $E=e=>{if(void 0!==e.gap&&null!==e.gap){const t=hE(e.theme,"spacing",8),n=e=>({gap:fE(t,e)});return QP(e,e.gap,n)}return null};$E.propTypes={},$E.filterProps=["gap"];const zE=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=hE(e.theme,"spacing",8),n=e=>({columnGap:fE(t,e)});return QP(e,e.columnGap,n)}return null};zE.propTypes={},zE.filterProps=["columnGap"];const NE=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=hE(e.theme,"spacing",8),n=e=>({rowGap:fE(t,e)});return QP(e,e.rowGap,n)}return null};function _E(e,t){return"grey"===t?t:e}function FE(e){return e<=1&&0!==e?100*e+"%":e}NE.propTypes={},NE.filterProps=["rowGap"],xE($E,zE,NE,iE({prop:"gridColumn"}),iE({prop:"gridRow"}),iE({prop:"gridAutoFlow"}),iE({prop:"gridAutoColumns"}),iE({prop:"gridAutoRows"}),iE({prop:"gridTemplateColumns"}),iE({prop:"gridTemplateRows"}),iE({prop:"gridTemplateAreas"}),iE({prop:"gridArea"})),xE(iE({prop:"color",themeKey:"palette",transform:_E}),iE({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:_E}),iE({prop:"backgroundColor",themeKey:"palette",transform:_E}));const HE=iE({prop:"width",transform:FE}),BE=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const t=t=>{const n=e.theme?.breakpoints?.values?.[t]||XP[t];return n?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:n}:{maxWidth:FE(t)}};return QP(e,e.maxWidth,t)}return null};BE.filterProps=["maxWidth"];const VE=iE({prop:"minWidth",transform:FE}),UE=iE({prop:"height",transform:FE}),YE=iE({prop:"maxHeight",transform:FE}),WE=iE({prop:"minHeight",transform:FE}),GE=(iE({prop:"size",cssProperty:"width",transform:FE}),iE({prop:"size",cssProperty:"height",transform:FE}),xE(HE,BE,VE,UE,YE,WE,iE({prop:"boxSizing"})),{border:{themeKey:"borders",transform:IE},borderTop:{themeKey:"borders",transform:IE},borderRight:{themeKey:"borders",transform:IE},borderBottom:{themeKey:"borders",transform:IE},borderLeft:{themeKey:"borders",transform:IE},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:IE},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:DE},color:{themeKey:"palette",transform:_E},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:_E},backgroundColor:{themeKey:"palette",transform:_E},p:{style:vE},pt:{style:vE},pr:{style:vE},pb:{style:vE},pl:{style:vE},px:{style:vE},py:{style:vE},padding:{style:vE},paddingTop:{style:vE},paddingRight:{style:vE},paddingBottom:{style:vE},paddingLeft:{style:vE},paddingX:{style:vE},paddingY:{style:vE},paddingInline:{style:vE},paddingInlineStart:{style:vE},paddingInlineEnd:{style:vE},paddingBlock:{style:vE},paddingBlockStart:{style:vE},paddingBlockEnd:{style:vE},m:{style:yE},mt:{style:yE},mr:{style:yE},mb:{style:yE},ml:{style:yE},mx:{style:yE},my:{style:yE},margin:{style:yE},marginTop:{style:yE},marginRight:{style:yE},marginBottom:{style:yE},marginLeft:{style:yE},marginX:{style:yE},marginY:{style:yE},marginInline:{style:yE},marginInlineStart:{style:yE},marginInlineEnd:{style:yE},marginBlock:{style:yE},marginBlockStart:{style:yE},marginBlockEnd:{style:yE},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:$E},rowGap:{style:NE},columnGap:{style:zE},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:FE},maxWidth:{style:BE},minWidth:{transform:FE},height:{transform:FE},maxHeight:{transform:FE},minHeight:{transform:FE},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}),KE=GE,qE=function(){function e(e,t,n,r){const i={[e]:t,theme:n},o=r[e];if(!o)return{[e]:t};const{cssProperty:a=e,themeKey:s,transform:l,style:c}=o;if(null==t)return null;if("typography"===s&&"inherit"===t)return{[e]:t};const u=nE(n,s)||{};return c?c(i):QP(i,t,t=>{let n=rE(u,l,t);return t===n&&"string"==typeof t&&(n=rE(u,l,`${e}${"default"===t?"":tE(t)}`,t)),!1===a?n:{[a]:n}})}return function t(n){const{sx:r,theme:i={},nested:o}=n||{};if(!r)return null;const a=i.unstable_sxConfig??KE;function s(n){let r=n;if("function"==typeof n)r=n(i);else if("object"!=typeof n)return n;if(!r)return null;const s=function(e={}){const t=e.keys?.reduce((t,n)=>(t[e.up(n)]={},t),{});return t||{}}(i.breakpoints),l=Object.keys(s);let c=s;return Object.keys(r).forEach(n=>{const o=function(e,t){return"function"==typeof e?e(t):e}(r[n],i);if(null!=o)if("object"==typeof o)if(a[n])c=oE(c,e(n,o,i,a));else{const e=QP({theme:i},o,e=>({[n]:e}));!function(...e){const t=e.reduce((e,t)=>e.concat(Object.keys(t)),[]),n=new Set(t);return e.every(e=>n.size===Object.keys(e).length)}(e,o)?c=oE(c,e):c[n]=t({sx:o,theme:i,nested:!0})}else c=oE(c,e(n,o,i,a))}),!o&&i.modularCssLayers?{"@layer sx":KP(i,eE(l,c))}:KP(i,eE(l,c))}return Array.isArray(r)?r.map(s):s(r)}}();qE.filterProps=["sx"];const XE=qE;function ZE(e,t){const n=this;if(n.vars){if(!n.colorSchemes?.[e]||"function"!=typeof n.getColorSchemeSelector)return{};let r=n.getColorSchemeSelector(e);return"&"===r?t:((r.includes("data-")||r.includes("."))&&(r=`*:where(${r.replace(/\s*&$/,"")}) &`),{[r]:t})}return n.palette.mode===e?t:{}}const JE=function(e={},...t){const{breakpoints:n={},palette:r={},spacing:i,shape:o={},...a}=e,s=function(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5,...i}=e,o=(e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})})(t),a=Object.keys(o);function s(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function l(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-r/100}${n})`}function c(e,i){const o=a.indexOf(i);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==o&&"number"==typeof t[a[o]]?t[a[o]]:i)-r/100}${n})`}return{keys:a,values:o,up:s,down:l,between:c,only:function(e){return a.indexOf(e)+1(0===e.length?[1]:e).map(e=>{const n=t(e);return"number"==typeof n?`${n}px`:n}).join(" ");return n.mui=!0,n}(i);let c=GP({breakpoints:s,direction:"ltr",components:{},palette:{mode:"light",...r},spacing:l,shape:{...qP,...o}},a);return c=function(e){const t=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function n(n,r){n.up=(...n)=>t(e.breakpoints.up(...n),r),n.down=(...n)=>t(e.breakpoints.down(...n),r),n.between=(...n)=>t(e.breakpoints.between(...n),r),n.only=(...n)=>t(e.breakpoints.only(...n),r),n.not=(...n)=>{const i=t(e.breakpoints.not(...n),r);return i.includes("not all and")?i.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):i}}const r={},i=e=>(n(r,e),r);return n(i),{...e,containerQueries:i}}(c),c.applyStyles=ZE,c=t.reduce((e,t)=>GP(e,t),c),c.unstable_sxConfig={...KE,...a?.unstable_sxConfig},c.unstable_sx=function(e){return XE({sx:e,theme:this})},c}();function QE(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function eT(e,t){return t&&e&&"object"==typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function tT(e){return e?(t,n)=>n[e]:null}function nT(e,t,n){const r="function"==typeof t?t(e):t;if(Array.isArray(r))return r.flatMap(t=>nT(e,t,n));if(Array.isArray(r?.variants)){let t;if(r.isProcessed)t=n?eT(r.style,n):r.style;else{const{variants:e,...i}=r;t=n?eT(UP(i),n):i}return rT(e,r.variants,[t],n)}return r?.isProcessed?n?eT(UP(r.style),n):r.style:n?eT(UP(r),n):r}function rT(e,t,n=[],r=void 0){let i;e:for(let o=0;oe,uT=(()=>{let e=cT;return{configure(t){e=t},generate:t=>e(t),reset(){e=cT}}})();function dT(e){return`${uT.generate("MuiChartAxisZoomSliderTrack")}-${e}`}["horizontal","vertical","background","active"].reduce((e,t)=>(e[t]=dT(t),e),{});const pT=e=>{const{axisDirection:t}=e;return lT({background:["x"===t?"horizontal":"vertical","background"],active:["x"===t?"horizontal":"vertical","active"]},dT)},hT=["axisId","axisDirection","reverse","onSelectStart","onSelectEnd"],mT=bm("rect",{slot:"internal",shouldForwardProp:e=>QE(e)&&"axisDirection"!==e&&"isSelecting"!==e})(({theme:e})=>l({fill:(e.vars||e).palette.grey[300]},e.applyStyles("dark",{fill:(e.vars||e).palette.grey[800]}),{cursor:"pointer",variants:[{props:{axisDirection:"x",isSelecting:!0},style:{cursor:"ew-resize"}},{props:{axisDirection:"y",isSelecting:!0},style:{cursor:"ns-resize"}}]}));function fT(t){let{axisId:n,axisDirection:r,onSelectStart:i,onSelectEnd:o}=t,a=tt(t,hT);const s=e.useRef(null),{instance:c,svgRef:u}=$x(),d=zx(),[p,h]=e.useState(!1),m=pT({axisDirection:r});return(0,O.jsx)(mT,l({ref:s,onPointerDown:function(e){const t=s.current,r=u.current;if(!t||!r)return;const a=xs(r,e),p=oT(d.state,n,a);if(null===p)return;const m=rx(function(e){const t=xs(r,e),i=oT(d.state,n,t);if(null===i)return;const o=Xa(d.state,n);c.setAxisZoomData(n,e=>{if(i>p){const t=sT(i,l({},e,{start:p}),o),n=aT(p,l({},e,{start:p,end:t}),o);return l({},e,{start:n,end:t})}const t=aT(i,l({},e,{end:p}),o),n=sT(p,l({},e,{start:t,end:p}),o);return l({},e,{start:t,end:n})})});e.preventDefault(),e.stopPropagation(),t.setPointerCapture(e.pointerId),document.addEventListener("pointerup",function e(n){t.releasePointerCapture(n.pointerId),t.removeEventListener("pointermove",m),document.removeEventListener("pointerup",e),h(!1),o?.()}),t.addEventListener("pointermove",m),i?.(),h(!0)},axisDirection:r,isSelecting:p},a,{className:Hh(m.background,a.className)}))}function gT(e,t,n){return fa(e)?t[yT(e,n)]:e.invert(n)}function yT(e,t){return 0===e.bandwidth()?Math.floor((t-Math.min(...e.range())+e.step()/2)/e.step()):Math.floor((t-Math.min(...e.range()))/e.step())}function vT(...t){const n=e.useRef(void 0),r=e.useCallback(e=>{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}const bT="undefined"!=typeof window?e.useLayoutEffect:e.useEffect,xT={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 IT(e,t,n="Mui"){const r=xT[t];return r?`${n}-${r}`:`${uT.generate(e)}-${t}`}function wT(e,t,n="Mui"){const r={};return t.forEach(t=>{r[t]=IT(e,t,n)}),r}const kT=wT("MuiChartAxisZoomSliderThumb",["root","horizontal","vertical","start","end"]);function ST(e){return IT("MuiChartAxisZoomSliderThumb",e)}const MT=["className","onMove","orientation","placement","rx","ry"],CT=bm("rect",{slot:"internal",shouldForwardProp:void 0})(({theme:e})=>({[`&.${kT.root}`]:l({fill:(e.vars||e).palette.common.white,stroke:(e.vars||e).palette.grey[500]},e.applyStyles("dark",{fill:(e.vars||e).palette.grey[300],stroke:(e.vars||e).palette.grey[600]})),[`&.${kT.horizontal}`]:{cursor:"ew-resize"},[`&.${kT.vertical}`]:{cursor:"ns-resize"}}));function PT(e){e.preventDefault()}const ET=e.forwardRef(function(t,n){let{className:r,onMove:i,orientation:o,placement:a,rx:s=4,ry:c=4}=t,u=tt(t,MT);const d=(e=>{const{orientation:t,placement:n}=e;return lT({root:["root","horizontal"===t?"horizontal":"vertical","start"===n?"start":"end"]},ST)})({onMove:i,orientation:o,placement:a}),p=e.useRef(null),h=vT(p,n),m=function(t){const n=e.useRef(t);return bT(()=>{n.current=t}),e.useRef((...e)=>(0,n.current)(...e)).current}(i);return e.useEffect(()=>{const e=p.current;if(!e)return()=>{};e.addEventListener("touchmove",PT,{passive:!1});const t=rx(e=>{m(e)}),n=r=>{e.removeEventListener("pointermove",t),e.removeEventListener("pointerup",n),e.removeEventListener("pointercancel",n),e.releasePointerCapture(r.pointerId)},r=r=>{r.preventDefault(),r.stopPropagation(),e.setPointerCapture(r.pointerId),e.addEventListener("pointermove",t),e.addEventListener("pointercancel",n),e.addEventListener("pointerup",n)};return e.addEventListener("pointerdown",r),()=>{e.removeEventListener("pointerdown",r),e.removeEventListener("pointermove",t),e.removeEventListener("pointercancel",n),e.removeEventListener("pointerup",n),e.removeEventListener("touchmove",PT),t.clear()}},[m,o]),(0,O.jsx)(CT,l({className:Hh(d.root,r),ref:h,rx:s,ry:c},u))}),TT=bm(Tg,{name:"MuiChartsZoomSliderTooltip",slot:"Root"})(({theme:e})=>({pointerEvents:"none",zIndex:e.zIndex.modal})),AT=[{name:"offset",options:{offset:[0,4]}}];function OT({anchorEl:e,open:t,placement:n,modifiers:r=AT,children:i}){return(0,O.jsx)(PC,{children:t?(0,O.jsx)(TT,{open:t,anchorEl:e,placement:n,modifiers:r,children:(0,O.jsx)(JM,{sx:{paddingX:.5},children:(0,O.jsx)(Nv,{variant:"caption",children:i})})}):null})}const jT=bm("rect",{slot:"internal",shouldForwardProp:e=>QE(e)&&"preview"!==e})(({theme:e})=>l({fill:(e.vars||e).palette.grey[600]},e.applyStyles("dark",{fill:(e.vars||e).palette.grey[500]}),{cursor:"grab",variants:[{props:{preview:!0},style:l({fill:"transparent"},e.applyStyles("dark",{fill:"transparent"}),{rx:4,ry:4,stroke:e.palette.grey[500]})}]}));function LT({axisId:t,axisDirection:n,axisPosition:r,size:i,preview:o,zoomData:a,reverse:s,showTooltip:c,onPointerEnter:u,onPointerLeave:d}){const{instance:p,svgRef:h}=$x(),m=zx(),f=m.use(us,t),g=Nx(),y=e.useRef(null),[v,b]=e.useState(null),[x,I]=e.useState(null),{tooltipStart:w,tooltipEnd:k}=function(e,t){const n=t=>e.valueFormatter?e.valueFormatter(t,{location:"zoom-slider-tooltip",scale:e.scale}):`${t}`,r="top"===e.position||"bottom"===e.position?"x":"y";let i="x"===r?t.left:t.top;let o=i+("x"===r?t.width:t.height);"y"===r&&([i,o]=[o,i]),e.reverse&&([i,o]=[o,i]);const a=gT(e.scale,e.data??[],i)??e.data?.at(0),s=gT(e.scale,e.data??[],o)??e.data?.at(-1);return{tooltipStart:n(a),tooltipEnd:n(s)}}(f,g),S=pT({axisDirection:n}),M="x"===n?HP:FP,C="x"===n?FP:HP;let P,E,T,A,j,L,R,D;e.useEffect(()=>{const e=y.current;if(!e)return;let n=0;const r=rx(e=>{const r=h.current;if(!r)return;const i=xs(r,e),o=oT(m.state,t,i);if(null===o)return;const a=o-n;n=o,p.moveZoomRange(t,a)}),i=()=>{e.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i)},o=o=>{o.preventDefault(),e.setPointerCapture(o.pointerId);const a=px(m.state,t),s=h.current;if(!a||!s)return;const l=xs(s,o),c=oT(m.state,t,l);null!==c&&(n=c,document.addEventListener("pointerup",i),e.addEventListener("pointermove",r))};return e.addEventListener("pointerdown",o),()=>{e.removeEventListener("pointerdown",o),r.clear()}},[n,t,p,s,m,h]);const{minStart:$,maxEnd:z}=Xa(m.state,t),N=z-$,_=Math.max($,a.start),F=Math.min(a.end,z);"x"===n?(P=(_-$)/N*g.width,E=0,T=g.width*(F-_)/N,A=i,j=(_-$)/N*g.width,L=FPi?(FP-i)/2:0;return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(jT,{ref:y,x:P+("x"===n?0:H),y:E+("x"===n?H:0),preview:o,width:T,height:A,onPointerEnter:u,onPointerLeave:d,className:S.active}),(0,O.jsx)(ET,{ref:b,x:j,y:L,width:M,height:C,orientation:"x"===n?"horizontal":"vertical",onMove:e=>{const n=h.current;if(!n)return;const r=xs(n,e);p.setZoomData(e=>{const n=Xa(m.state,t);return e.map(e=>{if(e.axisId===t){const i=oT(m.state,t,r);return null===i?e:l({},e,{start:aT(i,e,n)})}return e})})},onPointerEnter:u,onPointerLeave:d,placement:"start"}),(0,O.jsx)(ET,{ref:I,x:R,y:D,width:M,height:C,orientation:"x"===n?"horizontal":"vertical",onMove:e=>{const n=h.current;if(!n)return;const r=xs(n,e);p.setZoomData(e=>{const n=Xa(m.state,t);return e.map(e=>{if(e.axisId===t){const i=oT(m.state,t,r);return null===i?e:l({},e,{end:sT(i,e,n)})}return e})})},onPointerEnter:u,onPointerLeave:d,placement:"end"}),(0,O.jsx)(OT,{anchorEl:v,open:c&&""!==w,placement:r,children:w}),(0,O.jsx)(OT,{anchorEl:x,open:c&&""!==k,placement:r,children:k})]})}function RT({axisDirection:t,axisId:n}){const r=zx(),i=Nx(),o=r.use(px,n),a=r.use(Xa,n),[s,l]=e.useState(!1),{xAxis:c}=_x(),{yAxis:u}=Fx(),d=a.slider.preview;if(!o)return null;let p,h,m,f,g;const y=d?vt:BP;if("x"===t){const e=c[n];if(!e||"none"===e.position)return null;const t=e.height;p=i.left,h="bottom"===e.position?i.top+i.height+e.offset+t+yt:i.top-e.offset-t-y-yt,m=e.reverse??!1,f=e.position??"bottom",g=e.zoom?.slider?.showTooltip??It}else{const e=u[n];if(!e||"none"===e.position)return null;const t=e.width;p="right"===e.position?i.left+i.width+e.offset+t+yt:i.left-e.offset-t-y-yt,h=i.top,m=e.reverse??!1,f=e.position??"left",g=e.zoom?.slider?.showTooltip??It}const v=(y-NP)/2,b=d?(0,O.jsx)($P,{axisId:n,axisDirection:t,reverse:m,x:0,y:0,height:"x"===t?vt:i.height,width:"x"===t?i.width:vt}):(0,O.jsx)(fT,{x:"x"===t?0:v,y:"x"===t?v:0,height:"x"===t?NP:i.height,width:"x"===t?i.width:NP,rx:NP/2,ry:NP/2,axisId:n,axisDirection:t,reverse:m,onSelectStart:"hover"===g?()=>l(!0):void 0,onSelectEnd:"hover"===g?()=>l(!1):void 0});return(0,O.jsxs)("g",{"data-charts-zoom-slider":!0,transform:`translate(${p} ${h})`,style:{touchAction:"none"},children:[b,(0,O.jsx)(LT,{zoomData:o,axisId:n,axisPosition:f,axisDirection:t,reverse:m,showTooltip:s&&"never"!==g||"always"===g,size:d?vt:_P,preview:d,onPointerEnter:"hover"===g?()=>l(!0):void 0,onPointerLeave:"hover"===g?()=>l(!1):void 0})]})}function DT(){const{xAxisIds:t,xAxis:n}=_x(),{yAxisIds:r,yAxis:i}=Fx();return(0,O.jsxs)(e.Fragment,{children:[t.map(e=>{const t=n[e],r=t.zoom?.slider;return r?.enabled?(0,O.jsx)(RT,{axisId:e,axisDirection:"x"},e):null}),r.map(e=>{const t=i[e],n=t.zoom?.slider;return n?.enabled?(0,O.jsx)(RT,{axisId:e,axisDirection:"y"},e):null})]})}function $T(e){return Xb("MuiChartsReferenceLine",e)}const zT=Zb("MuiChartsReferenceLine",["root","vertical","horizontal","line","label"]),NT=bm("g",{slot:"internal",shouldForwardProp:void 0})(({theme:e})=>({[`& .${zT.line}`]:{fill:"none",stroke:(e.vars||e).palette.text.primary,shapeRendering:"crispEdges",strokeWidth:1,pointerEvents:"none"},[`& .${zT.label}`]:l({fill:(e.vars||e).palette.text.primary,stroke:"none",pointerEvents:"none",fontSize:12},e.typography.body1)})),_T=({top:e,height:t,spacing:n,position:r,labelAlign:i="middle"})=>{const o="middle"===i?0:5,a=("object"==typeof n?n.x:n)??5,s=("object"==typeof n?n.y:o)??o;switch(i){case"start":return{x:r+a,y:e+s,style:{dominantBaseline:"hanging",textAnchor:"start"}};case"end":return{x:r+a,y:e+t-s,style:{dominantBaseline:"auto",textAnchor:"start"}};default:return{x:r+a,y:e+t/2+s,style:{dominantBaseline:"central",textAnchor:"start"}}}};function FT(e){const{x:t,label:n="",spacing:r,classes:i,labelAlign:o="middle",lineStyle:a,labelStyle:s,axisId:c}=e,{top:u,height:d}=Nx(),p=uk(c)(t);if(void 0===p)return null;const h=`M ${p} ${u} l 0 ${d}`,m=function(e){return uI({root:["root","vertical"],line:["line"],label:["label"]},$T,e)}(i),f=l({text:n,fontSize:12},_T({top:u,height:d,spacing:r,position:p,labelAlign:o}),{className:m.label});return(0,O.jsxs)(NT,{className:m.root,children:[(0,O.jsx)("path",{d:h,className:m.line,style:a}),(0,O.jsx)(JS,l({},f,{style:l({},f.style,s)}))]})}const HT=({left:e,width:t,spacing:n,position:r,labelAlign:i="middle"})=>{const o="middle"===i?0:5,a=("object"==typeof n?n.x:o)??o,s=("object"==typeof n?n.y:n)??5;switch(i){case"start":return{y:r-s,x:e+a,style:{dominantBaseline:"auto",textAnchor:"start"}};case"end":return{y:r-s,x:e+t-a,style:{dominantBaseline:"auto",textAnchor:"end"}};default:return{y:r-s,x:e+t/2+a,style:{dominantBaseline:"auto",textAnchor:"middle"}}}};function BT(e){const{y:t,label:n="",spacing:r,classes:i,labelAlign:o="middle",lineStyle:a,labelStyle:s,axisId:c}=e,{left:u,width:d}=Nx(),p=dk(c)(t);if(void 0===p)return null;const h=`M ${u} ${p} l ${d} 0`,m=function(e){return uI({root:["root","horizontal"],line:["line"],label:["label"]},$T,e)}(i),f=l({text:n,fontSize:12},HT({left:u,width:d,spacing:r,position:p,labelAlign:o}),{className:m.label});return(0,O.jsxs)(NT,{className:m.root,children:[(0,O.jsx)("path",{d:h,className:m.line,style:a}),(0,O.jsx)(JS,l({},f,{style:l({},f.style,s)}))]})}function VT(e){const{x:t,y:n}=e;if(void 0!==t&&void 0!==n)throw new Error("MUI X Charts: The ChartsReferenceLine cannot have both `x` and `y` props set.");if(void 0===t&&void 0===n)throw new Error("MUI X Charts: The ChartsReferenceLine should have a value in `x` or `y` prop.");return void 0!==t?(0,O.jsx)(FT,l({},e)):(0,O.jsx)(BT,l({},e))}const UT=Zb("MuiChartsBrushOverlay",["root","rect","x","y"]);function YT(e){return(0,O.jsx)("rect",l({className:UT.rect,strokeWidth:1,fillOpacity:.2,pointerEvents:"none"},e))}function WT(e){const t=zx(),n=t.use(he),r=xm(),i=t.use(hb),o=t.use(mb),a=t.use(fb),s=t.use(gb),c=t.use(xb);if(null===i||null===o||null===a||null===s)return null;const{left:u,top:d,width:p,height:h}=n,m=e=>Math.max(u,Math.min(u+p,e)),f=e=>Math.max(d,Math.min(d+h,e)),g=m(i),y=f(o),v=m(a),b=f(s),x="light"===r.palette.mode?r.palette.common.black:r.palette.common.white;if("xy"===c){const t=v-g,n=b-y;return(0,O.jsx)("g",{className:Hh(UT.root,UT.x,UT.y),children:(0,O.jsx)(YT,l({fill:x,x:t>=0?g:v,y:n>=0?y:b,width:Math.abs(t),height:Math.abs(n)},e))})}if("y"===c){const t=Math.min(y,b),n=Math.max(y,b)-t;return(0,O.jsx)("g",{className:Hh(UT.root,UT.y),children:(0,O.jsx)(YT,l({fill:x,x:u,y:t,width:p,height:n},e))})}const I=Math.min(g,v),w=Math.max(g,v)-I;return(0,O.jsx)("g",{className:Hh(UT.root,UT.x),children:(0,O.jsx)(YT,l({fill:x,x:I,y:d,width:w,height:h},e))})}function GT(t,n,r,i={}){return"function"==typeof n?n(r,i):n?(n.props.className&&(r.className=(o=n.props.className,a=r.className,o&&a?`${o} ${a}`:o||a)),(n.props.style||r.style)&&(r.style=l({},r.style,n.props.style)),e.cloneElement(n,r)):e.createElement(t,r);var o,a}const KT=e.createContext(void 0);function qT({children:t}){const[n,r]=e.useState(null),i=e.useRef(n),[o,a]=e.useState([]),s=e.useCallback(()=>o.sort(XT),[o]),l=e.useCallback((e,t,n=!0)=>{let r=e;const i=s(),o=i.length;for(let e=0;e=o){if(!n)return-1;r=0}else if(r<0){if(!n)return-1;r=o-1}if(!i[r].ref.current?.disabled&&"true"!==i[r].ref.current?.ariaDisabled)return r}return-1},[s]),c=e.useCallback((e,t)=>{a(n=>[...n,{id:e,ref:t}])},[]),u=e.useCallback(e=>{a(t=>t.filter(t=>t.id!==e))},[]),d=e.useCallback(e=>{if(!n)return;const t=s(),i=t.findIndex(e=>e.id===n);let o=-1;if("ArrowRight"===e.key?(e.preventDefault(),o=l(i,1)):"ArrowLeft"===e.key?(e.preventDefault(),o=l(i,-1)):"Home"===e.key?(e.preventDefault(),o=l(-1,1,!1)):"End"===e.key&&(e.preventDefault(),o=l(t.length,-1,!1)),o>=0&&o{n!==e&&r(e)},[n,r]),h=e.useCallback(e=>{const t=s(),n=t.findIndex(t=>t.id===e),i=l(n,1);if(i>=0&&i{i.current=n},[n]),e.useEffect(()=>{const e=s();if(e.length>0){if(!i.current)return void r(e[0].id);const t=e.findIndex(e=>e.id===i.current);if(e[t]){if(-1===t){const n=e[t];n&&(r(n.id),n.ref.current?.focus())}}else{const t=e[e.length-1];t&&(r(t.id),t.ref.current?.focus())}}},[s,l]);const m=e.useMemo(()=>({focusableItemId:n,registerItem:c,unregisterItem:u,onItemKeyDown:d,onItemFocus:p,onItemDisabled:h}),[n,c,u,d,p,h]);return(0,O.jsx)(KT.Provider,{value:m,children:t})}function XT(e,t){if(!e.ref.current||!t.ref.current)return 0;const n=e.ref.current.compareDocumentPosition(t.ref.current);return n?n&Node.DOCUMENT_POSITION_FOLLOWING||n&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:n&Node.DOCUMENT_POSITION_PRECEDING||n&Node.DOCUMENT_POSITION_CONTAINS?1:0:0}const ZT=["render","onKeyDown","onFocus","disabled","aria-disabled"],JT=["tabIndex"],QT=e.forwardRef(function(t,n){const{render:r}=t,i=tt(t,ZT),{slots:o,slotProps:a}=sc(),s=e.useRef(null),c=Dx(s,n),u=function(t,n){const{onKeyDown:r,onFocus:i,disabled:o,"aria-disabled":a}=t,s=z(),{focusableItemId:l,registerItem:c,unregisterItem:u,onItemKeyDown:d,onItemFocus:p,onItemDisabled:h}=function(){const t=e.useContext(KT);if(void 0===t)throw new Error("MUI X: Missing context. Toolbar subcomponents must be placed within a component.");return t}();e.useEffect(()=>(c(s,n),()=>u(s)),[s,n,c,u]);const m=e.useRef(o);e.useEffect(()=>{m.current!==o&&!0===o&&h(s,o),m.current=o},[o,s,h]);const f=e.useRef(a);return e.useEffect(()=>{f.current!==a&&!0===a&&h(s,!0),f.current=a},[a,s,h]),{tabIndex:l===s?0:-1,disabled:o,"aria-disabled":a,onKeyDown:e=>{d(e),r?.(e)},onFocus:e=>{p(s),i?.(e)}}}(t,s),{tabIndex:d}=u,p=tt(u,JT),h=GT(o.baseIconButton,r,l({},a?.baseIconButton,{tabIndex:d},i,p,{ref:c}));return(0,O.jsx)(e.Fragment,{children:h})}),eA=["className","render"],tA=bm("div",{name:"MuiChartsToolbar",slot:"Root"})(({theme:e})=>({flex:0,display:"flex",alignItems:"center",justifyContent:"end",gap:e.spacing(.25),padding:e.spacing(.5),marginBottom:e.spacing(1.5),minHeight:44,boxSizing:"border-box",border:`1px solid ${(e.vars||e).palette.divider}`,borderRadius:4})),nA=e.forwardRef(function(e,t){let{className:n,render:r}=e,i=tt(e,eA);const o=GT(tA,r,l({role:"toolbar","aria-orientation":"horizontal",className:Hh(Jb.root,n)},i,{ref:t}));return(0,O.jsx)(qT,{children:o})}),rA=()=>{const t=e.useContext(Nh);if(null===t)throw new Error(["MUI X Charts: Can not find the charts localization context.","It looks like you forgot to wrap your component in ChartsLocalizationProvider.","This can also happen if you are bundling multiple versions of the `@mui/x-charts` package"].join("\n"));return t},iA=function(e={}){const{themeId:t,defaultTheme:n=JE,rootShouldForwardProp:r=QE,slotShouldForwardProp:i=QE}=e;function o(e){!function(e,t,n){e.theme=function(e){for(const t in e)return!1;return!0}(e.theme)?n:e.theme[t]||e.theme}(e,t,n)}return(e,t={})=>{!function(e){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=(e=>e.filter(e=>e!==XE))(e.__emotion_styles))}(e);const{name:n,slot:a,skipVariantsResolver:s,skipSx:l,overridesResolver:c=tT(iT(a)),...u}=t,d=n&&n.startsWith("Mui")||a?"components":"custom",p=void 0!==s?s:a&&"Root"!==a&&"root"!==a||!1,h=l||!1;let m=QE;"Root"===a||"root"===a?m=r:a?m=i:function(e){return"string"==typeof e&&e.charCodeAt(0)>96}(e)&&(m=void 0);const f=function(e,t){return om(e,t)}(e,{shouldForwardProp:m,label:void 0,...u}),g=e=>{if(e.__emotion_real===e)return e;if("function"==typeof e)return function(t){return nT(t,e,t.theme.modularCssLayers?d:void 0)};if(YP(e)){const t=function(e){const{variants:t,...n}=e,r={variants:t,style:UP(n),isProcessed:!0};return r.style===n||t&&t.forEach(e=>{"function"!=typeof e.style&&(e.style=UP(e.style))}),r}(e);return function(e){return t.variants?nT(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?eT(t.style,d):t.style}}return e},y=(...t)=>{const r=[],i=t.map(g),a=[];if(r.push(o),n&&c&&a.push(function(e){const t=e.theme,r=t.components?.[n]?.styleOverrides;if(!r)return null;const i={};for(const t in r)i[t]=nT(e,r[t],e.theme.modularCssLayers?"theme":void 0);return c(e,i)}),n&&!p&&a.push(function(e){const t=e.theme,r=t?.components?.[n]?.variants;return r?rT(e,r,[],e.theme.modularCssLayers?"theme":void 0):null}),h||a.push(XE),Array.isArray(i[0])){const e=i.shift(),t=new Array(r.length).fill(""),n=new Array(a.length).fill("");let o;o=[...t,...e,...n],o.raw=[...t,...e.raw,...n],r.unshift(o)}const s=[...r,...i,...a],l=f(...s);return e.muiName&&(l.muiName=e.muiName),l};return f.withConfig&&(y.withConfig=f.withConfig),y}}(),oA=iA(function(e){throw new Error("Failed assertion: should not be rendered")},{name:"MuiChartsToolbar",slot:"Divider"})(({theme:e})=>({margin:e.spacing(0,.5),height:"50%"})),aA=e.forwardRef(function(e,t){const{slots:n,slotProps:r}=sc();return(0,O.jsx)(oA,l({as:n.baseDivider,orientation:"vertical"},r.baseDivider,e,{ref:t}))}),sA=["open","target","onClose","children","position","className","onExited"];function lA(t){const{open:n,target:r,onClose:i,children:o,position:a,onExited:s}=t,c=tt(t,sA),{slots:u,slotProps:d}=sc(),p=u.basePopper,h=e.useRef(null);return bT(()=>{n?h.current=document.activeElement instanceof HTMLElement?document.activeElement:null:(h.current?.focus?.(),h.current=null)},[n]),(0,O.jsx)(p,l({open:n,target:r,transition:!0,placement:a,onClickAway:e=>{e.target&&(r===e.target||r?.contains(e.target))||i(e)},onExited:s,clickAwayMouseEvent:"onMouseDown"},c,d?.basePopper,{children:o}))}function cA(t,n,r,i={}){return"function"==typeof n?n(r,i):n?(n.props.className&&(r.className=(o=n.props.className,a=r.className,o&&a?`${o} ${a}`:o||a)),(n.props.style||r.style)&&(r.style=l({},r.style,n.props.style)),e.cloneElement(n,r)):e.createElement(t,r);var o,a}const uA=["render"],dA=e.forwardRef(function(t,n){let{render:r}=t,i=tt(t,uA);const{slots:o,slotProps:a}=sc(),{instance:s,store:c}=$x(),u=c.use(mx),d=cA(o.baseButton,r,l({},a.baseButton,{onClick:()=>s.zoomIn(),disabled:u},i,{ref:n}));return(0,O.jsx)(e.Fragment,{children:d})}),pA=["render"],hA=e.forwardRef(function(t,n){let{render:r}=t,i=tt(t,pA);const{slots:o,slotProps:a}=sc(),{instance:s,store:c}=$x(),u=c.use(hx),d=cA(o.baseButton,r,l({},a.baseButton,{onClick:()=>s.zoomOut(),disabled:u},i,{ref:n}));return(0,O.jsx)(e.Fragment,{children:d})}),mA=parseInt(e.version,10),fA=t=>{if(mA>=19){const e=e=>t(e,e.ref??null);return e.displayName=t.displayName??t.name,e}return e.forwardRef(t)};function gA(){return function(){const{publicAPI:t}=$x(),n=e.useRef(t);return e.useEffect(()=>{n.current=t},[t]),n}()}const yA=["render","options","onClick"],vA=fA(function(t,n){const{render:r,options:i,onClick:o}=t,a=tt(t,yA),{slots:s,slotProps:c}=sc(),u=gA(),d=cA(s.baseButton,r,l({},c?.baseButton,{onClick:e=>{u.current.exportAsPrint(i),o?.(e)}},a,{ref:n}));return(0,O.jsx)(e.Fragment,{children:d})}),bA=["render","options","onClick"],xA=fA(function(t,n){const{render:r,options:i,onClick:o}=t,a=tt(t,bA),{slots:s,slotProps:c}=sc(),u=gA(),d=cA(s.baseButton,r,l({},c?.baseButton,{onClick:e=>{u.current.exportAsImage(i),o?.(e)}},a,{ref:n}));return(0,O.jsx)(e.Fragment,{children:d})}),IA=["printOptions","imageExportOptions"],wA=[{type:"image/png"}];function kA(t){let{printOptions:n,imageExportOptions:r}=t,i=tt(t,IA);const{slots:o,slotProps:a}=sc(),{store:s}=$x(),{localeText:c}=rA(),[u,d]=e.useState(!1),p=e.useRef(null),h=iP(),m=iP(),f=s.use(dx),g=r??wA,y=!n?.disableToolbarButton||g.length>0,v=[];if(f){const e=o.baseTooltip,t=o.zoomOutIcon,n=o.zoomInIcon;v.push((0,O.jsx)(e,l({},a.baseTooltip,{title:c.zoomIn,children:(0,O.jsx)(dA,{render:(0,O.jsx)(QT,{size:"small"}),children:(0,O.jsx)(n,l({fontSize:"small"},a.zoomInIcon))})}),"zoom-in")),v.push((0,O.jsx)(e,l({},a.baseTooltip,{title:c.zoomOut,children:(0,O.jsx)(hA,{render:(0,O.jsx)(QT,{size:"small"}),children:(0,O.jsx)(t,l({fontSize:"small"},a.zoomOutIcon))})}),"zoom-out"))}if(y){const t=o.baseTooltip,r=o.baseMenuList,i=o.baseMenuItem,s=o.exportIcon,f=()=>d(!1),y=e=>{var t;"Tab"===e.key&&e.preventDefault(),("Tab"===(t=e.key)||"Escape"===t)&&f()};v.length>0&&v.push((0,O.jsx)(aA,{},"divider")),v.push((0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(t,{title:c.toolbarExport,disableInteractive:u,children:(0,O.jsx)(QT,{ref:p,id:m,"aria-controls":h,"aria-haspopup":"true","aria-expanded":u?"true":void 0,onClick:()=>d(!u),size:"small",children:(0,O.jsx)(s,{fontSize:"small"})})}),(0,O.jsx)(lA,{target:p.current,open:u,onClose:f,position:"bottom-end",children:(0,O.jsxs)(r,l({id:h,"aria-labelledby":m,onKeyDown:y,autoFocusItem:!0},a?.baseMenuList,{children:[!n?.disableToolbarButton&&(0,O.jsx)(vA,{render:(0,O.jsx)(i,l({dense:!0},a?.baseMenuItem)),options:n,onClick:f,children:c.toolbarExportPrint}),g.map(e=>(0,O.jsx)(xA,{render:(0,O.jsx)(i,l({dense:!0},a?.baseMenuItem)),options:e,onClick:f,children:c.toolbarExportImage(e.type)},e.type))]}))})]},"export-menu"))}return 0===v.length?null:(0,O.jsx)(nA,l({},i,{children:v}))}function SA(){return SA=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0?a:l;return n().createElement("g",null,n().createElement("line",{x1:v,y1:m,x2:v,y2:m+g,stroke:i,strokeWidth:2,strokeDasharray:"5,5",pointerEvents:"none"}),n().createElement("line",{x1:b,y1:m,x2:b,y2:m+g,stroke:i,strokeWidth:2,strokeDasharray:"5,5",pointerEvents:"none"}),n().createElement("rect",{x,y:m,width:w,height:g,fill:i,fillOpacity:.1,pointerEvents:"none"}),n().createElement("g",{transform:"translate(".concat(v,", ").concat(m+15,")")},n().createElement("rect",{x:-30,y:0,width:60,height:40,fill:i,rx:4}),n().createElement("text",{x:0,y:16,textAnchor:"middle",fill:"white",fontSize:10},String(A)),n().createElement("text",{x:0,y:32,textAnchor:"middle",fill:"white",fontSize:11,fontWeight:"bold"},"number"==typeof C?C.toFixed(2):C)),n().createElement("g",{transform:"translate(".concat(b,", ").concat(m+15,")")},n().createElement("rect",{x:-30,y:0,width:60,height:40,fill:i,rx:4}),n().createElement("text",{x:0,y:16,textAnchor:"middle",fill:"white",fontSize:10},String(O)),n().createElement("text",{x:0,y:32,textAnchor:"middle",fill:"white",fontSize:11,fontWeight:"bold"},"number"==typeof P?P.toFixed(2):P)),n().createElement("g",{transform:"translate(".concat((x+I)/2,", ").concat(m+g-30,")")},n().createElement("rect",{x:-50,y:0,width:100,height:26,fill:j,rx:4}),n().createElement("text",{x:0,y:17,textAnchor:"middle",fill:"white",fontSize:12,fontWeight:"bold"},E>=0?"+":"",E.toFixed(2)," (",T,"%)")))}function $A(t){var r,i=t.id,o=t.licenseKey,a=t.series,l=void 0===a?[]:a,c=t.xAxis,u=t.yAxis,d=t.height,p=void 0===d?400:d,h=t.width,m=t.margin,f=t.grid,g=t.colors,y=t.hideLegend,v=void 0!==y&&y,b=t.tooltip,x=t.skipAnimation,I=void 0!==x&&x,w=t.loading,k=void 0!==w&&w,S=t.zoom,M=t.initialZoom,C=t.showSlider,P=void 0!==C&&C,E=t.zoomInteractionConfig,T=t.referenceLines,A=void 0===T?[]:T,O=t.brushConfig,j=t.brushOverlay,L=void 0===j?"none":j,R=t.brushSeriesId,D=t.axisHighlight,$=void 0===D?{x:"line",y:"none"}:D,z=t.highlightedAxis,N=t.highlightedItem,_=t.tooltipItem,F=t.showToolbar,H=void 0!==F&&F,B=(t.brushData,t.zoomData,t.clickData,t.n_clicks),V=void 0===B?0:B,U=t.setProps,Y=(0,e.useId)();o&&!jA&&(s.setLicenseKey(o),jA=!0);var W=EA((0,e.useState)(function(){return S&&Array.isArray(S)&&S.length>0?S:M&&Array.isArray(M)&&M.length>0?M:[]}),2),G=W[0],K=W[1],q=(0,e.useRef)(JSON.stringify(S||M||[])),X=EA((0,e.useState)(0),2),Z=X[0],J=X[1];(0,e.useEffect)(function(){var e=JSON.stringify(S);S&&Array.isArray(S)&&e!==q.current&&(q.current=e,K(S),J(function(e){return e+1}))},[S]);var Q=(0,e.useRef)(JSON.stringify(null!=z?z:[])),ee=EA((0,e.useState)(function(){return z&&Array.isArray(z)?z:[]}),2),te=ee[0],ne=ee[1];(0,e.useEffect)(function(){var e=JSON.stringify(null!=z?z:[]);e!==Q.current&&(Q.current=e,ne(null!=z?z:[]))},[z]);var re=(0,e.useRef)(JSON.stringify(null!=N?N:null)),ie=EA((0,e.useState)(function(){return null!=N?N:null}),2),oe=ie[0],ae=ie[1];(0,e.useEffect)(function(){var e=JSON.stringify(null!=N?N:null);e!==re.current&&(re.current=e,ae(null!=N?N:null))},[N]);var se=(0,e.useRef)(JSON.stringify(null!=_?_:null)),le=EA((0,e.useState)(function(){return null!=_?_:null}),2),ce=le[0],ue=le[1];(0,e.useEffect)(function(){var e=JSON.stringify(null!=_?_:null);e!==se.current&&(se.current=e,ue(null!=_?_:null))},[_]);var de=(0,e.useMemo)(function(){return l.some(function(e){return e.area})},[l]),pe=(0,e.useMemo)(function(){return l.some(function(e){return!1!==e.showMark})},[l]),he=(0,e.useMemo)(function(){return l.map(function(e){return CA({type:"line"},e)})},[l]),me=(0,e.useMemo)(function(){var e=function(e){return!!e&&e.some(function(e){var t=e.zoom;return t&&"object"===OA(t)&&t.slider&&t.slider.enabled})};return e(c)||e(u)},[c,u]),fe=(0,e.useMemo)(function(){if(c)return c.map(function(e){var t=CA({},e);if(e.dateFormat)t.valueFormatter=function(e,t){var n=t||e;return function(t,r){return function(e,t){var n=e instanceof Date?e:new Date(e);return t.replace(/YYYY|YY|MMM|MM|dd|HH|mm|M|d/g,function(e){switch(e){case"YYYY":return n.getFullYear();case"YY":return String(n.getFullYear()).slice(-2);case"MMM":return LA[n.getMonth()];case"MM":return RA(n.getMonth()+1);case"M":return n.getMonth()+1;case"dd":return RA(n.getDate());case"d":return n.getDate();case"HH":return RA(n.getHours());case"mm":return RA(n.getMinutes());default:return e}})}(t,r&&"tick"===r.location?n:e)}}(e.dateFormat,e.dateTickFormat),delete t.dateFormat,delete t.dateTickFormat;else if(e.valueFormatter&&"function"!=typeof e.valueFormatter){var n=function(e){if("function"==typeof e)return e;if(e&&"object"===OA(e)&&"string"==typeof e.function){var t=window.dashMuiChartsFunctions;if(t&&"function"==typeof t[e.function]){var n=t[e.function],r=e.options||{};return function(){for(var e=arguments.length,t=new Array(e),i=0;i0&&(ge.initialZoom=G),ge.highlightedAxis=te,ge.onHighlightedAxisChange=function(e){var t=null!=e?e:[];ne(t),Q.current=JSON.stringify(t),U&&U({highlightedAxis:t})},ge.highlightedItem=oe,ge.onHighlightChange=function(e){var t=null!=e?e:null;ae(t),re.current=JSON.stringify(t),U&&U({highlightedItem:t})},ge.tooltipItem=ce,ge.onTooltipItemChange=function(e){var t=null!=e?e:null;ue(t),se.current=JSON.stringify(t),U&&U({tooltipItem:t})};var ye=["tickSize","disableLine","disableTicks","tickLabelStyle","labelStyle","tickLabelPlacement","tickPlacement","tickLabelMinGap","tickSpacing","tickInterval","tickLabelInterval"],ve=function(e){if(!e)return{};for(var t={},n=0,r=ye;n({x:n(e),y:r(e),width:i(e),height:o(e)})}const FA=4,HA=["seriesId","dataIndex","color","isFaded","isHighlighted","classes","skipAnimation","layout","xOrigin","yOrigin","placement","hidden"],BA=bm("text",{name:"MuiBarLabel",slot:"Root",overridesResolver:(e,t)=>[{[`&.${NA.faded}`]:t.faded},{[`&.${NA.highlighted}`]:t.highlighted},t.root]})(({theme:e})=>l({},e?.typography?.body2,{stroke:"none",fill:(e.vars||e)?.palette?.text?.primary,transitionProperty:"opacity, fill",transitionDuration:`${_I}ms`,transitionTimingFunction:FI,pointerEvents:"none"}));function VA(e){const t=Lh({props:e,name:"MuiBarLabel"}),{isFaded:n,hidden:r}=t,i=tt(t,HA),o=function(e){const{initialX:t,currentX:n,initialY:r,currentY:i}="outside"===e.placement?function(e){let t=0,n=0,r=0,i=0;return"vertical"===e.layout?(e.ye,applyProps(e,t){e.setAttribute("x",t.x.toString()),e.setAttribute("y",t.y.toString()),e.setAttribute("width",t.width.toString()),e.setAttribute("height",t.height.toString())},initialProps:o,skip:e.skipAnimation,ref:e.ref})}(t),a=function({placement:e,layout:t,xOrigin:n,x:r}){return"outside"===e&&"horizontal"===t?r{const{classes:t,seriesId:n,isFaded:r,isHighlighted:i,skipAnimation:o}=e;return uI({root:["root",`series-${n}`,i&&"highlighted",r&&"faded",!o&&"animate"]},zA,t)})(k),M=a?.barLabel??VA,C=yI({elementType:M,externalSlotProps:s?.barLabel,additionalProps:l({},x,{xOrigin:c,yOrigin:u,x:d,y:p,width:h,height:m,placement:v,className:S.root}),ownerState:k}),{ownerState:P}=C,E=tt(C,YA);if(!o)return null;const T=function(e){const{barLabel:t,value:n,dataIndex:r,seriesId:i,height:o,width:a}=e;return"value"===t?n?n?.toString():null:t({seriesId:i,dataIndex:r,value:n},{bar:{height:o,width:a}})}({barLabel:o,value:f,dataIndex:i,seriesId:t,height:m,width:h});return T?(0,O.jsx)(M,l({},E,P,{hidden:b,children:T})):null}const GA=["processedSeries","className","skipAnimation"];function KA(e){const{processedSeries:t,className:n,skipAnimation:r}=e,i=tt(e,GA),{seriesId:o,data:a,layout:s,xOrigin:c,yOrigin:u}=t,d=t.barLabel??e.barLabel;return d?(0,O.jsx)("g",{className:n,"data-series":o,children:a.map(({x:e,y:n,dataIndex:a,color:p,value:h,width:m,height:f})=>(0,O.jsx)(WA,l({seriesId:o,dataIndex:a,value:h,color:p,xOrigin:c,yOrigin:u,x:e,y:n,width:m,height:f,skipAnimation:r??!1,layout:s??"vertical"},i,{barLabel:d,barLabelPlacement:t.barLabelPlacement||"center"}),a))},o):null}function qA(e){return Xb("MuiBar",e)}Zb("MuiBar",["root","series","seriesLabels"]);const XA=e=>uI({root:["root"],series:["series"],seriesLabels:["seriesLabels"]},qA,e);function ZA(e,t){const n=Tn(e.x,t.x),r=Tn(e.y,t.y),i=Tn(e.width,t.width),o=Tn(e.height,t.height),a=Tn(e.borderRadius,t.borderRadius);return e=>({x:n(e),y:r(e),width:i(e),height:o(e),borderRadius:a(e)})}function JA(e){const{maskId:t,x:n,y:r,width:i,height:o,skipAnimation:a}=e,{ref:s,d:l}=function(e){const t={x:"vertical"===e.layout?e.x:e.xOrigin,y:"vertical"===e.layout?e.yOrigin:e.y,width:"vertical"===e.layout?e.width:0,height:"vertical"===e.layout?0:e.height,borderRadius:e.borderRadius};return aw({x:e.x,y:e.y,width:e.width,height:e.height,borderRadius:e.borderRadius},{createInterpolator:ZA,transformProps:t=>({d:QA(e.hasNegative,e.hasPositive,e.layout,t.x,t.y,t.width,t.height,e.xOrigin,e.yOrigin,t.borderRadius)}),applyProps(e,{d:t}){t&&e.setAttribute("d",t)},initialProps:t,skip:e.skipAnimation,ref:e.ref})}({layout:e.layout??"vertical",hasNegative:e.hasNegative,hasPositive:e.hasPositive,xOrigin:e.xOrigin,yOrigin:e.yOrigin,x:n,y:r,width:i,height:o,borderRadius:e.borderRadius??0,skipAnimation:a});return!e.borderRadius||e.borderRadius<=0?null:(0,O.jsx)("clipPath",{id:t,children:(0,O.jsx)("path",{ref:s,d:l})})}function QA(e,t,n,r,i,o,a,s,l,c){if("vertical"===n){if(t&&e){const e=Math.min(c,o/2,a/2);return`M${r},${i+a/2} v${-(a/2-e)} a${e},${e} 0 0 1 ${e},${-e} h${o-2*e} a${e},${e} 0 0 1 ${e},${e} v${a-2*e} a${e},${e} 0 0 1 ${-e},${e} h${-(o-2*e)} a${e},${e} 0 0 1 ${-e},${-e} v${-(a/2-e)}`}const n=Math.min(c,o/2);if(t)return`M${r},${Math.max(l,i+n)} v${Math.min(0,-(l-i-n))} a${n},${n} 0 0 1 ${n},${-n} h${o-2*n} a${n},${n} 0 0 1 ${n},${n} v${Math.max(0,l-i-n)} Z`;if(e)return`M${r},${Math.min(l,i+a-n)} v${Math.max(0,a-n)} a${n},${n} 0 0 0 ${n},${n} h${o-2*n} a${n},${n} 0 0 0 ${n},${-n} v${-Math.max(0,a-n)} Z`}if("horizontal"===n){if(t&&e){const e=Math.min(c,o/2,a/2);return`M${r+o/2},${i} h${o/2-e} a${e},${e} 0 0 1 ${e},${e} v${a-2*e} a${e},${e} 0 0 1 ${-e},${e} h${-(o-2*e)} a${e},${e} 0 0 1 ${-e},${-e} v${-(a-2*e)} a${e},${e} 0 0 1 ${e},${-e} h${o/2-e}`}const n=Math.min(c,a/2);if(t)return`M${Math.min(s,r-n)},${i} h${o} a${n},${n} 0 0 1 ${n},${n} v${a-2*n} a${n},${n} 0 0 1 ${-n},${n} h${-o} Z`;if(e)return`M${Math.max(s,r+o+n)},${i} h${-o} a${n},${n} 0 0 0 ${-n},${n} v${a-2*n} a${n},${n} 0 0 0 ${n},${n} h${o} Z`}}const eO=["completedData","masksData","borderRadius","onItemClick","skipAnimation"];function tO(t){let{completedData:n,masksData:r,borderRadius:i,onItemClick:o,skipAnimation:a}=t,s=tt(t,eO);const c=XA(),u=!i||i<=0;return(0,O.jsxs)(e.Fragment,{children:[!u&&r.map(({id:e,x:t,y:n,xOrigin:r,yOrigin:o,width:s,height:l,hasPositive:c,hasNegative:u,layout:d})=>(0,O.jsx)(JA,{maskId:e,borderRadius:i,hasNegative:u,hasPositive:c,layout:d,x:t,y:n,xOrigin:r,yOrigin:o,width:s,height:l,skipAnimation:a??!1},e)),n.map(({seriesId:e,layout:t,xOrigin:n,yOrigin:r,data:i})=>(0,O.jsx)("g",{"data-series":e,className:c.series,children:i.map(({dataIndex:i,color:c,maskId:d,x:p,y:h,width:m,height:f})=>{const g=(0,O.jsx)(bP,l({id:e,dataIndex:i,color:c,skipAnimation:a??!1,layout:t??"vertical",x:p,xOrigin:n,y:h,yOrigin:r,width:m,height:f},s,{onClick:o&&(t=>{o(t,{type:"bar",seriesId:e,dataIndex:i})})}),i);return u?g:(0,O.jsx)("g",{clipPath:`url(#${d})`,children:g},i)})},e))]})}const nO=ae(ls,cs,ft,function({axis:e,axisIds:t},{axis:n,axisIds:r},i,o){const{series:a,stackingGroups:s=[]}=i?.bar??{},l=t[0],c=r[0];let u;for(let t=0;t=P&&v<=E){const e="horizontal"===r.layout?o.x:o.y,t=r.stackedData[b],n=g.scale(t[0]),a=g.scale(t[1]);if(null==n||null==a)continue;const s=Math.min(n,a),l=Math.max(n,a);e>=s&&e<=l&&(u={seriesId:i,dataIndex:b})}}}if(u)return{type:"bar",seriesId:u.seriesId,dataIndex:u.dataIndex}});function rO(e,t,n){let r=e.get(t);return r?r.push(n):(r=[n],e.set(t,r)),r}function iO(e,t){return function(e,t,n,r,i,o,a,s){const l=Math.min(i,n/2,r/2),c=Math.min(o,n/2,r/2),u=Math.min(a,n/2,r/2),d=Math.min(s,n/2,r/2);return`M${e+l},${t}\n h${n-l-c}\n a${c},${c} 0 0 1 ${c},${c}\n v${r-c-u}\n a${u},${u} 0 0 1 -${u},${u}\n h-${n-u-d}\n a${d},${d} 0 0 1 -${d},-${d}\n v-${r-d-l}\n a${l},${l} 0 0 1 ${l},-${l}\n Z`}(e.x,e.y,e.width,e.height,"left"===e.borderRadiusSide||"top"===e.borderRadiusSide?t:0,"right"===e.borderRadiusSide||"top"===e.borderRadiusSide?t:0,"right"===e.borderRadiusSide||"bottom"===e.borderRadiusSide?t:0,"left"===e.borderRadiusSide||"bottom"===e.borderRadiusSide?t:0)}const oO=["skipAnimation","layout","xOrigin","yOrigin"],aO=["children","layout","xOrigin","yOrigin"],sO=bm("g")({'&[data-faded="true"]':{opacity:.3},"& path":{pointerEvents:"none"}});function lO(e){let{skipAnimation:t,layout:n,xOrigin:r,yOrigin:i}=e,o=tt(e,oO);return t?(0,O.jsx)(sO,l({},o)):(0,O.jsx)(uO,l({},o,{layout:n,xOrigin:r,yOrigin:i}))}const cO=bm("rect")({"@keyframes scaleInX":{from:{transform:"scaleX(0)"},to:{transform:"scaleX(1)"}},"@keyframes scaleInY":{from:{transform:"scaleY(0)"},to:{transform:"scaleY(1)"}},animationDuration:`${_I}ms`,animationFillMode:"forwards",'&[data-orientation="horizontal"]':{animationName:"scaleInX"},'&[data-orientation="vertical"]':{animationName:"scaleInY"}});function uO(t){let{children:n,layout:r,xOrigin:i,yOrigin:o}=t,a=tt(t,aO);const s=zx().use(he),c=z(),u=[];return"horizontal"===r?(u.push((0,O.jsx)(cO,{"data-orientation":"horizontal",x:s.left,width:i-s.left,y:s.top,height:s.height,style:{transformOrigin:`${i}px ${s.top+s.height/2}px`}},"left")),u.push((0,O.jsx)(cO,{"data-orientation":"horizontal",x:i,width:s.left+s.width-i,y:s.top,height:s.height,style:{transformOrigin:`${i}px ${s.top+s.height/2}px`}},"right"))):(u.push((0,O.jsx)(cO,{"data-orientation":"vertical",x:s.left,width:s.width,y:s.top,height:o-s.top,style:{transformOrigin:`${s.left+s.width/2}px ${o}px`}},"top")),u.push((0,O.jsx)(cO,{"data-orientation":"vertical",x:s.left,width:s.width,y:o,height:s.top+s.height-o,style:{transformOrigin:`${s.left+s.width/2}px ${o}px`}},"bottom"))),(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("clipPath",{id:c,children:u}),(0,O.jsx)(sO,l({clipPath:`url(#${c})`},a,{children:n}))]})}function dO({completedData:t,borderRadius:n=0,onItemClick:r,skipAnimation:i=!1}){const o=e.useRef(null),a=eI();return function(t,n,r){const{instance:i}=$x(),o=eI(),a=zx(),s=e.useRef(!1),l=e.useRef(void 0),c=ke(()=>n?.()),u=ke(()=>r?.());e.useEffect(()=>{const e=o.current;if(!e)return;function n(){s.current=!0}function r(){const e=l.current;e&&(l.current=void 0,i.removeTooltipItem(e),i.clearHighlight(),u())}function d(){s.current=!1,r()}const p=function(n){const o=xs(e,n);if(!i.isPointInside(o.x,o.y))return void r();const s=t(a.state,o);s?(i.setLastUpdateSource("pointer"),i.setTooltipItem(s),i.setHighlight(s),c(),l.current=s):r()};return e.addEventListener("pointerleave",d),e.addEventListener("pointermove",p),e.addEventListener("pointerenter",n),()=>{e.removeEventListener("pointerenter",n),e.removeEventListener("pointermove",p),e.removeEventListener("pointerleave",d),s.current&&d()}},[t,i,c,u,a,o])}(nO,r?()=>{const e=a.current;e&&null==o.current&&(o.current=e.style.cursor,e.style.cursor="pointer")}:void 0,r?()=>{const e=a.current;e&&null!=o.current&&(e.style.cursor=o.current,o.current=null)}:void 0),function(t){const{instance:n}=$x(),r=eI(),i=zx();e.useEffect(()=>{const e=r.current;if(!e||!t)return;let o=null;const a=function(r){let a=r;o&&Math.abs(r.clientX-o.clientX)<=1&&Math.abs(r.clientY-o.clientY)<=1&&(a={clientX:o.clientX,clientY:o.clientY}),o=null;const s=xs(e,a);if(!n.isPointInside(s.x,s.y))return;const l=nO(i.state,s);l&&t(r,{type:"bar",seriesId:l.seriesId,dataIndex:l.dataIndex})},s=function(e){o=e};return e.addEventListener("click",a),e.addEventListener("pointerup",s),()=>{e.removeEventListener("click",a),e.removeEventListener("pointerup",s)}},[n,t,i,r])}(r),(0,O.jsx)(e.Fragment,{children:t.map(e=>(0,O.jsx)(hO,{series:e,borderRadius:n,skipAnimation:i},e.seriesId))})}const pO=e.memo(fO);function hO({series:t,borderRadius:n,skipAnimation:r}){const i=XA(),{store:o}=$x(),a=o.use(jI,t.seriesId),s=o.use(LI,t.seriesId);return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(lO,{className:i.series,"data-series":t.seriesId,layout:t.layout,xOrigin:t.xOrigin,yOrigin:t.yOrigin,skipAnimation:r,"data-faded":s||void 0,"data-highlighted":a||void 0,children:(0,O.jsx)(mO,{processedSeries:t,borderRadius:n})}),(0,O.jsx)(pO,{processedSeries:t,borderRadius:n})]})}function mO({processedSeries:t,borderRadius:n}){const r=function(e,t){const n=new Map,r=new Map;for(let i=0;i=1e3&&(rO(n,o.color,s.join("")),r.delete(o.color))}for(const[e,t]of r.entries())t.length>0&&rO(n,e,t.join(""));return n}(t,n),i=[];let o=0;for(const[e,t]of r.entries())for(const n of t)i.push((0,O.jsx)("path",{fill:e,d:n},o)),o+=1;return(0,O.jsx)(e.Fragment,{children:i})}function fO({processedSeries:t,borderRadius:n}){const{store:r}=$x(),i=r.use(DI,t.seriesId),o=r.use(RI,t.seriesId),a=null!=i&&t.data.find(e=>e.dataIndex===i)||null,s=null!=o&&t.data.find(e=>e.dataIndex===o)||null,l=[];return null!=a&&l.push((0,O.jsx)("path",{fill:a.color,filter:"brightness(120%)","data-highlighted":!0,d:iO(a,n)},`highlighted-${t.seriesId}`)),null!=s&&l.push((0,O.jsx)("path",{fill:s.color,d:iO(s,n)},`unfaded-${s.seriesId}`)),(0,O.jsx)(e.Fragment,{children:l})}const gO=["skipAnimation","onItemClick","borderRadius","barLabel","renderer"],yO=bm("g",{name:"MuiBarPlot",slot:"Root"})({[`& .${mP.root}`]:{transitionProperty:"opacity, fill",transitionDuration:`${_I}ms`,transitionTimingFunction:FI}});function vO(e){const{skipAnimation:t,onItemClick:n,borderRadius:r,barLabel:i,renderer:o}=e,a=tt(e,gO),s=bw(xw()||t),c=bw(t),{xAxis:u}=_x(),{yAxis:d}=Fx(),{completedData:p,masksData:h}=pP(Nx(),u,d),m=XA(),f="svg-batch"===o?dO:tO;return(0,O.jsxs)(yO,{className:m.root,children:[(0,O.jsx)(f,l({completedData:p,masksData:h,skipAnimation:"svg-batch"===o?c:s,onItemClick:n,borderRadius:r},a)),p.map(e=>(0,O.jsx)(KA,l({className:m.seriesLabels,processedSeries:e,skipAnimation:s,barLabel:i},a),e.seriesId))]})}const bO=["x","y","id","classes","color","shape"];function xO(e){return Xb("MuiHighlightElement",e)}function IO(e){const{x:t,y:n,color:r,shape:i}=e,o=tt(e,bO),a=(e=>{const{classes:t,id:n}=e;return uI({root:["root",`series-${n}`]},xO,t)})(e),s="circle"===i?"circle":"path",c="circle"===i?{cx:0,cy:0,r:void 0===o.r?5:o.r}:{d:Qk(Jk[eS(i)])()},u=F>18?{transformOrigin:`${t} ${n}`}:{"transform-origin":`${t} ${n}`};return(0,O.jsx)(s,l({pointerEvents:"none",className:a.root,transform:`translate(${t} ${n})`,fill:r},u,c,o))}Zb("MuiHighlightElement",["root"]);const wO=["slots","slotProps"];function kO(e){const{slots:t,slotProps:n}=e,r=tt(e,wO),i=lk(),{xAxis:o,xAxisIds:a}=_x(),{yAxis:s,yAxisIds:c}=Fx(),{instance:u}=$x(),d=zx().use(sS);if(0===d.length)return null;if(void 0===i)return null;const{series:p,stackingGroups:h}=i,m=a[0],f=c[0],g=t?.lineHighlight??IO;return(0,O.jsx)("g",l({},r,{children:d.flatMap(({dataIndex:e,axisId:t})=>h.flatMap(({ids:r})=>r.flatMap(r=>{const{xAxisId:i=m,yAxisId:a=f,stackedData:c,data:d,disableHighlight:h,shape:y="circle"}=p[r];if(h||null==d[e])return null;if(t!==i)return null;const v=ck(o[i].scale),b=s[a].scale,x=o[i].data;if(void 0===x)throw new Error(`MUI X Charts: ${i===W?"The first `xAxis`":`The x-axis with id "${i}"`} should have data property to be able to display a line plot.`);const I=v(x[e]),w=b(c[e][1]);if(!u.isPointInside(I,w))return null;const k=$l(p[r],o[i],s[a]);return(0,O.jsx)(g,l({id:r,color:k(e),x:I,y:w,shape:y},n?.lineHighlight),`${r}`)})))}))}function SO(e){const{children:t,localeText:n,chartProviderProps:r,slots:i,slotProps:o}=Tx(e);return(0,O.jsx)(oc,l({},r,{children:(0,O.jsx)(_h,{localeText:n,children:(0,O.jsx)(lc,{slots:i,slotProps:o,defaultSlots:bv,children:t})})}))}function MO(){return zx().use(iI)}function CO(){const e=xm(),t=MO(),n=lk(),{xAxis:r,xAxisIds:i}=_x(),{yAxis:o,yAxisIds:a}=Fx();if(null===t||"line"!==t.type||!n)return null;const s=n.series[t.seriesId];if(null==s.data[t.dataIndex])return null;const l=s.xAxisId??i[0],c=s.yAxisId??a[0];return(0,O.jsx)("rect",{fill:"none",stroke:(e.vars??e).palette.text.primary,strokeWidth:2,x:r[l].scale(r[l].data[t.dataIndex])-6,y:o[c].scale(s.stackedData[t.dataIndex][1])-6,width:12,height:12,rx:3,ry:3})}const PO=["xAxis","yAxis","width","height","margin","color","baseline","sx","showTooltip","showHighlight","axisHighlight","children","slots","slotProps","data","plotType","valueFormatter","area","curve","className","disableClipping","clipAreaOffset","onHighlightChange","onHighlightedAxisChange","highlightedAxis","highlightedItem"],EO=5,TO=e.forwardRef(function(t,n){const{xAxis:r,yAxis:i,width:o,height:a,margin:s=EO,color:c,baseline:u,sx:d,showTooltip:p,showHighlight:h,axisHighlight:m,children:f,slots:g,slotProps:y,data:v,plotType:b="line",valueFormatter:x=e=>null===e?"":e.toString(),area:I,curve:w="linear",className:k,disableClipping:S,clipAreaOffset:M,onHighlightChange:C,onHighlightedAxisChange:P,highlightedAxis:E,highlightedItem:T}=t,A=tt(t,PO),j=`${z()}-clip-path`,L=e.useMemo(()=>({top:M?.top??1,right:M?.right??1,bottom:M?.bottom??1,left:M?.left??1}),[M?.bottom,M?.left,M?.right,M?.top]),R=e.useMemo(()=>h&&"bar"===b?{x:"band"}:{x:"none"},[b,h]),D=e.useMemo(()=>l({},R,m),[R,m]),$=t.slots?.tooltip??LC,N=e.useMemo(()=>{if(null!=c)return"function"==typeof c?e=>[c(e)]:[c]},[c]),_=e.useMemo(()=>[l({type:b,data:v,valueFormatter:x},"bar"===b?{}:{area:I,curve:w,baseline:u,disableHighlight:!h})],[I,u,w,v,b,h,x]),F=e.useMemo(()=>[l({id:W,scaleType:"bar"===b?"band":"point",hideTooltip:void 0===r},r,{data:r?.data??Array.from({length:v.length},(e,t)=>t),position:"none"})],[v.length,b,r]),H=e.useMemo(()=>[l({id:G},i,{position:"none"})],[i]);return(0,O.jsxs)(SO,{series:_,width:o,height:a,margin:s,xAxis:F,yAxis:H,colors:N,disableAxisListener:void 0===P&&(!p||"axis"!==y?.tooltip?.trigger)&&"none"===D?.x&&"none"===D?.y,onHighlightChange:C,onHighlightedAxisChange:P,highlightedAxis:E,highlightedItem:T,children:[(0,O.jsxs)(mI,l({className:k,ref:n,sx:d},A,{children:[(0,O.jsxs)("g",{clipPath:`url(#${j})`,children:["bar"===b&&(0,O.jsx)(vO,{skipAnimation:!0,slots:g,slotProps:y}),"line"===b&&(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(gk,{skipAnimation:!0,slots:g,slotProps:y}),(0,O.jsx)(Ek,{skipAnimation:!0,slots:g,slotProps:y})]})]}),"line"===b&&(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(kO,{slots:g,slotProps:y}),(0,O.jsx)(CO,{})]}),S?null:(0,O.jsx)(ZC,{id:j,offset:L}),(0,O.jsx)(_C,l({},D)),f]})),p&&(0,O.jsx)($,l({},t.slotProps?.tooltip))]})});function AO(e){return AO="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},AO(e)}function OO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function jO(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);no[e].position&&"none"!==o[e].position?(0,O.jsx)(gM,{slots:n,slotProps:r,axisId:e},e):null),a.map(e=>s[e].position&&"none"!==s[e].position?(0,O.jsx)(OM,{slots:n,slotProps:r,axisId:e},e):null)]})}DO.propTypes={id:i().string,data:i().arrayOf(i().number).isRequired,plotType:i().oneOf(["line","bar"]),width:i().number,height:i().number,color:i().string,colors:i().arrayOf(i().string),area:i().bool,curve:i().oneOf(["linear","monotoneX","monotoneY","natural","step","stepBefore","stepAfter","catmullRom","bumpX","bumpY"]),showTooltip:i().bool,showHighlight:i().bool,margin:i().shape({top:i().number,right:i().number,bottom:i().number,left:i().number}),xAxis:i().shape({id:i().string,data:i().array,scaleType:i().oneOf(["band","point","linear","log","time"])}),yAxis:i().shape({min:i().number,max:i().number}),axisHighlight:i().shape({x:i().oneOf(["line","band","none"]),y:i().oneOf(["line","band","none"])}),slotProps:i().object,clipAreaOffset:i().shape({top:i().number,right:i().number,bottom:i().number,left:i().number}),baseline:i().oneOfType([i().oneOf(["min","max"]),i().number]),strokeWidth:i().number,disableClipping:i().bool,highlightedIndex:i().number,highlightedItem:i().object,hoverIndex:i().number,hoverValue:i().number,n_hovers:i().number,setProps:i().func};const zO=e=>"start"===e?.horizontal?"start":"end"===e?.horizontal?"end":"center",NO=e=>"top"===e?.vertical?"flex-start":"bottom"===e?.vertical?"flex-end":"center",_O=bm("div",{name:"MuiChartsWrapper",slot:"Root",shouldForwardProp:e=>QE(e)&&"extendVertically"!==e&&"width"!==e})(({ownerState:e,width:t})=>{const n=((e=!1,t="horizontal",n="end",r)=>{const i=r?"auto":"1fr";return"horizontal"===t||e?i:"start"===n?`auto ${i}`:`${i} auto`})(e.hideLegend,e.legendDirection,e.legendPosition?.horizontal,t),r=((e=!1,t="horizontal",n="top")=>{const r="1fr";return"vertical"===t||e?r:"bottom"===n?`${r} auto`:`auto ${r}`})(e.hideLegend,e.legendDirection,e.legendPosition?.vertical),i=((e,t,n)=>e?'"chart"':"vertical"===t?"start"===n?.horizontal?'"legend chart"':'"chart legend"':"bottom"===n?.vertical?'"chart"\n "legend"':'"legend"\n "chart"')(e.hideLegend,e.legendDirection,e.legendPosition);return{variants:[{props:{extendVertically:!0},style:{height:"100%",minHeight:0}}],flex:1,display:"grid",gridTemplateColumns:n,gridTemplateRows:r,gridTemplateAreas:i,[`&:has(.${Jb.root})`]:{gridTemplateRows:`auto ${r}`,gridTemplateAreas:`"${n.split(" ").map(()=>"toolbar").join(" ")}"\n ${i}`},[`& .${Jb.root}`]:{gridArea:"toolbar",justifySelf:"center"},justifyContent:"safe center",justifyItems:zO(e.legendPosition),alignItems:NO(e.legendPosition)}});function FO(e){const{children:t,sx:n,extendVertically:r}=e,i=$x().chartRootRef,o=zx(),a=o.use(ge),s=o.use(ye);return(0,O.jsx)(_O,{ref:i,ownerState:e,sx:n,extendVertically:r??void 0===s,width:a,children:t})}const HO=["message"],BO=bm("text",{slot:"internal",shouldForwardProp:void 0})(({theme:e})=>l({},e.typography.body2,{stroke:"none",fill:(e.vars||e).palette.text.primary,shapeRendering:"crispEdges",textAnchor:"middle",dominantBaseline:"middle"}));function VO(e){const{message:t}=e,n=tt(e,HO),{top:r,left:i,height:o,width:a}=Nx(),{localeText:s}=rA();return(0,O.jsx)(BO,l({x:i+a/2,y:r+o/2},n,{children:t??s.loading}))}const UO=["message"],YO=bm("text",{slot:"internal",shouldForwardProp:void 0})(({theme:e})=>l({},e.typography.body2,{stroke:"none",fill:(e.vars||e).palette.text.primary,shapeRendering:"crispEdges",textAnchor:"middle",dominantBaseline:"middle"}));function WO(e){const{message:t}=e,n=tt(e,UO),{top:r,left:i,height:o,width:a}=Nx(),{localeText:s}=rA();return(0,O.jsx)(YO,l({x:i+a/2,y:r+o/2},n,{children:t??s.noData}))}function GO(e){const t=function(){const e=UM();return Object.values(e).every(e=>{if(!e)return!0;const{series:t,seriesOrder:n}=e;return n.every(e=>{const n=t[e];return"sankey"===n.type?0===n.data.links.length:0===n.data.length})})}();if(e.loading){const t=e.slots?.loadingOverlay??VO;return(0,O.jsx)(t,l({},e.slotProps?.loadingOverlay))}if(t){const t=e.slots?.noDataOverlay??WO;return(0,O.jsx)(t,l({},e.slotProps?.noDataOverlay))}return null}function KO(e){return Xb("MuiChartsLabelGradient",e)}const qO=Zb("MuiChartsLabelGradient",["root","vertical","horizontal","mask","fill"]),XO=["gradientId","direction","classes","className","rotate","reverse","thickness"],ZO=bm("div",{name:"MuiChartsLabelGradient",slot:"Root"})(({ownerState:e})=>{const t=((e,t,n,r)=>{const i=("vertical"===e?-90:0)+(n?90:0)+(t?180:0);return r&&"vertical"!==e?i+180:i})(e.direction,e.reverse,e.rotate,e.isRtl);return{display:"flex",alignItems:"center",justifyContent:"center",[`.${qO.mask}`]:{borderRadius:2,overflow:"hidden"},[`&.${qO.horizontal}`]:{width:"100%",[`.${qO.mask}`]:{height:e.thickness,width:"100%"}},[`&.${qO.vertical}`]:{height:"100%",[`.${qO.mask}`]:{width:e.thickness,height:"100%","> svg":{height:"100%"}}},svg:{transform:`rotate(${t}deg)`,display:"block"}}}),JO=oC("MuiChartsLabelGradient",{defaultProps:{direction:"horizontal",thickness:12},classesResolver:e=>{const{direction:t}=e;return uI({root:["root",t],mask:["mask"],fill:["fill"]},KO,e.classes)}},function(e,t){const{gradientId:n,classes:r,className:i}=e,o=tt(e,XO),a=fS();return(0,O.jsx)(ZO,l({className:Hh(r?.root,i),ownerState:l({},e,{isRtl:a}),"aria-hidden":"true",ref:t},o,{children:(0,O.jsx)("div",{className:r?.mask,children:(0,O.jsx)("svg",{viewBox:"0 0 24 24",children:(0,O.jsx)("rect",{className:r?.fill,width:"24",height:"24",fill:`url(#${n})`})})})}))});function QO(e){return Xb("MuiContinuousColorLegend",e)}const ej=Zb("MuiContinuousColorLegend",["root","minLabel","maxLabel","gradient","vertical","horizontal","start","end","extremes","label"]),tj=["minLabel","maxLabel","direction","axisDirection","axisId","rotateGradient","reverse","classes","className","gradientId","labelPosition","thickness"],nj=e=>{const t=e?"max-label":"min-label",n=e?"min-label":"max-label";return{row:{start:`\n '${t} . ${n}'\n 'gradient gradient gradient'\n `,end:`\n 'gradient gradient gradient'\n '${t} . ${n}'\n `,extremes:`\n '${t} gradient ${n}'\n `},column:{start:`\n '${n} gradient'\n '. gradient'\n '${t} gradient'\n `,end:`\n 'gradient ${n}'\n 'gradient .'\n 'gradient ${t}'\n `,extremes:`\n '${n}'\n 'gradient'\n '${t}'\n `}}},rj=bm("ul",{name:"MuiContinuousColorLegend",slot:"Root"})(({theme:e,ownerState:t})=>l({},e.typography.caption,{color:(e.vars||e).palette.text.primary,lineHeight:"100%",display:"grid",flexShrink:0,gap:e.spacing(.5),listStyleType:"none",paddingInlineStart:0,marginBlock:e.spacing(1),marginInline:e.spacing(1),gridArea:"legend",[`&.${ej.horizontal}`]:{gridTemplateRows:"min-content min-content",gridTemplateColumns:"min-content auto min-content",[`&.${ej.start}`]:{gridTemplateAreas:nj(t.reverse).row.start},[`&.${ej.end}`]:{gridTemplateAreas:nj(t.reverse).row.end},[`&.${ej.extremes}`]:{gridTemplateAreas:nj(t.reverse).row.extremes,gridTemplateRows:"min-content",alignItems:"center"}},[`&.${ej.vertical}`]:{gridTemplateRows:"min-content auto min-content",gridTemplateColumns:"min-content min-content",[`&.${ej.start}`]:{gridTemplateAreas:nj(t.reverse).column.start,[`.${ej.maxLabel}, .${ej.minLabel}`]:{justifySelf:"end"}},[`&.${ej.end}`]:{gridTemplateAreas:nj(t.reverse).column.end,[`.${ej.maxLabel}, .${ej.minLabel}`]:{justifySelf:"start"}},[`&.${ej.extremes}`]:{gridTemplateAreas:nj(t.reverse).column.extremes,gridTemplateColumns:"min-content",[`.${ej.maxLabel}, .${ej.minLabel}`]:{justifySelf:"center"}}},[`.${ej.gradient}`]:{gridArea:"gradient"},[`.${ej.maxLabel}`]:{gridArea:"max-label"},[`.${ej.minLabel}`]:{gridArea:"min-label"}})),ij=(e,t,n)=>"string"==typeof e?e:e?.({value:t,formattedValue:n})??n,oj=oC("MuiContinuousColorLegend",{defaultProps:{direction:"horizontal",labelPosition:"end",axisDirection:"z"},classesResolver:e=>{const{classes:t,direction:n,labelPosition:r}=e;return uI({root:["root",n,r],minLabel:["minLabel"],maxLabel:["maxLabel"],gradient:["gradient"],mark:["mark"],label:["label"]},QO,t)}},function(e,t){const{minLabel:n,maxLabel:r,direction:i,axisDirection:o,axisId:a,rotateGradient:s,reverse:c,classes:u,className:d,gradientId:p,thickness:h}=e,m=tt(e,tj),f=Jx(),g=function({axisDirection:e,axisId:t}){const{xAxis:n,xAxisIds:r}=_x(),{yAxis:i,yAxisIds:o}=Fx(),{zAxis:a,zAxisIds:s}=Kx();switch(e){case"x":return n["string"==typeof t?t:r[t??0]];case"y":return i["string"==typeof t?t:o[t??0]];default:return a["string"==typeof t?t:s[t??0]]}}({axisDirection:o,axisId:a}),y=g?.colorMap;if(!y||!y.type||"continuous"!==y.type)return null;const v=y.min??0,b=y.max??100,x=void 0===g.scale?void 0:g.valueFormatter,I=x?x(v,{location:"legend"}):v.toLocaleString(),w=x?x(b,{location:"legend"}):b.toLocaleString(),k=ij(n,v,I),S=ij(r,b,w),M=(0,O.jsx)("li",{className:u?.minLabel,children:(0,O.jsx)(GC,{className:u?.label,children:k})}),C=(0,O.jsx)("li",{className:u?.maxLabel,children:(0,O.jsx)(GC,{className:u?.label,children:S})});return(0,O.jsxs)(rj,l({className:Hh(u?.root,d),ref:t},m,{ownerState:e,children:[c?C:M,(0,O.jsx)("li",{className:u?.gradient,children:(0,O.jsx)(JO,{direction:i,rotate:s,reverse:c,thickness:h,gradientId:p??f(g.id)})}),c?M:C]}))});function aj(){return ak("heatmap")}const sj=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},lj=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n}({...i,...r}),s=sj(r),l=sj(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}};function cj(e){return["highlighted","faded"].includes(e)?IT("Charts",e):IT("MuiHeatmap",e)}l({},wT("MuiHeatmap",["cell","series"]),{highlighted:"Charts-highlighted",faded:"Charts-faded"});const uj=["seriesId","dataIndex","color","value","isHighlighted","isFaded","slotProps","slots"],dj=bm("rect",{name:"MuiHeatmap",slot:"Cell",overridesResolver:(e,t)=>t.arc})(({ownerState:e})=>({filter:(e.isHighlighted?"saturate(120%)":e.isFaded&&"saturate(80%)")||void 0,fill:e.color,shapeRendering:"crispEdges"}));function pj(e){const{seriesId:t,dataIndex:n,color:r,value:i,isHighlighted:o=!1,isFaded:a=!1,slotProps:s={},slots:c={}}=e,u=tt(e,uj),d=bI({type:"heatmap",seriesId:t,dataIndex:n}),p={seriesId:t,dataIndex:n,color:r,value:i,isFaded:a,isHighlighted:o},h=(e=>{const{classes:t,seriesId:n,isFaded:r,isHighlighted:i}=e;return lT({cell:["cell",`series-${n}`,r&&"faded",i&&"highlighted"]},cj,t)})(p),m=c?.cell??dj,f=function(e){const{elementType:t,externalSlotProps:n,ownerState:r,skipResolvingSlotProps:i=!1,...o}=e,a=i?{}:function(e,t){return"function"==typeof e?e(t,void 0):e}(n,r),{props:s,internalRef:l}=lj({...o,externalSlotProps:a});return function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}}(t,{...s,ref:vT(l,a?.ref,e.additionalProps?.ref)},r)}({elementType:m,additionalProps:d,externalForwardedProps:l({},u),externalSlotProps:s.cell,ownerState:p,className:h.cell});return(0,O.jsx)(m,l({},f))}function hj(e){const t=zx(),n=uk(),r=dk(),i=function(e){const t=function(e){const{zAxis:t,zAxisIds:n}=Kx();return t["string"==typeof e?e:n[e??0]]}(e);return t.colorScale}(),o=aj(),a=t.use(TI),s=t.use(AI),l=n.domain(),c=r.domain();if(!o||0===o.seriesOrder.length)return null;const u=o.series[o.seriesOrder[0]];return(0,O.jsx)("g",{children:u.data.map(([t,d,p],h)=>{const m=n(l[t]),f=r(c[d]),g=i?.(p);if(void 0===m||void 0===f||!g)return null;const y={seriesId:u.id,dataIndex:h};return(0,O.jsx)(pj,{width:n.bandwidth(),height:r.bandwidth(),x:m,y:f,color:g,dataIndex:h,seriesId:o.seriesOrder[0],value:p,slots:e.slots,slotProps:e.slotProps,isHighlighted:a(y),isFaded:s(y)},`${t}_${d}`)})})}const mj=e=>{const{axis:t}=e;return[Math.min(...t.data??[]),Math.max(...t.data??[])]},fj={seriesProcessor:e=>{const{series:t,seriesOrder:n}=e,r={};return Object.keys(t).forEach(e=>{r[e]=l({valueFormatter:e=>e[2].toString(),data:[],labelMarkType:"square"},t[e])}),{series:r,seriesOrder:n}},colorProcessor:(e,t,n,r)=>{const i=r?.colorScale;return i?t=>{const n=e.data[t],r=i(n[2]);return null===r?"":r}:()=>""},legendGetter:()=>[],tooltipGetter:e=>{const{series:t,getColor:n,identifier:r}=e;if(!r||void 0===r.dataIndex)return null;const i=yl(t.label,"tooltip"),o=t.data[r.dataIndex],a=t.valueFormatter(o,{dataIndex:r.dataIndex});return{identifier:r,color:n(r.dataIndex),label:i,value:o,formattedValue:a,markType:t.labelMarkType}},tooltipItemPositionGetter:e=>{const{series:t,identifier:n,axesConfig:r,placement:i}=e;if(!n||void 0===n.dataIndex)return null;const o=t.heatmap?.series[n.seriesId];if(null==o)return null;if(void 0===r.x||void 0===r.y||!Et(r.x)||!Et(r.y))return null;const[a,s]=o.data[n.dataIndex],l=r.x.scale(r.x.scale.domain()[a]),c=r.y.scale(r.y.scale.domain()[s]);if(void 0===l||void 0===c)return null;const u=r.x.scale.bandwidth(),d=r.y.scale.bandwidth();switch(i){case"bottom":return{x:l+u/2,y:c+d};case"left":return{x:l,y:c+d/2};case"right":return{x:l+u,y:c+d/2};default:return{x:l+u/2,y:c}}},xExtremumGetter:mj,yExtremumGetter:mj,getSeriesWithDefaultValues:(e,t,n)=>l({color:n[t%n.length]},e,{id:e.id??`auto-generated-id-${t}`}),identifierSerializer:jl},gj=bm("caption",{name:"MuiChartsHeatmapTooltip",slot:"AxesValue"})(({theme:e})=>({textAlign:"start",whiteSpace:"nowrap",padding:e.spacing(.5,1.5),color:(e.vars||e).palette.text.secondary,borderBottom:`solid ${(e.vars||e).palette.divider} 1px`,"& span":{marginRight:e.spacing(1.5)}})),yj=e=>{const{classes:t}=e;return lT({root:["root"],paper:["paper"],table:["table"],row:["row"],cell:["cell"],mark:["mark"],markContainer:["markContainer"],labelCell:["labelCell"],valueCell:["valueCell"]},HM,t)};function vj(e){const t=yj(e),n=Hx(),r=Bx(),i=aj(),o=ZM();if(!o||!i||0===i.seriesOrder.length)return null;const{series:a,seriesOrder:s}=i,l=s[0],{color:c,value:u,identifier:d,markType:p}=o,[h,m]=u,f=n.valueFormatter?.(n.data[h],{location:"tooltip",scale:n.scale})??n.data[h].toLocaleString(),g=r.valueFormatter?.(r.data[m],{location:"tooltip",scale:r.scale})??r.data[m].toLocaleString(),y=a[l].valueFormatter(u,{dataIndex:d.dataIndex}),v=yl(a[l].label,"tooltip");return(0,O.jsx)(JM,{className:t.paper,children:(0,O.jsxs)(QM,{className:t.table,children:[(0,O.jsxs)(gj,{children:[(0,O.jsx)("span",{children:f}),(0,O.jsx)("span",{children:g})]}),(0,O.jsx)("tbody",{children:(0,O.jsxs)(eC,{className:t.row,children:[(0,O.jsxs)(tC,{className:Hh(t.labelCell,t.cell),component:"th",children:[(0,O.jsx)("div",{className:t.markContainer,children:(0,O.jsx)(lC,{type:p,color:c,className:t.mark})}),v]}),(0,O.jsx)(tC,{className:Hh(t.valueCell,t.cell),component:"td",children:y})]})})]})})}function bj(e){const t=yj({classes:e.classes});return(0,O.jsx)(jC,l({trigger:"item"},e,{classes:t,children:(0,O.jsx)(vj,{classes:t})}))}const xj=[Xs,Ys,Ws,Bs,Zs,tx,Mb,Ix],Ij=Cn(["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"]),wj={heatmap:fj};function kj(e,t){return void 0===e?.[0]?.data||0===e[0].data.length?[]:Array.from({length:Math.max(...e[0].data.map(e=>e[t]))+1},(e,t)=>t)}const Sj=e=>kj(e,0),Mj=e=>kj(e,1),Cj=e.forwardRef(function(t,n){const r=Lh({props:t,name:"MuiHeatmap"}),{apiRef:i,xAxis:o,yAxis:a,zAxis:s,series:c,width:u,height:d,margin:p,colors:h,dataset:m,sx:f,onAxisClick:g,children:y,slots:v,slotProps:b,loading:x,highlightedItem:I,onHighlightChange:w,hideLegend:k=!0,showToolbar:S=!1}=r,M=`${iP()}-clip-path`,C=e.useMemo(()=>(o&&o.length>0?o:[{id:W}]).map(e=>l({scaleType:"band",categoryGapRatio:0},e,{data:e.data??Sj(c)})),[c,o]),P=e.useMemo(()=>(a&&a.length>0?a:[{id:G}]).map(e=>l({scaleType:"band",categoryGapRatio:0},e,{data:e.data??Mj(c)})),[c,a]),E=e.useMemo(()=>s??[{colorMap:{type:"continuous",min:0,max:100,color:Ij}}],[s]),T={sx:f,legendPosition:r.slotProps?.legend?.position,legendDirection:r.slotProps?.legend?.direction,hideLegend:k},A=v?.tooltip??bj,j=v?.toolbar??kA;return(0,O.jsx)(Rx,{apiRef:i,seriesConfig:wj,series:c.map(e=>l({type:"heatmap"},e)),width:u,height:d,margin:p,xAxis:C,yAxis:P,zAxis:E,colors:h,dataset:m,disableAxisListener:!0,highlightedItem:I,onHighlightChange:w,onAxisClick:g,plugins:xj,children:(0,O.jsxs)(FO,l({},T,{children:[S?(0,O.jsx)(j,l({},r.slotProps?.toolbar)):null,!k&&(0,O.jsx)(XC,{slots:l({},v,{legend:v?.legend??oj}),slotProps:{legend:l({labelPosition:"extremes"},b?.legend)},sx:"vertical"===b?.legend?.direction?{height:150}:{width:"50%"}}),(0,O.jsxs)(mI,{ref:n,sx:f,children:[(0,O.jsxs)("g",{clipPath:`url(#${M})`,children:[(0,O.jsx)(hj,{slots:v,slotProps:b}),(0,O.jsx)(GO,{loading:x,slots:v,slotProps:b})]}),(0,O.jsx)($O,{slots:v,slotProps:b}),(0,O.jsx)(ZC,{id:M}),(0,O.jsx)(WT,{}),y]}),!x&&(0,O.jsx)(A,l({},b?.tooltip))]}))})});var Pj=["x","y","width","height","ownerState","onCellClick"],Ej=["x","y","width","height","ownerState","cellConfig","onCellClick"];function Tj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Aj(e){for(var t=1;tA*A+O*O&&(S=C,M=P),{cx:S,cy:M,x01:-u,y01:-d,x11:S*(i/I-1),y11:M*(i/I-1)}}function Yj(){var e=_j,t=Fj,n=rl(0),r=null,i=Hj,o=Bj,a=Vj,s=null,l=Tw(c);function c(){var c,u,d,p=+e.apply(this,arguments),h=+t.apply(this,arguments),m=i.apply(this,arguments)-Xl,f=o.apply(this,arguments)-Xl,g=Hl(f-m),y=f>m;if(s||(s=c=l()),hKl)if(g>Zl-Kl)s.moveTo(h*Vl(m),h*Wl(m)),s.arc(0,0,h,m,f,!y),p>Kl&&(s.moveTo(p*Vl(f),p*Wl(f)),s.arc(0,0,p,f,m,y));else{var v,b,x=m,I=f,w=m,k=f,S=g,M=g,C=a.apply(this,arguments)/2,P=C>Kl&&(r?+r.apply(this,arguments):Gl(p*p+h*h)),E=Yl(Hl(h-p)/2,+n.apply(this,arguments)),T=E,A=E;if(P>Kl){var O=Jl(P/p*Wl(C)),j=Jl(P/h*Wl(C));(S-=2*O)>Kl?(w+=O*=y?1:-1,k-=O):(S=0,w=k=(m+f)/2),(M-=2*j)>Kl?(x+=j*=y?1:-1,I-=j):(M=0,x=I=(m+f)/2)}var L=h*Vl(x),R=h*Wl(x),D=p*Vl(k),$=p*Wl(k);if(E>Kl){var z,N=h*Vl(I),_=h*Wl(I),F=p*Vl(w),H=p*Wl(w);if(g1?0:d<-1?ql:Math.acos(d))/2),G=Gl(z[0]*z[0]+z[1]*z[1]);T=Yl(E,(p-G)/(W-1)),A=Yl(E,(h-G)/(W+1))}else T=A=0}M>Kl?A>Kl?(v=Uj(F,H,L,R,h,A,y),b=Uj(N,_,D,$,h,A,y),s.moveTo(v.cx+v.x01,v.cy+v.y01),AKl&&S>Kl?T>Kl?(v=Uj(D,$,N,_,p,-T,y),b=Uj(L,R,F,H,p,-T,y),s.lineTo(v.cx+v.x01,v.cy+v.y01),T({startAngle:n(e),endAngle:r(e),innerRadius:i(e),outerRadius:o(e),paddingAngle:a(e),cornerRadius:s(e)})}Nj.propTypes={id:i().string,licenseKey:i().string,data:i().arrayOf(i().arrayOf(i().number)),xAxis:i().shape({data:i().array,label:i().string,scaleType:i().oneOf(["band","point"]),zoom:i().oneOfType([i().bool,i().object])}),yAxis:i().shape({data:i().array,label:i().string,scaleType:i().oneOf(["band","point"]),zoom:i().oneOfType([i().bool,i().object])}),colorScale:i().shape({type:i().oneOf(["continuous","piecewise"]),min:i().number,max:i().number,colors:i().arrayOf(i().string),thresholds:i().arrayOf(i().number)}),width:i().number,height:i().number,margin:i().shape({top:i().number,right:i().number,bottom:i().number,left:i().number}),hideLegend:i().bool,tooltip:i().shape({trigger:i().oneOf(["item","none"])}),highlightScope:i().shape({highlight:i().oneOf(["item","none"]),fade:i().oneOf(["global","none"])}),cellStyle:i().oneOfType([i().oneOf(["rounded"]),i().shape({gap:i().number,borderRadius:i().number,showValue:i().bool,fontSize:i().number,fontWeight:i().number,textColor:i().string})]),slotProps:i().object,highlightedItem:i().object,clickData:i().object,n_clicks:i().number,setProps:i().func};const Gj=["className","classes","color","dataIndex","id","isFaded","isHighlighted","isFocused","onClick","cornerRadius","startAngle","endAngle","innerRadius","outerRadius","paddingAngle","skipAnimation","stroke","skipInteraction"];function Kj(e){return Xb("MuiPieArc",e)}const qj=Zb("MuiPieArc",["root","highlighted","faded","series","focusIndicator"]),Xj=bm("path",{name:"MuiPieArc",slot:"Root",overridesResolver:(e,t)=>t.arc})({transitionProperty:"opacity, fill, filter",transitionDuration:`${_I}ms`,transitionTimingFunction:FI}),Zj=e.forwardRef(function(e,t){const{className:n,classes:r,color:i,dataIndex:o,id:a,isFaded:s,isHighlighted:c,isFocused:u,onClick:d,cornerRadius:p,startAngle:h,endAngle:m,innerRadius:f,outerRadius:g,paddingAngle:y,skipAnimation:v,stroke:b,skipInteraction:x}=e,I=tt(e,Gj),w=xm(),k=b??(w.vars||w).palette.background.paper,S={id:a,dataIndex:o,classes:r,color:i,isFaded:s,isHighlighted:c,isFocused:u},M=(e=>{const{classes:t,id:n,isFaded:r,isHighlighted:i,dataIndex:o}=e;return uI({root:["root",`series-${n}`,`data-index-${o}`,i&&"highlighted",r&&"faded"]},Kj,t)})(S),C=bI({type:"pie",seriesId:a,dataIndex:o},x),P=function(e){const t={startAngle:(e.startAngle+e.endAngle)/2,endAngle:(e.startAngle+e.endAngle)/2,innerRadius:e.innerRadius,outerRadius:e.outerRadius,paddingAngle:e.paddingAngle,cornerRadius:e.cornerRadius};return aw({startAngle:e.startAngle,endAngle:e.endAngle,innerRadius:e.innerRadius,outerRadius:e.outerRadius,paddingAngle:e.paddingAngle,cornerRadius:e.cornerRadius},{createInterpolator:Wj,transformProps:e=>({d:Yj().cornerRadius(e.cornerRadius)({padAngle:e.paddingAngle,innerRadius:e.innerRadius,outerRadius:e.outerRadius,startAngle:e.startAngle,endAngle:e.endAngle}),visibility:e.startAngle===e.endAngle?"hidden":"visible"}),applyProps(e,t){e.setAttribute("d",t.d),e.setAttribute("visibility",t.visibility)},initialProps:t,skip:e.skipAnimation,ref:e.ref})}({cornerRadius:p,startAngle:h,endAngle:m,innerRadius:f,outerRadius:g,paddingAngle:y,skipAnimation:v,ref:t});return(0,O.jsx)(Xj,l({onClick:d,cursor:d?"pointer":"unset",ownerState:S,className:Hh(M.root,n),fill:S.color,opacity:S.isFaded?.3:1,filter:S.isHighlighted?"brightness(120%)":"none",stroke:k,strokeWidth:1,strokeLinejoin:"round","data-highlighted":S.isHighlighted||void 0,"data-faded":S.isFaded||void 0},I,C,P))});function Jj(e,t,n,r){const{faded:i,highlighted:o,paddingAngle:a=0,cornerRadius:s=0}=e,{radius:{inner:c=0,label:u,outer:d}}=t,p=l({additionalRadius:0},r&&i||n&&o||{}),h=Math.max(0,Ql(p.paddingAngle??a)),m=Math.max(0,p.innerRadius??c),f=Math.max(0,p.outerRadius??d+p.additionalRadius);return{paddingAngle:h,innerRadius:m,outerRadius:f,cornerRadius:p.cornerRadius??s,arcLabelRadius:p.arcLabelRadius??u??(m+f)/2}}function Qj(t){const{id:n,data:r,faded:i,highlighted:o}=t,{isFaded:a,isHighlighted:s}=iS(),c=function(){const e=MO();return t=>null!==e&&Us(e,t)}();return e.useMemo(()=>r.map((e,r)=>{const u={seriesId:n,dataIndex:r},d=s(u),p=!d&&a(u),h=c({type:"pie",seriesId:n,dataIndex:r}),m=Jj(t,{radius:{inner:t.innerRadius??0,outer:t.outerRadius,label:t.arcLabelRadius??0,available:0}},d,p),f=l({additionalRadius:0},p&&i||d&&o||{});return l({},e,f,{dataIndex:r,isFaded:p,isHighlighted:d,isFocused:h},m)}),[r,n,s,a,c,t,i,o])}const eL=["slots","slotProps","innerRadius","outerRadius","cornerRadius","paddingAngle","id","highlighted","faded","data","onItemClick","skipAnimation"];function tL(e){const{slots:t,slotProps:n,innerRadius:r=0,outerRadius:i,cornerRadius:o=0,paddingAngle:a=0,id:s,highlighted:c,faded:u={additionalRadius:-5},data:d,onItemClick:p,skipAnimation:h}=e,m=tt(e,eL),f=Qj({innerRadius:r,outerRadius:i,cornerRadius:o,paddingAngle:a,id:s,highlighted:c,faded:u,data:d});if(0===d.length)return null;const g=t?.pieArc??Zj;return(0,O.jsx)("g",l({},m,{children:f.map((e,t)=>(0,O.jsx)(g,l({startAngle:e.startAngle,endAngle:e.endAngle,paddingAngle:e.paddingAngle,innerRadius:e.innerRadius,outerRadius:e.outerRadius,cornerRadius:e.cornerRadius,skipAnimation:h??!1,id:s,color:e.color,dataIndex:t,isFaded:e.isFaded,isHighlighted:e.isHighlighted,isFocused:e.isFocused,onClick:p&&(n=>{p(n,{type:"pie",seriesId:s,dataIndex:t},e)})},n?.pieArc),e.dataIndex))}))}function nL(e,t){const n=Tn(e.startAngle,t.startAngle),r=Tn(e.endAngle,t.endAngle),i=Tn(e.innerRadius,t.innerRadius),o=Tn(e.outerRadius,t.outerRadius),a=Tn(e.paddingAngle,t.paddingAngle),s=Tn(e.cornerRadius,t.cornerRadius);return e=>({startAngle:n(e),endAngle:r(e),innerRadius:i(e),outerRadius:o(e),paddingAngle:a(e),cornerRadius:s(e)})}const rL=["id","classes","color","startAngle","endAngle","paddingAngle","arcLabelRadius","innerRadius","outerRadius","cornerRadius","formattedArcLabel","isHighlighted","isFaded","skipAnimation","hidden"];function iL(e){return Xb("MuiPieArcLabel",e)}const oL=Zb("MuiPieArcLabel",["root","highlighted","faded","animate","series"]),aL=bm("text",{name:"MuiPieArcLabel",slot:"Root"})(({theme:e})=>({fill:(e.vars||e).palette.text.primary,textAnchor:"middle",dominantBaseline:"middle",pointerEvents:"none",animationName:"animate-opacity",animationDuration:"0s",animationTimingFunction:FI,transitionDuration:`${_I}ms`,transitionProperty:"opacity",transitionTimingFunction:FI,[`&.${oL.animate}`]:{animationDuration:`${_I}ms`},"@keyframes animate-opacity":{from:{opacity:0}}})),sL=e.forwardRef(function(e,t){const{id:n,classes:r,color:i,startAngle:o,endAngle:a,paddingAngle:s,arcLabelRadius:c,cornerRadius:u,formattedArcLabel:d,isHighlighted:p,isFaded:h,skipAnimation:m,hidden:f}=e,g=tt(e,rL),y=(e=>{const{classes:t,id:n,isFaded:r,isHighlighted:i,skipAnimation:o}=e;return uI({root:["root",`series-${n}`,i&&"highlighted",r&&"faded",!o&&"animate"]},iL,t)})({id:n,classes:r,color:i,isFaded:h,isHighlighted:p,skipAnimation:m}),v=function(e){const t={startAngle:(e.startAngle+e.endAngle)/2,endAngle:(e.startAngle+e.endAngle)/2,innerRadius:e.arcLabelRadius??e.innerRadius,outerRadius:e.arcLabelRadius??e.outerRadius,paddingAngle:e.paddingAngle,cornerRadius:e.cornerRadius};return aw({startAngle:e.startAngle,endAngle:e.endAngle,innerRadius:e.arcLabelRadius??e.innerRadius,outerRadius:e.arcLabelRadius??e.outerRadius,paddingAngle:e.paddingAngle,cornerRadius:e.cornerRadius},{createInterpolator:nL,transformProps:e=>{const[t,n]=Yj().cornerRadius(e.cornerRadius).centroid({padAngle:e.paddingAngle,startAngle:e.startAngle,endAngle:e.endAngle,innerRadius:e.innerRadius,outerRadius:e.outerRadius});return{x:t,y:n}},applyProps(e,{x:t,y:n}){e.setAttribute("x",t.toString()),e.setAttribute("y",n.toString())},initialProps:t,skip:e.skipAnimation,ref:e.ref})}({cornerRadius:u,startAngle:o,endAngle:a,innerRadius:c,outerRadius:c,paddingAngle:s,skipAnimation:m,ref:t});return(0,O.jsx)(aL,l({className:y.root},g,v,{opacity:f?0:1,children:d}))}),lL=["arcLabel","arcLabelMinAngle","arcLabelRadius","cornerRadius","data","faded","highlighted","id","innerRadius","outerRadius","paddingAngle","skipAnimation","slotProps","slots"],cL=180/Math.PI;function uL(e,t,n){if(!e)return null;if((n.endAngle-n.startAngle)*cL(0,O.jsx)(v,l({startAngle:e.startAngle,endAngle:e.endAngle,paddingAngle:e.paddingAngle,innerRadius:e.innerRadius,outerRadius:e.outerRadius,arcLabelRadius:e.arcLabelRadius,cornerRadius:e.cornerRadius,id:c,color:e.color,isFaded:e.isFaded,isHighlighted:e.isHighlighted,formattedArcLabel:uL(t,n,e),skipAnimation:h??!1},m?.pieArcLabel),e.id??e.dataIndex))}))}function pL(){return ak("pie")}function hL(){return zx().use(gt).pie??{}}function mL(e){return Xb("MuiPieChart",e)}function fL(e){const{skipAnimation:t,slots:n,slotProps:r,onItemClick:i}=e,o=pL(),a=hL(),s=bw(t),l=uI({root:["root"],series:["series"],seriesLabels:["seriesLabels"]},mL,void 0);if(void 0===o)return null;const{series:c,seriesOrder:u}=o;return(0,O.jsxs)("g",{children:[u.map(e=>{const{cornerRadius:t,paddingAngle:o,data:u,highlighted:d,faded:p}=c[e];return(0,O.jsx)("g",{className:l.series,transform:`translate(${a[e].center.x}, ${a[e].center.y})`,"data-series":e,children:(0,O.jsx)(tL,{innerRadius:a[e].radius.inner,outerRadius:a[e].radius.outer,cornerRadius:t,paddingAngle:o,id:e,data:u,skipAnimation:s,highlighted:d,faded:p,onItemClick:i,slots:n,slotProps:r})},e)}),u.map(e=>{const{cornerRadius:t,paddingAngle:i,arcLabel:o,arcLabelMinAngle:u,data:d}=c[e];return(0,O.jsx)("g",{className:l.seriesLabels,transform:`translate(${a[e].center.x}, ${a[e].center.y})`,"data-series":e,children:(0,O.jsx)(dL,{innerRadius:a[e].radius.inner,outerRadius:a[e].radius.outer,arcLabelRadius:a[e].radius.label,cornerRadius:t,paddingAngle:i,id:e,data:d,skipAnimation:s,arcLabel:o,arcLabelMinAngle:u,slots:n,slotProps:r})},e)})]})}Zb("MuiPieChart",["root","series","seriesLabels"]);const gL=["width","height","margin","children","series","colors","dataset","desc","onAxisClick","highlightedAxis","onHighlightedAxisChange","disableVoronoi","voronoiMaxRadius","onItemClick","disableAxisListener","highlightedItem","onHighlightChange","sx","title","xAxis","yAxis","zAxis","rotationAxis","radiusAxis","skipAnimation","seriesConfig","plugins","localeText","slots","slotProps","experimentalFeatures","enableKeyboardNavigation","brushConfig","onHiddenItemsChange","hiddenItems"],yL=(e,t)=>{const n=e,{width:r,height:i,margin:o,children:a,series:s,colors:c,dataset:u,desc:d,onAxisClick:p,highlightedAxis:h,onHighlightedAxisChange:m,disableVoronoi:f,voronoiMaxRadius:g,onItemClick:y,disableAxisListener:v,highlightedItem:b,onHighlightChange:x,sx:I,title:w,xAxis:k,yAxis:S,zAxis:M,rotationAxis:C,radiusAxis:P,skipAnimation:E,seriesConfig:T,plugins:A,localeText:O,slots:j,slotProps:L,experimentalFeatures:R,enableKeyboardNavigation:D,brushConfig:$,onHiddenItemsChange:z,hiddenItems:N}=n,_=l({title:w,desc:d,sx:I,ref:t},tt(n,gL));return{chartDataProviderProps:{margin:o,series:s,colors:c,dataset:u,disableAxisListener:v,highlightedItem:b,onHighlightChange:x,onAxisClick:p,highlightedAxis:h,onHighlightedAxisChange:m,disableVoronoi:f,voronoiMaxRadius:g,onItemClick:y,xAxis:k,yAxis:S,zAxis:M,rotationAxis:C,radiusAxis:P,skipAnimation:E,width:r,height:i,localeText:O,seriesConfig:T,experimentalFeatures:R,enableKeyboardNavigation:D,brushConfig:$,onHiddenItemsChange:z,hiddenItems:N,plugins:A??Px,slots:j,slotProps:L},chartsSurfaceProps:_,children:a}},vL=[Ys,Ws,Zs,Bb,kx],bL=["arcLabelRadius"];function xL(e){const t=xm(),n=MO(),r=hL(),{isHighlighted:i,isFaded:o}=zI(n),a=pL();if(null===n||"pie"!==n.type||!a)return null;const s=a?.series[n.seriesId],{center:c,radius:u}=r[n.seriesId];if(!s||!c||!u)return null;const d=s.data[n.dataIndex],p=tt(Jj(s,r[n.seriesId],i,o),bL);return(0,O.jsx)(Zj,l({transform:`translate(${r[s.id].center.x}, ${r[s.id].center.y})`,startAngle:d.startAngle,endAngle:d.endAngle,color:"transparent",pointerEvents:"none",skipInteraction:!0,skipAnimation:!0,stroke:(t.vars??t).palette.text.primary,id:s.id,className:qj.focusIndicator,dataIndex:n.dataIndex,isFaded:!1,isHighlighted:!1,isFocused:!1,strokeWidth:3},p,e))}const IL=["series","width","height","margin","colors","sx","skipAnimation","hideLegend","children","slots","slotProps","onItemClick","loading","highlightedItem","onHighlightChange","className","showToolbar"],wL=e.forwardRef(function(e,t){const n=Lh({props:e,name:"MuiPieChart"}),{series:r,width:i,height:o,margin:a,colors:s,sx:c,skipAnimation:u,hideLegend:d,children:p,slots:h,slotProps:m,onItemClick:f,loading:g,highlightedItem:y,onHighlightChange:v,className:b,showToolbar:x}=n,I=tt(n,IL),w=ve(a,wt),{chartDataProviderProps:k,chartsSurfaceProps:S}=yL(l({},I,{series:r.map(e=>l({type:"pie"},e)),width:i,height:o,margin:w,colors:s,highlightedItem:y,onHighlightChange:v,className:b,skipAnimation:u,plugins:vL}),t),M=h?.tooltip??LC,C=h?.toolbar;return(0,O.jsx)(SO,l({},k,{children:(0,O.jsxs)(FO,{legendPosition:m?.legend?.position,legendDirection:m?.legend?.direction??"vertical",sx:c,hideLegend:d??!1,children:[x&&C?(0,O.jsx)(C,l({},m?.toolbar)):null,!d&&(0,O.jsx)(XC,{direction:m?.legend?.direction??"vertical",slots:h,slotProps:m}),(0,O.jsxs)(mI,l({},S,{children:[(0,O.jsx)(fL,{slots:h,slotProps:m,onItemClick:f}),(0,O.jsx)(xL,{}),(0,O.jsx)(GO,{loading:g,slots:h,slotProps:m}),p]})),!g&&(0,O.jsx)(M,l({trigger:"item"},m?.tooltip))]})}))});function kL(e){return kL="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kL(e)}function SL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ML(e){for(var t=1;t0)t=a.map(function(e,t){return ML(ML({},e),{},{id:e.id||"series-".concat(t)})});else{var $={data:o};void 0!==u&&($.innerRadius=u),void 0!==d&&($.outerRadius=d),h&&($.paddingAngle=h),f&&($.cornerRadius=f),0!==y&&($.startAngle=y),360!==b&&($.endAngle=b),void 0!==x&&($.cx=x),void 0!==I&&($.cy=I),w&&($.arcLabel=w),k&&($.arcLabelMinAngle=k),E&&($.highlightScope=E),t=[$]}var z={series:t,height:c,skipAnimation:O,onItemClick:function(e,t){if(D){var n,r,i,s,l,c=0;a&&a.length>0?(c=a.findIndex(function(e,n){return(e.id||"series-".concat(n))===t.seriesId}),-1===c&&(c=0),s=((null===(l=a[c])||void 0===l?void 0:l.data)||[])[t.dataIndex]):s=o[t.dataIndex],D({clickData:{id:null===(n=s)||void 0===n?void 0:n.id,seriesId:t.seriesId,seriesIndex:c,dataIndex:t.dataIndex,value:null===(r=s)||void 0===r?void 0:r.value,label:null===(i=s)||void 0===i?void 0:i.label,timestamp:(new Date).toISOString()},n_clicks:(L||0)+1})}},onHighlightChange:function(e){D&&D({highlightedItem:e})}};return s&&(z.width=s),S&&(z.colors=S),C&&(z.hideLegend=C),P&&(z.margin=P),T&&(z.slotProps=ML(ML({},z.slotProps),{},{tooltip:{trigger:T.trigger||"item"}})),void 0!==R&&(z.highlightedItem=R),n().createElement("div",{id:r},n().createElement(wL,z))}PL.propTypes={id:i().string,data:i().arrayOf(i().shape({id:i().oneOfType([i().number,i().string]),value:i().number.isRequired,label:i().string,color:i().string})),series:i().arrayOf(i().shape({id:i().string,data:i().arrayOf(i().shape({id:i().oneOfType([i().number,i().string]),value:i().number.isRequired,label:i().string,color:i().string})).isRequired,innerRadius:i().oneOfType([i().number,i().string]),outerRadius:i().oneOfType([i().number,i().string]),paddingAngle:i().number,cornerRadius:i().number,startAngle:i().number,endAngle:i().number,arcLabel:i().oneOf(["value","label","formattedValue"]),arcLabelMinAngle:i().number,arcLabelRadius:i().number,highlightScope:i().shape({highlight:i().oneOf(["item","none"]),fade:i().oneOf(["global","none"])})})),width:i().number,height:i().number,innerRadius:i().oneOfType([i().number,i().string]),outerRadius:i().oneOfType([i().number,i().string]),paddingAngle:i().number,cornerRadius:i().number,startAngle:i().number,endAngle:i().number,cx:i().oneOfType([i().number,i().string]),cy:i().oneOfType([i().number,i().string]),arcLabel:i().oneOf(["value","label","formattedValue"]),arcLabelMinAngle:i().number,colors:i().arrayOf(i().string),hideLegend:i().bool,margin:i().shape({top:i().number,right:i().number,bottom:i().number,left:i().number}),highlightScope:i().shape({highlight:i().oneOf(["item","none"]),fade:i().oneOf(["global","none"])}),tooltip:i().shape({trigger:i().oneOf(["item","none"])}),skipAnimation:i().bool,clickData:i().object,n_clicks:i().number,highlightedItem:i().shape({seriesId:i().string,dataIndex:i().number}),setProps:i().func};const EL=ae(e=>e.voronoi,e=>e?.isVoronoiEnabled);function TL(e){return Xb("MuiScatter",e)}Zb("MuiScatter",["root"]);const AL=e=>uI({root:["root"]},TL,e),OL=["ownerState"];function jL(e){const{series:t,xScale:n,yScale:r,colorGetter:i,onItemClick:o,classes:a,slots:s,slotProps:c}=e,{instance:u}=$x(),d=zx().use(EL)||t.disableHover,{isFaded:p,isHighlighted:h}=iS(),m=xP(t,n,r,u.isPointInside),f=s?.marker??kP,g=tt(yI({elementType:f,externalSlotProps:c?.marker,additionalProps:{seriesId:t.id,size:t.markerSize},ownerState:{}}),OL),y=AL(a);return(0,O.jsx)("g",{"data-series":t.id,className:y.root,children:m.map(e=>{const n=h(e),r=!n&&p(e);return(0,O.jsx)(f,l({dataIndex:e.dataIndex,color:i(e.dataIndex),isHighlighted:n,isFaded:r,x:e.x,y:e.y,onClick:o&&(n=>o(n,{type:"scatter",seriesId:t.id,dataIndex:e.dataIndex})),"data-highlighted":n||void 0,"data-faded":r||void 0},d?void 0:function(e,t){return{onPointerEnter:function(){t&&(e.setLastUpdateSource("pointer"),e.setTooltipItem(t),e.setHighlight("sankey"===t.type?t:{seriesId:t.seriesId,dataIndex:t.dataIndex}))},onPointerLeave:function(){t&&(e.removeTooltipItem(t),e.clearHighlight())},onPointerDown:vI}}(u,e),g),e.id??e.dataIndex)})})}const LL=.01;function RL(e,t,n){return`M${e-n} ${t} a${n} ${n} 0 1 1 0 ${LL}`}function DL(t){const{series:n,xScale:r,yScale:i,color:o,colorGetter:a,markerSize:s}=t,l=function(e,t,n,r,i,o){const{instance:a}=$x(),s=ck(n),l=ck(r),c=new Map,u=new Map;for(let n=0;n=1e3&&(rO(c,m,f.join("")),u.delete(m))}for(const[e,t]of u.entries())t.length>0&&rO(c,e,t.join(""));return c}(n.data,s,r,i,o,a),c=[];let u=0;for(const[e,t]of l.entries())for(const n of t)c.push((0,O.jsx)("path",{fill:e,d:n},u)),u+=1;return(0,O.jsx)(e.Fragment,{children:c})}const $L=e.memo(DL),zL=bm("g",{slot:"internal",shouldForwardProp:void 0})({'&[data-faded="true"]':{opacity:.3},"& path":{pointerEvents:"none"}});function NL(t){const{series:n,xScale:r,yScale:i,color:o,colorGetter:a,classes:s}=t,{store:l}=$x(),c=l.use(jI,n.id),u=l.use(LI,n.id),d=l.use(DI,n.id),p=l.use(RI,n.id),h=n.markerSize*(c?1.2:1),m=AL(s),f=[];if(null!=d){const e=n.data[d],t=ck(r),s=ck(i);f.push((0,O.jsx)("path",{fill:a?a(d):o,"data-highlighted":!0,d:RL(t(e.x),s(e.y),1.2*h)},`highlighted-${n.id}`))}if(null!=p){const e=n.data[p],t=ck(r),s=ck(i);f.push((0,O.jsx)("path",{fill:a?a(p):o,d:RL(t(e.x),s(e.y),h)},`unfaded-${n.id}`))}return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(zL,{className:m.root,"data-series":n.id,"data-faded":u||void 0,"data-highlighted":c||void 0,children:(0,O.jsx)($L,{series:n,xScale:r,yScale:i,color:o,colorGetter:a,markerSize:h})}),f]})}function _L(t){const{slots:n,slotProps:r,onItemClick:i,renderer:o}=t,a=IP(),{xAxis:s,xAxisIds:c}=_x(),{yAxis:u,yAxisIds:d}=Fx(),{zAxis:p,zAxisIds:h}=Kx();if(void 0===a)return null;const{series:m,seriesOrder:f}=a,g=c[0],y=d[0],v=h[0],b="svg-batch"===o?NL:jL,x=n?.scatter??b;return(0,O.jsx)(e.Fragment,{children:f.map(e=>{const{id:t,xAxisId:o,yAxisId:a,zAxisId:c,color:d}=m[e],h=Dl.colorProcessor(m[e],s[o??g],u[a??y],p[c??v]),f=s[o??g].scale,b=u[a??y].scale;return(0,O.jsx)(x,l({xScale:f,yScale:b,color:d,colorGetter:h,series:m[e],onItemClick:i,slots:n,slotProps:r},r?.scatter),t)})})}const FL=[Xs,Mb,Ys,Ws,Bs,Zs,Bb,Cx,kx],HL=["xAxis","yAxis","zAxis","series","axisHighlight","voronoiMaxRadius","disableVoronoi","hideLegend","width","height","margin","colors","sx","grid","onItemClick","children","slots","slotProps","loading","highlightedItem","onHighlightChange","className","showToolbar","renderer","brushConfig"];function BL(e){const t=xm(),n=MO(),r=IP(),{xAxis:i,xAxisIds:o}=_x(),{yAxis:a,yAxisIds:s}=Fx();if(null===n||"scatter"!==n.type||!r)return null;const c=r?.series[n.seriesId],u=c.xAxisId??o[0],d=c.yAxisId??s[0],p=ck(i[u].scale),h=ck(a[d].scale),m=c.data[n.dataIndex],f=p(m.x),g=h(m.y),y=c.markerSize+3;return(0,O.jsx)("rect",l({fill:"none",stroke:(t.vars??t).palette.text.primary,strokeWidth:2,x:f-y,y:g-y,width:2*y,height:2*y,rx:3,ry:3},e))}const VL=e.forwardRef(function(t,n){const r=Lh({props:t,name:"MuiScatterChart"}),{chartsWrapperProps:i,chartContainerProps:o,chartsAxisProps:a,gridProps:s,scatterPlotProps:c,overlayProps:u,legendProps:d,axisHighlightProps:p,children:h}=(t=>{const{xAxis:n,yAxis:r,zAxis:i,series:o,axisHighlight:a,voronoiMaxRadius:s,disableVoronoi:c,width:u,height:d,margin:p,colors:h,sx:m,grid:f,onItemClick:g,children:y,slots:v,slotProps:b,loading:x,highlightedItem:I,onHighlightChange:w,className:k,renderer:S,brushConfig:M}=t,C=tt(t,HL),P=e.useMemo(()=>o.map(e=>l({type:"scatter"},e)),[o]),E=!0!==c||"svg-batch"===S,T=l({},C,{series:P,width:u,height:d,margin:p,colors:h,xAxis:n,yAxis:r,zAxis:i,highlightedItem:I,onHighlightChange:w,disableVoronoi:c,voronoiMaxRadius:s,onItemClick:E?g:void 0,className:k,plugins:FL,slots:v,slotProps:b,brushConfig:M}),A={slots:v,slotProps:b},O={vertical:f?.vertical,horizontal:f?.horizontal},j={onItemClick:E?void 0:g,slots:v,slotProps:b,renderer:S},L={loading:x,slots:v,slotProps:b},R={slots:v,slotProps:b},D=l({y:"none",x:"none"},a);return{chartsWrapperProps:{sx:m,legendPosition:t.slotProps?.legend?.position,legendDirection:t.slotProps?.legend?.direction,hideLegend:t.hideLegend??!1},chartContainerProps:T,chartsAxisProps:A,gridProps:O,scatterPlotProps:j,overlayProps:L,legendProps:R,axisHighlightProps:D,children:y}})(r),{chartDataProviderProps:m,chartsSurfaceProps:f}=yL(o,n),g=r.slots?.tooltip??LC,y=r.slots?.toolbar;return(0,O.jsx)(SO,l({},m,{children:(0,O.jsxs)(FO,l({},i,{children:[r.showToolbar&&y?(0,O.jsx)(y,l({},r.slotProps?.toolbar)):null,!r.hideLegend&&(0,O.jsx)(XC,l({},d)),(0,O.jsxs)(mI,l({},f,{children:[(0,O.jsx)($O,l({},a)),(0,O.jsx)(FM,l({},s)),(0,O.jsx)("g",{"data-drawing-container":!0,children:(0,O.jsx)(_L,l({},c))}),(0,O.jsx)(GO,l({},u)),(0,O.jsx)(_C,l({},p)),(0,O.jsx)(BL,{}),h]})),!r.loading&&(0,O.jsx)(g,l({trigger:"item"},r.slotProps?.tooltip))]}))}))});function UL(e){return UL="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},UL(e)}function YL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function WL(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function tR(e,t){if(e){if("string"==typeof e)return nR(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nR(e,t):void 0}}function nR(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ns+c||a.yl+u)){var p,h;try{var m=i.invert(a.x);p=m instanceof Date?m.getTime():m,h=o.invert(a.y)}catch(e){return}if(null!=p&&null!=h){var f={x:"number"==typeof p?Math.round(100*p)/100:p,y:"number"==typeof h?Math.round(100*h)/100:h},g="".concat(f.x,"|").concat(f.y);g!==d.current&&(d.current=g,r({crosshairPosition:f}))}}}}},onMouseLeave:function(){null!==d.current&&(d.current=null,null==r||r({crosshairPosition:null}))},onContextMenu:function(e){if(r&&null!=i&&i.invert&&null!=o&&o.invert){var t=e.currentTarget.ownerSVGElement||e.currentTarget.closest("svg");if(t){var n=t.createSVGPoint();n.x=e.clientX,n.y=e.clientY;var a=n.matrixTransform(t.getScreenCTM().inverse());if(!(a.xs+c||a.yl+u)){var d,p;try{var h=i.invert(a.x);d=h instanceof Date?h.getTime():h,p=o.invert(a.y)}catch(e){return}e.preventDefault(),r({crosshairClick:{x:"number"==typeof d?Math.round(100*d)/100:d,y:"number"==typeof p?Math.round(100*p)/100:p,button:"right",timestamp:(new Date).toISOString()}})}}}}})}var aR=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],sR=function(e){return e<10?"0"+e:""+e};function lR(e){var t=e.scatterSeries,r=e.proximity,i=MC();if(!i||0===i.length)return null;var o=i[0],a=o.axisValue,s=o.axisFormattedValue,l=o.seriesItems,c=s;a instanceof Date?c=a.toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}):"number"==typeof a&&a>1e12&&(c=new Date(a).toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}));var u=new Set((t||[]).map(function(e){return e.id})),d=(l||[]).filter(function(e){return!u.has(e.seriesId)}),p=[];if(t&&null!=a){var h,m=a instanceof Date?a.getTime():Number(a),f=eR(t);try{for(f.s();!(h=f.n()).done;){var g=h.value;if(g.data){var y,v=eR(g.data);try{for(v.s();!(y=v.n()).done;){var b=y.value;if(Math.abs(b.x-m)<=r){var x=b.y;p.push({seriesId:g.id,color:g.color||"#666",formattedLabel:g.label||g.id,formattedValue:"number"==typeof x?x.toLocaleString(void 0,{maximumFractionDigits:2}):String(x)})}}}catch(e){v.e(e)}finally{v.f()}}}}catch(e){f.e(e)}finally{f.f()}}var I=[].concat(function(e){return function(e){if(Array.isArray(e))return nR(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||tR(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(d),p);if(0===I.length)return null;var w={display:"flex",alignItems:"center",gap:6,padding:"2px 0"},k=function(e){return{display:"inline-block",width:10,height:10,borderRadius:"50%",backgroundColor:e,flexShrink:0}};return n().createElement("div",{style:{backgroundColor:"var(--mantine-color-body, white)",border:"1px solid var(--mantine-color-default-border, #e0e0e0)",borderRadius:4,padding:"8px 12px",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",fontSize:13,color:"var(--mantine-color-text, inherit)"}},n().createElement("div",{style:{marginBottom:4,fontWeight:500}},c),I.map(function(e,t){return n().createElement("div",{key:"".concat(e.seriesId,"-").concat(t),style:w},n().createElement("span",{style:k(e.color)}),n().createElement("span",null,e.formattedLabel||e.seriesId,":"),n().createElement("span",{style:{fontWeight:500}},e.formattedValue))}))}function cR(e){var t=e.dataIndex,r=(e.seriesConfig,e.scatterSeries),i=e.proximity,o=uk(),a=Nx(),s=Hx(),l=UM();if(null==t||!a)return null;var c=null==s?void 0:s.data;if(!c||t<0||t>=c.length)return null;var u,d,p=c[t];try{u=o(p)}catch(e){return null}if(null==u||isNaN(u))return null;if(p instanceof Date)d=p.toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"});else if("number"==typeof p&&p>1e12)d=new Date(p).toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"});else if(null!=s&&s.valueFormatter)try{d=s.valueFormatter(p,{location:"tooltip"})}catch(e){d=String(p)}else d=String(p);var h=[],m=l.line;if(m&&m.seriesOrder.forEach(function(e){var n,r=m.series[e];if(r){var i=null===(n=r.data)||void 0===n?void 0:n[t];null!=i&&h.push({seriesId:e,color:r.color||"#666",formattedLabel:r.label||e,formattedValue:"number"==typeof i?i.toLocaleString(void 0,{maximumFractionDigits:2}):String(i)})}}),new Set((r||[]).map(function(e){return e.id})),r&&null!=p){var f,g=p instanceof Date?p.getTime():Number(p),y=eR(r);try{for(y.s();!(f=y.n()).done;){var v=f.value;if(v.data){var b,x=eR(v.data);try{for(x.s();!(b=x.n()).done;){var I=b.value;Math.abs(I.x-g)<=i&&h.push({seriesId:v.id,color:v.color||"#666",formattedLabel:v.label||v.id,formattedValue:"number"==typeof I.y?I.y.toLocaleString(void 0,{maximumFractionDigits:2}):String(I.y)})}}catch(e){x.e(e)}finally{x.f()}}}}catch(e){y.e(e)}finally{y.f()}}if(0===h.length)return null;var w=a.left+u,k=a.left+a.width/2,S=a.left+u>k,M={display:"flex",alignItems:"center",gap:6,padding:"2px 0"},C=function(e){return{display:"inline-block",width:10,height:10,borderRadius:"50%",backgroundColor:e,flexShrink:0}};return n().createElement("div",{style:{position:"absolute",top:a.top+8,left:S?void 0:w+12,right:S?"calc(100% - ".concat(w-12,"px)"):void 0,backgroundColor:"var(--mantine-color-body, white)",border:"1px solid var(--mantine-color-default-border, #e0e0e0)",borderRadius:4,padding:"8px 12px",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",fontSize:13,zIndex:1e3,pointerEvents:"none",whiteSpace:"nowrap",color:"var(--mantine-color-text, inherit)"}},n().createElement("div",{style:{marginBottom:4,fontWeight:500}},d),h.map(function(e,t){return n().createElement("div",{key:"".concat(e.seriesId,"-").concat(t),style:M},n().createElement("span",{style:C(e.color)}),n().createElement("span",null,e.formattedLabel,":"),n().createElement("span",{style:{fontWeight:500}},e.formattedValue))}))}function uR(e){var t=e.forecast,r=e.color,i=void 0===r?"#ff9800":r,o=e.opacity,a=void 0===o?.15:o,s=e.yAxisId,l=uk(),c=dk(s);if(!t||0===t.length)return null;for(var u=[],d=0;d1e10?new Date(p.x):p.x),m=c(p.y),f=c(null!=p.upper?p.upper:p.y),g=c(null!=p.lower?p.lower:p.y);null==h||null==m||isNaN(h)||isNaN(m)||u.push({x:h,y:m,yUp:isNaN(f)?m:f,yLo:isNaN(g)?m:g})}if(u.length<2)return null;for(var y="M ".concat(u[0].x," ").concat(u[0].y),v=1;v=0;I--)b+=" L ".concat(u[I].x," ").concat(u[I].yLo);return b+=" Z",n().createElement("g",null,n().createElement("path",{d:b,fill:i,fillOpacity:a}),n().createElement("path",{d:y,stroke:i,strokeWidth:2,strokeDasharray:"6 4",fill:"none"}))}function dR(t){var r,i,o=t.id,a=t.licenseKey,l=t.series,c=void 0===l?[]:l,u=t.xAxis,d=t.yAxis,p=t.zAxis,h=t.dataset,m=t.height,f=void 0===m?400:m,g=t.width,y=t.margin,v=t.grid,b=t.colors,x=t.voronoiMaxRadius,I=t.disableVoronoi,w=void 0!==I&&I,k=t.axisHighlight,S=t.tooltip,M=t.hideLegend,C=void 0!==M&&M,P=t.skipAnimation,E=void 0!==P&&P,T=(t.loading,t.slotProps,t.referenceLines),A=t.initialZoom,O=t.showToolbar,j=void 0!==O&&O,L=t.showSlider,R=void 0!==L&&L,D=t.zoomInteractionConfig,$=t.highlightedAxis,z=t.highlightedItem,N=t.tooltipItem,_=t.syncedTooltipIndex,F=t.forecast,H=t.forecastColor,B=void 0===H?"#ff9800":H,V=t.forecastOpacity,U=void 0===V?.15:V,Y=t.enableCrosshair,W=void 0!==Y&&Y,G=(t.crosshairPosition,t.crosshairClick,t.clickData,t.n_clicks),K=void 0===G?0:G,q=(t.zoomData,t.setProps);a&&!iR&&(s.setLicenseKey(a),iR=!0);var X=(0,e.useId)(),Z="".concat(X,"-clip"),J=QL((0,e.useState)(0),2),Q=J[0],ee=J[1],te=(0,e.useRef)(JSON.stringify(A));(0,e.useEffect)(function(){var e=JSON.stringify(A);e!==te.current&&(te.current=e,ee(function(e){return e+1}))},[A]);var ne=(0,e.useRef)(JSON.stringify(null!=$?$:[])),re=QL((0,e.useState)(function(){return $&&Array.isArray($)?$:[]}),2),ie=re[0],oe=re[1];(0,e.useEffect)(function(){var e=JSON.stringify(null!=$?$:[]);e!==ne.current&&(ne.current=e,oe(null!=$?$:[]))},[$]);var ae=QL((0,e.useState)(z||null),2),se=ae[0],le=ae[1],ce=(0,e.useRef)(JSON.stringify(z));(0,e.useEffect)(function(){var e=JSON.stringify(z);e!==ce.current&&(ce.current=e,le(z||null))},[z]);var ue=(0,e.useRef)(JSON.stringify(null!=N?N:null)),de=QL((0,e.useState)(function(){return null!=N?N:null}),2),pe=de[0],he=de[1];(0,e.useEffect)(function(){var e=JSON.stringify(null!=N?N:null);e!==ue.current&&(ue.current=e,he(null!=N?N:null))},[N]);var me=(0,e.useMemo)(function(){return c&&0!==c.length?c.map(function(e,t){return ZL(ZL({},e),{},{id:e.id||"series-".concat(t)})}):[]},[c]),fe=(0,e.useMemo)(function(){return me.some(function(e){return"scatter"===e.type})},[me]),ge=(0,e.useMemo)(function(){return me.some(function(e){return"line"===e.type})},[me]),ye=(0,e.useMemo)(function(){return me.some(function(e){return"line"===e.type&&e.area})},[me]),ve=(0,e.useMemo)(function(){return me.some(function(e){return"line"===e.type&&!1!==e.showMark})},[me]),be=(0,e.useMemo)(function(){return me.filter(function(e){return"scatter"===e.type})},[me]),xe=function(e,t){q&&t&&q({clickData:{type:"line",seriesId:t.seriesId,dataIndex:t.dataIndex,timestamp:(new Date).toISOString()},n_clicks:(K||0)+1})},Ie=(0,e.useMemo)(function(){var e=function(e){return!!e&&e.some(function(e){var t=e.zoom;return t&&"object"===rR(t)&&t.slider&&t.slider.enabled})};return e(u)||e(d)},[u,d]),we=(0,e.useMemo)(function(){if(u)return u.map(function(e){var t=ZL({},e);if(e.dateFormat)t.valueFormatter=function(e,t){var n=t||e;return function(t,r){return function(e,t){var n=e instanceof Date?e:new Date(e);return t.replace(/YYYY|YY|MMM|MM|dd|HH|mm|M|d/g,function(e){switch(e){case"YYYY":return n.getFullYear();case"YY":return String(n.getFullYear()).slice(-2);case"MMM":return aR[n.getMonth()];case"MM":return sR(n.getMonth()+1);case"M":return n.getMonth()+1;case"dd":return sR(n.getDate());case"d":return n.getDate();case"HH":return sR(n.getHours());case"mm":return sR(n.getMinutes());default:return e}})}(t,r&&"tick"===r.location?n:e)}}(e.dateFormat,e.dateTickFormat),delete t.dateFormat,delete t.dateTickFormat;else if(e.valueFormatter&&"function"!=typeof e.valueFormatter){var n=function(e){if("function"==typeof e)return e;if(e&&"object"===rR(e)&&"string"==typeof e.function){var t=window.dashMuiChartsFunctions;if(t&&"function"==typeof t[e.function]){var n=t[e.function],r=e.options||{};return function(){for(var e=arguments.length,t=new Array(e),i=0;i0&&s0&&(Ae.initialZoom=A),Ae.highlightedAxis=ie,Ae.onHighlightedAxisChange=function(e){var t=null!=e?e:[];oe(t),ne.current=JSON.stringify(t),q&&q({highlightedAxis:t})},Ae.highlightedItem=se,Ae.onHighlightChange=function(e){le(e),ce.current=JSON.stringify(e),q&&q({highlightedItem:e})},Ae.tooltipItem=pe,Ae.onTooltipItemChange=function(e){var t=null!=e?e:null;he(t),ue.current=JSON.stringify(t),q&&q({tooltipItem:t})},n().createElement("div",{id:o,style:{position:"relative"}},n().createElement(Rx,qL({key:Q},Ae),j&&n().createElement(kA,null),!C&&n().createElement("div",{style:{display:"flex",justifyContent:"center",marginBottom:8}},n().createElement(XC,null)),n().createElement(mI,null,v&&n().createElement(FM,{horizontal:v.horizontal,vertical:v.vertical}),n().createElement(ZC,{id:Z}),n().createElement("g",{clipPath:"url(#".concat(Z,")")},ye&&n().createElement(gk,{skipAnimation:E}),ge&&n().createElement(Ek,{onItemClick:xe,skipAnimation:E}),fe&&n().createElement(_L,{onItemClick:function(e,t){if(q&&t){var n,r=me.find(function(e){return e.id===t.seriesId}),i=null==r||null===(n=r.data)||void 0===n?void 0:n[t.dataIndex];q({clickData:{type:"scatter",seriesId:t.seriesId,dataIndex:t.dataIndex,x:null==i?void 0:i.x,y:null==i?void 0:i.y,timestamp:(new Date).toISOString()},n_clicks:(K||0)+1})}}})),ve&&n().createElement(hS,{onItemClick:xe,skipAnimation:E}),Ee.map(function(e,t){return n().createElement(gM,qL({key:e.axisId||"x-".concat(t),axisId:e.axisId},e.renderProps))}),Te.map(function(e,t){return n().createElement(OM,qL({key:e.axisId||"y-".concat(t),axisId:e.axisId},e.renderProps))}),n().createElement(_C,{x:null!==(r=null==k?void 0:k.x)&&void 0!==r?r:ge?"line":"none",y:null!==(i=null==k?void 0:k.y)&&void 0!==i?i:"none"}),F&&F.length>0&&n().createElement(uR,{forecast:F,color:B,opacity:U}),T&&T.map(function(e,t){return n().createElement(VT,qL({key:"ref-".concat(t)},e))}),W&&n().createElement(oR,{setProps:q}),(R||Ie)&&n().createElement(DT,null)),"none"!==Se&&(Me?n().createElement(jC,{trigger:"axis"},n().createElement(lR,{scatterSeries:be,proximity:ke})):n().createElement(LC,{trigger:Se})),null!=_&&_>=0&&n().createElement(cR,{dataIndex:_,seriesConfig:me,scatterSeries:be,proximity:ke})))}function pR(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function hR(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n>>15,1|t);return(((e=e+Math.imul(e^e>>>7,61|e)^e)^e>>>14)>>>0)/4294967296},nextGaussian:function(){var e=this.next()||1e-4,t=this.next();return Math.sqrt(-2*Math.log(e))*Math.cos(2*Math.PI*t)}}}function wR(e){var t=e.candles,r=e.upColor,i=e.downColor,o=e.totalSlots,a=Nx().width,s=uk(),l=dk();if(!t||0===t.length)return null;var c=a/Math.max(o,1),u=Math.max(1,.6*c),d=Math.max(.5,.06*c);return n().createElement("g",null,t.map(function(e,t){var o=s(t);if(void 0===o)return null;var a=e.close>=e.open?r:i,c=l(e.high),p=l(e.low),h=l(e.open),m=l(e.close);if([c,p,h,m].some(function(e){return void 0===e}))return null;var f=Math.min(h,m),g=Math.max(1,Math.abs(h-m));return n().createElement("g",{key:"candle-".concat(t)},n().createElement("line",{x1:o,y1:c,x2:o,y2:p,stroke:a,strokeWidth:d}),n().createElement("rect",{x:o-u/2,y:f,width:u,height:g,fill:a,stroke:a,strokeWidth:.5}))}))}function kR(e){var t=e.candles,r=e.upColor,i=e.downColor,o=e.totalSlots,a=e.volumeHeightPct,s=Nx(),l=s.top,c=s.height,u=s.width,d=uk();if(!t||0===t.length)return null;var p=Math.max.apply(Math,fR(t.map(function(e){return e.volume})).concat([1])),h=c*(a/100),m=l+c-h,f=u/Math.max(o,1),g=Math.max(1,.55*f);return n().createElement("g",{opacity:.35},t.map(function(e,t){var o=d(t);if(void 0===o)return null;var a=e.close>=e.open,s=e.volume/p*h;return n().createElement("rect",{key:"vol-".concat(t),x:o-g/2,y:m+h-s,width:g,height:s,fill:a?r:i})}))}function SR(e){var t=e.candles,r=e.labelInterval,i=uk(),o=dk();if(!t||0===t.length)return null;var a=r||Math.max(1,Math.floor(t.length/8));return n().createElement("g",null,t.map(function(e,r){if(r%a!==0&&r!==t.length-1)return null;var s=i(r),l=o(e.close);if(void 0===s||void 0===l)return null;var c=e.close>=e.open?"#4caf50":"#f44336";return n().createElement("g",{key:"label-".concat(r)},n().createElement("circle",{cx:s,cy:l,r:3,fill:c}),n().createElement("text",{x:s,y:l-10,textAnchor:"middle",fill:c,fontSize:10,fontWeight:"bold"},e.close.toFixed(1)))}))}function MR(e){var t=e.forecastData,r=e.upperBound,i=e.lowerBound,o=e.startIndex,a=e.color,s=e.opacity,l=uk(),c=dk();if(!t||0===t.length)return null;for(var u=[],d=0;d=0;x--)v+=" L ".concat(u[x].x," ").concat(u[x].yLo);return v+=" Z",n().createElement("g",null,n().createElement("path",{d:v,fill:a,fillOpacity:s}),n().createElement("path",{d:g,stroke:a,strokeWidth:2,strokeDasharray:"6 4",fill:"none"}))}function CR(e){var t=e.alerts,r=e.alertUpColor,i=e.alertDownColor,o=e.formatterFn,a=uk(),s=dk();return t&&0!==t.length?n().createElement("g",null,t.map(function(e,t){var l=a(e.displayIndex),c=s(e.price);if(void 0===l||void 0===c)return null;var u="up"===e.type,d=u?r:i,p=o?o(e,{index:t}):"".concat(u?"+":"").concat(e.pctChange.toFixed(1),"%"),h=7*p.length+10;return n().createElement("g",{key:"alert-".concat(t)},n().createElement("rect",{x:l-h/2,y:u?c-32:c+10,width:h,height:18,rx:4,fill:d}),n().createElement("text",{x:l,y:u?c-19:c+23,textAnchor:"middle",fill:"white",fontSize:10,fontWeight:"bold"},p),n().createElement("circle",{cx:l,cy:c,r:4,fill:d,stroke:"white",strokeWidth:1.5}))})):null}function PR(e){var t=e.startIndex,r=e.endIndex,i=Nx(),o=i.top,a=i.bottom,s=i.height,l=uk(),c=l(t),u=l(r);return void 0===c||void 0===u?null:n().createElement("rect",{x:c,y:0,width:u-c,height:o+s+a,fill:"#9e9e9e",opacity:.08})}function ER(t){var r,i,o=t.id,a=t.licenseKey,l=t.height,c=void 0===l?500:l,u=t.width,d=t.margin,p=t.windowSize,h=void 0===p?60:p,m=t.forecastSize,f=void 0===m?15:m,g=t.running,y=void 0!==g&&g,v=t.intervalMs,b=void 0===v?300:v,x=t.seed,I=void 0===x?42:x,w=t.resetTrigger,k=void 0===w?0:w,S=t.initialPrice,M=void 0===S?100:S,C=t.volatility,P=void 0===C?.02:C,E=t.drift,T=void 0===E?.001:E,A=t.forecastVolatility,O=void 0===A?1.5:A,j=t.alertProbability,L=void 0===j?.08:j,R=t.alertThresholdPct,D=void 0===R?2:R,$=t.alertLookback,z=void 0===$?5:$,N=t.alertMinDistance,_=void 0===N?10:N,F=t.maxVisibleAlerts,H=void 0===F?6:F,B=t.alertFilter,V=t.alertFormatter,U=t.candleUpColor,Y=void 0===U?"#4caf50":U,W=t.candleDownColor,G=void 0===W?"#f44336":W,K=t.forecastColor,q=void 0===K?"#ff9800":K,X=t.alertUpColor,Z=void 0===X?"#4caf50":X,J=t.alertDownColor,Q=void 0===J?"#f44336":J,ee=t.uncertaintyOpacity,te=void 0===ee?.15:ee,ne=t.showVolume,re=void 0===ne||ne,ie=t.showLabels,oe=void 0!==ie&&ie,ae=t.volumeHeightPct,se=void 0===ae?20:ae,le=t.showGrid,ce=void 0===le||le,ue=t.showSlider,de=void 0!==ue&&ue,pe=(t.hideLegend,t.grid),he=t.xAxisLabel,me=void 0===he?"Tick":he,fe=t.yAxisLabel,ge=void 0===fe?"Price":fe,ye=(t.currentPrice,t.tickCount,t.alertHistory),ve=(t.zoomData,t.setProps);a&&!bR&&(s.setLicenseKey(a),bR=!0);var be=(0,e.useId)(),xe="".concat(be,"-clip"),Ie=(0,e.useRef)(IR(I)),we=(0,e.useRef)([]),ke=(0,e.useRef)([]),Se=(0,e.useRef)(null),Me=(0,e.useRef)(k);(0,e.useEffect)(function(){0===we.current.length&&(we.current=[{open:M,high:1.005*M,low:.995*M,close:M,volume:500}])},[M]);var Ce=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return s}}(e,t)||gR(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}((0,e.useState)({candles:[],forecast:[],upperBound:[],lowerBound:[],alerts:[],forecastStartIndex:0}),2),Pe=Ce[0],Ee=Ce[1],Te=(0,e.useCallback)(function(e,t,n){for(var r=[],i=[],o=[],a=e,s=0,l=0;l0?c[c.length-1].close:M,t=Ie.current,n=P,r=T,i=e,o=t.nextGaussian()*n,a=t.nextGaussian()*n,s=t.nextGaussian()*n,l=Math.max(.01,i*Math.exp(r+o)),{open:i,high:Math.max(i,l)*(1+.4*Math.abs(a)),low:Math.min(i,l)*(1-.4*Math.abs(s)),close:l,volume:Math.max(50,Math.round(800+400*t.nextGaussian()+3e3*Math.abs(o)))});c.push(u);var d=c.length-1-z;if(d>=z){var p=c[d],m=xR(B),g=null;if(m){var y=m(c,d,{lookback:z});!0===y?g=p.close>=p.open?"up":"down":"up"!==y&&"down"!==y||(g=y)}else{for(var v=Math.max(0,d-z),b=Math.min(c.length-1,d+z),x=!0,w=!0,k=v;k<=b&&(k===d||(c[k].high>p.high&&(x=!1),c[k].low=p.open?"up":"down":x?g="up":w&&(g="down")}var S=ke.current.length>0?ke.current[ke.current.length-1].tick:-1/0;if(g&&d-S>=_){var C=(p.close-p.open)/p.open*100;ke.current.push({tick:d,price:"up"===g?p.high:p.low,type:g,pctChange:C,message:"".concat("up"===g?"+":"").concat(C.toFixed(2),"%")})}}var E=Math.max(0,c.length-h),A=c.slice(E),O=Te(u.close,IR(I+c.length),f),j=O.forecast,L=O.upper,R=O.lower,D=ke.current.filter(function(e){return e.tick>=E&&e.tickH&&(D.sort(function(e,t){return Math.abs(t.pctChange)-Math.abs(e.pctChange)}),(D=D.slice(0,H)).sort(function(e,t){return e.displayIndex-t.displayIndex})),Ee({candles:A,forecast:j,upperBound:L,lowerBound:R,alerts:D,forecastStartIndex:A.length-1}),ve){var $={currentPrice:Math.round(100*u.close)/100,tickCount:c.length};ke.current.length!==(ye||[]).length&&($.alertHistory=ke.current.slice(-50)),ve($)}},b),function(){Se.current&&(clearInterval(Se.current),Se.current=null)};Se.current&&(clearInterval(Se.current),Se.current=null)},[y,b,P,T,Te,h,f,L,D,z,_,H,B,I,M,ve]);var Ae=(0,e.useMemo)(function(){var e=Pe.candles,t=e.length+Pe.forecast.length,n=Array.from({length:t},function(e,t){return t}),r=[].concat(fR(e.map(function(e){return e.close})),fR(Array(Pe.forecast.length).fill(null))),i=[].concat(fR(e.flatMap(function(e){return[e.high,e.low]})),fR(Pe.forecast),fR(Pe.upperBound),fR(Pe.lowerBound)).filter(function(e){return null!=e&&isFinite(e)}),o=0,a=200;if(i.length>0){o=Math.min.apply(Math,fR(i));var s=.12*((a=Math.max.apply(Math,fR(i)))-o)||5;o-=s,a+=s}return{series:[{type:"line",id:"close",label:"Close",data:r,color:"#9e9e9e",showMark:!1,connectNulls:!1}],xAxisData:n,yDomain:{min:o,max:a},forecastStartIdx:e.length-1}},[Pe]),Oe=Ae.series,je=Ae.xAxisData,Le=Ae.yDomain,Re=Ae.forecastStartIdx,De={id:"x-axis",data:je,scaleType:"linear",tickLabelStyle:{fontSize:11}};de&&(De.zoom={minSpan:10,panning:!0,filterMode:"discard",slider:{enabled:!0,preview:!0}});var $e={height:c,series:Oe,skipAnimation:!0,xAxis:[De],yAxis:[{id:"y-axis",label:ge,width:65,min:Le.min,max:Le.max,tickLabelStyle:{fontSize:11}}],onZoomChange:function(e){ve&&ve({zoomData:e})}};u&&($e.width=u),d&&($e.margin=d);var ze=je.length,Ne=Pe.candles,_e=Ne.length>0?Ne[Ne.length-1].close:M;return n().createElement("div",{id:o},n().createElement(Rx,$e,n().createElement(mI,null,(ce||pe)&&n().createElement(FM,{horizontal:null===(r=null==pe?void 0:pe.horizontal)||void 0===r||r,vertical:null!==(i=null==pe?void 0:pe.vertical)&&void 0!==i&&i}),n().createElement(ZC,{id:xe}),n().createElement("g",{clipPath:"url(#".concat(xe,")")},Pe.forecast.length>0&&n().createElement(PR,{startIndex:Re,endIndex:je.length-1}),re&&n().createElement(kR,{candles:Ne,upColor:Y,downColor:G,totalSlots:ze,volumeHeightPct:se}),n().createElement(wR,{candles:Ne,upColor:Y,downColor:G,totalSlots:ze}),Pe.forecast.length>0&&n().createElement(MR,{forecastData:[_e].concat(fR(Pe.forecast)),upperBound:[_e].concat(fR(Pe.upperBound)),lowerBound:[_e].concat(fR(Pe.lowerBound)),startIndex:Re,color:q,opacity:te})),oe&&n().createElement(SR,{candles:Ne}),n().createElement(CR,{alerts:Pe.alerts,alertUpColor:Z,alertDownColor:Q,formatterFn:xR(V)}),n().createElement(gM,{axisId:"x-axis",label:me}),n().createElement(OM,{axisId:"y-axis"}),n().createElement(_C,{x:"line",y:"none"}),n().createElement(VT,{y:M,label:"Open",lineStyle:{stroke:"#9e9e9e",strokeDasharray:"4 4",strokeWidth:1},labelStyle:{fill:"#9e9e9e",fontSize:11},labelAlign:"start"}),de&&n().createElement(DT,null)),n().createElement(LC,{trigger:"axis"})))}ER.propTypes={id:i().string,licenseKey:i().string,height:i().number,width:i().number,margin:i().shape({top:i().number,right:i().number,bottom:i().number,left:i().number}),windowSize:i().number,forecastSize:i().number,running:i().bool,intervalMs:i().number,seed:i().number,resetTrigger:i().number,initialPrice:i().number,volatility:i().number,drift:i().number,forecastVolatility:i().number,alertProbability:i().number,alertThresholdPct:i().number,alertLookback:i().number,alertMinDistance:i().number,maxVisibleAlerts:i().number,alertFilter:i().shape({function:i().string.isRequired,options:i().object}),alertFormatter:i().shape({function:i().string.isRequired,options:i().object}),candleUpColor:i().string,candleDownColor:i().string,forecastColor:i().string,alertUpColor:i().string,alertDownColor:i().string,uncertaintyOpacity:i().number,showVolume:i().bool,showLabels:i().bool,volumeHeightPct:i().number,showGrid:i().bool,showSlider:i().bool,hideLegend:i().bool,grid:i().shape({horizontal:i().bool,vertical:i().bool}),xAxisLabel:i().string,yAxisLabel:i().string,currentPrice:i().number,tickCount:i().number,alertHistory:i().array,zoomData:i().arrayOf(i().shape({axisId:i().oneOfType([i().string,i().number]),start:i().number,end:i().number})),setProps:i().func};const TR=[Xs,Mb,Ys,Ws,Bs,Zs,Bb,kx],AR=["xAxis","yAxis","series","width","height","margin","colors","dataset","sx","axisHighlight","grid","children","slots","slotProps","skipAnimation","loading","layout","onItemClick","highlightedItem","onHighlightChange","borderRadius","barLabel","className","hideLegend","showToolbar","brushConfig","renderer"],OR=t=>{const{xAxis:n,yAxis:r,series:i,width:o,height:a,margin:s,colors:c,dataset:u,sx:d,axisHighlight:p,grid:h,children:m,slots:f,slotProps:g,skipAnimation:y,loading:v,layout:b,onItemClick:x,highlightedItem:I,onHighlightChange:w,borderRadius:k,barLabel:S,className:M,brushConfig:C,renderer:P}=t,E=tt(t,AR),T=`${z()}-clip-path`,A="horizontal"===b||void 0===b&&i.some(e=>"horizontal"===e.layout),O=e.useMemo(()=>[{id:W,scaleType:"band",data:Array.from({length:Math.max(...i.map(e=>(e.data??u??[]).length))},(e,t)=>t)}],[u,i]),j=e.useMemo(()=>[{id:G,scaleType:"band",data:Array.from({length:Math.max(...i.map(e=>(e.data??u??[]).length))},(e,t)=>t)}],[u,i]),L=e.useMemo(()=>i.map(e=>l({type:"bar"},e,{layout:A?"horizontal":"vertical"})),[A,i]),R=A?void 0:O,D=e.useMemo(()=>n?A?n:n.map(e=>l({scaleType:"band"},e)):R,[R,A,n]),$=A?j:void 0,N=e.useMemo(()=>r?A?r.map(e=>l({scaleType:"band"},e)):r:$,[$,A,r]),_=l({},E,{series:L,width:o,height:a,margin:s,colors:c,dataset:u,xAxis:D,yAxis:N,highlightedItem:I,onHighlightChange:w,disableAxisListener:"axis"!==g?.tooltip?.trigger&&"none"===p?.x&&"none"===p?.y,className:M,skipAnimation:y,brushConfig:C,plugins:TR}),F={onItemClick:x,slots:f,slotProps:g,borderRadius:k,renderer:P,barLabel:S},H={vertical:h?.vertical,horizontal:h?.horizontal},B={clipPath:`url(#${T})`},V={id:T},U={slots:f,slotProps:g,loading:v},Y={slots:f,slotProps:g},K=l({},A?{y:"band"}:{x:"band"},p),q={slots:f,slotProps:g};return{chartsWrapperProps:{sx:d,legendPosition:t.slotProps?.legend?.position,legendDirection:t.slotProps?.legend?.direction,hideLegend:t.hideLegend??!1},chartContainerProps:_,barPlotProps:F,gridProps:H,clipPathProps:V,clipPathGroupProps:B,overlayProps:U,chartsAxisProps:Y,axisHighlightProps:K,legendProps:q,children:m}};function jR(e){const t=xm(),n=MO(),r=dP(),{xAxis:i,xAxisIds:o}=_x(),{yAxis:a,yAxisIds:s}=Fx();if(null===n||"bar"!==n.type||!r)return null;const c=r.series[n.seriesId];if(null==c.data[n.dataIndex])return null;const u=c.xAxisId??o[0],d=c.yAxisId??s[0],p=i[u],h=a[d],m="vertical"===r.series[n.seriesId].layout,f=r.stackingGroups.findIndex(e=>e.ids.includes(n.seriesId)),g=Ol({verticalLayout:m,xAxisConfig:p,yAxisConfig:h,series:c,dataIndex:n.dataIndex,numberOfGroups:r.stackingGroups.length,groupIndex:f});if(null===g)return null;const{x:y,y:v,height:b,width:x}=g;return(0,O.jsx)("rect",l({fill:"none",stroke:(t.vars??t).palette.text.primary,strokeWidth:2,x:y-3,y:v-3,width:x+6,height:b+6,rx:3,ry:3},e))}const LR=e.forwardRef(function(e,t){const n=Lh({props:e,name:"MuiBarChart"}),{chartsWrapperProps:r,chartContainerProps:i,barPlotProps:o,gridProps:a,clipPathProps:s,clipPathGroupProps:c,overlayProps:u,chartsAxisProps:d,axisHighlightProps:p,legendProps:h,children:m}=OR(n),{chartDataProviderProps:f,chartsSurfaceProps:g}=yL(i,t),y=n.slots?.tooltip??LC,v=n.slots?.toolbar;return(0,O.jsx)(SO,l({},f,{children:(0,O.jsxs)(FO,l({},r,{children:[n.showToolbar&&v?(0,O.jsx)(v,l({},n.slotProps?.toolbar)):null,!n.hideLegend&&(0,O.jsx)(XC,l({},h)),(0,O.jsxs)(mI,l({},g,{children:[(0,O.jsx)(FM,l({},a)),(0,O.jsxs)("g",l({},c,{children:[(0,O.jsx)(vO,l({},o)),(0,O.jsx)(GO,l({},u)),(0,O.jsx)(_C,l({},p)),(0,O.jsx)(jR,{})]})),(0,O.jsx)($O,l({},d)),(0,O.jsx)(ZC,l({},s)),m]})),!n.loading&&(0,O.jsx)(y,l({},n.slotProps?.tooltip))]}))}))}),RR=["initialZoom","zoomData","onZoomChange","zoomInteractionConfig","plugins","apiRef"],DR=[Xs,Mb,Ys,Ws,Bs,Zs,Bb,kx,Ix,tx],$R=["initialZoom","zoomData","onZoomChange","apiRef","showToolbar"],zR=e.forwardRef(function(e,t){const n=Lh({props:e,name:"MuiBarChartPro"}),{initialZoom:r,zoomData:i,onZoomChange:o,apiRef:a,showToolbar:s}=n,c=tt(n,$R),{chartsWrapperProps:u,chartContainerProps:d,barPlotProps:p,gridProps:h,clipPathProps:m,clipPathGroupProps:f,overlayProps:g,chartsAxisProps:y,axisHighlightProps:v,legendProps:b,children:x}=OR(c),{chartDataProviderProProps:I,chartsSurfaceProps:w}=((e,t)=>{const n=e,{initialZoom:r,zoomData:i,onZoomChange:o,zoomInteractionConfig:a,plugins:s,apiRef:c}=n,u=tt(n,RR),{chartDataProviderProps:d,chartsSurfaceProps:p,children:h}=yL(u,t);return{chartDataProviderProProps:l({},d,{initialZoom:r,zoomData:i,onZoomChange:o,zoomInteractionConfig:a,apiRef:c,plugins:s??wx}),chartsSurfaceProps:p,children:h}})(l({},d,{initialZoom:r,zoomData:i,onZoomChange:o,apiRef:a,plugins:DR}),t),k=n.slots?.tooltip??LC,S=n.slots?.toolbar??kA;return(0,O.jsx)(Rx,l({},I,{children:(0,O.jsxs)(FO,l({},u,{children:[s?(0,O.jsx)(S,l({},n.slotProps?.toolbar)):null,!n.hideLegend&&(0,O.jsx)(XC,l({},b)),(0,O.jsxs)(mI,l({},w,{children:[(0,O.jsx)(FM,l({},h)),(0,O.jsxs)("g",l({},f,{children:[(0,O.jsx)(vO,l({},p)),(0,O.jsx)(GO,l({},g)),(0,O.jsx)(_C,l({},v))]})),(0,O.jsx)($O,l({},y)),(0,O.jsx)(DT,{}),(0,O.jsx)(WT,{}),(0,O.jsx)(ZC,l({},m)),x]})),!n.loading&&(0,O.jsx)(k,l({},n.slotProps?.tooltip))]}))}))});function NR(e){return NR="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},NR(e)}function _R(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function FR(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&(ne.initialZoom=X),ne.onZoomChange=J,$&&(ne.showToolbar=!0),z&&(ne.brushConfig=z),N&&(ne.zoomInteractionConfig=N));var re=A&&A.length>0?A.map(function(e,t){return n().createElement(VT,{key:"ref-line-".concat(t),x:e.x,y:e.y,axisId:e.axisId,label:e.label||void 0,labelAlign:e.labelAlign||"middle",lineStyle:e.lineStyle||void 0,labelStyle:e.labelStyle||void 0,spacing:e.spacing||void 0})}):null,ie=B?zR:LR;return n().createElement("div",{id:r},n().createElement(ie,ne,re))}function WR(e){return WR="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},WR(e)}function GR(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function KR(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.open?i||"#4caf50":o||"#f44336",g=u(Math.max(e.open,e.close)),y=u(Math.min(e.open,e.close)),v=u(e.high),b=u(e.low),x=Math.max(1,y-g);return n().createElement("g",{key:t,style:{cursor:l?"pointer":"default"},onClick:l?function(n){return l(n,t,e)}:void 0},n().createElement("line",{x1:p,y1:v,x2:p,y2:g,stroke:f,strokeWidth:s||2}),n().createElement("line",{x1:p,y1:y,x2:p,y2:b,stroke:f,strokeWidth:s||2}),n().createElement("rect",{x:p-m/2,y:g,width:m,height:x,fill:f,stroke:f,strokeWidth:1,rx:1}))}))}function nD(e){var t=e.volumeData,r=e.labels,i=e.ohlcData,o=e.upColor,a=e.downColor,s=e.maxHeightRatio,l=uk(),c=Nx(),u=(c.left,c.top),d=c.width,p=c.height;if(!l||!t||0===t.length)return null;var h=l.bandwidth?l.bandwidth():d/t.length,m=.5*h,f=Math.max.apply(Math,ZR(t));if(0===f)return null;var g=p*(s||.2),y=u+p;return n().createElement("g",{opacity:.3},t.map(function(e,t){var s=r[t],c=l(s);if(void 0===c||0===e)return null;var u=c+h/2,d=e/f*g,p=i[t]&&i[t].close>=i[t].open?o||"#4caf50":a||"#f44336";return n().createElement("rect",{key:t,x:u-m/2,y:y-d,width:m,height:d,fill:p,rx:1})}))}function rD(t){var r=t.ohlcData,i=t.labels,o=t.tooltipEnabled,a=uk(),s=(dk(),Nx()),l=s.left,c=s.top,u=s.width,d=s.height,p=XR((0,e.useState)(null),2),h=p[0],m=p[1],f=(0,e.useRef)(null);if(!o||!a||!r||0===r.length)return null;var g=a.bandwidth?a.bandwidth():u/r.length,y=null!==h?r[h]:null;return n().createElement(n().Fragment,null,n().createElement("rect",{x:l,y:c,width:u,height:d,fill:"transparent",onMouseMove:function(e){var t=e.currentTarget.ownerSVGElement||e.currentTarget.closest("svg");if(t){var n=t.createSVGPoint();n.x=e.clientX,n.y=e.clientY;var r=n.matrixTransform(t.getScreenCTM().inverse());if(r.xl+u||r.yc+d)m(null);else{for(var o=0;o=s&&r.x=y.open?"#4caf50":"#f44336"}},y.close))))))}function iD(t){var r=t.id,i=t.series,o=void 0===i?[]:i,a=t.dataset,l=t.xAxis,c=t.yAxis,u=t.height,d=void 0===u?400:u,p=t.width,h=t.margin,m=t.grid,f=t.skipAnimation,g=void 0!==f&&f,y=t.hideLegend,v=void 0===y||y,b=t.tooltip,x=t.referenceLines,I=void 0===x?[]:x,w=t.bodyWidthRatio,k=t.wickWidth,S=t.showVolume,M=void 0!==S&&S,C=t.volumeHeightRatio,P=t.licenseKey,E=t.initialZoom,T=t.showSlider,A=void 0!==T&&T,O=t.showToolbar,j=void 0!==O&&O,L=t.zoomInteractionConfig,R=(t.clickData,t.hoverData,t.zoomData,t.setProps),D=(0,e.useId)();P&&!eD&&(s.setLicenseKey(P),eD=!0);var $=(0,e.useMemo)(function(){var e=o[0]||{},t=[],n=[],r=[],i=e.upColor||"#4caf50",s=e.downColor||"#f44336";if(e.data&&Array.isArray(e.data))t=e.data.map(function(e){return Array.isArray(e)?{open:e[0],high:e[1],low:e[2],close:e[3]}:e});else if(a&&e.datasetKeys){var c=e.datasetKeys;t=a.map(function(e){return{open:e[c.open||"open"],high:e[c.high||"high"],low:e[c.low||"low"],close:e[c.close||"close"]}})}return l&&l[0]&&(l[0].data?n=l[0].data:l[0].dataKey&&a&&(n=a.map(function(e){return e[l[0].dataKey]}))),0===n.length&&(n=t.map(function(e,t){return String(t)})),e.volumeKey&&a?r=a.map(function(t){return t[e.volumeKey]||0}):e.volume&&Array.isArray(e.volume)&&(r=e.volume),{ohlcData:t,labels:n,volumeData:r,upColor:i,downColor:s}},[o,a,l]),z=$.ohlcData,N=$.labels,_=$.volumeData,F=$.upColor,H=$.downColor,B=(0,e.useMemo)(function(){if(0===z.length)return{min:0,max:100};var e=z.map(function(e){return e.low}),t=z.map(function(e){return e.high}),n=Math.min.apply(Math,ZR(e)),r=Math.max.apply(Math,ZR(t)),i=.05*(r-n);return{min:n-i,max:r+i}},[z]),V=XR((0,e.useState)(function(){return E&&Array.isArray(E)?E:[]}),2),U=V[0],Y=V[1],W=(0,e.useRef)(JSON.stringify(E||[])),G=(0,e.useCallback)(function(e){var t="function"==typeof e?e(U):e;Y(t),W.current=JSON.stringify(t),R&&R({zoomData:t})},[R,U]),K=(0,e.useCallback)(function(e,t,n){R&&R({clickData:{dataIndex:t,label:N[t],open:n.open,high:n.high,low:n.low,close:n.close,timestamp:(new Date).toISOString()}})},[R,N]),q={height:d,series:(0,e.useMemo)(function(){return[{type:"bar",id:"__candle_placeholder",data:z.map(function(e){return e.close}),color:"transparent",highlightScope:{highlight:"none",fade:"none"}}]},[z]),xAxis:(0,e.useMemo)(function(){var e=l&&l[0]?KR({},l[0]):{},t=KR({id:e.id||"x-axis-candle",scaleType:"band",data:N},e);if(A){var n=t.zoom||{},r=!0===n?{}:"object"===WR(n)?n:{};t.zoom=KR(KR({},r),{},{slider:KR(KR({},r.slider),{},{enabled:!0})})}return[t]},[l,N,A]),yAxis:(0,e.useMemo)(function(){var e=c&&c[0]?KR({},c[0]):{};return[KR(KR(KR({id:e.id||"y-axis-candle",min:B.min,max:B.max},e),void 0!==e.min?{min:e.min}:{min:B.min}),void 0!==e.max?{max:e.max}:{max:B.max})]},[c,B]),onZoomChange:G};p&&(q.width=p),h&&(q.margin=h),g&&(q.skipAnimation=g),L&&(q.zoomInteractionConfig=L),U&&U.length>0&&(q.initialZoom=U);var X=!b||"none"!==b.trigger;return n().createElement("div",{id:r},n().createElement(Rx,q,j&&n().createElement(kA,null),!v&&n().createElement("div",{style:{display:"flex",justifyContent:"center",marginBottom:8}},n().createElement(XC,null)),n().createElement(mI,null,n().createElement(ZC,{id:D}),m&&n().createElement(FM,{horizontal:m.horizontal,vertical:m.vertical}),n().createElement("g",{clipPath:"url(#".concat(D,")")},M&&_.length>0&&n().createElement(nD,{volumeData:_,labels:N,ohlcData:z,upColor:F,downColor:H,maxHeightRatio:C}),n().createElement(tD,{ohlcData:z,labels:N,upColor:F,downColor:H,bodyWidthRatio:w,wickWidth:k,onCandleClick:K})),n().createElement(gM,null),n().createElement(OM,null),I&&I.map(function(e,t){return n().createElement(VT,{key:"ref-line-".concat(t),x:e.x,y:e.y,axisId:e.axisId,label:e.label||void 0,labelAlign:e.labelAlign||"middle",lineStyle:e.lineStyle||void 0,labelStyle:e.labelStyle||void 0,spacing:e.spacing||void 0})}),n().createElement(rD,{ohlcData:z,labels:N,tooltipEnabled:X}),A&&n().createElement(DT,null))))}iD.propTypes={id:i().string,series:i().arrayOf(i().object),dataset:i().arrayOf(i().object),xAxis:i().arrayOf(i().object),yAxis:i().arrayOf(i().object),height:i().number,width:i().number,margin:i().exact({top:i().number,bottom:i().number,left:i().number,right:i().number}),grid:i().exact({horizontal:i().bool,vertical:i().bool}),skipAnimation:i().bool,hideLegend:i().bool,tooltip:i().exact({trigger:i().oneOf(["item","none"])}),bodyWidthRatio:i().number,wickWidth:i().number,showVolume:i().bool,volumeHeightRatio:i().number,referenceLines:i().arrayOf(i().object),licenseKey:i().string,initialZoom:i().arrayOf(i().object),showSlider:i().bool,showToolbar:i().bool,zoomInteractionConfig:i().object,clickData:i().object,hoverData:i().object,zoomData:i().arrayOf(i().object),setProps:i().func};const oD={};function aD(t,n){const r=e.useRef(oD);return r.current===oD&&(r.current=t(n)),r}function sD(e,t,n,r){const i=aD(lD).current;return function(e,t,n,r,i){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==i}(i,e,t,n,r)&&function(e,t){e.refs=t,t.every(e=>null==e)?e.callback=null:e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),null!=n){const r=Array(t.length).fill(null);for(let e=0;e{for(let e=0;e=19?function(t,n,r,i,o){const a=e.useCallback(()=>n(t.getSnapshot(),r,i,o),[t,n,r,i,o]);return(0,N.useSyncExternalStore)(t.subscribe,a,a)}:function(e,t,n,r,i){return(0,_.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,e=>t(e,n,r,i))};function uD(e,t,n,r,i){return cD(e,t,n,r,i)}function dD(e){return Ig("MuiAlert",e)}const pD=wg("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]),hD=ob((0,O.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"}),"SuccessOutlined"),mD=ob((0,O.jsx)("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),fD=ob((0,O.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"}),"ErrorOutline"),gD=ob((0,O.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"}),"InfoOutlined"),yD=ob((0,O.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"}),"Close"),vD=bm(Zv,{name:"MuiAlert",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`${n.variant}${Cm(n.color||n.severity)}`]]}})(wm(({theme:e})=>{const t="light"===e.palette.mode?sp:cp,n="light"===e.palette.mode?cp:sp;return{...e.typography.body2,backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(e.palette).filter(vy(["light"])).map(([r])=>({props:{colorSeverity:r,variant:"standard"},style:{color:e.vars?e.vars.palette.Alert[`${r}Color`]:t(e.palette[r].light,.6),backgroundColor:e.vars?e.vars.palette.Alert[`${r}StandardBg`]:n(e.palette[r].light,.9),[`& .${pD.icon}`]:e.vars?{color:e.vars.palette.Alert[`${r}IconColor`]}:{color:e.palette[r].main}}})),...Object.entries(e.palette).filter(vy(["light"])).map(([n])=>({props:{colorSeverity:n,variant:"outlined"},style:{color:e.vars?e.vars.palette.Alert[`${n}Color`]:t(e.palette[n].light,.6),border:`1px solid ${(e.vars||e).palette[n].light}`,[`& .${pD.icon}`]:e.vars?{color:e.vars.palette.Alert[`${n}IconColor`]}:{color:e.palette[n].main}}})),...Object.entries(e.palette).filter(vy(["dark"])).map(([t])=>({props:{colorSeverity:t,variant:"filled"},style:{fontWeight:e.typography.fontWeightMedium,...e.vars?{color:e.vars.palette.Alert[`${t}FilledColor`],backgroundColor:e.vars.palette.Alert[`${t}FilledBg`]}:{backgroundColor:"dark"===e.palette.mode?e.palette[t].dark:e.palette[t].main,color:e.palette.getContrastText(e.palette[t].main)}}}))]}})),bD=bm("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(e,t)=>t.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),xD=bm("div",{name:"MuiAlert",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),ID=bm("div",{name:"MuiAlert",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),wD={success:(0,O.jsx)(hD,{fontSize:"inherit"}),warning:(0,O.jsx)(mD,{fontSize:"inherit"}),error:(0,O.jsx)(fD,{fontSize:"inherit"}),info:(0,O.jsx)(gD,{fontSize:"inherit"})},kD=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiAlert"}),{action:r,children:i,className:o,closeText:a="Close",color:s,components:l={},componentsProps:c={},icon:u,iconMapping:d=wD,onClose:p,role:h="alert",severity:m="success",slotProps:f={},slots:g={},variant:y="standard",...v}=n,b={...n,color:s,severity:m,variant:y,colorSeverity:s||m},x=(e=>{const{variant:t,color:n,severity:r,classes:i}=e;return Gh({root:["root",`color${Cm(n||r)}`,`${t}${Cm(n||r)}`,`${t}`],icon:["icon"],message:["message"],action:["action"]},dD,i)})(b),I={slots:{closeButton:l.CloseButton,closeIcon:l.CloseIcon,...g},slotProps:{...c,...f}},[w,k]=Ng("root",{ref:t,shouldForwardComponentProp:!0,className:Hh(x.root,o),elementType:vD,externalForwardedProps:{...I,...v},ownerState:b,additionalProps:{role:h,elevation:0}}),[S,M]=Ng("icon",{className:x.icon,elementType:bD,externalForwardedProps:I,ownerState:b}),[C,P]=Ng("message",{className:x.message,elementType:xD,externalForwardedProps:I,ownerState:b}),[E,T]=Ng("action",{className:x.action,elementType:ID,externalForwardedProps:I,ownerState:b}),[A,j]=Ng("closeButton",{elementType:sv,externalForwardedProps:I,ownerState:b}),[L,R]=Ng("closeIcon",{elementType:yD,externalForwardedProps:I,ownerState:b});return(0,O.jsxs)(w,{...k,children:[!1!==u?(0,O.jsx)(S,{...M,children:u||d[m]||wD[m]}):null,(0,O.jsx)(C,{...P,children:i}),null!=r?(0,O.jsx)(E,{...T,children:r}):null,null==r&&p?(0,O.jsx)(E,{...T,children:(0,O.jsx)(A,{size:"small","aria-label":a,title:a,color:"inherit",onClick:p,...j,children:(0,O.jsx)(L,{fontSize:"small",...R})})}):null]})}),SD=kD;function MD(e,t,n=void 0){const r={};for(const i in e){const o=e[i];let a="",s=!0;for(let e=0;en.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n},PD=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},ED=function(e,t,n){return"function"==typeof e?e(t,n):e},TD=function(t){const{elementType:n,externalSlotProps:r,ownerState:i,skipResolvingSlotProps:o=!1,...a}=t,s=o?{}:ED(r,i),{props:l,internalRef:c}=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=CD({...i,...r}),s=PD(r),l=PD(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}}({...a,externalSlotProps:s}),u=function(...t){const n=e.useRef(void 0),r=e.useCallback(e=>{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}(c,s?.ref,t.additionalProps?.ref);return function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}}(n,{...l,ref:u},i)},AD=e=>e,OD=(()=>{let e=AD;return{configure(t){e=t},generate:t=>e(t),reset(){e=AD}}})(),jD={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 LD(e,t,n="Mui"){const r=jD[t];return r?`${n}-${r}`:`${OD.generate(e)}-${t}`}function RD(e,t,n="Mui"){const r={};return t.forEach(t=>{r[t]=LD(e,t,n)}),r}function DD(e){return LD("MuiRichTreeView",e)}function $D(e){return Lh}RD("MuiRichTreeView",["root","item","itemContent","itemGroupTransition","itemIconContainer","itemLabel","itemCheckbox","itemLabelInput"]);const zD=Object.freeze([]),ND=Object.freeze({}),_D=e.createContext(null),FD=()=>{const t=e.useContext(_D);if(null==t)throw new Error(["MUI X: Could not find the Tree View context.","It looks like you rendered your component outside of a SimpleTreeView or RichTreeView parent component.","This can also happen if you are bundling multiple versions of the Tree View."].join("\n"));return t},HD=e.createContext({classes:{},slots:{},slotProps:{}}),BD=()=>e.useContext(HD);function VD(t){const{store:n,apiRef:r,rootRef:i,classes:o=ND,slots:a=ND,slotProps:s=ND,children:l}=t,c=(t=>{const{store:n,apiRef:r,rootRef:i}=t,o=aD(()=>n.buildPublicAPI()).current;!function(e,t){null!=t&&null==t.current&&(t.current=e)}(o,r);const a=e.useCallback(e=>{let t=null,r=null;const i=[],o={};n.itemPluginManager.listPlugins().forEach(n=>{const a=n({props:e,rootRef:t,contentRef:r});a?.rootRef&&(t=a.rootRef),a?.contentRef&&(r=a.contentRef),a?.propsEnhancers&&(i.push(a.propsEnhancers),Object.keys(a.propsEnhancers).forEach(e=>{o[e]=!0}))});const a=Object.fromEntries(Object.keys(o).map(e=>{return[e,(t=e,e=>{const n={};return i.forEach(r=>{const i=r[t];null!=i&&Object.assign(n,i(e))}),n})];var t}));return{contentRef:r,rootRef:t,propsEnhancers:a}},[n]),s=e.useCallback(({itemId:e,children:t,idAttribute:r})=>{let i=t;const o=n.itemPluginManager.listWrappers();for(let t=o.length-1;t>=0;t-=1)i=(0,o[t])({store:n,itemId:e,children:i,idAttribute:r});return i},[n]);return e.useMemo(()=>({runItemPlugins:a,wrapItem:s,publicAPI:o,store:n,rootRef:i}),[a,s,o,n,i])})({store:n,apiRef:r,rootRef:i}),u=e.useMemo(()=>({classes:o,slots:{collapseIcon:a.collapseIcon,expandIcon:a.expandIcon,endIcon:a.endIcon},slotProps:{collapseIcon:s.collapseIcon,expandIcon:s.expandIcon,endIcon:s.endIcon}}),[o,a.collapseIcon,a.expandIcon,a.endIcon,s.collapseIcon,s.expandIcon,s.endIcon]);return(0,O.jsx)(_D.Provider,{value:c,children:(0,O.jsx)(HD.Provider,{value:u,children:l})})}const UD=Object.is;function YD(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;let n=0,r=0;for(const r in e){if(n+=1,!UD(e[r],t[r]))return!1;if(!(r in t))return!1}for(const e in t)r+=1;return n===r}function WD(e){return Ig("MuiCollapse",e)}wg("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);const GD=bm("div",{name:"MuiCollapse",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.orientation],"entered"===n.state&&t.entered,"exited"===n.state&&!n.in&&"0px"===n.collapsedSize&&t.hidden]}})(wm(({theme:e})=>({height:0,overflow:"hidden",transition:e.transitions.create("height"),variants:[{props:{orientation:"horizontal"},style:{height:"auto",width:0,transition:e.transitions.create("width")}},{props:{state:"entered"},style:{height:"auto",overflow:"visible"}},{props:{state:"entered",orientation:"horizontal"},style:{width:"auto"}},{props:({ownerState:e})=>"exited"===e.state&&!e.in&&"0px"===e.collapsedSize,style:{visibility:"hidden"}}]}))),KD=bm("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:(e,t)=>t.wrapper})({display:"flex",width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),qD=bm("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:(e,t)=>t.wrapperInner})({width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),XD=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiCollapse"}),{addEndListener:i,children:o,className:a,collapsedSize:s="0px",component:l,easing:c,in:u,onEnter:d,onEntered:p,onEntering:h,onExit:m,onExited:f,onExiting:g,orientation:y="vertical",style:v,timeout:b=ch.standard,TransitionComponent:x=_m,...I}=r,w={...r,orientation:y,collapsedSize:s},k=(e=>{const{orientation:t,classes:n}=e;return Gh({root:["root",`${t}`],entered:["entered"],hidden:["hidden"],wrapper:["wrapper",`${t}`],wrapperInner:["wrapperInner",`${t}`]},WD,n)})(w),S=xm(),M=Wh(),C=e.useRef(null),P=e.useRef(),E="number"==typeof s?`${s}px`:s,T="horizontal"===y,A=T?"width":"height",j=e.useRef(null),L=Vm(n,j),R=e=>t=>{if(e){const n=j.current;void 0===t?e(n):e(n,t)}},D=()=>C.current?C.current[T?"clientWidth":"clientHeight"]:0,$=R((e,t)=>{C.current&&T&&(C.current.style.position="absolute"),e.style[A]=E,d&&d(e,t)}),z=R((e,t)=>{const n=D();C.current&&T&&(C.current.style.position="");const{duration:r,easing:i}=Hm({style:v,timeout:b,easing:c},{mode:"enter"});if("auto"===b){const t=S.transitions.getAutoHeightDuration(n);e.style.transitionDuration=`${t}ms`,P.current=t}else e.style.transitionDuration="string"==typeof r?r:`${r}ms`;e.style[A]=`${n}px`,e.style.transitionTimingFunction=i,h&&h(e,t)}),N=R((e,t)=>{e.style[A]="auto",p&&p(e,t)}),_=R(e=>{e.style[A]=`${D()}px`,m&&m(e)}),F=R(f),H=R(e=>{const t=D(),{duration:n,easing:r}=Hm({style:v,timeout:b,easing:c},{mode:"exit"});if("auto"===b){const n=S.transitions.getAutoHeightDuration(t);e.style.transitionDuration=`${n}ms`,P.current=n}else e.style.transitionDuration="string"==typeof n?n:`${n}ms`;e.style[A]=E,e.style.transitionTimingFunction=r,g&&g(e)});return(0,O.jsx)(x,{in:u,onEnter:$,onEntered:N,onEntering:z,onExit:_,onExited:F,onExiting:H,addEndListener:e=>{"auto"===b&&M.start(P.current||0,e),i&&i(j.current,e)},nodeRef:j,timeout:"auto"===b?null:b,...I,children:(e,{ownerState:t,...n})=>(0,O.jsx)(GD,{as:l,className:Hh(k.root,a,{entered:k.entered,exited:!u&&"0px"===E&&k.hidden}[e]),style:{[T?"minWidth":"minHeight"]:E,...v},ref:L,ownerState:{...w,state:e},...n,children:(0,O.jsx)(KD,{ownerState:{...w,state:e},className:k.wrapper,ref:C,children:(0,O.jsx)(qD,{ownerState:{...w,state:e},className:k.wrapperInner,children:o})})})})});XD&&(XD.muiSupportAuto=!0);const ZD=XD,JD=e.createContext(void 0);function QD(e){return Ig("PrivateSwitchBase",e)}wg("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);const e$=bm(Yy,{name:"MuiSwitchBase"})({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:e,ownerState:t})=>"start"===e&&"small"!==t.size,style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:e,ownerState:t})=>"end"===e&&"small"!==t.size,style:{marginRight:-12}}]}),t$=bm("input",{name:"MuiSwitchBase",shouldForwardProp:ym})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),n$=e.forwardRef(function(t,n){const{autoFocus:r,checked:i,checkedIcon:o,defaultChecked:a,disabled:s,disableFocusRipple:l=!1,edge:c=!1,icon:u,id:d,inputProps:p,inputRef:h,name:m,onBlur:f,onChange:g,onFocus:y,readOnly:v,required:b=!1,tabIndex:x,type:I,value:w,slots:k={},slotProps:S={},...M}=t,[C,P]=zg({controlled:i,default:Boolean(a),name:"SwitchBase",state:"checked"}),E=e.useContext(JD);let T=s;E&&void 0===T&&(T=E.disabled);const A="checkbox"===I||"radio"===I,j={...t,checked:C,disabled:T,disableFocusRipple:l,edge:c},L=(e=>{const{classes:t,checked:n,disabled:r,edge:i}=e;return Gh({root:["root",n&&"checked",r&&"disabled",i&&`edge${Cm(i)}`],input:["input"]},QD,t)})(j),R={slots:k,slotProps:{input:p,...S}},[D,$]=Ng("root",{ref:n,elementType:e$,className:L.root,shouldForwardComponentProp:!0,externalForwardedProps:{...R,component:"span",...M},getSlotProps:e=>({...e,onFocus:t=>{e.onFocus?.(t),(e=>{y&&y(e),E&&E.onFocus&&E.onFocus(e)})(t)},onBlur:t=>{e.onBlur?.(t),(e=>{f&&f(e),E&&E.onBlur&&E.onBlur(e)})(t)}}),ownerState:j,additionalProps:{centerRipple:!0,focusRipple:!l,disabled:T,role:void 0,tabIndex:null}}),[z,N]=Ng("input",{ref:h,elementType:t$,className:L.input,externalForwardedProps:R,getSlotProps:e=>({onChange:t=>{e.onChange?.(t),(e=>{if(e.nativeEvent.defaultPrevented)return;const t=e.target.checked;P(t),g&&g(e,t)})(t)}}),ownerState:j,additionalProps:{autoFocus:r,checked:i,defaultChecked:a,disabled:T,id:A?d:void 0,name:m,readOnly:v,required:b,tabIndex:x,type:I,..."checkbox"===I&&void 0===w?{}:{value:w}}});return(0,O.jsxs)(D,{...$,children:[(0,O.jsx)(z,{...N}),C?o:u]})}),r$=n$,i$=ob((0,O.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"}),"CheckBoxOutlineBlank"),o$=ob((0,O.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"}),"CheckBox"),a$=ob((0,O.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"}),"IndeterminateCheckBox");function s$(e){return Ig("MuiCheckbox",e)}const l$=wg("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]);function c$(e,t){if(!e)return t;if("function"==typeof e||"function"==typeof t)return n=>{const r="function"==typeof t?t(n):t,i="function"==typeof e?e({...n,...r}):e,o=Hh(n?.className,r?.className,i?.className);return{...r,...i,...!!o&&{className:o},...r?.style&&i?.style&&{style:{...r.style,...i.style}},...r?.sx&&i?.sx&&{sx:[...Array.isArray(r.sx)?r.sx:[r.sx],...Array.isArray(i.sx)?i.sx:[i.sx]]}}};const n=t,r=Hh(n?.className,e?.className);return{...t,...e,...!!r&&{className:r},...n?.style&&e?.style&&{style:{...n.style,...e.style}},...n?.sx&&e?.sx&&{sx:[...Array.isArray(n.sx)?n.sx:[n.sx],...Array.isArray(e.sx)?e.sx:[e.sx]]}}}const u$=bm(r$,{shouldForwardProp:e=>ym(e)||"classes"===e,name:"MuiCheckbox",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${Cm(n.size)}`],"default"!==n.color&&t[`color${Cm(n.color)}`]]}})(wm(({theme:e})=>({color:(e.vars||e).palette.text.secondary,variants:[{props:{color:"default",disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette.action.active,e.palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette[t].main,e.palette.action.hoverOpacity)}}})),...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{[`&.${l$.checked}, &.${l$.indeterminate}`]:{color:(e.vars||e).palette[t].main},[`&.${l$.disabled}`]:{color:(e.vars||e).palette.action.disabled}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]}))),d$=(0,O.jsx)(o$,{}),p$=(0,O.jsx)(i$,{}),h$=(0,O.jsx)(a$,{}),m$=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiCheckbox"}),{checkedIcon:i=d$,color:o="primary",icon:a=p$,indeterminate:s=!1,indeterminateIcon:l=h$,inputProps:c,size:u="medium",disableRipple:d=!1,className:p,slots:h={},slotProps:m={},...f}=r,g=s?l:a,y=s?l:i,v={...r,disableRipple:d,color:o,indeterminate:s,size:u},b=(e=>{const{classes:t,indeterminate:n,color:r,size:i}=e,o=Gh({root:["root",n&&"indeterminate",`color${Cm(r)}`,`size${Cm(i)}`]},s$,t);return{...t,...o}})(v),x=m.input??c,[I,w]=Ng("root",{ref:n,elementType:u$,className:Hh(b.root,p),shouldForwardComponentProp:!0,externalForwardedProps:{slots:h,slotProps:m,...f},ownerState:v,additionalProps:{type:"checkbox",icon:e.cloneElement(g,{fontSize:g.props.fontSize??u}),checkedIcon:e.cloneElement(y,{fontSize:y.props.fontSize??u}),disableRipple:d,slots:h,slotProps:{input:c$("function"==typeof x?x(v):x,{"data-indeterminate":s})}}});return(0,O.jsx)(I,{...w,classes:b})}),f$=m$,g$=ne({memoize:J,memoizeOptions:{maxSize:1,equalityCheck:Object.is}}),y$=(e,t,n,r,i,o,a,s,...l)=>{if(l.length>0)throw new Error("Unsupported number of selectors");let c;if(e&&t&&n&&r&&i&&o&&a&&s)c=(l,c,u,d)=>{const p=e(l,c,u,d),h=t(l,c,u,d),m=n(l,c,u,d),f=r(l,c,u,d),g=i(l,c,u,d),y=o(l,c,u,d),v=a(l,c,u,d);return s(p,h,m,f,g,y,v,c,u,d)};else if(e&&t&&n&&r&&i&&o&&a)c=(s,l,c,u)=>{const d=e(s,l,c,u),p=t(s,l,c,u),h=n(s,l,c,u),m=r(s,l,c,u),f=i(s,l,c,u),g=o(s,l,c,u);return a(d,p,h,m,f,g,l,c,u)};else if(e&&t&&n&&r&&i&&o)c=(a,s,l,c)=>{const u=e(a,s,l,c),d=t(a,s,l,c),p=n(a,s,l,c),h=r(a,s,l,c),m=i(a,s,l,c);return o(u,d,p,h,m,s,l,c)};else if(e&&t&&n&&r&&i)c=(o,a,s,l)=>{const c=e(o,a,s,l),u=t(o,a,s,l),d=n(o,a,s,l),p=r(o,a,s,l);return i(c,u,d,p,a,s,l)};else if(e&&t&&n&&r)c=(i,o,a,s)=>{const l=e(i,o,a,s),c=t(i,o,a,s),u=n(i,o,a,s);return r(l,c,u,o,a,s)};else if(e&&t&&n)c=(r,i,o,a)=>{const s=e(r,i,o,a),l=t(r,i,o,a);return n(s,l,i,o,a)};else if(e&&t)c=(n,r,i,o)=>{const a=e(n,r,i,o);return t(a,r,i,o)};else{if(!e)throw new Error("Missing arguments");c=e}return c},v$=(...e)=>{const t=new WeakMap;let n=1;const r=e[e.length-1],i=e.length-1||1,o=Math.max(r.length-i,0);if(o>3)throw new Error("Unsupported number of arguments");return(i,a,s,l)=>{let c=i.__cacheKey__;c||(c={id:n},i.__cacheKey__=c,n+=1);let u=t.get(c);if(!u){const n=1===e.length?[e=>e,r]:e;let i=e;const a=[void 0,void 0,void 0];switch(o){case 0:break;case 1:i=[...n.slice(0,-1),()=>a[0],r];break;case 2:i=[...n.slice(0,-1),()=>a[0],()=>a[1],r];break;case 3:i=[...n.slice(0,-1),()=>a[0],()=>a[1],()=>a[2],r];break;default:throw new Error("Unsupported number of arguments")}u=g$(...i),u.selectorArgs=a,t.set(c,u)}switch(o){case 3:u.selectorArgs[2]=l;case 2:u.selectorArgs[1]=s;case 1:u.selectorArgs[0]=a}switch(o){case 0:return u(i);case 1:return u(i,a);case 2:return u(i,a,s);case 3:return u(i,a,s,l);default:throw new Error("unreachable")}}},b$="__TREE_VIEW_ROOT_PARENT_ID__",x$=e=>{const t={};return e.forEach((e,n)=>{t[e]=n}),t},I$=(e,t)=>{if(null==t)return!1;let n=e[t];if(!n)return!1;if(n.disabled)return!0;for(;null!=n.parentId;){if(n=e[n.parentId],!n)return!1;if(n.disabled)return!0}return!1};function w$(e){const{storeParameters:t,items:n,parentId:r,depth:i,isItemExpandable:o,otherItemsMetaLookup:a}=e,s={},l={},c=[],u=[],d=e=>{const n=t.getItemId?t.getItemId(e):e.id;!function({id:e,parentId:t,item:n,itemMetaLookup:r,siblingsMetaLookup:i}){if(null==e)throw new Error(["MUI X: The Tree View component requires all items to have a unique `id` property.","Alternatively, you can use the `getItemId` prop to specify a custom id for each item.","An item was provided without id in the `items` prop:",JSON.stringify(n)].join("\n"));if(null!=i[e]||null!=r[e]&&r[e].parentId!==t)throw new Error(["MUI X: The Tree View component requires all items to have a unique `id` property.","Alternatively, you can use the `getItemId` prop to specify a custom id for each item.",`Two items were provided with the same id in the \`items\` prop: "${e}"`].join("\n"))}({id:n,parentId:r,item:e,itemMetaLookup:a,siblingsMetaLookup:s});const d=t.getItemLabel?t.getItemLabel(e):e.label;if(null==d)throw new Error(["MUI X: The Tree View component requires all items to have a `label` property.","Alternatively, you can use the `getItemLabel` prop to specify a custom label for each item.","An item was provided without label in the `items` prop:",JSON.stringify(e)].join("\n"));const p=(t.getItemChildren?t.getItemChildren(e):e.children)||[];u.push({id:n,children:p}),l[n]=e,s[n]={id:n,label:d,parentId:r,idAttribute:void 0,expandable:o(e,p),disabled:!!t.isItemDisabled&&t.isItemDisabled(e),selectable:!t.isItemSelectionDisabled||!t.isItemSelectionDisabled(e),depth:i},c.push(n)};for(const e of n)d(e);return{metaLookup:s,modelLookup:l,orderedChildrenIds:c,childrenIndexes:x$(c),itemsChildren:u}}const k$=[],S$={domStructure:y$(e=>e.domStructure),disabledItemFocusable:y$(e=>e.disabledItemsFocusable),itemMetaLookup:y$(e=>e.itemMetaLookup),itemOrderedChildrenIdsLookup:y$(e=>e.itemOrderedChildrenIdsLookup),itemMeta:y$((e,t)=>e.itemMetaLookup[t??b$]??null),itemOrderedChildrenIds:y$((e,t)=>e.itemOrderedChildrenIdsLookup[t??b$]??k$),itemModel:y$((e,t)=>e.itemModelLookup[t]),isItemDisabled:y$((e,t)=>I$(e.itemMetaLookup,t)),itemIndex:y$((e,t)=>{const n=e.itemMetaLookup[t];return null==n?-1:e.itemChildrenIndexesLookup[n.parentId??b$][n.id]}),itemParentId:y$((e,t)=>e.itemMetaLookup[t]?.parentId??null),itemDepth:y$((e,t)=>e.itemMetaLookup[t]?.depth??0),canItemBeFocused:y$((e,t)=>e.disabledItemsFocusable||null!=e.itemModelLookup[t]&&!I$(e.itemMetaLookup,t)),itemChildrenIndentation:y$(e=>e.itemChildrenIndentation)},M$=v$(e=>e.expandedItems,e=>{const t=new Map;return e.forEach(e=>{t.set(e,!0)}),t}),C$={expandedItemsRaw:y$(e=>e.expandedItems),expandedItemsMap:M$,flatList:v$(S$.itemOrderedChildrenIdsLookup,M$,(e,t)=>(e[b$]??[]).flatMap(function n(r){if(!t.has(r))return[r];const i=[r],o=e[r]||[];for(const e of o)i.push(...n(e));return i})),triggerSlot:y$(e=>e.expansionTrigger),isItemExpanded:y$(M$,(e,t)=>e.has(t)),isItemExpandable:y$(S$.itemMeta,(e,t)=>e?.expandable??!1)},P$=v$(e=>e.selectedItems,e=>Array.isArray(e)?e:null!=e?[e]:[]),E$=v$(P$,e=>{const t=new Map;return e.forEach(e=>{t.set(e,!0)}),t}),T$=y$((e,t)=>e.itemMetaLookup[t]?.selectable??!0),A$={selectedItemsRaw:y$(e=>e.selectedItems),selectedItems:P$,selectedItemsMap:E$,enabled:y$(e=>!e.disableSelection),isMultiSelectEnabled:y$(e=>e.multiSelect),isCheckboxSelectionEnabled:y$(e=>e.checkboxSelection),propagationRules:y$(e=>e.selectionPropagation),isItemSelected:y$(E$,(e,t)=>e.has(t)),isFeatureEnabledForItem:y$(T$,e=>!e.disableSelection,(e,t,n)=>t&&e),canItemBeSelected:y$(S$.isItemDisabled,T$,e=>!e.disableSelection,(e,t,n,r)=>n&&!e&&t),isItemSelectable:T$},O$=v$(A$.selectedItems,C$.expandedItemsMap,S$.itemMetaLookup,S$.disabledItemFocusable,e=>S$.itemOrderedChildrenIds(e,null),(e,t,n,r,i)=>{const o=e.find(e=>{if(!r&&I$(n,e))return!1;const i=n[e];return i&&(null==i.parentId||t.has(i.parentId))});if(null!=o)return o;const a=i.find(e=>r||!I$(n,e));return null!=a?a:null}),j$={defaultFocusableItemId:O$,isItemTheDefaultFocusableItem:y$(O$,(e,t)=>e===t),focusedItemId:y$(e=>e.focusedItemId),isItemFocused:y$((e,t)=>e.focusedItemId===t)},L$={isEmpty:y$(e=>null==e.lazyLoadedItems||0===Object.keys(e.lazyLoadedItems.loading).length&&0===Object.keys(e.lazyLoadedItems.errors).length),isItemLoading:y$((e,t)=>e.lazyLoadedItems?.loading[t??b$]??!1),itemHasError:y$((e,t)=>!!e.lazyLoadedItems?.errors[t??b$]),itemError:y$((e,t)=>e.lazyLoadedItems?.errors[t??b$])},R$={isItemEditable:y$(e=>e.isItemEditable,S$.itemModel,(e,t,n)=>!(!t||null==e)&&("boolean"==typeof e?e:e(t))),isItemBeingEdited:y$((e,t)=>null!=t&&e.editedItemId===t),isAnyItemBeingEdited:y$(e=>!!e.editedItemId)},D$=e=>Array.isArray(e)?e.length>0&&e.some(D$):Boolean(e),$$=e.createContext(()=>-1),z$=(e,t)=>{let n=t.length-1;for(;n>=0&&!S$.canItemBeFocused(e,t[n]);)n-=1;if(-1!==n)return t[n]},N$=(e,t)=>{const n=S$.itemMeta(e,t);if(!n)return null;const r=S$.itemOrderedChildrenIds(e,n.parentId),i=S$.itemIndex(e,t);if(0===i)return n.parentId;let o=i-1;for(;!S$.canItemBeFocused(e,r[o])&&o>=0;)o-=1;if(-1===o)return null==n.parentId?null:N$(e,n.parentId);let a=r[o],s=z$(e,S$.itemOrderedChildrenIds(e,a));for(;C$.isItemExpanded(e,a)&&null!=s;)a=s,s=z$(e,S$.itemOrderedChildrenIds(e,a));return a},_$=(e,t)=>{if(C$.isItemExpanded(e,t)){const n=S$.itemOrderedChildrenIds(e,t).find(t=>S$.canItemBeFocused(e,t));if(null!=n)return n}let n=S$.itemMeta(e,t);for(;null!=n;){const t=S$.itemOrderedChildrenIds(e,n.parentId),r=S$.itemIndex(e,n.id);if(r{let t=null;for(;null==t||C$.isItemExpanded(e,t);){const n=S$.itemOrderedChildrenIds(e,t),r=z$(e,n);if(null==r)return t;t=r}return t},H$=e=>S$.itemOrderedChildrenIds(e,null).find(t=>S$.canItemBeFocused(e,t)),B$=(e,t,n)=>{if(t===n)return[t,n];const r=S$.itemMeta(e,t),i=S$.itemMeta(e,n);if(!r||!i)return[t,n];if(r.parentId===i.id||i.parentId===r.id)return i.parentId===r.id?[r.id,i.id]:[i.id,r.id];const o=[r.id],a=[i.id];let s=r.parentId,l=i.parentId,c=-1!==a.indexOf(s),u=-1!==o.indexOf(l),d=!0,p=!0;for(;!u&&!c;)d&&(o.push(s),c=-1!==a.indexOf(s),d=null!==s,!c&&d&&(s=S$.itemParentId(e,s))),p&&!c&&(a.push(l),u=-1!==o.indexOf(l),p=null!==l,!u&&p&&(l=S$.itemParentId(e,l)));const h=c?s:l,m=S$.itemOrderedChildrenIds(e,h),f=o[o.indexOf(h)-1],g=a[a.indexOf(h)-1];return m.indexOf(f)t!==e.closest('*[role="treeitem"]'),U$=y$(e=>e.providedTreeId??e.treeId),Y$={treeId:U$,treeItemIdAttribute:y$(U$,(e,t,n)=>null!=n?n:`${e??""}-${t}`)},W$=(e,t,n)=>"function"==typeof n?n(e,t):n;function G$(e){return LD("MuiTreeItem",e)}RD("MuiTreeItem",["root","content","groupTransition","iconContainer","label","checkbox","labelInput","dragAndDropOverlay","errorIcon","loadingIcon","expanded","selected","focused","disabled","editable","editing"]);const K$=ob((0,O.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"TreeViewExpandIcon"),q$=ob((0,O.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"TreeViewCollapseIcon"),X$=["ownerState"];function Z$(e,t,n){return void 0!==e?e:void 0!==t?t:n}function J$(e){const{slots:t,slotProps:n,status:r}=e,{slots:i,slotProps:o}=BD(),a={collapseIcon:Z$(t?.collapseIcon,i.collapseIcon,q$),expandIcon:Z$(t?.expandIcon,i.expandIcon,K$),endIcon:Z$(t?.endIcon,i.endIcon),icon:t?.icon};let s;s=a?.icon?"icon":r.expandable?r.expanded?"collapseIcon":"expandIcon":"endIcon";const c=a[s],u=tt(TD({elementType:c,externalSlotProps:e=>l({},ED(o[s],e),ED(n?.[s],e)),ownerState:{}}),X$);return c?(0,O.jsx)(c,l({},u)):null}const Q$=bm("div",{name:"MuiTreeItemDragAndDropOverlay",slot:"Root",shouldForwardProp:e=>QE(e)&&"action"!==e})(({theme:e})=>({position:"absolute",left:0,display:"flex",top:0,bottom:0,right:0,pointerEvents:"none",variants:[{props:{action:"make-child"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))",borderRadius:e.shape.borderRadius,backgroundColor:e.vars?`rgba(${e.vars.palette.primary.darkChannel} / ${e.vars.palette.action.focusOpacity})`:op(e.palette.primary.dark,e.palette.action.focusOpacity)}},{props:{action:"reorder-above"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))",borderTop:`1px solid ${(e.vars||e).palette.action.active}`}},{props:{action:"reorder-below"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))",borderBottom:`1px solid ${(e.vars||e).palette.action.active}`}},{props:{action:"move-to-parent"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * calc(var(--TreeView-itemDepth) - 1))",borderBottom:`1px solid ${(e.vars||e).palette.action.active}`}}]}));function ez(e){return null==e.action?null:(0,O.jsx)(Q$,l({},e))}function tz(t){const{children:n,itemId:r,id:i}=t,{wrapItem:o,store:a}=FD(),s=uD(a,Y$.treeItemIdAttribute,r,i);return(0,O.jsx)(e.Fragment,{children:o({children:n,itemId:r,store:a,idAttribute:s})})}const nz=bm("input",{name:"MuiTreeItem",slot:"LabelInput"})(({theme:e})=>l({},e.typography.body1,{width:"100%",backgroundColor:(e.vars||e).palette.background.paper,borderRadius:e.shape.borderRadius,border:"none",padding:"0 2px",boxSizing:"border-box","&:focus":{outline:`1px solid ${(e.vars||e).palette.primary.main}`}})),rz=["visible"],iz=["id","itemId","label","disabled","disableSelection","children","slots","slotProps","classes"],oz=$D(),az=bm("li",{name:"MuiTreeItem",slot:"Root"})({listStyle:"none",margin:0,padding:0,outline:0}),sz=bm("div",{name:"MuiTreeItem",slot:"Content",shouldForwardProp:e=>QE(e)&&"status"!==e})(({theme:e})=>({padding:e.spacing(.5,1),paddingLeft:`calc(${e.spacing(1)} + var(--TreeView-itemChildrenIndentation) * var(--TreeView-itemDepth))`,borderRadius:e.shape.borderRadius,width:"100%",boxSizing:"border-box",position:"relative",display:"flex",alignItems:"center",gap:e.spacing(1),cursor:"pointer",WebkitTapHighlightColor:"transparent","&:hover":{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},"&[data-disabled]":{opacity:(e.vars||e).palette.action.disabledOpacity,backgroundColor:"transparent",cursor:"auto"},"&[data-focused]":{backgroundColor:(e.vars||e).palette.action.focus},"&[data-selected]":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:op(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:op(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:op(e.palette.primary.main,e.palette.action.selectedOpacity)}}},"&[data-selected][data-focused]":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:op(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}})),lz=bm("div",{name:"MuiTreeItem",slot:"Label",shouldForwardProp:e=>QE(e)&&"editable"!==e})(({theme:e})=>l({width:"100%",boxSizing:"border-box",minWidth:0,position:"relative",overflow:"hidden"},e.typography.body1,{variants:[{props:({editable:e})=>e,style:{paddingLeft:"2px"}}]})),cz=bm("div",{name:"MuiTreeItem",slot:"IconContainer"})({width:16,display:"flex",flexShrink:0,justifyContent:"center",position:"relative",cursor:"inherit","& svg":{fontSize:18}}),uz=bm(ZD,{name:"MuiTreeItem",slot:"GroupTransition",overridesResolver:(e,t)=>t.groupTransition})({margin:0,padding:0}),dz=bm("div",{name:"MuiTreeItem",slot:"ErrorIcon"})({position:"absolute",right:-3,width:7,height:7,borderRadius:"50%",backgroundColor:"red"}),pz=bm(tv,{name:"MuiTreeItem",slot:"LoadingIcon"})({color:"text.primary"}),hz=bm(e.forwardRef((e,t)=>{const{visible:n}=e,r=tt(e,rz);return n?(0,O.jsx)(f$,l({},r,{ref:t})):null}),{name:"MuiTreeItem",slot:"Checkbox"})({padding:0}),mz=e.forwardRef(function(t,n){const r=oz({props:t,name:"MuiTreeItem"}),{id:i,itemId:o,label:a,disabled:s,disableSelection:c,children:u,slots:d={},slotProps:p={},classes:h}=r,m=tt(r,iz),{getContextProviderProps:f,getRootProps:g,getContentProps:y,getIconContainerProps:v,getCheckboxProps:b,getLabelProps:x,getGroupTransitionProps:I,getLabelInputProps:w,getDragAndDropOverlayProps:k,getErrorContainerProps:S,getLoadingContainerProps:M,status:C}=(t=>{const{runItemPlugins:n,publicAPI:r,store:i}=FD(),o=e.useContext($$),a=uD(i,W$,t.itemId,o),{id:s,itemId:c,label:u,children:d,rootRef:p}=t,{rootRef:h,contentRef:m,propsEnhancers:f}=n(t),{interactions:g,status:y}=(({itemId:e,children:t})=>{const{store:n,publicAPI:r}=FD(),i=uD(n,C$.isItemExpandable,e),o=uD(n,L$.isItemLoading,e),a=uD(n,L$.itemHasError,e),s=D$(t)||i,l=uD(n,C$.isItemExpanded,e),c=uD(n,j$.isItemFocused,e),u=uD(n,A$.isItemSelected,e),d=uD(n,S$.isItemDisabled,e),p=uD(n,R$.isItemBeingEdited,e),h=uD(n,R$.isItemEditable,e),m={expandable:s,expanded:l,focused:c,selected:u,disabled:d,editing:p,editable:h,loading:o,error:a},f=()=>{n.labelEditing&&(p?n.labelEditing.setEditedItem(null):n.labelEditing.setEditedItem(e))};return{interactions:{handleExpansion:t=>{if(m.disabled)return;m.focused||n.focus.focusItem(t,e);const r=A$.isMultiSelectEnabled(n.state)&&(t.shiftKey||t.ctrlKey||t.metaKey);!m.expandable||r&&C$.isItemExpanded(n.state,e)||n.expansion.setItemExpansion({event:t,itemId:e})},handleSelection:t=>{A$.canItemBeSelected(n.state,e)&&(m.focused||m.editing||n.focus.focusItem(t,e),A$.isMultiSelectEnabled(n.state)&&(t.shiftKey||t.ctrlKey||t.metaKey)?t.shiftKey?n.selection.expandSelectionRange(t,e):n.selection.setItemSelection({event:t,itemId:e,keepExistingSelection:!0}):n.selection.setItemSelection({event:t,itemId:e,shouldBeSelected:!0}))},handleCheckboxSelection:t=>{const r=t.nativeEvent.shiftKey,i=A$.isMultiSelectEnabled(n.state);i&&r?n.selection.expandSelectionRange(t,e):n.selection.setItemSelection({event:t,itemId:e,keepExistingSelection:i,shouldBeSelected:t.target.checked})},toggleItemEditing:f,handleSaveItemLabel:(t,r)=>{n.labelEditing&&R$.isItemBeingEdited(n.state,e)&&(n.labelEditing.updateItemLabel(e,r),f(),n.focus.focusItem(t,e))},handleCancelItemLabelEditing:t=>{n.labelEditing&&R$.isItemBeingEdited(n.state,e)&&(f(),n.focus.focusItem(t,e))}},status:m,publicAPI:r}})({itemId:c,children:d}),v=e.useRef(null),b=e.useRef(null),x=sD(p,h,v),I=sD(m,b),w=e.useRef(null),k=uD(i,A$.isCheckboxSelectionEnabled),S=uD(i,Y$.treeItemIdAttribute,c,s),M=uD(i,j$.isItemTheDefaultFocusableItem,c),C={rootRefObject:v,contentRefObject:b,interactions:g},P=e=>t=>{if(e.onBlur?.(t),t.defaultMuiPrevented)return;const n=i.items.getItemDOMElement(c);y.editing||t.relatedTarget&&V$(t.relatedTarget,n)&&(t.target&&"labelInput"===t.target?.dataset?.element&&V$(t.target,n)||"labelInput"===t.relatedTarget?.dataset?.element)||i.focus.removeFocusedItem()},E=e=>t=>{e.onKeyDown?.(t),t.defaultMuiPrevented||"labelInput"===t.target?.dataset?.element||i.keyboardNavigation.handleItemKeyDown(t,c)},T=e=>t=>{e.onMouseDown?.(t),t.defaultMuiPrevented||(t.shiftKey||t.ctrlKey||t.metaKey||y.disabled)&&t.preventDefault()};return{getContextProviderProps:()=>({itemId:c,id:s}),getRootProps:(e={})=>{const n=l({},CD(t),CD(e)),r=l({},n,{ref:x,role:"treeitem",tabIndex:M?0:-1,id:S,"aria-expanded":y.expandable?y.expanded:void 0,"aria-disabled":y.disabled||void 0},e,{style:l({},e.style??{},{"--TreeView-itemDepth":a}),onFocus:(o=n,e=>{o.onFocus?.(e),e.defaultMuiPrevented||!y.focused&&S$.canItemBeFocused(i.state,c)&&e.currentTarget===e.target&&i.focus.focusItem(e,c)}),onBlur:P(n),onKeyDown:E(n)});var o;const s=f.root?.(l({},C,{externalEventHandlers:n}))??{};return l({},r,s)},getContentProps:(e={})=>{const t=CD(e),n=l({},t,e,{ref:I,onClick:(r=t,e=>{r.onClick?.(e),i.items.handleItemClick(e,c),e.defaultMuiPrevented||w.current?.contains(e.target)||("content"===C$.triggerSlot(i.state)&&g.handleExpansion(e),k||g.handleSelection(e))}),onMouseDown:T(t),status:y});var r;["expanded","selected","focused","disabled","editing","editable"].forEach(e=>{y[e]&&(n[`data-${e}`]="")});const o=f.content?.(l({},C,{externalEventHandlers:t}))??{};return l({},n,o)},getGroupTransitionProps:(e={})=>l({},CD(e),{unmountOnExit:!0,component:"ul",role:"group",in:y.expanded,children:d},e),getIconContainerProps:(e={})=>{const t=CD(e);return l({},t,e,{onClick:(n=t,e=>{n.onClick?.(e),e.defaultMuiPrevented||"iconContainer"===C$.triggerSlot(i.state)&&g.handleExpansion(e)})});var n},getCheckboxProps:(e={})=>{const t=CD(e),n=l({},t,{ref:w,"aria-hidden":!0},e),r=f.checkbox?.(l({},C,{externalEventHandlers:t}))??{};return l({},n,r)},getLabelProps:(e={})=>{const t=l({},CD(e)),n=l({},t,{children:u},e,{onDoubleClick:(r=t,e=>{r.onDoubleClick?.(e),e.defaultMuiPrevented||g.toggleItemEditing()})});var r;const i=f.label?.(l({},C,{externalEventHandlers:t}))??{};return l({},i,n)},getLabelInputProps:(e={})=>{const t=CD(e),n=f.labelInput?.(l({},C,{externalEventHandlers:t}))??{};return l({},e,n)},getDragAndDropOverlayProps:(e={})=>{const t=CD(e),n=f.dragAndDropOverlay?.(l({},C,{externalEventHandlers:t}))??{};return l({},e,n)},getErrorContainerProps:(e={})=>l({},CD(e),e),getLoadingContainerProps:(e={})=>l({size:"12px",thickness:6},CD(e),e),rootRef:x,status:y,publicAPI:r}})({id:i,itemId:o,children:u,label:a,disabled:s,disableSelection:c}),P=(e=>{const{classes:t}=BD();return MD({root:["root"],content:["content"],iconContainer:["iconContainer"],checkbox:["checkbox"],label:["label"],groupTransition:["groupTransition"],labelInput:["labelInput"],dragAndDropOverlay:["dragAndDropOverlay"],errorIcon:["errorIcon"],loadingIcon:["loadingIcon"],expanded:["expanded"],editing:["editing"],editable:["editable"],selected:["selected"],focused:["focused"],disabled:["disabled"]},G$,l({},e,{root:Hh(e?.root,t.root),content:Hh(e?.content,t.itemContent),iconContainer:Hh(e?.iconContainer,t.itemIconContainer),checkbox:Hh(e?.checkbox,t.itemCheckbox),label:Hh(e?.label,t.itemLabel),groupTransition:Hh(e?.groupTransition,t.itemGroupTransition),labelInput:Hh(e?.labelInput,t.itemLabelInput),dragAndDropOverlay:Hh(e?.dragAndDropOverlay,t.itemDragAndDropOverlay),errorIcon:Hh(e?.errorIcon,t.itemErrorIcon),loadingIcon:Hh(e?.loadingIcon,t.itemLoadingIcon)}))})(h),E=d.root??az,T=TD({elementType:E,getSlotProps:g,externalForwardedProps:m,externalSlotProps:p.root,additionalProps:{ref:n},ownerState:{},className:P.root}),A=d.content??sz,j=TD({elementType:A,getSlotProps:y,externalSlotProps:p.content,ownerState:{},className:Hh(P.content,C.expanded&&P.expanded,C.selected&&P.selected,C.focused&&P.focused,C.disabled&&P.disabled,C.editing&&P.editing,C.editable&&P.editable)}),L=d.iconContainer??cz,R=TD({elementType:L,getSlotProps:v,externalSlotProps:p.iconContainer,ownerState:{},className:P.iconContainer}),D=d.label??lz,$=TD({elementType:D,getSlotProps:x,externalSlotProps:p.label,ownerState:{},className:P.label}),z=d.checkbox??hz,N=TD({elementType:z,getSlotProps:b,externalSlotProps:p.checkbox,ownerState:{},className:P.checkbox}),_=d.groupTransition??void 0,F=TD({elementType:_,getSlotProps:I,externalSlotProps:p.groupTransition,ownerState:{},className:P.groupTransition}),H=d.labelInput??nz,B=TD({elementType:H,getSlotProps:w,externalSlotProps:p.labelInput,ownerState:{},className:P.labelInput}),V=d.dragAndDropOverlay??ez,U=TD({elementType:V,getSlotProps:k,externalSlotProps:p.dragAndDropOverlay,ownerState:{},className:P.dragAndDropOverlay}),Y=d.errorIcon??dz,W=TD({elementType:Y,getSlotProps:S,externalSlotProps:p.errorIcon,ownerState:{},className:P.errorIcon}),G=d.loadingIcon??pz,K=TD({elementType:G,getSlotProps:M,externalSlotProps:p.loadingIcon,ownerState:{},className:P.loadingIcon});return(0,O.jsx)(tz,l({},f(),{children:(0,O.jsxs)(E,l({},T,{children:[(0,O.jsxs)(A,l({},j,{children:[(0,O.jsxs)(L,l({},R,{children:[C.error&&(0,O.jsx)(Y,l({},W)),C.loading?(0,O.jsx)(G,l({},K)):(0,O.jsx)(J$,{status:C,slots:d,slotProps:p})]})),(0,O.jsx)(z,l({},N)),C.editing?(0,O.jsx)(H,l({},B)):(0,O.jsx)(D,l({},$)),(0,O.jsx)(V,l({},U))]})),u&&(0,O.jsx)(uz,l({as:_},F))]}))}))}),fz=["ownerState"],gz=e.createContext(null),yz=()=>zD,vz=e=>S$.itemOrderedChildrenIds(e,null),bz=e.memo(function({itemSlot:t,itemSlotProps:n,itemId:r,skipChildren:i}){const o=e.useContext(gz),{store:a}=FD(),s=uD(a,S$.itemMeta,r),c=uD(a,i?yz:S$.itemOrderedChildrenIds,r),u=t??mz,d=tt(TD({elementType:u,externalSlotProps:n,additionalProps:{label:s?.label,id:s?.idAttribute,itemId:r},ownerState:{itemId:r,label:s?.label}}),fz);return(0,O.jsx)(u,l({},d,{children:c?.map(o)}))},YD);function xz(t){const{slots:n,slotProps:r}=t,{store:i}=FD(),o=n?.item,a=r?.item,s=uD(i,S$.domStructure),l=uD(i,"flat"===s?C$.flatList:vz),c="flat"===s,u=e.useCallback(e=>(0,O.jsx)(bz,{itemSlot:o,itemSlotProps:a,itemId:e,skipChildren:c},e),[o,a,c]);return(0,O.jsx)(gz.Provider,{value:u,children:l.map(u)})}function Iz(e,t,n){const r=uD(e,Y$.treeId),i=uD(e,S$.itemChildrenIndentation),o=uD(e,A$.isMultiSelectEnabled);return a=>l({ref:n,role:"tree",id:r,"aria-multiselectable":o},t,a,{style:l({},t.style,{"--TreeView-itemChildrenIndentation":"number"==typeof i?`${i}px`:i}),onFocus:t=>{a.onFocus?.(t),e.focus.handleRootFocus(t)},onBlur:t=>{a.onBlur?.(t),e.focus.handleRootBlur(t)}})}const wz=["apiRef","slots","slotProps","disabledItemsFocusable","items","isItemDisabled","isItemSelectionDisabled","getItemLabel","getItemChildren","getItemId","onItemClick","itemChildrenIndentation","id","expandedItems","defaultExpandedItems","onExpandedItemsChange","onItemExpansionToggle","expansionTrigger","disableSelection","selectedItems","defaultSelectedItems","multiSelect","checkboxSelection","selectionPropagation","onSelectedItemsChange","onItemSelectionToggle","onItemFocus","onItemLabelChange","isItemEditable"],kz="undefined"!=typeof document?e.useLayoutEffect:()=>{},Sz=[];function Mz(t,n){const r=fS(),i=aD(()=>new t(l({},n,{isRtl:r}))).current;var o;return kz(()=>i.updateStateFromParameters(l({},n,{isRtl:r})),[i,r,n]),o=i.disposeEffect,e.useEffect(o,Sz),i}const Cz=({props:t})=>{const{store:n}=FD(),{label:r,itemId:i}=t,[o,a]=e.useState(r),s=uD(n,R$.isItemEditable,i),l=uD(n,R$.isItemBeingEdited,i);return e.useEffect(()=>{l||a(r)},[l,r]),{propsEnhancers:{label:()=>({editable:s}),labelInput:({externalEventHandlers:e,interactions:t})=>s?{value:o??"","data-element":"labelInput",onChange:t=>{e.onChange?.(t),a(t.target.value)},onKeyDown:n=>{if(e.onKeyDown?.(n),n.defaultMuiPrevented)return;const r=n.target;"Enter"===n.key&&r.value?t.handleSaveItemLabel(n,r.value):"Escape"===n.key&&t.handleCancelItemLabelEditing(n)},onBlur:n=>{e.onBlur?.(n),n.defaultMuiPrevented||n.target.value&&t.handleSaveItemLabel(n,n.target.value)},autoFocus:!0,type:"text"}:{}}}};class Pz{constructor(e){this.store=e,e.itemPluginManager.register(Cz,null)}buildPublicAPI=()=>({setEditedItem:this.setEditedItem,updateItemLabel:this.updateItemLabel});setEditedItem=e=>{(null===e||R$.isItemEditable(this.store.state,e))&&this.store.set("editedItemId",e)};updateItemLabel=(e,t)=>{if(!t)throw new Error(["MUI X: The Tree View component requires all items to have a `label` property.","The label of an item cannot be empty.",e].join("\n"));const n=this.store.state.itemMetaLookup[e];n.label!==t&&(this.store.set("itemMetaLookup",l({},this.store.state.itemMetaLookup,{[e]:l({},n,{label:t})})),this.store.parameters.onItemLabelChange&&this.store.parameters.onItemLabelChange(e,t))}}class Ez{static create(e){return new Ez(e)}constructor(e){this.state=e,this.listeners=new Set,this.updateTick=0}subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.state;setState(e){this.state=e,this.updateTick+=1;const t=this.updateTick,n=this.listeners.values();let r;for(;r=n.next(),!r.done;){if(t!==this.updateTick)return;(0,r.value)(e)}}update(e){for(const t in e)if(!Object.is(this.state[t],e[t]))return void this.setState(l({},this.state,e))}set(e,t){Object.is(this.state[e],t)||this.setState(l({},this.state,{[e]:t}))}use=(()=>(e,t,n,r)=>uD(this,e,t,n,r))()}class Tz{maxListeners=20;warnOnce=!1;events={};on(e,t,n={}){let r=this.events[e];r||(r={highPriority:new Map,regular:new Map},this.events[e]=r),n.isFirst?r.highPriority.set(t,!0):r.regular.set(t,!0)}removeListener(e,t){this.events[e]&&(this.events[e].regular.delete(t),this.events[e].highPriority.delete(t))}removeAllListeners(){this.events={}}emit(e,...t){const n=this.events[e];if(!n)return;const r=Array.from(n.highPriority.keys()),i=Array.from(n.regular.keys());for(let e=r.length-1;e>=0;e-=1){const i=r[e];n.highPriority.has(i)&&i.apply(this,t)}for(let e=0;et||(e?"iconContainer":"content");class Oz{constructor(e){this.store=e}static shouldRebuildItemsState=(e,t)=>["items","isItemDisabled","isItemSelectionDisabled","getItemId","getItemLabel","getItemChildren"].some(n=>{const r=n;return e[r]!==t[r]});static buildItemsStateIfNeeded=e=>{const t={},n={},r={},i={};return function o(a,s,l){const c=s??b$,{metaLookup:u,modelLookup:d,orderedChildrenIds:p,childrenIndexes:h,itemsChildren:m}=w$({storeParameters:e,items:a,parentId:s,depth:l,isItemExpandable:(e,t)=>!!t&&t.length>0,otherItemsMetaLookup:t});Object.assign(t,u),Object.assign(n,d),r[c]=p,i[c]=h;for(const e of m)o(e.children||[],e.id,l+1)}(e.items,null,0),{itemMetaLookup:t,itemModelLookup:n,itemOrderedChildrenIdsLookup:r,itemChildrenIndexesLookup:i}};getItem=e=>S$.itemModel(this.store.state,e);getItemTree=()=>{const e=t=>{const n=l({},S$.itemModel(this.store.state,t)),r=S$.itemOrderedChildrenIds(this.store.state,t);return r.length>0?n.children=r.map(e):delete n.children,n};return S$.itemOrderedChildrenIds(this.store.state,null).map(e)};getItemOrderedChildrenIds=e=>S$.itemOrderedChildrenIds(this.store.state,e);getParentId=e=>{const t=S$.itemMeta(this.store.state,e);return t?.parentId||null};setIsItemDisabled=({itemId:e,shouldBeDisabled:t})=>{if(!this.store.state.itemMetaLookup[e])return;const n=l({},this.store.state.itemMetaLookup);n[e]=l({},n[e],{disabled:t??!n[e].disabled}),this.store.set("itemMetaLookup",n)};buildPublicAPI=()=>({getItem:this.getItem,getItemDOMElement:this.getItemDOMElement,getItemOrderedChildrenIds:this.getItemOrderedChildrenIds,getItemTree:this.getItemTree,getParentId:this.getParentId,setIsItemDisabled:this.setIsItemDisabled});getItemDOMElement=e=>{const t=S$.itemMeta(this.store.state,e);if(null==t)return null;const n=Y$.treeItemIdAttribute(this.store.state,e,t.idAttribute);return document.getElementById(n)};setItemChildren=({items:e,parentId:t,getChildrenCount:n})=>{const r=t??b$,i=null==t?-1:S$.itemDepth(this.store.state,t),{metaLookup:o,modelLookup:a,orderedChildrenIds:s,childrenIndexes:c}=w$({storeParameters:this.store.parameters,items:e,parentId:t,depth:i+1,isItemExpandable:n?e=>0!==n(e):()=>!1,otherItemsMetaLookup:S$.itemMetaLookup(this.store.state)});this.store.update({itemModelLookup:l({},this.store.state.itemModelLookup,a),itemMetaLookup:l({},this.store.state.itemMetaLookup,o),itemOrderedChildrenIdsLookup:l({},this.store.state.itemOrderedChildrenIdsLookup,{[r]:s}),itemChildrenIndexesLookup:l({},this.store.state.itemChildrenIndexesLookup,{[r]:c})})};removeChildren=e=>{const t=this.store.state.itemMetaLookup,n=Object.keys(t).reduce((n,r)=>{const i=t[r];return i.parentId===e?n:l({},n,{[i.id]:i})},{}),r=l({},this.store.state.itemOrderedChildrenIdsLookup),i=l({},this.store.state.itemChildrenIndexesLookup),o=e??b$;delete i[o],delete r[o],this.store.update({itemMetaLookup:n,itemOrderedChildrenIdsLookup:r,itemChildrenIndexesLookup:i})};handleItemClick=(e,t)=>{this.store.parameters.onItemClick?.(e,t)}}function jz(e){return{disabledItemsFocusable:e.disabledItemsFocusable??!1,domStructure:"nested",itemChildrenIndentation:e.itemChildrenIndentation??"12px",providedTreeId:e.id,expansionTrigger:Az({isItemEditable:e.isItemEditable,expansionTrigger:e.expansionTrigger}),disableSelection:e.disableSelection??!1,multiSelect:e.multiSelect??!1,checkboxSelection:e.checkboxSelection??!1,selectionPropagation:e.selectionPropagation??ND}}function Lz(e,t,n){return void 0!==e?e:void 0!==t?t:n}let Rz=0;class Dz{timeoutIds=(()=>new Map)();intervalIds=(()=>new Map)();startTimeout=(e,t,n)=>{this.clearTimeout(e);const r=setTimeout(()=>{this.timeoutIds.delete(e),n()},t);this.timeoutIds.set(e,r)};startInterval=(e,t,n)=>{this.clearTimeout(e);const r=setInterval(n,t);this.intervalIds.set(e,r)};clearTimeout=e=>{const t=this.timeoutIds.get(e);null!=t&&(clearTimeout(t),this.timeoutIds.delete(e))};clearInterval=e=>{const t=this.intervalIds.get(e);null!=t&&(clearInterval(t),this.intervalIds.delete(e))};clearAll=()=>{this.timeoutIds.forEach(clearTimeout),this.timeoutIds.clear(),this.intervalIds.forEach(clearInterval),this.intervalIds.clear()}}class $z{typeaheadQuery="";constructor(e){this.store=e,this.labelMap=zz(S$.itemMetaLookup(this.store.state)),this.store.registerStoreEffect(S$.itemMetaLookup,(e,t)=>{this.store.shouldIgnoreItemsStateUpdate()||(this.labelMap=zz(t))})}canToggleItemSelection=e=>A$.canItemBeSelected(this.store.state,e);canToggleItemExpansion=e=>!S$.isItemDisabled(this.store.state,e)&&C$.isItemExpandable(this.store.state,e);getFirstItemMatchingTypeaheadQuery=(e,t)=>{const n=e=>{const t=_$(this.store.state,e);return null===t?H$(this.store.state):t},r=t=>{let r=null;const i={};let o=t.length>1?e:n(e);for(;null==r&&!i[o];){const e=this.labelMap[o];e?.startsWith(t)?r=o:(i[o]=!0,o=n(o))}return r},i=t.toLowerCase(),o=`${this.typeaheadQuery}${i}`,a=r(o);if(null!=a)return this.typeaheadQuery=o,a;const s=r(i);return null!=s?(this.typeaheadQuery=i,s):(this.typeaheadQuery="",null)};updateLabelMap=e=>{this.labelMap=e(this.labelMap)};handleItemKeyDown=async(e,t)=>{if(e.defaultMuiPrevented)return;if(e.altKey||V$(e.target,e.currentTarget))return;const n=e.ctrlKey||e.metaKey,r=e.key,i=A$.isMultiSelectEnabled(this.store.state);switch(!0){case" "===r&&this.canToggleItemSelection(t):e.preventDefault(),i&&e.shiftKey?this.store.selection.expandSelectionRange(e,t):this.store.selection.setItemSelection({event:e,itemId:t,keepExistingSelection:i,shouldBeSelected:void 0});break;case"Enter"===r:this.store.labelEditing?.setEditedItem&&R$.isItemEditable(this.store.state,t)&&!R$.isItemBeingEdited(this.store.state,t)?this.store.labelEditing.setEditedItem(t):this.canToggleItemExpansion(t)?(this.store.expansion.setItemExpansion({event:e,itemId:t}),e.preventDefault()):this.canToggleItemSelection(t)&&(i?(e.preventDefault(),this.store.selection.setItemSelection({event:e,itemId:t,keepExistingSelection:!0})):A$.isItemSelected(this.store.state,t)||(this.store.selection.setItemSelection({event:e,itemId:t}),e.preventDefault()));break;case"ArrowDown"===r:{const n=_$(this.store.state,t);n&&(e.preventDefault(),this.store.focus.focusItem(e,n),i&&e.shiftKey&&this.canToggleItemSelection(n)&&this.store.selection.selectItemFromArrowNavigation(e,t,n));break}case"ArrowUp"===r:{const n=N$(this.store.state,t);n&&(e.preventDefault(),this.store.focus.focusItem(e,n),i&&e.shiftKey&&this.canToggleItemSelection(n)&&this.store.selection.selectItemFromArrowNavigation(e,t,n));break}case"ArrowRight"===r&&!this.store.parameters.isRtl||"ArrowLeft"===r&&this.store.parameters.isRtl:if(n)return;if(C$.isItemExpanded(this.store.state,t)){const n=_$(this.store.state,t);n&&(this.store.focus.focusItem(e,n),e.preventDefault())}else this.canToggleItemExpansion(t)&&(this.store.expansion.setItemExpansion({event:e,itemId:t}),e.preventDefault());break;case"ArrowLeft"===r&&!this.store.parameters.isRtl||"ArrowRight"===r&&this.store.parameters.isRtl:if(n)return;if(this.canToggleItemExpansion(t)&&C$.isItemExpanded(this.store.state,t))this.store.expansion.setItemExpansion({event:e,itemId:t}),e.preventDefault();else{const n=S$.itemParentId(this.store.state,t);n&&(this.store.focus.focusItem(e,n),e.preventDefault())}break;case"Home"===r:this.canToggleItemSelection(t)&&i&&n&&e.shiftKey?this.store.selection.selectRangeFromStartToItem(e,t):this.store.focus.focusItem(e,H$(this.store.state)),e.preventDefault();break;case"End"===r:this.canToggleItemSelection(t)&&i&&n&&e.shiftKey?this.store.selection.selectRangeFromItemToEnd(e,t):this.store.focus.focusItem(e,F$(this.store.state)),e.preventDefault();break;case"*"===r:this.store.expansion.expandAllSiblings(e,t),e.preventDefault();break;case"A"===String.fromCharCode(e.keyCode)&&n&&i&&A$.enabled(this.store.state):this.store.selection.selectAllNavigableItems(e),e.preventDefault();break;case!n&&!e.shiftKey&&function(e){return!!e&&1===e.length&&!!e.match(/\S/)}(r):{this.store.timeoutManager.clearTimeout("typeahead");const n=this.getFirstItemMatchingTypeaheadQuery(t,r);null!=n?(this.store.focus.focusItem(e,n),e.preventDefault()):this.typeaheadQuery="",this.store.timeoutManager.startTimeout("typeahead",500,()=>{this.typeaheadQuery=""});break}}}}function zz(e){const t={};return Object.values(e).forEach(e=>{t[e.id]=e.label.toLowerCase()}),t}class Nz{constructor(e){this.store=e;let t=e.state;this.store.subscribe(e=>{if(e.itemMetaLookup===t.itemMetaLookup)return void(t=e);const n=j$.focusedItemId(e);if(null==n||S$.itemMeta(e,n))return void(t=e);const r=t=>null!=t&&S$.itemMeta(e,t)?t:null,i=r(_$(t,n))??r(N$(t,n))??H$(e);null==i?this.setFocusedItemId(null):this.applyItemFocus(null,i),t=e})}setFocusedItemId=e=>{j$.focusedItemId(this.store.state)!==e&&this.store.set("focusedItemId",e)};applyItemFocus=(e,t)=>{this.store.items.getItemDOMElement(t)?.focus(),this.setFocusedItemId(t),this.store.parameters.onItemFocus?.(e,t)};buildPublicAPI=()=>({focusItem:this.focusItem});focusItem=(e,t)=>{const n=S$.itemMeta(this.store.state,t);n&&(null==n.parentId||C$.isItemExpanded(this.store.state,n.parentId))&&this.applyItemFocus(e,t)};removeFocusedItem=()=>{const e=j$.focusedItemId(this.store.state);if(null!=e){if(S$.itemMeta(this.store.state,e)){const t=this.store.items.getItemDOMElement(e);t&&t.blur()}this.setFocusedItemId(null)}};handleRootFocus=e=>{if(e.defaultMuiPrevented)return;const t=j$.defaultFocusableItemId(this.store.state);e.target===e.currentTarget&&null!=t&&this.applyItemFocus(e,t)};handleRootBlur=e=>{e.defaultMuiPrevented||this.setFocusedItemId(null)}}const _z=y$((e,t)=>{if(A$.isItemSelected(e,t))return"checked";let n=!1,r=!1;const i=o=>{o!==t&&(A$.isItemSelected(e,o)?n=!0:r=!0),S$.itemOrderedChildrenIds(e,o).forEach(i)};return i(t),A$.propagationRules(e).parents?n&&r?"indeterminate":n&&!r?"checked":"empty":n?"indeterminate":"empty"}),Fz=({props:e})=>{const{itemId:t}=e,{store:n}=FD(),r=uD(n,A$.isCheckboxSelectionEnabled),i=uD(n,A$.isFeatureEnabledForItem,t),o=uD(n,A$.canItemBeSelected,t),a=uD(n,_z,t);return{propsEnhancers:{root:()=>{let e;return e="checked"===a||("indeterminate"===a?"mixed":!o&&void 0),{"aria-checked":e}},checkbox:({externalEventHandlers:e,interactions:s})=>({tabIndex:-1,onChange:r=>{e.onChange?.(r),r.defaultMuiPrevented||A$.canItemBeSelected(n.state,t)&&s.handleCheckboxSelection(r)},visible:r&&i,disabled:!o,checked:"checked"===a,indeterminate:"indeterminate"===a})}}};class Hz{lastSelectedItem=null;lastSelectedRange={};constructor(e){this.store=e,e.itemPluginManager.register(Fz,null)}setSelectedItems=(e,t,n)=>{const{selectionPropagation:r=ND,selectedItems:i,onItemSelectionToggle:o,onSelectedItemsChange:a}=this.store.parameters,s=A$.selectedItemsRaw(this.store.state);let l;const c=A$.isMultiSelectEnabled(this.store.state);if(l=c&&(r.descendants||r.parents)?function({store:e,selectionPropagation:t,newModel:n,oldModel:r,additionalItemsToPropagate:i}){if(!t.descendants&&!t.parents)return n;let o=!1;const a=Vz(n),s=Bz({store:e,newModel:n,oldModel:r});return i?.forEach(e=>{a[e]?s.added.includes(e)||s.added.push(e):s.removed.includes(e)||s.removed.push(e)}),s.added.forEach(n=>{if(t.descendants){const t=r=>{r!==n&&(o=!0,a[r]=!0),S$.itemOrderedChildrenIds(e.state,r).forEach(t)};t(n)}if(t.parents){const t=n=>!!a[n]&&S$.itemOrderedChildrenIds(e.state,n).every(t),r=n=>{const i=S$.itemParentId(e.state,n);null!=i&&S$.itemOrderedChildrenIds(e.state,i).every(t)&&(o=!0,a[i]=!0,r(i))};r(n)}}),s.removed.forEach(n=>{if(t.parents){let t=S$.itemParentId(e.state,n);for(;null!=t;)a[t]&&(o=!0,delete a[t]),t=S$.itemParentId(e.state,t)}if(t.descendants){const t=r=>{r!==n&&(o=!0,delete a[r]),S$.itemOrderedChildrenIds(e.state,r).forEach(t)};t(n)}}),o?Object.keys(a):n}({store:this.store,selectionPropagation:r,newModel:t,oldModel:s,additionalItemsToPropagate:n}):t,o)if(c){const t=Bz({store:this.store,newModel:l,oldModel:s});o&&(t.added.forEach(t=>{o(e,t,!0)}),t.removed.forEach(t=>{o(e,t,!1)}))}else l!==s&&(null!=s&&o(e,s,!1),null!=l&&o(e,l,!0));void 0===i&&this.store.set("selectedItems",l),a?.(e,l)};selectRange=(e,[t,n])=>{if(!A$.isMultiSelectEnabled(this.store.state))return;let r=A$.selectedItems(this.store.state).slice();Object.keys(this.lastSelectedRange).length>0&&(r=r.filter(e=>!this.lastSelectedRange[e]));const i=Vz(r),o=((e,t,n)=>{const r=t=>{if(C$.isItemExpandable(e,t)&&C$.isItemExpanded(e,t))return S$.itemOrderedChildrenIds(e,t)[0];let n=S$.itemMeta(e,t);for(;null!=n;){const t=S$.itemOrderedChildrenIds(e,n.parentId),r=S$.itemIndex(e,n.id);if(rA$.isItemSelectable(this.store.state,e)),a=o.filter(e=>!i[e]);r=r.concat(a),this.setSelectedItems(e,r),this.lastSelectedRange=Vz(o)};buildPublicAPI=()=>({setItemSelection:this.setItemSelection});setItemSelection=({itemId:e,event:t=null,keepExistingSelection:n=!1,shouldBeSelected:r})=>{if(!A$.enabled(this.store.state))return;let i;const o=A$.isMultiSelectEnabled(this.store.state);if(n){const t=A$.selectedItems(this.store.state),n=A$.isItemSelected(this.store.state,e);i=!n||!1!==r&&null!=r?n||!0!==r&&null!=r?t:[e].concat(t):t.filter(t=>t!==e)}else i=!1===r||null==r&&A$.isItemSelected(this.store.state,e)?o?[]:null:o?[e]:e;this.setSelectedItems(t,i,[e]),this.lastSelectedItem=e,this.lastSelectedRange={}};selectAllNavigableItems=e=>{if(!A$.isMultiSelectEnabled(this.store.state))return;const t=(e=>{let t=H$(e);const n=[];for(;null!=t;)n.push(t),t=_$(e,t);return n})(this.store.state);this.setSelectedItems(e,t),this.lastSelectedRange=Vz(t)};expandSelectionRange=(e,t)=>{if(null!=this.lastSelectedItem){const[n,r]=B$(this.store.state,t,this.lastSelectedItem);this.selectRange(e,[n,r])}};selectRangeFromStartToItem=(e,t)=>{this.selectRange(e,[H$(this.store.state),t])};selectRangeFromItemToEnd=(e,t)=>{this.selectRange(e,[t,F$(this.store.state)])};selectItemFromArrowNavigation=(e,t,n)=>{if(!A$.isMultiSelectEnabled(this.store.state))return;let r=A$.selectedItems(this.store.state).slice();0===Object.keys(this.lastSelectedRange).length?(r.push(n),this.lastSelectedRange={[t]:!0,[n]:!0}):(this.lastSelectedRange[t]||(this.lastSelectedRange={}),this.lastSelectedRange[n]?(r=r.filter(e=>e!==t),delete this.lastSelectedRange[t]):(r.push(n),this.lastSelectedRange[n]=!0)),this.setSelectedItems(e,r)}}function Bz({store:e,oldModel:t,newModel:n}){const r=new Map;return n.forEach(e=>{r.set(e,!0)}),{added:n.filter(t=>!A$.isItemSelected(e.state,t)),removed:t.filter(e=>!r.has(e))}}function Vz(e){const t={};return e.forEach(e=>{t[e]=!0}),t}class Uz{constructor(e){this.store=e}setExpandedItems=(e,t)=>{void 0===this.store.parameters.expandedItems&&this.store.set("expandedItems",t),this.store.parameters.onExpandedItemsChange?.(e,t)};isItemExpanded=e=>C$.isItemExpanded(this.store.state,e);buildPublicAPI=()=>({isItemExpanded:this.isItemExpanded,setItemExpansion:this.setItemExpansion});setItemExpansion=({itemId:e,event:t=null,shouldBeExpanded:n})=>{const r=C$.isItemExpanded(this.store.state,e),i=n??!r;if(r===i)return;const o={isExpansionPrevented:!1,shouldBeExpanded:i,itemId:e};this.store.publishEvent("beforeItemToggleExpansion",o,t),o.isExpansionPrevented||this.applyItemExpansion({itemId:e,event:t,shouldBeExpanded:i})};applyItemExpansion=({itemId:e,event:t,shouldBeExpanded:n})=>{const r=C$.expandedItemsRaw(this.store.state);let i;i=n?[e].concat(r):r.filter(t=>t!==e),this.store.parameters.onItemExpansionToggle?.(t,e,n),this.setExpandedItems(t,i)};expandAllSiblings=(e,t)=>{const n=S$.itemMeta(this.store.state,t);if(null==n)return;const r=S$.itemOrderedChildrenIds(this.store.state,n.parentId).filter(e=>C$.isItemExpandable(this.store.state,e)&&!C$.isItemExpanded(this.store.state,e)),i=C$.expandedItemsRaw(this.store.state).concat(r);r.length>0&&(this.store.parameters.onItemExpansionToggle&&r.forEach(t=>{this.store.parameters.onItemExpansionToggle(e,t,!0)}),this.setExpandedItems(e,i))};addExpandableItems=e=>{const t=l({},this.store.state.itemMetaLookup);for(const n of e)t[n]=l({},t[n],{expandable:!0});this.store.set("itemMetaLookup",t)}}class Yz{itemPlugins=[];itemWrappers=[];register=(e,t)=>{this.itemPlugins.push(e),t&&this.itemWrappers.push(t)};listPlugins=()=>this.itemPlugins;listWrappers=()=>this.itemWrappers}class Wz extends Ez{initialParameters=null;eventManager=(()=>new Tz)();timeoutManager=(()=>new Dz)();itemPluginManager=(()=>new Yz)();constructor(e,t,n){const r=function(e){return l({treeId:void 0,focusedItemId:null},jz(e),Oz.buildItemsStateIfNeeded(e),{expandedItems:Lz(e.expandedItems,e.defaultExpandedItems,[]),selectedItems:Lz(e.selectedItems,e.defaultSelectedItems,e.multiSelect?zD:null)})}(e);super(n.getInitialState(r,e)),this.parameters=e,this.instanceName=t,this.mapper=n,this.items=new Oz(this),this.focus=new Nz(this),this.expansion=new Uz(this),this.selection=new Hz(this),this.keyboardNavigation=new $z(this)}buildPublicAPI(){return l({},this.items.buildPublicAPI(),this.focus.buildPublicAPI(),this.expansion.buildPublicAPI(),this.selection.buildPublicAPI())}updateStateFromParameters(e){const t=(t,n,r)=>{void 0!==e[n]&&(t[n]=e[n])},n=jz(e);t(n,"expandedItems"),t(n,"selectedItems"),this.state.providedTreeId===e.id&&void 0!==this.state.treeId||(n.treeId=(Rz+=1,`mui-tree-view-${Rz}`)),!this.mapper.shouldIgnoreItemsStateUpdate(e)&&Oz.shouldRebuildItemsState(e,this.parameters)&&Object.assign(n,Oz.buildItemsStateIfNeeded(e));const r=this.mapper.updateStateFromParameters(n,e,t);this.update(r),this.parameters=e}disposeEffect=()=>this.timeoutManager.clearAll;shouldIgnoreItemsStateUpdate=()=>this.mapper.shouldIgnoreItemsStateUpdate(this.parameters);registerStoreEffect=(e,t)=>{let n=e(this.state);this.subscribe(r=>{const i=e(r);i!==n&&(t(n,i),n=i)})};publishEvent=(e,t,n)=>{(function(e){return void 0!==e?.isPropagationStopped})(n)&&n.isPropagationStopped()||this.eventManager.emit(e,t,n)};subscribeEvent=(e,t)=>{this.eventManager.on(e,t)}}const Gz=e=>({isItemEditable:e.isItemEditable??!1}),Kz={getInitialState:(e,t)=>l({},e,Gz(t),{editedItemId:null,lazyLoadedItems:null}),updateStateFromParameters:(e,t)=>l({},e,Gz(t)),shouldIgnoreItemsStateUpdate:()=>!1};class qz extends Wz{labelEditing=(()=>new Pz(this))();static rawMapper=(()=>Kz)();buildPublicAPI(){return l({},super.buildPublicAPI(),this.labelEditing.buildPublicAPI())}}class Xz extends qz{constructor(e){super(e,"RichTreeView",Kz)}}const Zz=$D(),Jz=bm("ul",{name:"MuiRichTreeView",slot:"Root"})({padding:0,margin:0,listStyle:"none",outline:0,position:"relative"}),Qz=e.forwardRef(function(t,n){const r=Zz({props:t,name:"MuiRichTreeView"}),{slots:i,slotProps:o,apiRef:a,parameters:s,forwardedProps:c}=function(t){const{apiRef:n,slots:r,slotProps:i,disabledItemsFocusable:o,items:a,isItemDisabled:s,isItemSelectionDisabled:l,getItemLabel:c,getItemChildren:u,getItemId:d,onItemClick:p,itemChildrenIndentation:h,id:m,expandedItems:f,defaultExpandedItems:g,onExpandedItemsChange:y,onItemExpansionToggle:v,expansionTrigger:b,disableSelection:x,selectedItems:I,defaultSelectedItems:w,multiSelect:k,checkboxSelection:S,selectionPropagation:M,onSelectedItemsChange:C,onItemSelectionToggle:P,onItemFocus:E,onItemLabelChange:T,isItemEditable:A}=t,O=tt(t,wz);return{apiRef:n,slots:r,slotProps:i,parameters:e.useMemo(()=>({disabledItemsFocusable:o,items:a,isItemDisabled:s,isItemSelectionDisabled:l,getItemLabel:c,getItemChildren:u,getItemId:d,onItemClick:p,itemChildrenIndentation:h,id:m,expandedItems:f,defaultExpandedItems:g,onExpandedItemsChange:y,onItemExpansionToggle:v,expansionTrigger:b,disableSelection:x,selectedItems:I,defaultSelectedItems:w,multiSelect:k,checkboxSelection:S,selectionPropagation:M,onSelectedItemsChange:C,onItemSelectionToggle:P,onItemFocus:E,onItemLabelChange:T,isItemEditable:A}),[o,a,s,l,c,u,d,p,h,m,f,g,y,v,b,x,I,w,k,S,M,C,P,E,T,A]),forwardedProps:O}}(r),u=Mz(Xz,s),d=e.useRef(null),p=Iz(u,c,sD(n,d)),h=(t=>{const{classes:n}=t;return e.useMemo(()=>MD({root:["root"],item:["item"],itemContent:["itemContent"],itemGroupTransition:["itemGroupTransition"],itemIconContainer:["itemIconContainer"],itemLabel:["itemLabel"],itemLabelInput:["itemLabelInput"],itemCheckbox:["itemCheckbox"]},DD,n),[n])})(r),m=uD(u,L$.isItemLoading,null),f=uD(u,L$.itemError,null),g=i?.root??Jz,y=TD({elementType:g,externalSlotProps:o?.root,className:h.root,getSlotProps:p,ownerState:r});return m?(0,O.jsx)(Nv,{children:"Loading..."}):f?(0,O.jsx)(SD,{severity:"error",children:f.message}):(0,O.jsx)(VD,{store:u,classes:h,slots:i,slotProps:o,apiRef:a,rootRef:d,children:(0,O.jsx)($$.Provider,{value:S$.itemDepth,children:(0,O.jsx)(g,l({},y,{children:(0,O.jsx)(xz,{slots:i,slotProps:o})}))})})}),eN=ob((0,O.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore"),tN=ob((0,O.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"ChevronRight"),nN=ob((0,O.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"}),"Folder"),rN=ob((0,O.jsx)("path",{d:"M20 6h-8l-2-2H4c-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-2m0 12H4V8h16z"}),"FolderOpen"),iN=ob((0,O.jsx)("path",{d:"M6 2c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm7 7V3.5L18.5 9z"}),"InsertDriveFile"),oN=ob((0,O.jsx)("path",{d:"M19 13H5v-2h14z"}),"Remove"),aN=ob((0,O.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add"),sN=ob((0,O.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown"),lN=ob((0,O.jsx)("path",{d:"m10 17 5-5-5-5z"}),"ArrowRight"),cN=ob((0,O.jsx)("path",{d:"M22 11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3z"}),"AccountTree"),uN=ob((0,O.jsx)("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm2 16H8v-2h8zm0-4H8v-2h8zm-3-5V3.5L18.5 9z"}),"Description"),dN=ob((0,O.jsx)("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6z"}),"Code"),pN=ob((0,O.jsx)("path",{d:"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2M8.5 13.5l2.5 3.01L14.5 12l4.5 6H5z"}),"Image"),hN=ob((0,O.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings"),mN=ob((0,O.jsx)("path",{d:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"}),"Home"),fN=ob((0,O.jsx)("path",{d:"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}),"Star"),gN=ob((0,O.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"}),"Delete"),yN=ob((0,O.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit"),vN=ob((0,O.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility"),bN=ob((0,O.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1z"}),"Lock"),xN=ob((0,O.jsx)("path",{d:"m3.5 18.49 6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z"}),"ShowChart"),IN=ob((0,O.jsx)("path",{d:"M4 9h4v11H4zm12 4h4v7h-4zm-6-9h4v16h-4z"}),"BarChart"),wN=ob((0,O.jsx)("path",{d:"M11 2v20c-5.07-.5-9-4.79-9-10s3.93-9.5 9-10m2.03 0v8.99H22c-.47-4.74-4.24-8.52-8.97-8.99m0 11.01V22c4.74-.47 8.5-4.25 8.97-8.99z"}),"PieChart"),kN=ob([(0,O.jsx)("circle",{cx:"7",cy:"14",r:"3"},"0"),(0,O.jsx)("circle",{cx:"11",cy:"6",r:"3"},"1"),(0,O.jsx)("circle",{cx:"16.6",cy:"17.6",r:"3"},"2")],"ScatterPlot"),SN=ob((0,O.jsx)("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2M8 20H4v-4h4zm0-6H4v-4h4zm0-6H4V4h4zm6 12h-4v-4h4zm0-6h-4v-4h4zm0-6h-4V4h4zm6 12h-4v-4h4zm0-6h-4v-4h4zm0-6h-4V4h4z"}),"GridOn"),MN=ob((0,O.jsx)("path",{d:"M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2"}),"Timeline"),CN=ob((0,O.jsx)("path",{d:"M9 4H7v2H5v12h2v2h2v-2h2V6H9zm10 4h-2V4h-2v4h-2v7h2v5h2v-5h2z"}),"CandlestickChart"),PN=ob((0,O.jsx)("path",{d:"m20.38 8.57-1.23 1.85a8 8 0 0 1-.22 7.58H5.07A8 8 0 0 1 15.58 6.85l1.85-1.23A10 10 0 0 0 3.35 19a2 2 0 0 0 1.72 1h13.85a2 2 0 0 0 1.74-1 10 10 0 0 0-.27-10.44zm-9.79 6.84a2 2 0 0 0 2.83 0l5.66-8.49-8.49 5.66a2 2 0 0 0 0 2.83"}),"Speed"),EN=ob((0,O.jsx)("path",{d:"m11.99 18.54-7.37-5.73L3 14.07l9 7 9-7-1.63-1.27zM12 16l7.36-5.73L21 9l-9-7-9 7 1.63 1.27z"}),"Layers"),TN=ob((0,O.jsx)("path",{d:"m16 6 2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z"}),"TrendingUp"),AN=ob((0,O.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9m-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8z"}),"History"),ON=ob((0,O.jsx)("path",{d:"M8 5v14l11-7z"}),"PlayArrow"),jN=ob((0,O.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune"),LN=ob((0,O.jsx)("path",{d:"M7 14c-1.66 0-3 1.34-3 3 0 1.31-1.16 2-2 2 .92 1.22 2.49 2 4 2 2.21 0 4-1.79 4-4 0-1.66-1.34-3-3-3m13.71-9.37-1.34-1.34a.996.996 0 0 0-1.41 0L9 12.25 11.75 15l8.96-8.96c.39-.39.39-1.02 0-1.41"}),"Brush"),RN=ob((0,O.jsx)("path",{d:"m6 14 3 3v5h6v-5l3-3V9H6zm5-12h2v3h-2zM3.5 5.88l1.41-1.41 2.12 2.12L5.62 8zm13.46.71 2.12-2.12 1.41 1.41L18.38 8z"}),"Highlight"),DN=ob((0,O.jsx)("path",{d:"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8m0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4z"}),"Sync"),$N=ob([(0,O.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"},"0"),(0,O.jsx)("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"},"1")],"ZoomIn"),zN=ob((0,O.jsx)("path",{d:"M9 11.24V7.5C9 6.12 10.12 5 11.5 5S14 6.12 14 7.5v3.74c1.21-.81 2-2.18 2-3.74C16 5.01 13.99 3 11.5 3S7 5.01 7 7.5c0 1.56.79 2.93 2 3.74m9.84 4.63-4.54-2.26c-.17-.07-.35-.11-.54-.11H13v-6c0-.83-.67-1.5-1.5-1.5S10 6.67 10 7.5v10.74c-3.6-.76-3.54-.75-3.67-.75-.31 0-.59.13-.79.33l-.79.8 4.94 4.94c.27.27.65.44 1.06.44h6.79c.75 0 1.33-.55 1.44-1.28l.75-5.27c.01-.07.02-.14.02-.2 0-.62-.38-1.16-.91-1.38"}),"TouchApp"),NN=ob((0,O.jsx)("path",{d:"M10 10.02h5V21h-5zM17 21h3c1.1 0 2-.9 2-2v-9h-5zm3-18H5c-1.1 0-2 .9-2 2v3h19V5c0-1.1-.9-2-2-2M3 19c0 1.1.9 2 2 2h3V10H3z"}),"TableChart"),_N=ob((0,O.jsx)("path",{d:"M4 9h4v11H4zm0-5h4v4H4zm6 3h4v4h-4zm6 3h4v4h-4zm0 5h4v5h-4zm-6-3h4v8h-4z"}),"StackedBarChart"),FN=ob((0,O.jsx)("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10c1.38 0 2.5-1.12 2.5-2.5 0-.61-.23-1.2-.64-1.67-.08-.1-.13-.21-.13-.33 0-.28.22-.5.5-.5H16c3.31 0 6-2.69 6-6 0-4.96-4.49-9-10-9m5.5 11c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5m-3-4c-.83 0-1.5-.67-1.5-1.5S13.67 6 14.5 6s1.5.67 1.5 1.5S15.33 9 14.5 9M5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S7.33 13 6.5 13 5 12.33 5 11.5m6-4c0 .83-.67 1.5-1.5 1.5S8 8.33 8 7.5 8.67 6 9.5 6s1.5.67 1.5 1.5"}),"Palette"),HN=ob((0,O.jsx)("path",{d:"M16.54 11 13 7.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41zM11 7H2v2h9zm10 6.41L19.59 12 17 14.59 14.41 12 13 13.41 15.59 16 13 18.59 14.41 20 17 17.41 19.59 20 21 18.59 18.41 16zM11 15H2v2h9z"}),"Rule"),BN=ob((0,O.jsx)("path",{d:"M13 1.07V9h7c0-4.08-3.05-7.44-7-7.93M4 15c0 4.42 3.58 8 8 8s8-3.58 8-8v-4H4zm7-13.93C7.05 1.56 4 4.92 4 9h7z"}),"Mouse"),VN=ob((0,O.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-2m-9 14-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckBox"),UN=ob((0,O.jsx)("path",{d:"M12 5.83 15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9zm0 12.34L8.83 15l-1.41 1.41L12 21l4.59-4.59L15.17 15z"}),"UnfoldMore"),YN=ob((0,O.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12m8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8"}),"Block"),WN=ob((0,O.jsx)("path",{d:"M12.16 3h-.32L9.21 8.25h5.58zm4.3 5.25h5.16L19 3h-5.16zm4.92 1.5h-8.63V20.1zM11.25 20.1V9.75H2.62zM7.54 8.25 10.16 3H5L2.38 8.25z"}),"Diamond"),GN=ob((0,O.jsx)("path",{d:"M14.06 9.94 12 9l2.06-.94L15 6l.94 2.06L18 9l-2.06.94L15 12zM4 14l.94-2.06L7 11l-2.06-.94L4 8l-.94 2.06L1 11l2.06.94zm4.5-5 1.09-2.41L12 5.5 9.59 4.41 8.5 2 7.41 4.41 5 5.5l2.41 1.09zm-4 11.5 6-6.01 4 4L23 8.93l-1.41-1.41-7.09 7.97-4-4L3 19z"}),"AutoGraph"),KN=ob((0,O.jsx)("path",{d:"M3 14h4v-4H3zm0 5h4v-4H3zM3 9h4V5H3zm5 5h13v-4H8zm0 5h13v-4H8zM8 5v4h13V5z"}),"ViewList"),qN=ob((0,O.jsx)("path",{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4m8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7"}),"GpsFixed"),XN=ob((0,O.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"}),"ContentCopy"),ZN=ob((0,O.jsx)("path",{d:"M15 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m-9-2V7H4v3H1v2h3v3h2v-3h3v-2zm9 4c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"}),"PersonAdd"),JN=ob((0,O.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"}),"CheckCircle"),QN=ob((0,O.jsx)("path",{d:"m20.54 5.23-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27M12 17.5 6.5 12H10v-2h4v2h3.5zM5.12 5l.81-1h12l.94 1z"}),"Archive"),e_=ob((0,O.jsx)("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreVert");var t_={ExpandMore:eN,ChevronRight:tN,Folder:nN,FolderOpen:rN,InsertDriveFile:iN,Remove:oN,Add:aN,ArrowDropDown:sN,ArrowRight:lN,AccountTree:cN,Description:uN,Code:dN,Image:pN,Settings:hN,Home:mN,Star:fN,Delete:gN,Edit:yN,Visibility:vN,Lock:bN,ShowChart:xN,BarChart:IN,PieChart:wN,ScatterPlot:kN,GridOn:SN,Timeline:MN,CandlestickChart:CN,Speed:PN,Layers:EN,TrendingUp:TN,History:AN,PlayArrow:ON,Tune:jN,Brush:LN,Highlight:RN,Sync:DN,ZoomIn:$N,TouchApp:zN,TableChart:NN,StackedBarChart:_N,Palette:FN,Rule:HN,Mouse:BN,CheckBox:VN,UnfoldMore:UN,Block:YN,Diamond:WN,AutoGraph:GN,ViewList:KN,GpsFixed:qN,ContentCopy:XN,PersonAdd:ZN,CheckCircle:JN,Archive:QN,MoreVert:e_},n_=function(e){if(e)return t_[e]||void 0},r_=["id","items","getItemId","getItemLabel","getItemChildren","selectedItems","defaultSelectedItems","multiSelect","checkboxSelection","disableSelection","selectionPropagation","expandedItems","defaultExpandedItems","expansionTrigger","isItemEditable","editableItems","disabledItems","disabledItemsFocusable","itemChildrenIndentation","height","sx","collapseIcon","expandIcon","endIcon","ariaLabel","ariaLabelledBy","setProps"],i_=function(t){var r=t.id,i=t.items,o=t.getItemId,a=t.getItemLabel,s=t.getItemChildren,l=t.selectedItems,c=t.defaultSelectedItems,u=t.multiSelect,d=t.checkboxSelection,p=t.disableSelection,h=t.selectionPropagation,m=t.expandedItems,f=t.defaultExpandedItems,g=t.expansionTrigger,y=t.isItemEditable,v=t.editableItems,b=t.disabledItems,x=t.disabledItemsFocusable,I=t.itemChildrenIndentation,w=t.height,k=t.sx,S=t.collapseIcon,M=t.expandIcon,C=t.endIcon,P=t.ariaLabel,E=t.ariaLabelledBy,T=t.setProps,A=(function(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r0){var e=new Set(v);return function(t){return e.has(A(t))}}return!1},[y,v,A]),D=(0,e.useMemo)(function(){var e={};return S&&(e.collapseIcon=n_(S)),M&&(e.expandIcon=n_(M)),C&&(e.endIcon=n_(C)),Object.keys(e).length>0?e:void 0},[S,M,C]),$=(0,e.useCallback)(function(e,t){T&&T({selectedItems:t})},[T]),z=(0,e.useCallback)(function(e,t){T&&T({expandedItems:t})},[T]),N=(0,e.useCallback)(function(e,t){T&&T({clickedItem:{itemId:t,event_timestamp:Date.now()}})},[T]),_=(0,e.useCallback)(function(e,t){T&&T({focusedItem:{itemId:t,event_timestamp:Date.now()}})},[T]),F=(0,e.useCallback)(function(e,t){T&&T({editedItemLabel:{itemId:e,newLabel:t,event_timestamp:Date.now()}})},[T]),H=(0,e.useMemo)(function(){var e={};return w&&(e.height="number"==typeof w?"".concat(w,"px"):w),e},[w]);return n().createElement("div",{id:r,style:H},n().createElement(Qz,{items:i||[],getItemId:A,getItemLabel:O,getItemChildren:j,selectedItems:l,defaultSelectedItems:c,multiSelect:u,checkboxSelection:d,disableSelection:p,selectionPropagation:h,expandedItems:m,defaultExpandedItems:f,expansionTrigger:g,isItemEditable:R,isItemDisabled:L,disabledItemsFocusable:x,itemChildrenIndentation:I,sx:k,slots:D,onSelectedItemsChange:$,onExpandedItemsChange:z,onItemClick:N,onItemFocus:_,onItemLabelChange:F,"aria-label":P,"aria-labelledby":E}))};i_.defaultProps={items:[],getItemId:"id",getItemLabel:"label",getItemChildren:"children",multiSelect:!1,checkboxSelection:!1,disableSelection:!1,disabledItemsFocusable:!1,isItemEditable:!1,expansionTrigger:"content",itemChildrenIndentation:"12px"},i_.propTypes={id:i().string,items:i().arrayOf(i().object),getItemId:i().string,getItemLabel:i().string,getItemChildren:i().string,selectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),defaultSelectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),multiSelect:i().bool,checkboxSelection:i().bool,disableSelection:i().bool,selectionPropagation:i().exact({parents:i().bool,descendants:i().bool}),expandedItems:i().arrayOf(i().string),defaultExpandedItems:i().arrayOf(i().string),expansionTrigger:i().oneOf(["content","iconContainer"]),isItemEditable:i().bool,editableItems:i().arrayOf(i().string),disabledItems:i().arrayOf(i().string),disabledItemsFocusable:i().bool,itemChildrenIndentation:i().oneOfType([i().number,i().string]),height:i().oneOfType([i().number,i().string]),sx:i().object,collapseIcon:i().string,expandIcon:i().string,endIcon:i().string,ariaLabel:i().string,ariaLabelledBy:i().string,clickedItem:i().exact({itemId:i().string,event_timestamp:i().number}),focusedItem:i().exact({itemId:i().string,event_timestamp:i().number}),editedItemLabel:i().exact({itemId:i().string,newLabel:i().string,event_timestamp:i().number}),setProps:i().func};const o_=i_;function a_(e){return LD("MuiSimpleTreeView",e)}RD("MuiSimpleTreeView",["root","item","itemContent","itemGroupTransition","itemIconContainer","itemLabel","itemCheckbox"]);const s_=["apiRef","slots","slotProps","disabledItemsFocusable","onItemClick","itemChildrenIndentation","id","expandedItems","defaultExpandedItems","onExpandedItemsChange","onItemExpansionToggle","expansionTrigger","disableSelection","selectedItems","defaultSelectedItems","multiSelect","checkboxSelection","selectionPropagation","onSelectedItemsChange","onItemSelectionToggle","onItemFocus"],l_=e.createContext(null);function c_(t){const{children:n,itemId:r=null,idAttribute:i}=t,{store:o,rootRef:a}=FD(),s=e.useRef(new Map);e.useEffect(()=>{if(!a.current)return;const e=S$.itemOrderedChildrenIds(o.state,r??null)??[],t=(i??a.current.id).replace(/["\\]/g,"\\$&");if(null!=r){const e=a.current.querySelector(`*[id="${t}"][role="treeitem"]`);if(e&&"false"===e.getAttribute("aria-expanded"))return}const n=a.current.querySelectorAll(`${null==r?"":`*[id="${t}"] `}[role="treeitem"]:not(*[id="${t}"] [role="treeitem"] [role="treeitem"])`),l=Array.from(n).map(e=>s.current.get(e.id));(l.length!==e.length||l.some((t,n)=>t!==e[n]))&&o.jsxItems.setJSXItemsOrderedChildrenIds(r??null,l)});const l=e.useMemo(()=>({registerChild:(e,t)=>s.current.set(e,t),unregisterChild:e=>s.current.delete(e),parentId:r}),[r]);return(0,O.jsx)(l_.Provider,{value:l,children:n})}const u_=({props:t,rootRef:n,contentRef:r})=>{const{store:i}=FD(),{children:o,disabled:a=!1,disableSelection:s=!1,label:l,itemId:c,id:u}=t,d=e.useContext(l_);if(null==d)throw new Error(["MUI X: Could not find the Tree View Children Item context.","It looks like you rendered your component outside of a SimpleTreeView parent component.","This can also happen if you are bundling multiple versions of the Tree View."].join("\n"));const{registerChild:p,unregisterChild:h,parentId:m}=d,f=D$(o),g=e.useRef(null),y=sD(g,r),v=uD(i,Y$.treeItemIdAttribute,c,u),b=e.useRef(!0),x=aD(Symbol);return kz(()=>(p(v,c),()=>{h(v),h(v)}),[i,p,h,v,c]),kz(()=>(b.current=!0,()=>{b.current=!1}),[]),kz(()=>{const e=i.jsxItems.upsertJSXItem({id:c,idAttribute:u,parentId:m,expandable:f,disabled:a,selectable:!s},x.current);return()=>{b.current||e()}},[i,m,c,f,a,s,u,x]),e.useEffect(()=>{if(l)return i.jsxItems.mapLabelFromJSX(c,(g.current?.textContent??"").toLowerCase())},[i,c,l]),{contentRef:y,rootRef:n}},d_=({children:t,itemId:n,idAttribute:r})=>{const i=e.useContext($$);return(0,O.jsx)(c_,{itemId:n,idAttribute:r,children:(0,O.jsx)($$.Provider,{value:i+1,children:t})})};class p_{itemOwners=(()=>new Map)();constructor(e){this.store=e,e.itemPluginManager.register(u_,d_)}upsertJSXItem=(e,t)=>{const n=this.itemOwners.get(e.id);if(null!=n&&n!==t)throw new Error(["MUI X: The Tree View component requires all items to have a unique `id` property.","Alternatively, you can use the `getItemId` prop to specify a custom id for each item.",`Two items were provided with the same id in the \`items\` prop: "${e.id}"`].join("\n"));this.itemOwners.set(e.id,t);const r=S$.itemMeta(this.store.state,e.id);if(null!=r){let t=!1;for(const n of Object.keys(e))if(r[n]!==e[n]){t=!0;break}t&&this.store.update({itemMetaLookup:l({},this.store.state.itemMetaLookup,{[e.id]:l({},r,e)})})}else this.store.update({itemMetaLookup:l({},this.store.state.itemMetaLookup,{[e.id]:e}),itemModelLookup:l({},this.store.state.itemModelLookup,{[e.id]:{id:e.id,label:e.label??""}})});return()=>{this.itemOwners.delete(e.id);const t=l({},this.store.state.itemMetaLookup),n=l({},this.store.state.itemModelLookup);delete t[e.id],delete n[e.id],this.store.update({itemMetaLookup:t,itemModelLookup:n})}};mapLabelFromJSX=(e,t)=>(this.store.keyboardNavigation.updateLabelMap(n=>(n[e]=t,n)),()=>{this.store.keyboardNavigation.updateLabelMap(t=>{const n=l({},t);return delete n[e],n})});setJSXItemsOrderedChildrenIds=(e,t)=>{const n=e??b$;this.store.update({itemOrderedChildrenIdsLookup:l({},this.store.state.itemOrderedChildrenIdsLookup,{[n]:t}),itemChildrenIndexesLookup:l({},this.store.state.itemChildrenIndexesLookup,{[n]:x$(t)})})}}const h_={getInitialState:e=>e,updateStateFromParameters:e=>e,shouldIgnoreItemsStateUpdate:()=>!0};class m_ extends Wz{jsxItems=(()=>new p_(this))();constructor(e){super(l({},e,{items:zD}),"SimpleTreeView",h_)}updateStateFromParameters(e){super.updateStateFromParameters(l({},e,{items:zD}))}}const f_=$D(),g_=bm("ul",{name:"MuiSimpleTreeView",slot:"Root"})({padding:0,margin:0,listStyle:"none",outline:0,position:"relative"}),y_=e.forwardRef(function(t,n){const r=f_({props:t,name:"MuiSimpleTreeView"}),{slots:i,slotProps:o,apiRef:a,parameters:s,forwardedProps:c}=function(t){const{apiRef:n,slots:r,slotProps:i,disabledItemsFocusable:o,onItemClick:a,itemChildrenIndentation:s,id:l,expandedItems:c,defaultExpandedItems:u,onExpandedItemsChange:d,onItemExpansionToggle:p,expansionTrigger:h,disableSelection:m,selectedItems:f,defaultSelectedItems:g,multiSelect:y,checkboxSelection:v,selectionPropagation:b,onSelectedItemsChange:x,onItemSelectionToggle:I,onItemFocus:w}=t,k=tt(t,s_);return{apiRef:n,slots:r,slotProps:i,parameters:e.useMemo(()=>({disabledItemsFocusable:o,onItemClick:a,itemChildrenIndentation:s,id:l,expandedItems:c,defaultExpandedItems:u,onExpandedItemsChange:d,onItemExpansionToggle:p,expansionTrigger:h,disableSelection:m,selectedItems:f,defaultSelectedItems:g,multiSelect:y,checkboxSelection:v,selectionPropagation:b,onSelectedItemsChange:x,onItemSelectionToggle:I,onItemFocus:w}),[o,a,s,l,c,u,d,p,h,m,f,g,y,v,b,x,I,w]),forwardedProps:k}}(r),u=Mz(m_,s),d=e.useRef(null),p=Iz(u,c,sD(n,d)),h=(t=>{const{classes:n}=t;return e.useMemo(()=>MD({root:["root"],item:["item"],itemContent:["itemContent"],itemGroupTransition:["itemGroupTransition"],itemIconContainer:["itemIconContainer"],itemLabel:["itemLabel"],itemCheckbox:["itemCheckbox"]},a_,n),[n])})(r),m=i?.root??g_,f=TD({elementType:m,externalSlotProps:o?.root,className:h.root,getSlotProps:p,ownerState:r});return(0,O.jsx)(VD,{store:u,classes:h,slots:i,slotProps:o,apiRef:a,rootRef:d,children:(0,O.jsx)(c_,{itemId:null,idAttribute:null,children:(0,O.jsx)($$.Provider,{value:0,children:(0,O.jsx)(m,l({},f))})})})});var v_=function(e){return e&&0!==e.length?e.map(function(e){var t=e.icon?n_(e.icon):null,r=t?n().createElement("span",{style:{display:"flex",alignItems:"center",gap:8}},n().createElement(t,{style:{fontSize:18,opacity:.7,flexShrink:0}}),n().createElement("span",null,e.label)):e.label;return n().createElement(mz,{key:e.itemId,itemId:e.itemId,label:r,disabled:e.disabled,disableSelection:e.disableSelection},v_(e.children))}):null},b_=function(t){var r=t.id,i=t.items,o=void 0===i?[]:i,a=t.selectedItems,s=t.defaultSelectedItems,l=t.multiSelect,c=void 0!==l&&l,u=t.checkboxSelection,d=void 0!==u&&u,p=t.disableSelection,h=void 0!==p&&p,m=t.expandedItems,f=t.defaultExpandedItems,g=t.expansionTrigger,y=void 0===g?"content":g,v=t.disabledItemsFocusable,b=void 0!==v&&v,x=t.itemChildrenIndentation,I=void 0===x?"12px":x,w=t.height,k=t.sx,S=t.collapseIcon,M=t.expandIcon,C=t.endIcon,P=t.ariaLabel,E=t.ariaLabelledBy,T=t.setProps,A=(0,e.useMemo)(function(){var e={};return S&&(e.collapseIcon=n_(S)),M&&(e.expandIcon=n_(M)),C&&(e.endIcon=n_(C)),Object.keys(e).length>0?e:void 0},[S,M,C]),O=(0,e.useCallback)(function(e,t){T&&T({selectedItems:t})},[T]),j=(0,e.useCallback)(function(e,t){T&&T({expandedItems:t})},[T]),L=(0,e.useCallback)(function(e,t){T&&T({clickedItem:{itemId:t,event_timestamp:Date.now()}})},[T]),R=(0,e.useMemo)(function(){var e={};return w&&(e.height="number"==typeof w?"".concat(w,"px"):w),e},[w]);return n().createElement("div",{id:r,style:R},n().createElement(y_,{selectedItems:a,defaultSelectedItems:s,multiSelect:c,checkboxSelection:d,disableSelection:h,expandedItems:m,defaultExpandedItems:f,expansionTrigger:y,disabledItemsFocusable:b,itemChildrenIndentation:I,sx:k,slots:A,onSelectedItemsChange:O,onExpandedItemsChange:j,onItemClick:L,"aria-label":P,"aria-labelledby":E},v_(o)))};b_.propTypes={id:i().string,items:i().arrayOf(i().shape({itemId:i().string.isRequired,label:i().string.isRequired,children:i().array,disabled:i().bool,disableSelection:i().bool})),selectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),defaultSelectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),multiSelect:i().bool,checkboxSelection:i().bool,disableSelection:i().bool,expandedItems:i().arrayOf(i().string),defaultExpandedItems:i().arrayOf(i().string),expansionTrigger:i().oneOf(["content","iconContainer"]),disabledItemsFocusable:i().bool,itemChildrenIndentation:i().oneOfType([i().number,i().string]),height:i().oneOfType([i().number,i().string]),sx:i().object,collapseIcon:i().string,expandIcon:i().string,endIcon:i().string,ariaLabel:i().string,ariaLabelledBy:i().string,clickedItem:i().exact({itemId:i().string,event_timestamp:i().number}),setProps:i().func};const x_=b_,I_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",w_=e=>{let t,n,r,i,o,a,s,l="",c=0;for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");c>4,n=(15&o)<<4|a>>2,r=(3&a)<<6|s,l+=String.fromCharCode(t),64!=a&&(l+=String.fromCharCode(n)),64!=s&&(l+=String.fromCharCode(r));return l},k_=[];let S_=0;for(;S_<64;)k_[S_]=0|4294967296*Math.sin(++S_%Math.PI);let M_=function(e){return e.NotFound="NotFound",e.Invalid="Invalid",e.ExpiredAnnual="ExpiredAnnual",e.ExpiredAnnualGrace="ExpiredAnnualGrace",e.ExpiredVersion="ExpiredVersion",e.Valid="Valid",e.OutOfScope="OutOfScope",e.NotAvailableInInitialProPlan="NotAvailableInInitialProPlan",e}({});const C_=["pro","premium"],P_=["perpetual","annual","subscription"],E_=/^.*EXPIRY=([0-9]+),.*$/,T_=/^.*ORDER:([0-9]+),.*$/,A_=["x-data-grid-pro","x-date-pickers-pro"];function O_({releaseInfo:e,licenseKey:t,packageName:n}){if(!e)throw new Error("MUI X: The release information is missing. Not able to validate license.");if(!t)return{status:M_.NotFound};const r=t.substr(0,32),i=t.substr(32);if(r!==function(e){const t=[];let n,r,i,o=unescape(encodeURI(e))+"€",a=o.length;const s=[n=1732584193,r=4023233417,~n,~r];for(e=--a/4+2|15,t[--e]=8*a;~a;)t[a>>2]|=o.charCodeAt(a)<<8*a--;for(S_=o=0;S_>4]+k_[o]+~~t[S_|15&[o,5*o+1,3*o+5,7*o][a]])<<(a=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*a+o++%4])|i>>>-a),n,r])n=0|a[1],r=a[2];for(o=4;o;)s[--o]+=a[o]}for(e="";o<32;)e+=(s[o>>3]>>4*(1^o++)&15).toString(16);return e}(i))return{status:M_.Invalid};const o=function(e){const t=w_(e);return t.includes("KEYVERSION=1")?function(e){let t,n;try{t=parseInt(e.match(E_)[1],10),t&&!Number.isNaN(t)||(t=null),n=parseInt(e.match(T_)[1],10),n&&!Number.isNaN(n)||(n=null)}catch(e){t=null,n=null}return{version:1,licenseModel:"perpetual",planScope:"pro",planVersion:"initial",expiryTimestamp:t,expiryDate:t?new Date(t):null,orderId:n}}(t):t.includes("KV=2")?function(e){const t={version:2,licenseModel:null,planScope:null,planVersion:"initial",expiryTimestamp:null,expiryDate:null,orderId:null};return e.split(",").map(e=>e.split("=")).filter(e=>2===e.length).forEach(([e,n])=>{if("S"===e&&(t.planScope=n),"LM"===e&&(t.licenseModel=n),"E"===e){const e=parseInt(n,10);e&&!Number.isNaN(e)&&(t.expiryTimestamp=e,t.expiryDate=new Date(e))}if("PV"===e&&(t.planVersion=n),"O"===e){const e=parseInt(n,10);e&&!Number.isNaN(e)&&(t.orderId=e)}}),t}(t):null}(i);if(null==o)return console.error("MUI X: Error checking license. Key version not found!"),{status:M_.Invalid};if(null==o.licenseModel||!P_.includes(o.licenseModel))return console.error("MUI X: Error checking license. License model not found or invalid!"),{status:M_.Invalid};if(null==o.expiryTimestamp)return console.error("MUI X: Error checking license. Expiry timestamp not found or invalid!"),{status:M_.Invalid};o.licenseModel;{const t=parseInt(w_(e),10);if(Number.isNaN(t))throw new Error("MUI X: The release information is invalid. Not able to validate license.");if(o.expiryTimestamp{const e=r??j_.getLicenseKey();if($_[t]&&$_[t].key===e)return $_[t].licenseVerifier;const i=t.includes("premium")?"Premium":"Pro",o=O_({releaseInfo:n,licenseKey:e,packageName:t}),a=`@mui/${t}`;return p(h.licenseVerification({licenseKey:e},{packageName:t,packageReleaseInfo:n,licenseStatus:o?.status})),o.status===M_.Valid||(o.status===M_.Invalid?R_(["MUI X: Invalid license key.","","Your MUI X license key format isn't valid. It could be because the license key is missing a character or has a typo.","","To solve the issue, you need to double check that `setLicenseKey()` is called with the right argument","Please check the license key installation https://mui.com/r/x-license-key-installation."]):o.status===M_.NotAvailableInInitialProPlan?R_(["MUI X: Component not included in your license.","","The component you are trying to use is not included in the Pro Plan you purchased.","","Your license is from an old version of the Pro Plan that is only compatible with the `@mui/x-data-grid-pro` and `@mui/x-date-pickers-pro` commercial packages.","","To start using another Pro package, please consider reaching to our sales team to upgrade your license or visit https://mui.com/r/x-get-license to get a new license key."]):o.status===M_.OutOfScope?function({packageName:e}){const t=e.replace(/-(premium|pro)$/,"");R_(["MUI X: License key plan mismatch.","","Your use of MUI X is not compatible with the plan of your license key. The feature you are trying to use is not included in the plan of your license key. This happens if you try to use Data Grid Premium with a license key for the Pro plan.","","To solve the issue, you can upgrade your plan from Pro to Premium at https://mui.com/r/x-get-license?scope=premium.",`Or if you didn't intend to use Premium features, you can replace the import of \`${t}-premium\` with \`${t}-pro\`.`])}({packageName:a}):o.status===M_.NotFound?function({plan:e,packageName:t}){R_(["MUI X: Missing license key.","",`The license key is missing. You might not be allowed to use \`${t}\` which is part of MUI X ${e}.`,"","To solve the issue, you can check the free trial conditions: https://mui.com/r/x-license-trial.","If you are eligible no actions are required. If you are not eligible to the free trial, you need to purchase a license https://mui.com/r/x-get-license or stop using the software immediately."])}({plan:i,packageName:a}):o.status===M_.ExpiredAnnualGrace?function({plan:e,licenseKey:t,expiryTimestamp:n}){R_(["MUI X: Expired license key.","",`Your annual license key to use MUI X ${e} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${e} component (more details in https://mui.com/r/x-license-annual).`,"","To solve the problem you can either:","","- Renew your license https://mui.com/r/x-get-license and use the new key",`- Stop making changes to code depending directly or indirectly on MUI X ${e}'s APIs`,"","Note that your license is perpetual in production environments with any version released before your license term ends.","",`- License key expiry timestamp: ${new Date(n)}`,`- Installed license key: ${t}`,""])}(l({plan:i},o.meta)):o.status===M_.ExpiredAnnual?function({plan:e,licenseKey:t,expiryTimestamp:n}){throw new Error(["MUI X: Expired license key.","",`Your annual license key to use MUI X ${e} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${e} component (more details in https://mui.com/r/x-license-annual).`,"","To solve the problem you can either:","","- Renew your license https://mui.com/r/x-get-license and use the new key",`- Stop making changes to code depending directly or indirectly on MUI X ${e}'s APIs`,"","Note that your license is perpetual in production environments with any version released before your license term ends.","",`- License key expiry timestamp: ${new Date(n)}`,`- Installed license key: ${t}`,""].join("\n"))}(l({plan:i},o.meta)):o.status===M_.ExpiredVersion&&function({packageName:e}){R_(["MUI X: Expired package version.","",`You have installed a version of \`${e}\` that is outside of the maintenance plan of your license key. By default, commercial licenses provide access to new versions released during the first year after the purchase.`,"","To solve the issue, you can renew your license https://mui.com/r/x-get-license or install an older version of the npm package that is compatible with your license key."])}({packageName:a})),$_[t]={key:e,licenseVerifier:o},o},[t,n,r])}const N_=Object.is;function __(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;let n=0,r=0;for(const r in e){if(n+=1,!N_(e[r],t[r]))return!1;if(!(r in t))return!1}for(const e in t)r+=1;return n===r}function F_(e){switch(e){case M_.ExpiredAnnualGrace:case M_.ExpiredAnnual:return"MUI X Expired license key";case M_.ExpiredVersion:return"MUI X Expired package version";case M_.Invalid:return"MUI X Invalid license key";case M_.OutOfScope:return"MUI X License key plan mismatch";case M_.NotAvailableInInitialProPlan:return"MUI X Product not covered by plan";case M_.NotFound:return"MUI X Missing license key";default:throw new Error("Unhandled MUI X license status.")}}const H_=function(t){return e.memo(t,__)}(function(e){const{packageName:t,releaseInfo:n}=e,r=z_(t,n);return r.status===M_.Valid?null:(0,O.jsx)("div",{style:{position:"absolute",pointerEvents:"none",color:"#8282829e",zIndex:1e5,width:"100%",textAlign:"center",bottom:"50%",right:0,letterSpacing:5,fontSize:24},children:F_(r.status)})}),B_=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},V_=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n}({...i,...r}),s=B_(r),l=B_(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}},U_=e=>e,Y_=(()=>{let e=U_;return{configure(t){e=t},generate:t=>e(t),reset(){e=U_}}})(),W_={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 G_(e,t,n="Mui"){const r=W_[t];return r?`${n}-${r}`:`${Y_.generate(e)}-${t}`}function K_(e){return G_("MuiRichTreeViewPro",e)}!function(e,t,n="Mui"){const r={};["root","item","itemContent","itemGroupTransition","itemIconContainer","itemLabel","itemCheckbox","itemLabelInput","itemDragAndDropOverlay","itemErrorIcon","itemLoadingIcon"].forEach(t=>{r[t]=G_(e,t,n)})}("MuiRichTreeViewPro");const q_=["apiRef","slots","slotProps","disabledItemsFocusable","items","isItemDisabled","isItemSelectionDisabled","getItemLabel","getItemChildren","getItemId","onItemClick","itemChildrenIndentation","id","expandedItems","defaultExpandedItems","onExpandedItemsChange","onItemExpansionToggle","expansionTrigger","disableSelection","selectedItems","defaultSelectedItems","multiSelect","checkboxSelection","selectionPropagation","onSelectedItemsChange","onItemSelectionToggle","onItemFocus","onItemLabelChange","isItemEditable","dataSource","dataSourceCache","itemsReordering","isItemReorderable","canMoveItemToNewPosition","onItemPositionChange"];class X_{constructor({ttl:e=3e5}){this.cache={},this.ttl=e}set(e,t){const n=Date.now()+this.ttl;this.cache[e]={value:t,expiry:n}}get(e){const t=this.cache[e];if(t)return Date.now()>t.expiry?(delete this.cache[e],-1):t.value}clear(){this.cache={}}}let Z_=function(e){return e[e.QUEUED=0]="QUEUED",e[e.PENDING=1]="PENDING",e[e.SETTLED=2]="SETTLED",e[e.UNKNOWN=3]="UNKNOWN",e}({});class J_{pendingRequests=(()=>new Set)();queuedRequests=(()=>new Set)();settledRequests=(()=>new Set)();constructor(e,t=1/0){this.lazyLoadingPlugin=e,this.maxConcurrentRequests=t}processQueue=async()=>{if(0===this.queuedRequests.size||this.pendingRequests.size>=this.maxConcurrentRequests)return;const e=Math.min(this.maxConcurrentRequests-this.pendingRequests.size,this.queuedRequests.size);if(0===e)return;const t=Array.from(this.queuedRequests),n=[];for(let r=0;r{const t={};e.forEach(e=>{this.queuedRequests.add(e),t[e]=!0}),await this.processQueue()};setRequestSettled=async e=>{this.pendingRequests.delete(e),this.settledRequests.add(e),await this.processQueue()};clear=()=>{this.queuedRequests.clear(),Array.from(this.pendingRequests).forEach(e=>this.clearPendingRequest(e))};clearPendingRequest=async e=>{this.pendingRequests.delete(e),await this.processQueue()};getRequestStatus=e=>this.pendingRequests.has(e)?Z_.PENDING:this.queuedRequests.has(e)?Z_.QUEUED:this.settledRequests.has(e)?Z_.SETTLED:Z_.UNKNOWN;getActiveRequestsCount=()=>this.pendingRequests.size+this.queuedRequests.size}const Q_={loading:{},errors:{}};class eF{nestedDataManager=(()=>new J_(this))();constructor(e){this.store=e,this.cache=e.parameters.dataSourceCache??new X_({}),null!=e.parameters.dataSource&&(this.init(),e.subscribeEvent("beforeItemToggleExpansion",this.handleBeforeItemToggleExpansion))}init=()=>{const e=this.store,t=this;(async()=>{if(e.parameters.items.length){const t=function(e,t){return Object.values(e.state.itemMetaLookup).filter(n=>!n.expandable&&0!==t.getChildrenCount(e.state.itemModelLookup[n.id])).map(e=>e.id)}(e,e.parameters.dataSource);t.length>0&&e.expansion.addExpandableItems(t)}else await t.fetchItemChildren({itemId:null});await async function n(r){const i=r.filter(t=>C$.isItemExpanded(e.state,t));if(i.length>0){const r=i.filter(t=>0===S$.itemOrderedChildrenIds(e.state,t).length);r.length>0&&await t.fetchItems(r);const o=i.flatMap(t=>S$.itemOrderedChildrenIds(e.state,t));await n(o)}}(S$.itemOrderedChildrenIds(e.state,null))})()};handleBeforeItemToggleExpansion=async(e,t)=>{this.store.parameters.dataSource&&e.shouldBeExpanded&&(e.isExpansionPrevented=!0,await this.fetchItems([e.itemId]),L$.itemHasError(this.store.state,e.itemId)||(this.store.expansion.applyItemExpansion({itemId:e.itemId,shouldBeExpanded:!0,event:t}),A$.isItemSelected(this.store.state,e.itemId)&&this.store.selection.setItemSelection({event:t,itemId:e.itemId,keepExistingSelection:!0,shouldBeSelected:!0})))};setItemLoading=(e,t)=>{if(!this.store.parameters.dataSource||!this.store.state.lazyLoadedItems)return;if(L$.isItemLoading(this.store.state,e)===t)return;const n=e??b$,r=l({},this.store.state.lazyLoadedItems.loading);!1===t?delete r[n]:r[n]=t,this.store.set("lazyLoadedItems",l({},this.store.state.lazyLoadedItems,{loading:r}))};setItemError=(e,t)=>{if(!this.store.parameters.dataSource||!this.store.state.lazyLoadedItems)return;if(L$.itemError(this.store.state,e)===t)return;const n=e??b$,r=l({},this.store.state.lazyLoadedItems.errors);null===t&&void 0!==r[n]?delete r[n]:r[n]=t,this.store.set("lazyLoadedItems",l({},this.store.state.lazyLoadedItems,{errors:r}))};buildPublicAPI=()=>({updateItemChildren:this.updateItemChildren});fetchItems=e=>this.nestedDataManager.queue(e);updateItemChildren=e=>this.fetchItemChildren({itemId:e,forceRefresh:!0});fetchItemChildren=async({itemId:e,forceRefresh:t})=>{if(!this.store.parameters.dataSource)return;const{getChildrenCount:n,getTreeItems:r}=this.store.parameters.dataSource;if(null!=e&&!S$.itemMeta(this.store.state,e))return void this.nestedDataManager.clearPendingRequest(e);null!=e||L$.isEmpty(this.store.state)||this.store.set("lazyLoadedItems",Q_);const i=e??b$;if(!t){const t=this.cache.get(i);if(void 0!==t&&-1!==t)return null!=e&&this.nestedDataManager.setRequestSettled(e),this.store.items.setItemChildren({items:t,parentId:e,getChildrenCount:n}),void this.setItemLoading(e,!1);this.setItemLoading(e,!0),-1===t&&this.store.items.removeChildren(e)}L$.itemError(this.store.state,e)&&this.setItemError(e,null);try{let t;null==e?t=await r():(t=await r(e),this.nestedDataManager.setRequestSettled(e)),this.cache.set(i,t),this.store.items.setItemChildren({items:t,parentId:e,getChildrenCount:n})}catch(n){const r=n;this.setItemError(e,r),t&&this.store.items.removeChildren(e)}finally{this.setItemLoading(e,!1),null!=e&&this.nestedDataManager.setRequestSettled(e)}}}const tF=ne({memoize:J,memoizeOptions:{maxSize:1,equalityCheck:Object.is}}),nF=(e,t,n,r,i,o,a,s,...l)=>{if(l.length>0)throw new Error("Unsupported number of selectors");let c;if(e&&t&&n&&r&&i&&o&&a&&s)c=(l,c,u,d)=>{const p=e(l,c,u,d),h=t(l,c,u,d),m=n(l,c,u,d),f=r(l,c,u,d),g=i(l,c,u,d),y=o(l,c,u,d),v=a(l,c,u,d);return s(p,h,m,f,g,y,v,c,u,d)};else if(e&&t&&n&&r&&i&&o&&a)c=(s,l,c,u)=>{const d=e(s,l,c,u),p=t(s,l,c,u),h=n(s,l,c,u),m=r(s,l,c,u),f=i(s,l,c,u),g=o(s,l,c,u);return a(d,p,h,m,f,g,l,c,u)};else if(e&&t&&n&&r&&i&&o)c=(a,s,l,c)=>{const u=e(a,s,l,c),d=t(a,s,l,c),p=n(a,s,l,c),h=r(a,s,l,c),m=i(a,s,l,c);return o(u,d,p,h,m,s,l,c)};else if(e&&t&&n&&r&&i)c=(o,a,s,l)=>{const c=e(o,a,s,l),u=t(o,a,s,l),d=n(o,a,s,l),p=r(o,a,s,l);return i(c,u,d,p,a,s,l)};else if(e&&t&&n&&r)c=(i,o,a,s)=>{const l=e(i,o,a,s),c=t(i,o,a,s),u=n(i,o,a,s);return r(l,c,u,o,a,s)};else if(e&&t&&n)c=(r,i,o,a)=>{const s=e(r,i,o,a),l=t(r,i,o,a);return n(s,l,i,o,a)};else if(e&&t)c=(n,r,i,o)=>{const a=e(n,r,i,o);return t(a,r,i,o)};else{if(!e)throw new Error("Missing arguments");c=e}return c},rF=(...e)=>{const t=new WeakMap;let n=1;const r=e[e.length-1],i=e.length-1||1,o=Math.max(r.length-i,0);if(o>3)throw new Error("Unsupported number of arguments");return(i,a,s,l)=>{let c=i.__cacheKey__;c||(c={id:n},i.__cacheKey__=c,n+=1);let u=t.get(c);if(!u){const n=1===e.length?[e=>e,r]:e;let i=e;const a=[void 0,void 0,void 0];switch(o){case 0:break;case 1:i=[...n.slice(0,-1),()=>a[0],r];break;case 2:i=[...n.slice(0,-1),()=>a[0],()=>a[1],r];break;case 3:i=[...n.slice(0,-1),()=>a[0],()=>a[1],()=>a[2],r];break;default:throw new Error("Unsupported number of arguments")}u=tF(...i),u.selectorArgs=a,t.set(c,u)}switch(o){case 3:u.selectorArgs[2]=l;case 2:u.selectorArgs[1]=s;case 1:u.selectorArgs[0]=a}switch(o){case 0:return u(i);case 1:return u(i,a);case 2:return u(i,a,s);case 3:return u(i,a,s,l);default:throw new Error("unreachable")}}},iF={currentReorder:nF(e=>e.currentReorder),draggedItemProperties:rF(e=>e.currentReorder,S$.itemMetaLookup,(e,t,n)=>{if(!e||e.targetItemId!==n||null==e.action)return null;const r=null==e.newPosition?.parentId?0:t[n].depth+1;return{newPosition:e.newPosition,action:e.action,targetDepth:r}}),isDragging:nF(e=>!!e.currentReorder?.draggedItemId),canItemBeReordered:nF(e=>e.isItemReorderable,R$.isAnyItemBeingEdited,(e,t,n)=>!t&&e(n))},oF=(e,t,n)=>{const r=S$.itemMeta(e.state,t);return r.parentId===n||null!=r.parentId&&oF(e,r.parentId,n)},aF=parseInt(e.version,10)>=19?function(t,n,r,i,o){const a=e.useCallback(()=>n(t.getSnapshot(),r,i,o),[t,n,r,i,o]);return(0,N.useSyncExternalStore)(t.subscribe,a,a)}:function(e,t,n,r,i){return(0,_.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,e=>t(e,n,r,i))};function sF(e,t,n,r,i){return aF(e,t,n,r,i)}const lF=({props:t})=>{const{store:n}=FD(),{itemId:r}=t,i=e.useRef(null),o=sF(n,iF.draggedItemProperties,r),a=sF(n,iF.canItemBeReordered,r),s=sF(n,iF.isDragging,r);return{propsEnhancers:{root:({rootRefObject:e,contentRefObject:t,externalEventHandlers:i})=>({draggable:!!a||void 0,onDragStart:o=>{if(i.onDragStart?.(o),!a||o.defaultMuiPrevented||o.defaultPrevented)return;if(V$(o.target,e.current))return;o.dataTransfer.effectAllowed="move",o.dataTransfer.setDragImage(t.current,0,0);const{types:s}=o.dataTransfer;!navigator.userAgent.toLowerCase().includes("android")||s.includes("text/plain")||s.includes("text/uri-list")||o.dataTransfer.setData("text/plain","android-fallback"),o.dataTransfer.setData("application/mui-x",""),n.itemsReordering.startDraggingItem(r)},onDragOver:e=>{i.onDragOver?.(e),e.defaultMuiPrevented||e.preventDefault()},onDragEnd:e=>{i.onDragEnd?.(e),e.defaultMuiPrevented||("none"!==e.dataTransfer.dropEffect?n.itemsReordering.completeDraggingItem(r):n.itemsReordering.cancelDraggingItem())}}),content:({externalEventHandlers:e,contentRefObject:t})=>s?{onDragEnter:t=>{e.onDragEnter?.(t),t.defaultMuiPrevented||(i.current=n.itemsReordering.getDroppingTargetValidActions(r))},onDragOver:o=>{if(e.onDragOver?.(o),o.defaultMuiPrevented||null==i.current||!t.current)return;const a=t.current.getBoundingClientRect(),s=o.clientY-a.top,l=o.clientX-a.left;n.itemsReordering.setDragTargetItem({itemId:r,validActions:i.current,targetHeight:a.height,cursorY:s,cursorX:l,contentElement:t.current})}}:{},dragAndDropOverlay:()=>o?{action:o.action,style:{"--TreeView-targetDepth":o.targetDepth}}:{}}}};class cF{constructor(e){this.store=e,e.itemPluginManager.register(lF,null)}getDroppingTargetValidActions=e=>{const t=iF.currentReorder(this.store.state);if(!t)throw new Error("There is no ongoing reordering.");if(e===t.draggedItemId)return{};const n=this.store.parameters.canMoveItemToNewPosition,r=S$.itemMeta(this.store.state,e),i=S$.itemIndex(this.store.state,r.id),o=S$.itemMeta(this.store.state,t.draggedItemId),a=S$.itemIndex(this.store.state,o.id),s=i===S$.itemOrderedChildrenIds(this.store.state,r.parentId).length-1,l={parentId:o.parentId,index:a},c={"make-child":{parentId:r.id,index:0},"reorder-above":{parentId:r.parentId,index:r.parentId===o.parentId&&i>a?i-1:i},"reorder-below":!r.expandable||s?{parentId:r.parentId,index:r.parentId===o.parentId&&i>a?i:i+1}:null,"move-to-parent":null==r.parentId?null:{parentId:r.parentId,index:S$.itemOrderedChildrenIds(this.store.state,r.parentId).length}},u={};return Object.keys(c).forEach(e=>{const r=c[e];null!=r&&(e=>{let r;return r=(e.parentId!==l.parentId||e.index!==l.index)&&(!n||n({itemId:t.draggedItemId,oldPosition:l,newPosition:e})),r})(r)&&(u[e]=r)}),u};startDraggingItem=e=>{R$.isItemBeingEdited(this.store.state,e)||this.store.set("currentReorder",{targetItemId:e,draggedItemId:e,action:null,newPosition:null})};cancelDraggingItem=()=>{this.store.set("currentReorder",null)};completeDraggingItem=e=>{const t=iF.currentReorder(this.store.state);if(null==t||t.draggedItemId!==e)return;if(t.draggedItemId===t.targetItemId||null==t.action||null==t.newPosition)return void this.cancelDraggingItem();const n=S$.itemMeta(this.store.state,t.draggedItemId),r={parentId:n.parentId,index:S$.itemIndex(this.store.state,n.id)},i=t.newPosition;this.store.update(l({currentReorder:null},(({itemToMoveId:e,oldPosition:t,newPosition:n,prevState:r})=>{const i=r.itemMetaLookup[e],o=t.parentId??b$,a=n.parentId??b$,s=l({},r.itemOrderedChildrenIdsLookup);if(o===a){const r=[...s[o]];r.splice(t.index,1),r.splice(n.index,0,e),s[i.parentId??b$]=r}else{const r=[...s[o]];r.splice(t.index,1),s[o]=r;const i=[...s[a]??[]];i.splice(n.index,0,e),s[a]=i}const c=l({},r.itemChildrenIndexesLookup);c[o]=x$(s[o]),a!==o&&(c[a]=x$(s[a]));const u=l({},r.itemMetaLookup);function d(e){const t=s[e].length>0;u[e].expandable!==t&&(u[e]=l({},u[e],{expandable:t}))}o!==b$&&o!==a&&d(o),a!==b$&&a!==o&&d(a);const p=null==n.parentId?0:u[a].depth+1;u[e]=l({},i,{parentId:n.parentId,depth:p});const h=(e,t)=>{u[e]=l({},u[e],{depth:t}),s[e]?.forEach(e=>h(e,t+1))};return s[e]?.forEach(e=>h(e,p+1)),{itemOrderedChildrenIdsLookup:s,itemChildrenIndexesLookup:c,itemMetaLookup:u}})({itemToMoveId:e,newPosition:i,oldPosition:r,prevState:this.store.state})));const o=this.store.parameters.onItemPositionChange;o?.({itemId:e,newPosition:i,oldPosition:r})};setDragTargetItem=({itemId:e,validActions:t,targetHeight:n,cursorY:r,cursorX:i,contentElement:o})=>{const a=this.store.state.currentReorder;if(null==a||oF(this.store,e,a.draggedItemId))return;const s=(({itemChildrenIndentation:e,validActions:t,targetHeight:n,targetDepth:r,cursorX:i,cursorY:o,contentElement:a})=>{let s;const l=((e,t)=>{if("number"==typeof e)return e;const n=/^(\d.+)(px)$/.exec(e);if(n)return parseFloat(n[1]);const r=document.createElement("div");r.style.width=e,r.style.position="absolute",t.appendChild(r);const i=r.offsetWidth;return t.removeChild(r),i})(e,a);return s=t["move-to-parent"]&&i3/4*n?"reorder-below":"make-child":t["reorder-above"]&&o<.5*n?"reorder-above":t["reorder-below"]&&o>=.5*n?"reorder-below":null,s})({itemChildrenIndentation:this.store.state.itemChildrenIndentation,validActions:t,targetHeight:n,targetDepth:this.store.state.itemMetaLookup[e].depth,cursorY:r,cursorX:i,contentElement:o}),c=null==s?null:t[s];a.targetItemId===e&&a.action===s&&a.newPosition?.parentId===c?.parentId&&a.newPosition?.index===c?.index||this.store.set("currentReorder",l({},a,{targetItemId:e,newPosition:c,action:s}))}}const uF=()=>!0,dF=()=>!1,pF=e=>({lazyLoadedItems:e.dataSource?Q_:null,currentReorder:null,isItemReorderable:e.itemsReordering?e.isItemReorderable??uF:dF}),hF={getInitialState:(e,t)=>l({},qz.rawMapper.getInitialState(e,t),pF(t)),updateStateFromParameters:(e,t,n)=>l({},qz.rawMapper.updateStateFromParameters(e,t,n),pF(t)),shouldIgnoreItemsStateUpdate:e=>!!e.dataSource};class mF extends qz{itemsReordering=(()=>new cF(this))();constructor(e){super(e,"RichTreeViewPro",hF),this.lazyLoading=new eF(this)}buildPublicAPI(){return l({},super.buildPublicAPI(),this.lazyLoading.buildPublicAPI())}}const fF=Lh,gF=bm("ul",{name:"MuiRichTreeViewPro",slot:"Root"})({padding:0,margin:0,listStyle:"none",outline:0,position:"relative"}),yF="MTc3MTU0NTYwMDAwMA==",vF=e.forwardRef(function(t,n){const r=fF({props:t,name:"MuiRichTreeViewPro"});z_("x-tree-view-pro",yF);const{slots:i,slotProps:o,apiRef:a,parameters:s,forwardedProps:c}=function(t){const{apiRef:n,slots:r,slotProps:i,disabledItemsFocusable:o,items:a,isItemDisabled:s,isItemSelectionDisabled:l,getItemLabel:c,getItemChildren:u,getItemId:d,onItemClick:p,itemChildrenIndentation:h,id:m,expandedItems:f,defaultExpandedItems:g,onExpandedItemsChange:y,onItemExpansionToggle:v,expansionTrigger:b,disableSelection:x,selectedItems:I,defaultSelectedItems:w,multiSelect:k,checkboxSelection:S,selectionPropagation:M,onSelectedItemsChange:C,onItemSelectionToggle:P,onItemFocus:E,onItemLabelChange:T,isItemEditable:A,dataSource:O,dataSourceCache:j,itemsReordering:L,isItemReorderable:R,canMoveItemToNewPosition:D,onItemPositionChange:$}=t,z=tt(t,q_);return{apiRef:n,slots:r,slotProps:i,parameters:e.useMemo(()=>({disabledItemsFocusable:o,items:a,isItemDisabled:s,isItemSelectionDisabled:l,getItemLabel:c,getItemChildren:u,getItemId:d,onItemClick:p,itemChildrenIndentation:h,id:m,expandedItems:f,defaultExpandedItems:g,onExpandedItemsChange:y,onItemExpansionToggle:v,expansionTrigger:b,disableSelection:x,selectedItems:I,defaultSelectedItems:w,multiSelect:k,checkboxSelection:S,selectionPropagation:M,onSelectedItemsChange:C,onItemSelectionToggle:P,onItemFocus:E,onItemLabelChange:T,isItemEditable:A,dataSource:O,dataSourceCache:j,itemsReordering:L,isItemReorderable:R,canMoveItemToNewPosition:D,onItemPositionChange:$}),[o,a,s,l,c,u,d,p,h,m,f,g,y,v,b,x,I,w,k,S,M,C,P,E,T,A,O,j,L,R,D,$]),forwardedProps:z}}(r),u=Mz(mF,s),d=e.useRef(null),p=Iz(u,c,sD(n,d)),h=(t=>{const{classes:n}=t;return e.useMemo(()=>function(e,t,n){const r={};for(const i in e){const o=e[i];let a="",s=!0;for(let e=0;e{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}(c,s?.ref,t.additionalProps?.ref);return function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}}(n,{...l,ref:u},i)}({elementType:m,externalSlotProps:o?.root,className:h.root,getSlotProps:p,ownerState:r});return(0,O.jsx)(VD,{store:u,classes:h,slots:i,slotProps:o,apiRef:a,rootRef:d,children:(0,O.jsx)($$.Provider,{value:S$.itemDepth,children:(0,O.jsxs)(m,l({},f,{children:[(0,O.jsx)(xz,{slots:i,slotProps:o}),(0,O.jsx)(H_,{packageName:"x-tree-view-pro",releaseInfo:yF})]}))})})}),bF=e.createContext(null);function xF(){return e.useContext(bF)}const IF="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__",wF=function(t){const{children:n,theme:r}=t,i=xF(),o=e.useMemo(()=>{const e=null===i?{...r}:function(e,t){return"function"==typeof t?t(e):{...e,...t}}(i,r);return null!=e&&(e[IF]=null!==i),e},[r,i]);return(0,O.jsx)(bF.Provider,{value:o,children:n})};function kF(e){const{styles:t,defaultTheme:n={}}=e,r="function"==typeof t?e=>{return t(null==(r=e)||0===Object.keys(r).length?n:e);var r}:t;return(0,O.jsx)(Ty,{styles:r})}function SF(e){const t=sm(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles=`@layer global{${t.styles}}`),t):e}const MF=function({styles:e,themeId:t,defaultTheme:n={}}){const r=Zd(n),i=t&&r[t]||r;let o="function"==typeof e?e(i):e;return i.modularCssLayers&&(o=Array.isArray(o)?o.map(e=>SF("function"==typeof e?e(i):e)):SF(o)),(0,O.jsx)(kF,{styles:o})},CF={};function PF(t,n,r,i=!1){return e.useMemo(()=>{const e=t&&n[t]||n;if("function"==typeof r){const o=r(e),a=t?{...n,[t]:o}:o;return i?()=>a:a}return t?{...n,[t]:r}:{...n,...r}},[t,n,r,i])}const EF=function(e){const{children:t,theme:n,themeId:r}=e,i=qd(CF),o=xF()||CF,a=PF(r,i,n),s=PF(r,o,n,!0),l="rtl"===(r?a[r]:a).direction,c=function(e){const t=qd(),n=Rg()||"",{modularCssLayers:r}=e;let i="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return i=r&&null===t?"string"==typeof r?r.replace(/mui(?!\.)/g,i):`@layer ${i};`:"",qm(()=>{const e=document.querySelector("head");if(!e)return;const t=e.firstChild;if(i){if(t&&t.hasAttribute?.("data-mui-layer-order")&&t.getAttribute("data-mui-layer-order")===n)return;const r=document.createElement("style");r.setAttribute("data-mui-layer-order",n),r.textContent=i,e.prepend(r)}else e.querySelector(`style[data-mui-layer-order="${n}"]`)?.remove()},[i,n]),i?(0,O.jsx)(MF,{styles:i}):null}(a);return(0,O.jsx)(wF,{theme:s,children:(0,O.jsx)(Ud.Provider,{value:a,children:(0,O.jsx)(Xh,{value:l,children:(0,O.jsxs)(Sm,{value:r?a[r].components:a.components,children:[c,t]})})})})};function TF({theme:e,...t}){const n=jh in e?e[jh]:void 0;return(0,O.jsx)(EF,{...t,themeId:n?jh:void 0,theme:n||e})}const AF="mode",OF="color-scheme",jF="data-color-scheme";function LF(){}const RF=({key:e,storageWindow:t})=>(t||"undefined"==typeof window||(t=window),{get(n){if("undefined"==typeof window)return;if(!t)return n;let r;try{r=t.localStorage.getItem(e)}catch{}return r||n},set:n=>{if(t)try{t.localStorage.setItem(e,n)}catch{}},subscribe:n=>{if(!t)return LF;const r=t=>{const r=t.newValue;t.key===e&&n(r)};return t.addEventListener("storage",r),()=>{t.removeEventListener("storage",r)}}});function DF(){}function $F(e){if("undefined"!=typeof window&&"function"==typeof window.matchMedia&&"system"===e)return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function zF(e,t){return"light"===e.mode||"system"===e.mode&&"light"===e.systemMode?t("light"):"dark"===e.mode||"system"===e.mode&&"dark"===e.systemMode?t("dark"):void 0}const NF="mui-color-scheme",_F="light",FF="dark",HF="mui-mode",{CssVarsProvider:BF,useColorScheme:VF,getInitColorSchemeScript:UF}=function(t){const{themeId:n,theme:r={},modeStorageKey:i=AF,colorSchemeStorageKey:o=OF,disableTransitionOnChange:a=!1,defaultColorScheme:s,resolveTheme:l}=t,c={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},u=e.createContext(void 0),d={},p={},h="string"==typeof s?s:s.light,m="string"==typeof s?s:s.dark;return{CssVarsProvider:function(t){const{children:c,theme:h,modeStorageKey:m=i,colorSchemeStorageKey:f=o,disableTransitionOnChange:g=a,storageManager:y,storageWindow:v=("undefined"==typeof window?void 0:window),documentNode:b=("undefined"==typeof document?void 0:document),colorSchemeNode:x=("undefined"==typeof document?void 0:document.documentElement),disableNestedContext:I=!1,disableStyleSheetGeneration:w=!1,defaultMode:k="system",noSsr:S}=t,M=e.useRef(!1),C=xF(),P=e.useContext(u),E=!!P&&!I,T=e.useMemo(()=>h||("function"==typeof r?r():r),[h]),A=T[n],j=A||T,{colorSchemes:L=d,components:R=p,cssVarPrefix:D}=j,$=Object.keys(L).filter(e=>!!L[e]).join(","),z=e.useMemo(()=>$.split(","),[$]),N="string"==typeof s?s:s.light,_="string"==typeof s?s:s.dark,F=L[N]&&L[_]?k:L[j.defaultColorScheme]?.palette?.mode||j.palette?.mode,{mode:H,setMode:B,systemMode:V,lightColorScheme:U,darkColorScheme:Y,colorScheme:W,setColorScheme:G}=function(t){const{defaultMode:n="light",defaultLightColorScheme:r,defaultDarkColorScheme:i,supportedColorSchemes:o=[],modeStorageKey:a=AF,colorSchemeStorageKey:s=OF,storageWindow:l=("undefined"==typeof window?void 0:window),storageManager:c=RF,noSsr:u=!1}=t,d=o.join(","),p=o.length>1,h=e.useMemo(()=>c?.({key:a,storageWindow:l}),[c,a,l]),m=e.useMemo(()=>c?.({key:`${s}-light`,storageWindow:l}),[c,s,l]),f=e.useMemo(()=>c?.({key:`${s}-dark`,storageWindow:l}),[c,s,l]),[g,y]=e.useState(()=>{const e=h?.get(n)||n,t=m?.get(r)||r,o=f?.get(i)||i;return{mode:e,systemMode:$F(e),lightColorScheme:t,darkColorScheme:o}}),[v,b]=e.useState(u||!p);e.useEffect(()=>{b(!0)},[]);const x=function(e){return zF(e,t=>"light"===t?e.lightColorScheme:"dark"===t?e.darkColorScheme:void 0)}(g),I=e.useCallback(e=>{y(t=>{if(e===t.mode)return t;const r=e??n;return h?.set(r),{...t,mode:r,systemMode:$F(r)}})},[h,n]),w=e.useCallback(e=>{e?"string"==typeof e?e&&!d.includes(e)?console.error(`\`${e}\` does not exist in \`theme.colorSchemes\`.`):y(t=>{const n={...t};return zF(t,t=>{"light"===t&&(m?.set(e),n.lightColorScheme=e),"dark"===t&&(f?.set(e),n.darkColorScheme=e)}),n}):y(t=>{const n={...t},o=null===e.light?r:e.light,a=null===e.dark?i:e.dark;return o&&(d.includes(o)?(n.lightColorScheme=o,m?.set(o)):console.error(`\`${o}\` does not exist in \`theme.colorSchemes\`.`)),a&&(d.includes(a)?(n.darkColorScheme=a,f?.set(a)):console.error(`\`${a}\` does not exist in \`theme.colorSchemes\`.`)),n}):y(e=>(m?.set(r),f?.set(i),{...e,lightColorScheme:r,darkColorScheme:i}))},[d,m,f,r,i]),k=e.useCallback(e=>{"system"===g.mode&&y(t=>{const n=e?.matches?"dark":"light";return t.systemMode===n?t:{...t,systemMode:n}})},[g.mode]),S=e.useRef(k);return S.current=k,e.useEffect(()=>{if("function"!=typeof window.matchMedia||!p)return;const e=(...e)=>S.current(...e),t=window.matchMedia("(prefers-color-scheme: dark)");return t.addListener(e),e(t),()=>{t.removeListener(e)}},[p]),e.useEffect(()=>{if(p){const e=h?.subscribe(e=>{e&&!["light","dark","system"].includes(e)||I(e||n)})||DF,t=m?.subscribe(e=>{e&&!d.match(e)||w({light:e})})||DF,r=f?.subscribe(e=>{e&&!d.match(e)||w({dark:e})})||DF;return()=>{e(),t(),r()}}},[w,I,d,n,l,p,h,m,f]),{...g,mode:v?g.mode:void 0,systemMode:v?g.systemMode:void 0,colorScheme:v?x:void 0,setMode:I,setColorScheme:w}}({supportedColorSchemes:z,defaultLightColorScheme:N,defaultDarkColorScheme:_,modeStorageKey:m,colorSchemeStorageKey:f,defaultMode:F,storageManager:y,storageWindow:v,noSsr:S});let K=H,q=W;E&&(K=P.mode,q=P.colorScheme);const X=e.useMemo(()=>{const e=q||j.defaultColorScheme,t=j.generateThemeVars?.()||j.vars,n={...j,components:R,colorSchemes:L,cssVarPrefix:D,vars:t};if("function"==typeof n.generateSpacing&&(n.spacing=n.generateSpacing()),e){const t=L[e];t&&"object"==typeof t&&Object.keys(t).forEach(e=>{t[e]&&"object"==typeof t[e]?n[e]={...n[e],...t[e]}:n[e]=t[e]})}return l?l(n):n},[j,q,R,L,D]),Z=j.colorSchemeSelector;qm(()=>{if(q&&x&&Z&&"media"!==Z){const e=Z;let t=Z;if("class"===e&&(t=".%s"),"data"===e&&(t="[data-%s]"),e?.startsWith("data-")&&!e.includes("%s")&&(t=`[${e}="%s"]`),t.startsWith("."))x.classList.remove(...z.map(e=>t.substring(1).replace("%s",e))),x.classList.add(t.substring(1).replace("%s",q));else{const e=t.replace("%s",q).match(/\[([^\]]+)\]/);if(e){const[t,n]=e[1].split("=");n||z.forEach(e=>{x.removeAttribute(t.replace(q,e))}),x.setAttribute(t,n?n.replace(/"|'/g,""):"")}else x.setAttribute(t,q)}}},[q,Z,x,z]),e.useEffect(()=>{let e;if(g&&M.current&&b){const t=b.createElement("style");t.appendChild(b.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),b.head.appendChild(t),window.getComputedStyle(b.body),e=setTimeout(()=>{b.head.removeChild(t)},1)}return()=>{clearTimeout(e)}},[q,g,b]),e.useEffect(()=>(M.current=!0,()=>{M.current=!1}),[]);const J=e.useMemo(()=>({allColorSchemes:z,colorScheme:q,darkColorScheme:Y,lightColorScheme:U,mode:K,setColorScheme:G,setMode:B,systemMode:V}),[z,q,Y,U,K,G,B,V,X.colorSchemeSelector]);let Q=!0;(w||!1===j.cssVariables||E&&C?.cssVarPrefix===D)&&(Q=!1);const ee=(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(EF,{themeId:A?n:void 0,theme:X,children:c}),Q&&(0,O.jsx)(kF,{styles:X.generateStyleSheets?.()||[]})]});return E?ee:(0,O.jsx)(u.Provider,{value:J,children:ee})},useColorScheme:()=>e.useContext(u)||c,getInitColorSchemeScript:e=>function(e){const{defaultMode:t="system",defaultLightColorScheme:n="light",defaultDarkColorScheme:r="dark",modeStorageKey:i=AF,colorSchemeStorageKey:o=OF,attribute:a=jF,colorSchemeNode:s="document.documentElement",nonce:l}=e||{};let c="",u=a;if("class"===a&&(u=".%s"),"data"===a&&(u="[data-%s]"),u.startsWith(".")){const e=u.substring(1);c+=`${s}.classList.remove('${e}'.replace('%s', light), '${e}'.replace('%s', dark));\n ${s}.classList.add('${e}'.replace('%s', colorScheme));`}const d=u.match(/\[([^\]]+)\]/);if(d){const[e,t]=d[1].split("=");t||(c+=`${s}.removeAttribute('${e}'.replace('%s', light));\n ${s}.removeAttribute('${e}'.replace('%s', dark));`),c+=`\n ${s}.setAttribute('${e}'.replace('%s', colorScheme), ${t?`${t}.replace('%s', colorScheme)`:'""'});`}else c+=`${s}.setAttribute('${u}', colorScheme);`;return(0,O.jsx)("script",{suppressHydrationWarning:!0,nonce:"undefined"==typeof window?l:"",dangerouslySetInnerHTML:{__html:`(function() {\ntry {\n let colorScheme = '';\n const mode = localStorage.getItem('${i}') || '${t}';\n const dark = localStorage.getItem('${o}-dark') || '${r}';\n const light = localStorage.getItem('${o}-light') || '${n}';\n if (mode === 'system') {\n // handle system mode\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n if (mql.matches) {\n colorScheme = dark\n } else {\n colorScheme = light\n }\n }\n if (mode === 'light') {\n colorScheme = light;\n }\n if (mode === 'dark') {\n colorScheme = dark;\n }\n if (colorScheme) {\n ${c}\n }\n} catch(e){}})();`}},"mui-color-scheme-init")}({colorSchemeStorageKey:o,defaultLightColorScheme:h,defaultDarkColorScheme:m,modeStorageKey:i,...e})}}({themeId:jh,theme:()=>Ah({cssVariables:!0}),colorSchemeStorageKey:NF,modeStorageKey:HF,defaultColorScheme:{light:_F,dark:FF},resolveTheme:e=>{const t={...e,typography:oh(e.palette,e.typography)};return t.unstable_sx=function(e){return xu({sx:e,theme:this})},t}}),YF=BF;function WF({theme:t,...n}){const r=e.useMemo(()=>{if("function"==typeof t)return t;const e=jh in t?t[jh]:t;return"colorSchemes"in e?null:"vars"in e?t:{...t,vars:null}},[t]);return r?(0,O.jsx)(TF,{theme:r,...n}):(0,O.jsx)(YF,{theme:t,...n})}const GF={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"};function KF(e,t,n,r,i){return 1===n?Math.min(e+t,i):Math.max(e-t,r)}function qF(e,t){return e-t}function XF(e,t){const{index:n}=e.reduce((e,n,r)=>{const i=Math.abs(t-n);return null===e||ie===t){return e.length===t.length&&e.every((e,r)=>n(e,t[r]))}(e,t)}const nH={horizontal:{offset:e=>({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},rH=e=>e;let iH;function oH(){return void 0===iH&&(iH="undefined"==typeof CSS||"function"!=typeof CSS.supports||CSS.supports("touch-action","none")),iH}function aH(t){const{"aria-labelledby":n,defaultValue:r,disabled:i=!1,disableSwap:o=!1,isRtl:a=!1,marks:s=!1,max:l=100,min:c=0,name:u,onChange:d,onChangeCommitted:p,orientation:h="horizontal",rootRef:m,scale:f=rH,step:g=1,shiftStep:y=10,tabIndex:v,value:b}=t,x=e.useRef(void 0),[I,w]=e.useState(-1),[k,S]=e.useState(-1),[M,C]=e.useState(!1),P=e.useRef(0),E=e.useRef(null),[T,A]=$g({controlled:b,default:r??c,name:"Slider"}),O=d&&((e,t,n)=>{const r=e.nativeEvent||e,i=new r.constructor(r.type,r);Object.defineProperty(i,"target",{writable:!0,value:{value:t,name:u}}),E.current=t,d(i,t,n)}),j=Array.isArray(T);let L=j?T.slice().sort(qF):[T];L=L.map(e=>null==e?c:Jd(e,c,l));const R=!0===s&&null!==g?[...Array(Math.floor((l-c)/g)+1)].map((e,t)=>({value:c+g*t})):s||[],D=R.map(e=>e.value),[$,z]=e.useState(-1),N=e.useRef(null),_=Bm(m,N),F=e=>t=>{const n=Number(t.currentTarget.getAttribute("data-index"));Zh(t.target)&&z(n),S(n),e?.onFocus?.(t)},H=e=>t=>{Zh(t.target)||z(-1),S(-1),e?.onBlur?.(t)},B=(e,t)=>{const n=Number(e.currentTarget.getAttribute("data-index")),r=L[n],i=D.indexOf(r);let a=t;if(R&&null==g){const e=D[D.length-1];a=a>=e?e:a<=D[0]?D[0]:at=>{if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","PageUp","PageDown","Home","End"].includes(t.key)){t.preventDefault();const e=Number(t.currentTarget.getAttribute("data-index")),n=L[e];let r=null;if(null!=g){const e=t.shiftKey?y:g;switch(t.key){case"ArrowUp":r=KF(n,e,1,c,l);break;case"ArrowRight":r=KF(n,e,a?-1:1,c,l);break;case"ArrowDown":r=KF(n,e,-1,c,l);break;case"ArrowLeft":r=KF(n,e,a?1:-1,c,l);break;case"PageUp":r=KF(n,y,1,c,l);break;case"PageDown":r=KF(n,y,-1,c,l);break;case"Home":r=c;break;case"End":r=l}}else if(R){const e=D[D.length-1],i=D.indexOf(n),o=[a?"ArrowLeft":"ArrowRight","ArrowUp","PageUp","End"];[a?"ArrowRight":"ArrowLeft","ArrowDown","PageDown","Home"].includes(t.key)?r=0===i?D[0]:D[i-1]:o.includes(t.key)&&(r=i===D.length-1?e:D[i+1])}null!=r&&B(t,r)}e?.onKeyDown?.(t)};qm(()=>{i&&N.current.contains(document.activeElement)&&document.activeElement?.blur()},[i]),i&&-1!==I&&w(-1),i&&-1!==$&&z(-1);const U=e.useRef(void 0);let Y=h;a&&"horizontal"===h&&(Y+="-reverse");const W=({finger:e,move:t=!1})=>{const{current:n}=N,{width:r,height:i,bottom:a,left:s}=n.getBoundingClientRect();let u,d;if(u=Y.startsWith("vertical")?(a-e.y)/i:(e.x-s)/r,Y.includes("-reverse")&&(u=1-u),d=function(e,t,n){return(n-t)*e+t}(u,c,l),g)d=function(e,t,n){const r=Math.round((e-n)/t)*t+n;return Number(r.toFixed(function(e){if(Math.abs(e)<1){const t=e.toExponential().split("e-"),n=t[0].split(".")[1];return(n?n.length:0)+parseInt(t[1],10)}const t=e.toString().split(".")[1];return t?t.length:0}(t)))}(d,g,c);else{const e=XF(D,d);d=D[e]}d=Jd(d,c,l);let p=0;if(j){p=t?U.current:XF(L,d),o&&(d=Jd(d,L[p-1]||-1/0,L[p+1]||1/0));const e=d;d=QF({values:L,newValue:d,index:p}),o&&t||(p=d.indexOf(e),U.current=p)}return{newValue:d,activeIndex:p}},G=Ag(e=>{const t=ZF(e,x);if(!t)return;if(P.current+=1,"mousemove"===e.type&&0===e.buttons)return void K(e);const{newValue:n,activeIndex:r}=W({finger:t,move:!0});eH({sliderRef:N,activeIndex:r,setActive:w}),A(n),!M&&P.current>2&&C(!0),O&&!tH(n,T)&&O(e,n,r)}),K=Ag(e=>{const t=ZF(e,x);if(C(!1),!t)return;const{newValue:n}=W({finger:t,move:!0});w(-1),"touchend"===e.type&&S(-1),p&&p(e,E.current??n),x.current=void 0,X()}),q=Ag(e=>{if(i)return;oH()||e.preventDefault();const t=e.changedTouches[0];null!=t&&(x.current=t.identifier);const n=ZF(e,x);if(!1!==n){const{newValue:t,activeIndex:r}=W({finger:n});eH({sliderRef:N,activeIndex:r,setActive:w}),A(t),O&&!tH(t,T)&&O(e,t,r)}P.current=0;const r=Xm(N.current);r.addEventListener("touchmove",G,{passive:!0}),r.addEventListener("touchend",K,{passive:!0})}),X=e.useCallback(()=>{const e=Xm(N.current);e.removeEventListener("mousemove",G),e.removeEventListener("mouseup",K),e.removeEventListener("touchmove",G),e.removeEventListener("touchend",K)},[K,G]);e.useEffect(()=>{const{current:e}=N;return e.addEventListener("touchstart",q,{passive:oH()}),()=>{e.removeEventListener("touchstart",q),X()}},[X,q]),e.useEffect(()=>{i&&X()},[i,X]);const Z=JF(j?L[0]:c,c,l),J=JF(L[L.length-1],c,l)-Z,Q=e=>t=>{e.onMouseLeave?.(t),S(-1)};let ee;return"vertical"===h&&(ee=a?"vertical-rl":"vertical-lr"),{active:I,axis:Y,axisProps:nH,dragging:M,focusedThumbIndex:$,getHiddenInputProps:(e={})=>{const r=dg(e),o={onChange:(s=r||{},e=>{s.onChange?.(e),B(e,e.target.valueAsNumber)}),onFocus:F(r||{}),onBlur:H(r||{}),onKeyDown:V(r||{})};var s;const d={...r,...o};return{tabIndex:v,"aria-labelledby":n,"aria-orientation":h,"aria-valuemax":f(l),"aria-valuemin":f(c),name:u,type:"range",min:t.min,max:t.max,step:null===t.step&&t.marks?"any":t.step??void 0,disabled:i,...e,...d,style:{...GF,direction:a?"rtl":"ltr",width:"100%",height:"100%",writingMode:ee}}},getRootProps:(e={})=>{const t=dg(e),n={onMouseDown:(r=t||{},e=>{if(r.onMouseDown?.(e),i)return;if(e.defaultPrevented)return;if(0!==e.button)return;e.preventDefault();const t=ZF(e,x);if(!1!==t){const{newValue:n,activeIndex:r}=W({finger:t});eH({sliderRef:N,activeIndex:r,setActive:w}),A(n),O&&!tH(n,T)&&O(e,n,r)}P.current=0;const n=Xm(N.current);n.addEventListener("mousemove",G,{passive:!0}),n.addEventListener("mouseup",K)})};var r;const o={...t,...n};return{...e,ref:_,...o}},getThumbProps:(e={})=>{const t=dg(e),n={onMouseOver:(r=t||{},e=>{r.onMouseOver?.(e);const t=Number(e.currentTarget.getAttribute("data-index"));S(t)}),onMouseLeave:Q(t||{})};var r;return{...e,...t,...n}},marks:R,open:k,range:j,rootRef:_,trackLeap:J,trackOffset:Z,values:L,getThumbStyle:e=>({pointerEvents:-1!==I&&I!==e?"none":void 0})}}const sH=function(e){return"string"==typeof e};function lH(e){return Ig("MuiSlider",e)}const cH=wg("MuiSlider",["root","active","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","disabled","dragging","focusVisible","mark","markActive","marked","markLabel","markLabelActive","rail","sizeSmall","thumb","thumbColorPrimary","thumbColorSecondary","thumbColorError","thumbColorSuccess","thumbColorInfo","thumbColorWarning","track","trackInverted","trackFalse","thumbSizeSmall","valueLabel","valueLabelOpen","valueLabelCircle","valueLabelLabel","vertical"]);function uH(e){return e}const dH=bm("span",{name:"MuiSlider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[`color${Cm(n.color)}`],"medium"!==n.size&&t[`size${Cm(n.size)}`],n.marked&&t.marked,"vertical"===n.orientation&&t.vertical,"inverted"===n.track&&t.trackInverted,!1===n.track&&t.trackFalse]}})(wm(({theme:e})=>({borderRadius:12,boxSizing:"content-box",display:"inline-block",position:"relative",cursor:"pointer",touchAction:"none",WebkitTapHighlightColor:"transparent","@media print":{colorAdjust:"exact"},[`&.${cH.disabled}`]:{pointerEvents:"none",cursor:"default",color:(e.vars||e).palette.grey[400]},[`&.${cH.dragging}`]:{[`& .${cH.thumb}, & .${cH.track}`]:{transition:"none"}},variants:[...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),{props:{orientation:"horizontal"},style:{height:4,width:"100%",padding:"13px 0","@media (pointer: coarse)":{padding:"20px 0"}}},{props:{orientation:"horizontal",size:"small"},style:{height:2}},{props:{orientation:"horizontal",marked:!0},style:{marginBottom:20}},{props:{orientation:"vertical"},style:{height:"100%",width:4,padding:"0 13px","@media (pointer: coarse)":{padding:"0 20px"}}},{props:{orientation:"vertical",size:"small"},style:{width:2}},{props:{orientation:"vertical",marked:!0},style:{marginRight:44}}]}))),pH=bm("span",{name:"MuiSlider",slot:"Rail",overridesResolver:(e,t)=>t.rail})({display:"block",position:"absolute",borderRadius:"inherit",backgroundColor:"currentColor",opacity:.38,variants:[{props:{orientation:"horizontal"},style:{width:"100%",height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{height:"100%",width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:"inverted"},style:{opacity:1}}]}),hH=bm("span",{name:"MuiSlider",slot:"Track",overridesResolver:(e,t)=>t.track})(wm(({theme:e})=>({display:"block",position:"absolute",borderRadius:"inherit",border:"1px solid currentColor",backgroundColor:"currentColor",transition:e.transitions.create(["left","width","bottom","height"],{duration:e.transitions.duration.shortest}),variants:[{props:{size:"small"},style:{border:"none"}},{props:{orientation:"horizontal"},style:{height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:!1},style:{display:"none"}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t,track:"inverted"},style:{...e.vars?{backgroundColor:e.vars.palette.Slider[`${t}Track`],borderColor:e.vars.palette.Slider[`${t}Track`]}:{backgroundColor:cp(e.palette[t].main,.62),borderColor:cp(e.palette[t].main,.62),...e.applyStyles("dark",{backgroundColor:sp(e.palette[t].main,.5)}),...e.applyStyles("dark",{borderColor:sp(e.palette[t].main,.5)})}}}))]}))),mH=bm("span",{name:"MuiSlider",slot:"Thumb",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.thumb,t[`thumbColor${Cm(n.color)}`],"medium"!==n.size&&t[`thumbSize${Cm(n.size)}`]]}})(wm(({theme:e})=>({position:"absolute",width:20,height:20,boxSizing:"border-box",borderRadius:"50%",outline:0,backgroundColor:"currentColor",display:"flex",alignItems:"center",justifyContent:"center",transition:e.transitions.create(["box-shadow","left","bottom"],{duration:e.transitions.duration.shortest}),"&::before":{position:"absolute",content:'""',borderRadius:"inherit",width:"100%",height:"100%",boxShadow:(e.vars||e).shadows[2]},"&::after":{position:"absolute",content:'""',borderRadius:"50%",width:42,height:42,top:"50%",left:"50%",transform:"translate(-50%, -50%)"},[`&.${cH.disabled}`]:{"&:hover":{boxShadow:"none"}},variants:[{props:{size:"small"},style:{width:12,height:12,"&::before":{boxShadow:"none"}}},{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-50%, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 50%)"}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{[`&:hover, &.${cH.focusVisible}`]:{...e.vars?{boxShadow:`0px 0px 0px 8px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 8px ${op(e.palette[t].main,.16)}`},"@media (hover: none)":{boxShadow:"none"}},[`&.${cH.active}`]:{...e.vars?{boxShadow:`0px 0px 0px 14px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 14px ${op(e.palette[t].main,.16)}`}}}}))]}))),fH=bm(function(t){const{children:n,className:r,value:i}=t,o=(e=>{const{open:t}=e;return{offset:Hh(t&&cH.valueLabelOpen),circle:cH.valueLabelCircle,label:cH.valueLabelLabel}})(t);return n?e.cloneElement(n,{className:Hh(n.props.className)},(0,O.jsxs)(e.Fragment,{children:[n.props.children,(0,O.jsx)("span",{className:Hh(o.offset,r),"aria-hidden":!0,children:(0,O.jsx)("span",{className:o.circle,children:(0,O.jsx)("span",{className:o.label,children:i})})})]})):null},{name:"MuiSlider",slot:"ValueLabel",overridesResolver:(e,t)=>t.valueLabel})(wm(({theme:e})=>({zIndex:1,whiteSpace:"nowrap",...e.typography.body2,fontWeight:500,transition:e.transitions.create(["transform"],{duration:e.transitions.duration.shortest}),position:"absolute",backgroundColor:(e.vars||e).palette.grey[600],borderRadius:2,color:(e.vars||e).palette.common.white,display:"flex",alignItems:"center",justifyContent:"center",padding:"0.25rem 0.75rem",variants:[{props:{orientation:"horizontal"},style:{transform:"translateY(-100%) scale(0)",top:"-10px",transformOrigin:"bottom center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, 50%) rotate(45deg)",backgroundColor:"inherit",bottom:0,left:"50%"},[`&.${cH.valueLabelOpen}`]:{transform:"translateY(-100%) scale(1)"}}},{props:{orientation:"vertical"},style:{transform:"translateY(-50%) scale(0)",right:"30px",top:"50%",transformOrigin:"right center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, -50%) rotate(45deg)",backgroundColor:"inherit",right:-8,top:"50%"},[`&.${cH.valueLabelOpen}`]:{transform:"translateY(-50%) scale(1)"}}},{props:{size:"small"},style:{fontSize:e.typography.pxToRem(12),padding:"0.25rem 0.5rem"}},{props:{orientation:"vertical",size:"small"},style:{right:"20px"}}]}))),gH=bm("span",{name:"MuiSlider",slot:"Mark",shouldForwardProp:e=>gm(e)&&"markActive"!==e,overridesResolver:(e,t)=>{const{markActive:n}=e;return[t.mark,n&&t.markActive]}})(wm(({theme:e})=>({position:"absolute",width:2,height:2,borderRadius:1,backgroundColor:"currentColor",variants:[{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-1px, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 1px)"}},{props:{markActive:!0},style:{backgroundColor:(e.vars||e).palette.background.paper,opacity:.8}}]}))),yH=bm("span",{name:"MuiSlider",slot:"MarkLabel",shouldForwardProp:e=>gm(e)&&"markLabelActive"!==e,overridesResolver:(e,t)=>t.markLabel})(wm(({theme:e})=>({...e.typography.body2,color:(e.vars||e).palette.text.secondary,position:"absolute",whiteSpace:"nowrap",variants:[{props:{orientation:"horizontal"},style:{top:30,transform:"translateX(-50%)","@media (pointer: coarse)":{top:40}}},{props:{orientation:"vertical"},style:{left:36,transform:"translateY(50%)","@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(e.vars||e).palette.text.primary}}]}))),vH=({children:e})=>e,bH=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiSlider"}),i=qh(),{"aria-label":o,"aria-valuetext":a,"aria-labelledby":s,component:l="span",components:c={},componentsProps:u={},color:d="primary",classes:p,className:h,disableSwap:m=!1,disabled:f=!1,getAriaLabel:g,getAriaValueText:y,marks:v=!1,max:b=100,min:x=0,name:I,onChange:w,onChangeCommitted:k,orientation:S="horizontal",shiftStep:M=10,size:C="medium",step:P=1,scale:E=uH,slotProps:T,slots:A,tabIndex:j,track:L="normal",value:R,valueLabelDisplay:D="off",valueLabelFormat:$=uH,...z}=r,N={...r,isRtl:i,max:b,min:x,classes:p,disabled:f,disableSwap:m,orientation:S,marks:v,color:d,size:C,step:P,shiftStep:M,scale:E,track:L,valueLabelDisplay:D,valueLabelFormat:$},{axisProps:_,getRootProps:F,getHiddenInputProps:H,getThumbProps:B,open:V,active:U,axis:Y,focusedThumbIndex:W,range:G,dragging:K,marks:q,values:X,trackOffset:Z,trackLeap:J,getThumbStyle:Q}=aH({...N,rootRef:n});N.marked=q.length>0&&q.some(e=>e.label),N.dragging=K,N.focusedThumbIndex=W;const ee=(e=>{const{disabled:t,dragging:n,marked:r,orientation:i,track:o,classes:a,color:s,size:l}=e;return Gh({root:["root",t&&"disabled",n&&"dragging",r&&"marked","vertical"===i&&"vertical","inverted"===o&&"trackInverted",!1===o&&"trackFalse",s&&`color${Cm(s)}`,l&&`size${Cm(l)}`],rail:["rail"],track:["track"],mark:["mark"],markActive:["markActive"],markLabel:["markLabel"],markLabelActive:["markLabelActive"],valueLabel:["valueLabel"],thumb:["thumb",t&&"disabled",l&&`thumbSize${Cm(l)}`,s&&`thumbColor${Cm(s)}`],active:["active"],disabled:["disabled"],focusVisible:["focusVisible"]},lH,a)})(N),te=A?.root??c.Root??dH,ne=A?.rail??c.Rail??pH,re=A?.track??c.Track??hH,ie=A?.thumb??c.Thumb??mH,oe=A?.valueLabel??c.ValueLabel??fH,ae=A?.mark??c.Mark??gH,se=A?.markLabel??c.MarkLabel??yH,le=A?.input??c.Input??"input",ce=T?.root??u.root,ue=T?.rail??u.rail,de=T?.track??u.track,pe=T?.thumb??u.thumb,he=T?.valueLabel??u.valueLabel,me=T?.mark??u.mark,fe=T?.markLabel??u.markLabel,ge=T?.input??u.input,ye=fg({elementType:te,getSlotProps:F,externalSlotProps:ce,externalForwardedProps:z,additionalProps:{...(Me=te,(!Me||!sH(Me))&&{as:l})},ownerState:{...N,...ce?.ownerState},className:[ee.root,h]}),ve=fg({elementType:ne,externalSlotProps:ue,ownerState:N,className:ee.rail}),be=fg({elementType:re,externalSlotProps:de,additionalProps:{style:{..._[Y].offset(Z),..._[Y].leap(J)}},ownerState:{...N,...de?.ownerState},className:ee.track}),xe=fg({elementType:ie,getSlotProps:B,externalSlotProps:pe,ownerState:{...N,...pe?.ownerState},className:ee.thumb}),Ie=fg({elementType:oe,externalSlotProps:he,ownerState:{...N,...he?.ownerState},className:ee.valueLabel}),we=fg({elementType:ae,externalSlotProps:me,ownerState:N,className:ee.mark}),ke=fg({elementType:se,externalSlotProps:fe,ownerState:N,className:ee.markLabel}),Se=fg({elementType:le,getSlotProps:H,externalSlotProps:ge,ownerState:N});var Me;return(0,O.jsxs)(te,{...ye,children:[(0,O.jsx)(ne,{...ve}),(0,O.jsx)(re,{...be}),q.filter(e=>e.value>=x&&e.value<=b).map((t,n)=>{const r=JF(t.value,x,b),i=_[Y].offset(r);let o;return o=!1===L?X.includes(t.value):"normal"===L&&(G?t.value>=X[0]&&t.value<=X[X.length-1]:t.value<=X[0])||"inverted"===L&&(G?t.value<=X[0]||t.value>=X[X.length-1]:t.value>=X[0]),(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(ae,{"data-index":n,...we,...!sH(ae)&&{markActive:o},style:{...i,...we.style},className:Hh(we.className,o&&ee.markActive)}),null!=t.label?(0,O.jsx)(se,{"aria-hidden":!0,"data-index":n,...ke,...!sH(se)&&{markLabelActive:o},style:{...i,...ke.style},className:Hh(ee.markLabel,ke.className,o&&ee.markLabelActive),children:t.label}):null]},n)}),X.map((e,t)=>{const n=JF(e,x,b),r=_[Y].offset(n),i="off"===D?vH:oe;return(0,O.jsx)(i,{...!sH(i)&&{valueLabelFormat:$,valueLabelDisplay:D,value:"function"==typeof $?$(E(e),t):$,index:t,open:V===t||U===t||"on"===D,disabled:f},...Ie,children:(0,O.jsx)(ie,{"data-index":t,...xe,className:Hh(ee.thumb,xe.className,U===t&&ee.active,W===t&&ee.focusVisible),style:{...r,...Q(t),...xe.style},children:(0,O.jsx)(le,{"data-index":t,"aria-label":g?g(t):o,"aria-valuenow":E(e),"aria-labelledby":s,"aria-valuetext":y?y(E(e),t):a,value:X[t],...Se})})},t)})]})}),xH=bH,IH={entering:{opacity:1},entered:{opacity:1}},wH=e.forwardRef(function(t,n){const r=xm(),i={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{addEndListener:o,appear:a=!0,children:s,easing:l,in:c,onEnter:u,onEntered:d,onEntering:p,onExit:h,onExited:m,onExiting:f,style:g,timeout:y=i,TransitionComponent:v=_m,...b}=t,x=e.useRef(null),I=Vm(x,Jh(s),n),w=e=>t=>{if(e){const n=x.current;void 0===t?e(n):e(n,t)}},k=w(p),S=w((e,t)=>{Fm(e);const n=Hm({style:g,timeout:y,easing:l},{mode:"enter"});e.style.webkitTransition=r.transitions.create("opacity",n),e.style.transition=r.transitions.create("opacity",n),u&&u(e,t)}),M=w(d),C=w(f),P=w(e=>{const t=Hm({style:g,timeout:y,easing:l},{mode:"exit"});e.style.webkitTransition=r.transitions.create("opacity",t),e.style.transition=r.transitions.create("opacity",t),h&&h(e)}),E=w(m);return(0,O.jsx)(v,{appear:a,in:c,nodeRef:x,onEnter:S,onEntered:M,onEntering:k,onExit:P,onExited:E,onExiting:C,addEndListener:e=>{o&&o(x.current,e)},timeout:y,...b,children:(t,{ownerState:n,...r})=>e.cloneElement(s,{style:{opacity:0,visibility:"exited"!==t||c?void 0:"hidden",...IH[t],...g,...s.props.style},ref:I,...r})})}),kH=wH;function SH(e){return Ig("MuiBackdrop",e)}wg("MuiBackdrop",["root","invisible"]);const MH=bm("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.invisible&&t.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:!0},style:{backgroundColor:"transparent"}}]}),CH=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiBackdrop"}),{children:r,className:i,component:o="div",invisible:a=!1,open:s,components:l={},componentsProps:c={},slotProps:u={},slots:d={},TransitionComponent:p,transitionDuration:h,...m}=n,f={...n,component:o,invisible:a},g=(e=>{const{classes:t,invisible:n}=e;return Gh({root:["root",n&&"invisible"]},SH,t)})(f),y={slots:{transition:p,root:l.Root,...d},slotProps:{...c,...u}},[v,b]=Ng("root",{elementType:MH,externalForwardedProps:y,className:Hh(g.root,i),ownerState:f}),[x,I]=Ng("transition",{elementType:kH,externalForwardedProps:y,ownerState:f});return(0,O.jsx)(x,{in:s,timeout:h,...m,...I,children:(0,O.jsx)(v,{"aria-hidden":!0,...b,classes:g,ref:t,children:r})})}),PH=CH;function EH(...e){return e.reduce((e,t)=>null==t?e:function(...n){e.apply(this,n),t.apply(this,n)},()=>{})}function TH(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function AH(e){return parseInt(oy(e).getComputedStyle(e).paddingRight,10)||0}function OH(e,t,n,r,i){const o=[t,n,...r];[].forEach.call(e.children,e=>{const t=!o.includes(e),n=!function(e){const t=["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].includes(e.tagName),n="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||n}(e);t&&n&&TH(e,i)})}function jH(e,t){let n=-1;return e.some((e,r)=>!!t(e)&&(n=r,!0)),n}const LH=()=>{},RH=new class{constructor(){this.modals=[],this.containers=[]}add(e,t){let n=this.modals.indexOf(e);if(-1!==n)return n;n=this.modals.length,this.modals.push(e),e.modalRef&&TH(e.modalRef,!1);const r=function(e){const t=[];return[].forEach.call(e.children,e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)}),t}(t);OH(t,e.mount,e.modalRef,r,!0);const i=jH(this.containers,e=>e.container===t);return-1!==i?(this.containers[i].modals.push(e),n):(this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:r}),n)}mount(e,t){const n=jH(this.containers,t=>t.modals.includes(e)),r=this.containers[n];r.restore||(r.restore=function(e,t){const n=[],r=e.container;if(!t.disableScrollLock){if(function(e){const t=Xm(e);return t.body===e?oy(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(r)){const e=ny(oy(r));n.push({value:r.style.paddingRight,property:"padding-right",el:r}),r.style.paddingRight=`${AH(r)+e}px`;const t=Xm(r).querySelectorAll(".mui-fixed");[].forEach.call(t,t=>{n.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight=`${AH(t)+e}px`})}let e;if(r.parentNode instanceof DocumentFragment)e=Xm(r).body;else{const t=r.parentElement,n=oy(r);e="HTML"===t?.nodeName&&"scroll"===n.getComputedStyle(t).overflowY?t:r}n.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{n.forEach(({value:e,el:t,property:n})=>{e?t.style.setProperty(n,e):t.style.removeProperty(n)})}}(r,t))}remove(e,t=!0){const n=this.modals.indexOf(e);if(-1===n)return n;const r=jH(this.containers,t=>t.modals.includes(e)),i=this.containers[r];if(i.modals.splice(i.modals.indexOf(e),1),this.modals.splice(n,1),0===i.modals.length)i.restore&&i.restore(),e.modalRef&&TH(e.modalRef,t),OH(i.container,e.mount,e.modalRef,i.hiddenSiblings,!1),this.containers.splice(r,1);else{const e=i.modals[i.modals.length-1];e.modalRef&&TH(e.modalRef,!1)}return n}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}};function DH(e){return Ig("MuiModal",e)}wg("MuiModal",["root","hidden","backdrop"]);const $H=bm("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.open&&n.exited&&t.hidden]}})(wm(({theme:e})=>({position:"fixed",zIndex:(e.vars||e).zIndex.modal,right:0,bottom:0,top:0,left:0,variants:[{props:({ownerState:e})=>!e.open&&e.exited,style:{visibility:"hidden"}}]}))),zH=bm(PH,{name:"MuiModal",slot:"Backdrop",overridesResolver:(e,t)=>t.backdrop})({zIndex:-1}),NH=e.forwardRef(function(t,n){const r=Mm({name:"MuiModal",props:t}),{BackdropComponent:i=zH,BackdropProps:o,classes:a,className:s,closeAfterTransition:l=!1,children:c,container:u,component:d,components:p={},componentsProps:h={},disableAutoFocus:m=!1,disableEnforceFocus:f=!1,disableEscapeKeyDown:g=!1,disablePortal:y=!1,disableRestoreFocus:v=!1,disableScrollLock:b=!1,hideBackdrop:x=!1,keepMounted:I=!1,onBackdropClick:w,onClose:k,onTransitionEnter:S,onTransitionExited:M,open:C,slotProps:P={},slots:E={},theme:T,...A}=r,j={...r,closeAfterTransition:l,disableAutoFocus:m,disableEnforceFocus:f,disableEscapeKeyDown:g,disablePortal:y,disableRestoreFocus:v,disableScrollLock:b,hideBackdrop:x,keepMounted:I},{getRootProps:L,getBackdropProps:R,getTransitionProps:D,portalRef:$,isTopModal:z,exited:N,hasTransition:_}=function(t){const{container:n,disableEscapeKeyDown:r=!1,disableScrollLock:i=!1,closeAfterTransition:o=!1,onTransitionEnter:a,onTransitionExited:s,children:l,onClose:c,open:u,rootRef:d}=t,p=e.useRef({}),h=e.useRef(null),m=e.useRef(null),f=Bm(m,d),[g,y]=e.useState(!u),v=function(e){return!!e&&e.props.hasOwnProperty("in")}(l);let b=!0;"false"!==t["aria-hidden"]&&!1!==t["aria-hidden"]||(b=!1);const x=()=>(p.current.modalRef=m.current,p.current.mount=h.current,p.current),I=()=>{RH.mount(x(),{disableScrollLock:i}),m.current&&(m.current.scrollTop=0)},w=Ag(()=>{const e=function(e){return"function"==typeof e?e():e}(n)||Xm(h.current).body;RH.add(x(),e),m.current&&I()}),k=()=>RH.isTopModal(x()),S=Ag(e=>{h.current=e,e&&(u&&k()?I():m.current&&TH(m.current,b))}),M=e.useCallback(()=>{RH.remove(x(),b)},[b]);e.useEffect(()=>()=>{M()},[M]),e.useEffect(()=>{u?w():v&&o||M()},[u,M,v,o,w]);const C=e=>t=>{e.onKeyDown?.(t),"Escape"===t.key&&229!==t.which&&k()&&(r||(t.stopPropagation(),c&&c(t,"escapeKeyDown")))},P=e=>t=>{e.onClick?.(t),t.target===t.currentTarget&&c&&c(t,"backdropClick")};return{getRootProps:(e={})=>{const n=dg(t);delete n.onTransitionEnter,delete n.onTransitionExited;const r={...n,...e};return{role:"presentation",...r,onKeyDown:C(r),ref:f}},getBackdropProps:(e={})=>{const t=e;return{"aria-hidden":!0,...t,onClick:P(t),open:u}},getTransitionProps:()=>({onEnter:EH(()=>{y(!1),a&&a()},l?.props.onEnter??LH),onExited:EH(()=>{y(!0),s&&s(),o&&M()},l?.props.onExited??LH)}),rootRef:f,portalRef:S,isTopModal:k,exited:g,hasTransition:v}}({...j,rootRef:n}),F={...j,exited:N},H=(e=>{const{open:t,exited:n,classes:r}=e;return Gh({root:["root",!t&&n&&"hidden"],backdrop:["backdrop"]},DH,r)})(F),B={};if(void 0===c.props.tabIndex&&(B.tabIndex="-1"),_){const{onEnter:e,onExited:t}=D();B.onEnter=e,B.onExited=t}const V={slots:{root:p.Root,backdrop:p.Backdrop,...E},slotProps:{...h,...P}},[U,Y]=Ng("root",{ref:n,elementType:$H,externalForwardedProps:{...V,...A,component:d},getSlotProps:L,ownerState:F,className:Hh(s,H?.root,!F.open&&F.exited&&H?.hidden)}),[W,G]=Ng("backdrop",{ref:o?.ref,elementType:i,externalForwardedProps:V,shouldForwardComponentProp:!0,additionalProps:o,getSlotProps:e=>R({...e,onClick:t=>{w&&w(t),e?.onClick&&e.onClick(t)}}),className:Hh(o?.className,H?.backdrop),ownerState:F});return I||C||_&&!N?(0,O.jsx)(yg,{ref:$,container:u,disablePortal:y,children:(0,O.jsxs)(U,{...Y,children:[!x&&i?(0,O.jsx)(W,{...G}):null,(0,O.jsx)(Yv,{disableEnforceFocus:f,disableAutoFocus:m,disableRestoreFocus:v,isEnabled:z,open:C,children:e.cloneElement(c,B)})]})}):null}),_H=NH;function FH(e){return Ig("MuiPopover",e)}function HH(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.height/2:"bottom"===t&&(n=e.height),n}function BH(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.width/2:"right"===t&&(n=e.width),n}function VH(e){return[e.horizontal,e.vertical].map(e=>"number"==typeof e?`${e}px`:e).join(" ")}function UH(e){return"function"==typeof e?e():e}wg("MuiPopover",["root","paper"]);const YH=bm(_H,{name:"MuiPopover",slot:"Root",overridesResolver:(e,t)=>t.root})({}),WH=bm(Zv,{name:"MuiPopover",slot:"Paper",overridesResolver:(e,t)=>t.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),GH=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiPopover"}),{action:i,anchorEl:o,anchorOrigin:a={vertical:"top",horizontal:"left"},anchorPosition:s,anchorReference:l="anchorEl",children:c,className:u,container:d,elevation:p=8,marginThreshold:h=16,open:m,PaperProps:f={},slots:g={},slotProps:y={},transformOrigin:v={vertical:"top",horizontal:"left"},TransitionComponent:b,transitionDuration:x="auto",TransitionProps:I={},disableScrollLock:w=!1,...k}=r,S=e.useRef(),M={...r,anchorOrigin:a,anchorReference:l,elevation:p,marginThreshold:h,transformOrigin:v,TransitionComponent:b,transitionDuration:x,TransitionProps:I},C=(e=>{const{classes:t}=e;return Gh({root:["root"],paper:["paper"]},FH,t)})(M),P=e.useCallback(()=>{if("anchorPosition"===l)return s;const e=UH(o),t=(e&&1===e.nodeType?e:Xg(S.current).body).getBoundingClientRect();return{top:t.top+HH(t,a.vertical),left:t.left+BH(t,a.horizontal)}},[o,a.horizontal,a.vertical,s,l]),E=e.useCallback(e=>({vertical:HH(e,v.vertical),horizontal:BH(e,v.horizontal)}),[v.horizontal,v.vertical]),T=e.useCallback(e=>{const t={width:e.offsetWidth,height:e.offsetHeight},n=E(t);if("none"===l)return{top:null,left:null,transformOrigin:VH(n)};const r=P();let i=r.top-n.vertical,a=r.left-n.horizontal;const s=i+t.height,c=a+t.width,u=ay(UH(o)),d=u.innerHeight-h,p=u.innerWidth-h;if(null!==h&&id){const e=s-d;i-=e,n.vertical+=e}if(null!==h&&ap){const e=c-p;a-=e,n.horizontal+=e}return{top:`${Math.round(i)}px`,left:`${Math.round(a)}px`,transformOrigin:VH(n)}},[o,l,P,E,h]),[A,j]=e.useState(m),L=e.useCallback(()=>{const e=S.current;if(!e)return;const t=T(e);null!==t.top&&e.style.setProperty("top",t.top),null!==t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,j(!0)},[T]);e.useEffect(()=>(w&&window.addEventListener("scroll",L),()=>window.removeEventListener("scroll",L)),[o,w,L]),e.useEffect(()=>{m&&L()}),e.useImperativeHandle(i,()=>m?{updatePosition:()=>{L()}}:null,[m,L]),e.useEffect(()=>{if(!m)return;const e=function(e,t=166){let n;function r(...r){clearTimeout(n),n=setTimeout(()=>{e.apply(this,r)},t)}return r.clear=()=>{clearTimeout(n)},r}(()=>{L()}),t=ay(UH(o));return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}},[o,m,L]);let R=x;const D={slots:{transition:b,...g},slotProps:{transition:I,paper:f,...y}},[$,z]=Ng("transition",{elementType:Km,externalForwardedProps:D,ownerState:M,getSlotProps:e=>({...e,onEntering:(t,n)=>{e.onEntering?.(t,n),L()},onExited:t=>{e.onExited?.(t),j(!1)}}),additionalProps:{appear:!0,in:m}});"auto"!==x||$.muiSupportAuto||(R=void 0);const N=d||(o?Xg(UH(o)).body:void 0),[_,{slots:F,slotProps:H,...B}]=Ng("root",{ref:n,elementType:YH,externalForwardedProps:{...D,...k},shouldForwardComponentProp:!0,additionalProps:{slots:{backdrop:g.backdrop},slotProps:{backdrop:c$("function"==typeof y.backdrop?y.backdrop(M):y.backdrop,{invisible:!0})},container:N,open:m},ownerState:M,className:Hh(C.root,u)}),[V,U]=Ng("paper",{ref:S,className:C.paper,elementType:WH,externalForwardedProps:D,shouldForwardComponentProp:!0,additionalProps:{elevation:p,style:A?void 0:{opacity:0}},ownerState:M});return(0,O.jsx)(_,{...B,...!sH(_)&&{slots:F,slotProps:H,disableScrollLock:w},children:(0,O.jsx)($,{...z,timeout:R,children:(0,O.jsx)(V,{...U,children:c})})})}),KH=GH;function qH(e){return Ig("MuiMenu",e)}wg("MuiMenu",["root","paper","list"]);const XH={vertical:"top",horizontal:"right"},ZH={vertical:"top",horizontal:"left"},JH=bm(KH,{shouldForwardProp:e=>ym(e)||"classes"===e,name:"MuiMenu",slot:"Root",overridesResolver:(e,t)=>t.root})({}),QH=bm(WH,{name:"MuiMenu",slot:"Paper",overridesResolver:(e,t)=>t.paper})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),eB=bm(dy,{name:"MuiMenu",slot:"List",overridesResolver:(e,t)=>t.list})({outline:0}),tB=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiMenu"}),{autoFocus:i=!0,children:o,className:a,disableAutoFocusItem:s=!1,MenuListProps:l={},onClose:c,open:u,PaperProps:d={},PopoverClasses:p,transitionDuration:h="auto",TransitionProps:{onEntering:m,...f}={},variant:g="selectedMenu",slots:y={},slotProps:v={},...b}=r,x=qh(),I={...r,autoFocus:i,disableAutoFocusItem:s,MenuListProps:l,onEntering:m,PaperProps:d,transitionDuration:h,TransitionProps:f,variant:g},w=(e=>{const{classes:t}=e;return Gh({root:["root"],paper:["paper"],list:["list"]},qH,t)})(I),k=i&&!s&&u,S=e.useRef(null);let M=-1;e.Children.map(o,(t,n)=>{e.isValidElement(t)&&(t.props.disabled||("selectedMenu"===g&&t.props.selected||-1===M)&&(M=n))});const C={slots:y,slotProps:{list:l,transition:f,paper:d,...v}},P=fg({elementType:y.root,externalSlotProps:v.root,ownerState:I,className:[w.root,a]}),[E,T]=Ng("paper",{className:w.paper,elementType:QH,externalForwardedProps:C,shouldForwardComponentProp:!0,ownerState:I}),[A,j]=Ng("list",{className:Hh(w.list,l.className),elementType:eB,shouldForwardComponentProp:!0,externalForwardedProps:C,getSlotProps:e=>({...e,onKeyDown:t=>{(e=>{"Tab"===e.key&&(e.preventDefault(),c&&c(e,"tabKeyDown"))})(t),e.onKeyDown?.(t)}}),ownerState:I}),L="function"==typeof C.slotProps.transition?C.slotProps.transition(I):C.slotProps.transition;return(0,O.jsx)(JH,{onClose:c,anchorOrigin:{vertical:"bottom",horizontal:x?"right":"left"},transformOrigin:x?XH:ZH,slots:{root:y.root,paper:E,backdrop:y.backdrop,...y.transition&&{transition:y.transition}},slotProps:{root:P,paper:T,backdrop:"function"==typeof v.backdrop?v.backdrop(I):v.backdrop,transition:{...L,onEntering:(...e)=>{((e,t)=>{S.current&&S.current.adjustStyleForScrollbar(e,{direction:x?"rtl":"ltr"}),m&&m(e,t)})(...e),L?.onEntering?.(...e)}}},open:u,ref:n,transitionDuration:h,ownerState:I,...b,classes:p,children:(0,O.jsx)(A,{actions:S,autoFocus:i&&(-1===M||s),autoFocusItem:k,variant:g,...j,children:o})})});function nB(e){return nB="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nB(e)}var rB=["itemId","children","className","editable","ownerState"];function iB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function oB(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function cB(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return s}}(e,t)||uB(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function uB(e,t){if(e){if("string"==typeof e)return dB(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?dB(e,t):void 0}}function dB(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0){var e=new Set(L);return function(t){return e.has(he(t))}}return!1},[j,L,he]),ve=(0,e.useMemo)(function(){if(K&&0!==K.length){var e=new Set(K);return function(t){return e.has(t)}}},[K]),be=(0,e.useRef)(te||{});be.current=te||be.current||{};var xe=(0,e.useCallback)(function(e,t,n){var r=oB(oB({},be.current),{},aB({},e,t));be.current=r,ue&&(ue({sliderValues:r}),n&&ue({sliderChange:{itemId:e,value:t,event_timestamp:Date.now()}}))},[ue]),Ie=(0,e.useCallback)(function(e,t){ue&&ue({kebabAction:{itemId:e,action:t,event_timestamp:Date.now()}})},[ue]),we=(0,e.useMemo)(function(){return ee&&0!==ee.length?new Set(ee):null},[ee]),ke=(0,e.useMemo)(function(){return function(e){if(e&&"string"==typeof e){var t=e.match(gB);if(t){var n=t[1],r=null!=t[3]?t[3]:"6";return"var(--mantine-color-".concat(n,"-").concat(r,")")}return e}}(le)},[le]),Se=(0,e.useMemo)(function(){return{controlsItemSet:we,sliderValues:te||{},sliderMin:re,sliderMax:oe,sliderStep:se,sliderColor:ke,onSliderChange:xe,kebabMenuItems:ce||[],onKebabAction:Ie}},[we,te,re,oe,se,ke,ce,xe,Ie]),Me=(0,e.useMemo)(function(){var e={};return H&&(e.collapseIcon=n_(H)),B&&(e.expandIcon=n_(B)),V&&(e.endIcon=n_(V)),Q&&(e.item=xB),Object.keys(e).length>0?e:void 0},[H,B,V,Q]),Ce=(0,e.useCallback)(function(e,t){ue&&ue({selectedItems:t})},[ue]),Pe=(0,e.useCallback)(function(e,t){if(ue&&ue({expandedItems:t}),X&&ue&&t){var n,r=h||"id",i=y||"children",o=function(e,t){if(!e)return null;var n,a=lB(e);try{for(a.s();!(n=a.n()).done;){var s=n.value;if(s[r]===t)return s;var l=o(s[i],t);if(l)return l}}catch(e){a.e(e)}finally{a.f()}return null},a=lB(t);try{for(a.s();!(n=a.n()).done;){var s=n.value,l=o(pe,s);if(l&&!l[i]){ue({lazyLoadRequest:{itemId:s,event_timestamp:Date.now()}});break}}}catch(e){a.e(e)}finally{a.f()}}},[ue,X,pe,h,y]),Ee=(0,e.useCallback)(function(e,t){ue&&ue({clickedItem:{itemId:t,event_timestamp:Date.now()}})},[ue]),Te=(0,e.useCallback)(function(e,t){ue&&ue({focusedItem:{itemId:t,event_timestamp:Date.now()}})},[ue]),Ae=(0,e.useCallback)(function(e,t){ue&&ue({editedItemLabel:{itemId:e,newLabel:t,event_timestamp:Date.now()}})},[ue]),Oe=(0,e.useRef)(c||[]);(0,e.useEffect)(function(){Oe.current=c||[]},[c]);var je=(0,e.useCallback)(function(e){var t=function(e,t,n,r){if(!e||!t||!t.itemId)return e;var i=n||"id",o=r||"children",a=JSON.parse(JSON.stringify(e)),s=null,l=function(e,n){if(null==n){var r=e.findIndex(function(e){return e[i]===t.itemId});return r>=0&&(s=e.splice(r,1)[0]),null!=s}var a,c=lB(e);try{for(c.s();!(a=c.n()).done;){var u=a.value;if(u[i]===n){var d=u[o]||[],p=d.findIndex(function(e){return e[i]===t.itemId});return p>=0&&(s=d.splice(p,1)[0]),null!=s}if(u[o]&&l(u[o],n))return!0}}catch(e){c.e(e)}finally{c.f()}return!1},c=function(e,t,n){if(null==t)return e.splice(n,0,s),!0;var r,a=lB(e);try{for(a.s();!(r=a.n()).done;){var l=r.value;if(l[i]===t)return l[o]||(l[o]=[]),l[o].splice(n,0,s),!0;if(l[o]&&c(l[o],t,n))return!0}}catch(e){a.e(e)}finally{a.f()}return!1};return l(a,t.oldPosition?t.oldPosition.parentId:null),s&&c(a,t.newPosition?t.newPosition.parentId:null,t.newPosition?t.newPosition.index:0),a}(Oe.current,e,h,y);Oe.current=t,ue&&ue({itemPositionChanged:{itemId:e.itemId,oldPosition:e.oldPosition,newPosition:e.newPosition,event_timestamp:Date.now()},orderedItems:t})},[ue,h,y]),Le=(0,e.useMemo)(function(){var e={};return _&&(e.height="number"==typeof _?"".concat(_,"px"):_),e},[_]);return n().createElement(WF,{theme:de},n().createElement("div",{id:a,style:Le},n().createElement(yB.Provider,{value:Se},n().createElement(vF,{items:pe||[],getItemId:he,getItemLabel:me,getItemChildren:fe,selectedItems:v,defaultSelectedItems:b,multiSelect:I,checkboxSelection:k,disableSelection:M,selectionPropagation:C,expandedItems:P,defaultExpandedItems:E,expansionTrigger:A,isItemEditable:ye,isItemDisabled:ge,disabledItemsFocusable:$,itemChildrenIndentation:N,sx:F,slots:Me,itemsReordering:G,isItemReorderable:ve,onItemPositionChange:je,onSelectedItemsChange:Ce,onExpandedItemsChange:Pe,onItemClick:Ee,onItemFocus:Te,onItemLabelChange:Ae,"aria-label":U,"aria-labelledby":Y}))))};IB.propTypes={id:i().string,licenseKey:i().string,items:i().arrayOf(i().object),getItemId:i().string,getItemLabel:i().string,getItemChildren:i().string,selectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),defaultSelectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),multiSelect:i().bool,checkboxSelection:i().bool,disableSelection:i().bool,selectionPropagation:i().exact({parents:i().bool,descendants:i().bool}),expandedItems:i().arrayOf(i().string),defaultExpandedItems:i().arrayOf(i().string),expansionTrigger:i().oneOf(["content","iconContainer"]),isItemEditable:i().bool,editableItems:i().arrayOf(i().string),disabledItems:i().arrayOf(i().string),disabledItemsFocusable:i().bool,itemChildrenIndentation:i().oneOfType([i().number,i().string]),height:i().oneOfType([i().number,i().string]),sx:i().object,collapseIcon:i().string,expandIcon:i().string,endIcon:i().string,ariaLabel:i().string,ariaLabelledBy:i().string,itemsReordering:i().bool,reorderableItems:i().arrayOf(i().string),itemPositionChanged:i().object,orderedItems:i().arrayOf(i().object),lazyLoading:i().bool,lazyLoadedChildren:i().object,lazyLoadRequest:i().exact({itemId:i().string,event_timestamp:i().number}),showItemControls:i().bool,controlsItems:i().arrayOf(i().string),sliderValues:i().object,sliderMin:i().number,sliderMax:i().number,sliderStep:i().number,sliderColor:i().string,kebabMenuItems:i().arrayOf(i().exact({label:i().string.isRequired,value:i().string.isRequired,icon:i().string})),sliderChange:i().exact({itemId:i().string,value:i().number,event_timestamp:i().number}),kebabAction:i().exact({itemId:i().string,action:i().string,event_timestamp:i().number}),clickedItem:i().exact({itemId:i().string,event_timestamp:i().number}),focusedItem:i().exact({itemId:i().string,event_timestamp:i().number}),editedItemLabel:i().exact({itemId:i().string,newLabel:i().string,event_timestamp:i().number}),setProps:i().func};const wB=IB;var kB=a(4353),SB=a.n(kB);const MB=["localeText"],CB=e.createContext(null),PB=function(t){const{localeText:n}=t,r=tt(t,MB),{adapter:i,localeText:o}=e.useContext(CB)??{utils:void 0,adapter:void 0,localeText:void 0},a=Lh({props:r,name:"MuiLocalizationProvider"}),{children:s,dateAdapter:c,dateFormats:u,dateLibInstance:d,adapterLocale:p,localeText:h}=a,m=e.useMemo(()=>l({},h,o,n),[h,o,n]),f=e.useMemo(()=>{if(!c)return i||null;const e=new c({locale:p,formats:u,instance:d});if(!e.isMUIAdapter)throw new Error(["MUI X: The date adapter should be imported from `@mui/x-date-pickers` or `@mui/x-date-pickers-pro`, not from `@date-io`","For example, `import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'` instead of `import AdapterDayjs from '@date-io/dayjs'`","More information on the installation documentation: https://mui.com/x/react-date-pickers/quickstart/#installation"].join("\n"));return e},[c,p,u,d,i]),g=e.useMemo(()=>f?{minDate:f.date("1900-01-01T00:00:00.000"),maxDate:f.date("2099-12-31T00:00:00.000")}:null,[f]),y=e.useMemo(()=>({utils:f,adapter:f,defaultDates:g,localeText:m}),[g,f,m]);return(0,O.jsx)(CB.Provider,{value:y,children:s})};var EB=a(8134),TB=a(445),AB=a(5750),OB=a(7872),jB=a(7375);kB.extend(AB),kB.extend(EB),kB.extend(OB),kB.extend(jB);const LB={YY:"year",YYYY:{sectionType:"year",contentType:"digit",maxLength:4},M:{sectionType:"month",contentType:"digit",maxLength:2},MM:"month",MMM:{sectionType:"month",contentType:"letter"},MMMM:{sectionType:"month",contentType:"letter"},D:{sectionType:"day",contentType:"digit",maxLength:2},DD:"day",Do:{sectionType:"day",contentType:"digit-with-letter"},d:{sectionType:"weekDay",contentType:"digit",maxLength:2},dd:{sectionType:"weekDay",contentType:"letter"},ddd:{sectionType:"weekDay",contentType:"letter"},dddd:{sectionType:"weekDay",contentType:"letter"},A:"meridiem",a:"meridiem",H:{sectionType:"hours",contentType:"digit",maxLength:2},HH:"hours",h:{sectionType:"hours",contentType:"digit",maxLength:2},hh:"hours",m:{sectionType:"minutes",contentType:"digit",maxLength:2},mm:"minutes",s:{sectionType:"seconds",contentType:"digit",maxLength:2},ss:"seconds"},RB={year:"YYYY",month:"MMMM",monthShort:"MMM",dayOfMonth:"D",dayOfMonthFull:"Do",weekday:"dddd",weekdayShort:"dd",hours24h:"HH",hours12h:"hh",meridiem:"A",minutes:"mm",seconds:"ss",fullDate:"ll",keyboardDate:"L",shortDate:"MMM D",normalDate:"D MMMM",normalDateWithWeekday:"ddd, MMM D",fullTime12h:"hh:mm A",fullTime24h:"HH:mm",keyboardDateTime12h:"L hh:mm A",keyboardDateTime24h:"L HH:mm"},DB=["Missing UTC plugin","To be able to use UTC or timezones, you have to enable the `utc` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc"].join("\n"),$B=["Missing timezone plugin","To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone"].join("\n");class zB{isMUIAdapter=!0;isTimezoneCompatible=!0;lib="dayjs";escapedCharacters={start:"[",end:"]"};formatTokenMap=(()=>LB)();constructor({locale:e,formats:t}={}){this.locale=e,this.formats=l({},RB,t),kB.extend(TB)}setLocaleToValue=e=>{const t=this.getCurrentLocaleCode();return t===e.locale()?e:e.locale(t)};hasUTCPlugin=()=>void 0!==kB.utc;hasTimezonePlugin=()=>void 0!==kB.tz;isSame=(e,t,n)=>{const r=this.setTimezone(t,this.getTimezone(e));return e.format(n)===r.format(n)};cleanTimezone=e=>{switch(e){case"default":return;case"system":return kB.tz.guess();default:return e}};createSystemDate=e=>{let t;if(this.hasUTCPlugin()&&this.hasTimezonePlugin()){const n=kB.tz.guess();t="UTC"===n?kB(e):kB.tz(e,n)}else t=kB(e);return this.setLocaleToValue(t)};createUTCDate=e=>{if(!this.hasUTCPlugin())throw new Error(DB);return this.setLocaleToValue(kB.utc(e))};createTZDate=(e,t)=>{if(!this.hasUTCPlugin())throw new Error(DB);if(!this.hasTimezonePlugin())throw new Error($B);const n=void 0!==e&&!e.endsWith("Z");return this.setLocaleToValue(kB(e).tz(this.cleanTimezone(t),n))};getLocaleFormats=()=>{const e=kB.Ls;let t=e[this.locale||"en"];return void 0===t&&(t=e.en),t.formats};adjustOffset=e=>{if(!this.hasTimezonePlugin())return e;const t=this.getTimezone(e);if("UTC"!==t){const n=e.tz(this.cleanTimezone(t),!0);if(n.$offset===(e.$offset??0))return e;e.$offset=n.$offset}return e};date=(e,t="default")=>null===e?null:"UTC"===t?this.createUTCDate(e):"system"===t||"default"===t&&!this.hasTimezonePlugin()?this.createSystemDate(e):this.createTZDate(e,t);getInvalidDate=()=>kB(new Date("Invalid date"));getTimezone=e=>{if(this.hasTimezonePlugin()){const t=e.$x?.$timezone;if(t)return t}return this.hasUTCPlugin()&&e.isUTC()?"UTC":"system"};setTimezone=(e,t)=>{if(this.getTimezone(e)===t)return e;if("UTC"===t){if(!this.hasUTCPlugin())throw new Error(DB);return e.utc()}if("system"===t)return e.local();if(!this.hasTimezonePlugin()){if("default"===t)return e;throw new Error($B)}return this.setLocaleToValue(kB.tz(e,this.cleanTimezone(t)))};toJsDate=e=>e.toDate();parse=(e,t)=>""===e?null:kB(e,t,this.locale,!0);getCurrentLocaleCode=()=>this.locale||"en";is12HourCycleInCurrentLocale=()=>/A|a/.test(this.getLocaleFormats().LT||"");expandFormat=e=>{const t=this.getLocaleFormats();return e.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(e,n,r)=>{const i=r&&r.toUpperCase();return n||t[r]||t[i].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(e,t,n)=>t||n.slice(1))})};isValid=e=>null!=e&&e.isValid();format=(e,t)=>this.formatByString(e,this.formats[t]);formatByString=(e,t)=>this.setLocaleToValue(e).format(t);formatNumber=e=>e;isEqual=(e,t)=>null===e&&null===t||null!==e&&null!==t&&e.toDate().getTime()===t.toDate().getTime();isSameYear=(e,t)=>this.isSame(e,t,"YYYY");isSameMonth=(e,t)=>this.isSame(e,t,"YYYY-MM");isSameDay=(e,t)=>this.isSame(e,t,"YYYY-MM-DD");isSameHour=(e,t)=>e.isSame(t,"hour");isAfter=(e,t)=>e>t;isAfterYear=(e,t)=>this.hasUTCPlugin()?!this.isSameYear(e,t)&&e.utc()>t.utc():e.isAfter(t,"year");isAfterDay=(e,t)=>this.hasUTCPlugin()?!this.isSameDay(e,t)&&e.utc()>t.utc():e.isAfter(t,"day");isBefore=(e,t)=>ethis.hasUTCPlugin()?!this.isSameYear(e,t)&&e.utc()this.hasUTCPlugin()?!this.isSameDay(e,t)&&e.utc()e>=t&&e<=n;startOfYear=e=>this.adjustOffset(e.startOf("year"));startOfMonth=e=>this.adjustOffset(e.startOf("month"));startOfWeek=e=>this.adjustOffset(this.setLocaleToValue(e).startOf("week"));startOfDay=e=>this.adjustOffset(e.startOf("day"));endOfYear=e=>this.adjustOffset(e.endOf("year"));endOfMonth=e=>this.adjustOffset(e.endOf("month"));endOfWeek=e=>this.adjustOffset(this.setLocaleToValue(e).endOf("week"));endOfDay=e=>this.adjustOffset(e.endOf("day"));addYears=(e,t)=>this.adjustOffset(e.add(t,"year"));addMonths=(e,t)=>this.adjustOffset(e.add(t,"month"));addWeeks=(e,t)=>this.adjustOffset(e.add(t,"week"));addDays=(e,t)=>this.adjustOffset(e.add(t,"day"));addHours=(e,t)=>this.adjustOffset(e.add(t,"hour"));addMinutes=(e,t)=>this.adjustOffset(e.add(t,"minute"));addSeconds=(e,t)=>this.adjustOffset(e.add(t,"second"));getYear=e=>e.year();getMonth=e=>e.month();getDate=e=>e.date();getHours=e=>e.hour();getMinutes=e=>e.minute();getSeconds=e=>e.second();getMilliseconds=e=>e.millisecond();setYear=(e,t)=>this.adjustOffset(e.set("year",t));setMonth=(e,t)=>this.adjustOffset(e.set("month",t));setDate=(e,t)=>this.adjustOffset(e.set("date",t));setHours=(e,t)=>this.adjustOffset(e.set("hour",t));setMinutes=(e,t)=>this.adjustOffset(e.set("minute",t));setSeconds=(e,t)=>this.adjustOffset(e.set("second",t));setMilliseconds=(e,t)=>this.adjustOffset(e.set("millisecond",t));getDaysInMonth=e=>e.daysInMonth();getWeekArray=e=>{const t=this.startOfWeek(this.startOfMonth(e)),n=this.endOfWeek(this.endOfMonth(e));let r=0,i=t;const o=[];for(;ie.week();getDayOfWeek(e){return e.day()+1}getYearRange=([e,t])=>{const n=this.startOfYear(e),r=this.endOfYear(t),i=[];let o=n;for(;this.isBefore(o,r);)i.push(o),o=this.addYears(o,1);return i}}function NB(e,t,n=void 0){const r={};for(const i in e){const o=e[i];let a="",s=!0;for(let e=0;e"year"===e?"year view is open, switch to calendar view":"calendar view is open, switch to year view",start:"Start",end:"End",startDate:"Start date",startTime:"Start time",endDate:"End date",endTime:"End time",cancelButtonLabel:"Cancel",clearButtonLabel:"Clear",okButtonLabel:"OK",todayButtonLabel:"Today",nextStepButtonLabel:"Next",datePickerToolbarTitle:"Select date",dateTimePickerToolbarTitle:"Select date & time",timePickerToolbarTitle:"Select time",dateRangePickerToolbarTitle:"Select date range",timeRangePickerToolbarTitle:"Select time range",clockLabelText:(e,t)=>`Select ${e}. ${t?`Selected time is ${t}`:"No time selected"}`,hoursClockNumberText:e=>`${e} hours`,minutesClockNumberText:e=>`${e} minutes`,secondsClockNumberText:e=>`${e} seconds`,selectViewText:e=>`Select ${e}`,calendarWeekNumberHeaderLabel:"Week number",calendarWeekNumberHeaderText:"#",calendarWeekNumberAriaLabelText:e=>`Week ${e}`,calendarWeekNumberText:e=>`${e}`,openDatePickerDialogue:e=>e?`Choose date, selected date is ${e}`:"Choose date",openTimePickerDialogue:e=>e?`Choose time, selected time is ${e}`:"Choose time",openRangePickerDialogue:e=>e?`Choose range, selected range is ${e}`:"Choose range",fieldClearLabel:"Clear",timeTableLabel:"pick time",dateTableLabel:"pick date",fieldYearPlaceholder:e=>"Y".repeat(e.digitAmount),fieldMonthPlaceholder:e=>"letter"===e.contentType?"MMMM":"MM",fieldDayPlaceholder:()=>"DD",fieldWeekDayPlaceholder:e=>"letter"===e.contentType?"EEEE":"EE",fieldHoursPlaceholder:()=>"hh",fieldMinutesPlaceholder:()=>"mm",fieldSecondsPlaceholder:()=>"ss",fieldMeridiemPlaceholder:()=>"aa",year:"Year",month:"Month",day:"Day",weekDay:"Week day",hours:"Hours",minutes:"Minutes",seconds:"Seconds",meridiem:"Meridiem",empty:"Empty"},BB=HB;l({},HB);const VB=()=>{const t=e.useContext(CB);if(null===t)throw new Error(["MUI X: Can not find the date and time pickers localization context.","It looks like you forgot to wrap your component in LocalizationProvider.","This can also happen if you are bundling multiple versions of the `@mui/x-date-pickers` package"].join("\n"));if(null===t.adapter)throw new Error(["MUI X: Can not find the date and time pickers adapter from its localization context.","It looks like you forgot to pass a `dateAdapter` to your LocalizationProvider."].join("\n"));const n=e.useMemo(()=>l({},BB,t.localeText),[t.localeText]);return e.useMemo(()=>l({},t,{localeText:n}),[t,n])},UB=()=>VB().adapter,YB=()=>VB().localeText,WB=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},GB=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n}({...i,...r}),s=WB(r),l=WB(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}},KB=function(t){const{elementType:n,externalSlotProps:r,ownerState:i,skipResolvingSlotProps:o=!1,...a}=t,s=o?{}:function(e,t,n){return"function"==typeof e?e(t,n):e}(r,i),{props:l,internalRef:c}=GB({...a,externalSlotProps:s}),u=function(...t){const n=e.useRef(void 0),r=e.useCallback(e=>{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}(c,s?.ref,t.additionalProps?.ref);return function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}}(n,{...l,ref:u},i)},qB=(ob((0,O.jsx)("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown"),ob((0,O.jsx)("path",{d:"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"}),"ArrowLeft")),XB=ob((0,O.jsx)("path",{d:"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"}),"ArrowRight"),ZB=(ob((0,O.jsx)("path",{d:"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z"}),"Calendar"),ob((0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("path",{d:"M11.99 2C6.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"}),(0,O.jsx)("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})]}),"Clock"),ob((0,O.jsx)("path",{d:"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z"}),"DateRange"),ob((0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("path",{d:"M11.99 2C6.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"}),(0,O.jsx)("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})]}),"Time"),ob((0,O.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"}),"Clear"),e=>e),JB=(()=>{let e=ZB;return{configure(t){e=t},generate:t=>e(t),reset(){e=ZB}}})(),QB={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 eV(e,t,n="Mui"){const r=QB[t];return r?`${n}-${r}`:`${JB.generate(e)}-${t}`}function tV(e,t,n="Mui"){const r={};return t.forEach(t=>{r[t]=eV(e,t,n)}),r}function nV(e){return eV("MuiPickersArrowSwitcher",e)}tV("MuiPickersArrowSwitcher",["root","spacer","button","previousIconButton","nextIconButton","leftArrowIcon","rightArrowIcon"]);const rV=e.createContext({ownerState:{isPickerDisabled:!1,isPickerReadOnly:!1,isPickerValueEmpty:!1,isPickerOpen:!1,pickerVariant:"desktop",pickerOrientation:"portrait"},rootRefObject:{current:null},labelId:void 0,dismissViews:()=>{},hasUIView:!0,getCurrentViewMode:()=>"UI",triggerElement:null,viewContainerRole:null,defaultActionBarActions:[],onPopperExited:void 0}),iV=()=>e.useContext(rV),oV=["children","className","slots","slotProps","isNextDisabled","isNextHidden","onGoToNext","nextLabel","isPreviousDisabled","isPreviousHidden","onGoToPrevious","previousLabel","labelId","classes"],aV=["ownerState"],sV=["ownerState"],lV=bm("div",{name:"MuiPickersArrowSwitcher",slot:"Root"})({display:"flex"}),cV=bm("div",{name:"MuiPickersArrowSwitcher",slot:"Spacer"})(({theme:e})=>({width:e.spacing(3)})),uV=bm(sv,{name:"MuiPickersArrowSwitcher",slot:"Button"})({variants:[{props:{isButtonHidden:!0},style:{visibility:"hidden"}}]}),dV=e.forwardRef(function(e,t){const n=fS(),r=Lh({props:e,name:"MuiPickersArrowSwitcher"}),{children:i,className:o,slots:a,slotProps:s,isNextDisabled:c,isNextHidden:u,onGoToNext:d,nextLabel:p,isPreviousDisabled:h,isPreviousHidden:m,onGoToPrevious:f,previousLabel:g,labelId:y,classes:v}=r,b=tt(r,oV),{ownerState:x}=iV(),I=(e=>NB({root:["root"],spacer:["spacer"],button:["button"],previousIconButton:["previousIconButton"],nextIconButton:["nextIconButton"],leftArrowIcon:["leftArrowIcon"],rightArrowIcon:["rightArrowIcon"]},nV,e))(v),w={isDisabled:c,isHidden:u,goTo:d,label:p},k={isDisabled:h,isHidden:m,goTo:f,label:g},S=a?.previousIconButton??uV,M=KB({elementType:S,externalSlotProps:s?.previousIconButton,additionalProps:{size:"medium",title:k.label,"aria-label":k.label,disabled:k.isDisabled,edge:"end",onClick:k.goTo},ownerState:l({},x,{isButtonHidden:k.isHidden??!1}),className:Hh(I.button,I.previousIconButton)}),C=a?.nextIconButton??uV,P=KB({elementType:C,externalSlotProps:s?.nextIconButton,additionalProps:{size:"medium",title:w.label,"aria-label":w.label,disabled:w.isDisabled,edge:"start",onClick:w.goTo},ownerState:l({},x,{isButtonHidden:w.isHidden??!1}),className:Hh(I.button,I.nextIconButton)}),E=a?.leftArrowIcon??qB,T=tt(KB({elementType:E,externalSlotProps:s?.leftArrowIcon,additionalProps:{fontSize:"inherit"},ownerState:x,className:I.leftArrowIcon}),aV),A=a?.rightArrowIcon??XB,j=tt(KB({elementType:A,externalSlotProps:s?.rightArrowIcon,additionalProps:{fontSize:"inherit"},ownerState:x,className:I.rightArrowIcon}),sV);return(0,O.jsxs)(lV,l({ref:t,className:Hh(I.root,o),ownerState:x},b,{children:[(0,O.jsx)(S,l({},M,{children:n?(0,O.jsx)(A,l({},j)):(0,O.jsx)(E,l({},T))})),i?(0,O.jsx)(Nv,{variant:"subtitle1",component:"span",id:y,children:i}):(0,O.jsx)(cV,{className:I.spacer,ownerState:x}),(0,O.jsx)(C,l({},P,{children:n?(0,O.jsx)(E,l({},T)):(0,O.jsx)(A,l({},j))}))]}))}),pV=(e,t,n)=>n&&(e>=12?"pm":"am")!==t?"am"===t?e-12:e+12:e,hV=(e,t)=>3600*t.getHours(e)+60*t.getMinutes(e)+t.getSeconds(e),mV=(e,t)=>(n,r)=>e?t.isAfter(n,r):hV(n,t)>hV(r,t),fV="undefined"!=typeof window?e.useLayoutEffect:e.useEffect,gV=function(t){const n=e.useRef(t);return fV(()=>{n.current=t}),e.useRef((...e)=>(0,n.current)(...e)).current};function yV(t){const{controlled:n,default:r,name:i,state:o="value"}=t,{current:a}=e.useRef(void 0!==n),[s,l]=e.useState(r);return[a?n:s,e.useCallback(e=>{a||l(e)},[])]}const vV={hasNextStep:!1,hasSeveralSteps:!1,goToNextStep:()=>{},areViewsInSameStep:()=>!0};const bV=bm("div",{slot:"internal",shouldForwardProp:void 0})({overflow:"hidden",width:320,maxHeight:336,display:"flex",flexDirection:"column",margin:"0 auto"});function xV(e){return eV("MuiTimeClock",e)}tV("MuiTimeClock",["root","arrowSwitcher"]);const IV=110,wV=110,kV=IV-IV,SV=0-wV,MV=(e,t,n)=>{const r=t-IV,i=n-wV;let o=(Math.atan2(kV,SV)-Math.atan2(r,i))*(180/Math.PI);o=Math.round(o/e)*e,o%=360;const a=r**2+i**2;return{value:Math.floor(o/e)||0,distance:Math.sqrt(a)}};function CV(e){return eV("MuiClockPointer",e)}tV("MuiClockPointer",["root","thumb"]);const PV=["className","classes","isBetweenTwoClockValues","isInner","type","viewValue"],EV=bm("div",{name:"MuiClockPointer",slot:"Root"})(({theme:e})=>({width:2,backgroundColor:(e.vars||e).palette.primary.main,position:"absolute",left:"calc(50% - 1px)",bottom:"50%",transformOrigin:"center bottom 0px",variants:[{props:{isClockPointerAnimated:!0},style:{transition:e.transitions.create(["transform","height"])}}]})),TV=bm("div",{name:"MuiClockPointer",slot:"Thumb"})(({theme:e})=>({width:4,height:4,backgroundColor:(e.vars||e).palette.primary.contrastText,borderRadius:"50%",position:"absolute",top:-21,left:"calc(50% - 18px)",border:`16px solid ${(e.vars||e).palette.primary.main}`,boxSizing:"content-box",variants:[{props:{isClockPointerBetweenTwoValues:!1},style:{backgroundColor:(e.vars||e).palette.primary.main}}]}));function AV(t){const n=Lh({props:t,name:"MuiClockPointer"}),{className:r,classes:i,isBetweenTwoClockValues:o,isInner:a,type:s,viewValue:c}=n,u=tt(n,PV),d=e.useRef(s);e.useEffect(()=>{d.current=s},[s]);const{ownerState:p}=iV(),h=l({},p,{isClockPointerAnimated:d.current!==s,isClockPointerBetweenTwoValues:o}),m=(e=>NB({root:["root"],thumb:["thumb"]},CV,e))(i);return(0,O.jsx)(EV,l({style:(()=>{let e=360/("hours"===s?12:60)*c;return"hours"===s&&c>12&&(e-=360),{height:Math.round(220*(a?.26:.4)),transform:`rotateZ(${e}deg)`}})(),className:Hh(m.root,r),ownerState:h},u,{children:(0,O.jsx)(TV,{ownerState:h,className:m.thumb})}))}function OV(e){return eV("MuiClock",e)}tV("MuiClock",["root","clock","wrapper","squareMask","pin","amButton","pmButton","meridiemText","selected"]);const jV=(e,t,n)=>{let r=t;return r=e.setHours(r,e.getHours(n)),r=e.setMinutes(r,e.getMinutes(n)),r=e.setSeconds(r,e.getSeconds(n)),r=e.setMilliseconds(r,e.getMilliseconds(n)),r},LV=(e,t,n)=>"date"===n?e.startOfDay(e.date(void 0,t)):e.date(void 0,t),RV=(e,t)=>{const n=e.setHours(e.date(),"am"===t?2:14);return e.format(n,"meridiem")},DV=bm("div",{name:"MuiClock",slot:"Root"})(({theme:e})=>({display:"flex",justifyContent:"center",alignItems:"center",margin:e.spacing(2)})),$V=bm("div",{name:"MuiClock",slot:"Clock"})({backgroundColor:"rgba(0,0,0,.07)",borderRadius:"50%",height:220,width:220,flexShrink:0,position:"relative",pointerEvents:"none"}),zV=bm("div",{name:"MuiClock",slot:"Wrapper"})({"&:focus":{outline:"none"}}),NV=bm("div",{name:"MuiClock",slot:"SquareMask"})({width:"100%",height:"100%",position:"absolute",pointerEvents:"auto",outline:0,touchAction:"none",userSelect:"none",variants:[{props:{isClockDisabled:!1},style:{"@media (pointer: fine)":{cursor:"pointer",borderRadius:"50%"},"&:active":{cursor:"move"}}}]}),_V=bm("div",{name:"MuiClock",slot:"Pin"})(({theme:e})=>({width:6,height:6,borderRadius:"50%",backgroundColor:(e.vars||e).palette.primary.main,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)"})),FV=(e,t)=>({zIndex:1,bottom:8,paddingLeft:4,paddingRight:4,width:36,variants:[{props:{clockMeridiemMode:t},style:{backgroundColor:(e.vars||e).palette.primary.main,color:(e.vars||e).palette.primary.contrastText,"&:hover":{backgroundColor:(e.vars||e).palette.primary.light}}}]}),HV=bm(sv,{name:"MuiClock",slot:"AmButton"})(({theme:e})=>l({},FV(e,"am"),{position:"absolute",left:8})),BV=bm(sv,{name:"MuiClock",slot:"PmButton"})(({theme:e})=>l({},FV(e,"pm"),{position:"absolute",right:8})),VV=bm(Nv,{name:"MuiClock",slot:"MeridiemText"})({overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"});function UV(t){const n=Lh({props:t,name:"MuiClock"}),{ampm:r,ampmInClock:i,autoFocus:o,children:a,value:s,handleMeridiemChange:c,isTimeDisabled:u,meridiemMode:d,minutesStep:p=1,onChange:h,selectedId:m,type:f,viewValue:g,viewRange:[y,v],disabled:b=!1,readOnly:x,className:I,classes:w}=n,k=UB(),S=YB(),{ownerState:M}=iV(),C=l({},M,{isClockDisabled:b,clockMeridiemMode:d}),P=e.useRef(!1),E=((e,t)=>NB({root:["root"],clock:["clock"],wrapper:["wrapper"],squareMask:["squareMask"],pin:["pin"],amButton:["amButton","am"===t.clockMeridiemMode&&"selected"],pmButton:["pmButton","pm"===t.clockMeridiemMode&&"selected"],meridiemText:["meridiemText"]},OV,e))(w,C),T=u(g,f),A=!r&&"hours"===f&&(g<1||g>12),j=(e,t)=>{b||x||u(e,f)||h(e,t)},L=(e,t)=>{let{offsetX:n,offsetY:i}=e;if(void 0===n){const t=e.target.getBoundingClientRect();n=e.changedTouches[0].clientX-t.left,i=e.changedTouches[0].clientY-t.top}const o="seconds"===f||"minutes"===f?((e,t,n=1)=>{const r=6*n;let{value:i}=MV(r,e,t);return i=i*n%60,i})(n,i,p):((e,t,n)=>{const{value:r,distance:i}=MV(30,e,t);let o=r||12;return n?o%=12:i<74&&(o+=12,o%=24),o})(n,i,Boolean(r));j(o,t)},R=e=>{P.current=!0,L(e,"shallow")},D="hours"!==f&&g%5!=0,$="minutes"===f?p:1,z=e.useRef(null);fV(()=>{o&&z.current.focus()},[o]);const N=e=>Math.max(y,Math.min(v,e)),_=e=>(e+(v+1))%(v+1);return(0,O.jsxs)(DV,{className:Hh(E.root,I),children:[(0,O.jsxs)($V,{className:E.clock,children:[(0,O.jsx)(NV,{onTouchMove:R,onTouchStart:R,onTouchEnd:e=>{P.current&&(L(e,"finish"),P.current=!1),e.preventDefault()},onMouseUp:e=>{P.current&&(P.current=!1),L(e.nativeEvent,"finish")},onMouseMove:e=>{e.buttons>0&&L(e.nativeEvent,"shallow")},ownerState:C,className:E.squareMask}),!T&&(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(_V,{className:E.pin}),null!=s&&(0,O.jsx)(AV,{type:f,viewValue:g,isInner:A,isBetweenTwoClockValues:D})]}),(0,O.jsx)(zV,{"aria-activedescendant":m,"aria-label":S.clockLabelText(f,null==s?null:k.format(s,r?"fullTime12h":"fullTime24h")),ref:z,role:"listbox",onKeyDown:e=>{if(!P.current)switch(e.key){case"Home":j(y,"partial"),e.preventDefault();break;case"End":j(v,"partial"),e.preventDefault();break;case"ArrowUp":j(_(g+$),"partial"),e.preventDefault();break;case"ArrowDown":j(_(g-$),"partial"),e.preventDefault();break;case"PageUp":j(N(g+5),"partial"),e.preventDefault();break;case"PageDown":j(N(g-5),"partial"),e.preventDefault();break;case"Enter":case" ":j(g,"finish"),e.preventDefault()}},tabIndex:0,className:E.wrapper,children:a})]}),r&&i&&(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(HV,{onClick:x?void 0:()=>c("am"),disabled:b||null===d,ownerState:C,className:E.amButton,title:RV(k,"am"),children:(0,O.jsx)(VV,{variant:"caption",className:E.meridiemText,children:RV(k,"am")})}),(0,O.jsx)(BV,{disabled:b||null===d,onClick:x?void 0:()=>c("pm"),ownerState:C,className:E.pmButton,title:RV(k,"pm"),children:(0,O.jsx)(VV,{variant:"caption",className:E.meridiemText,children:RV(k,"pm")})})]})]})}function YV(e){return eV("MuiClockNumber",e)}const WV=tV("MuiClockNumber",["root","selected","disabled"]),GV=["className","classes","disabled","index","inner","label","selected"],KV=bm("span",{name:"MuiClockNumber",slot:"Root",overridesResolver:(e,t)=>[t.root,{[`&.${WV.disabled}`]:t.disabled},{[`&.${WV.selected}`]:t.selected}]})(({theme:e})=>({height:36,width:36,position:"absolute",left:"calc((100% - 36px) / 2)",display:"inline-flex",justifyContent:"center",alignItems:"center",borderRadius:"50%",color:(e.vars||e).palette.text.primary,fontFamily:e.typography.fontFamily,"&:focused":{backgroundColor:(e.vars||e).palette.background.paper},[`&.${WV.selected}`]:{color:(e.vars||e).palette.primary.contrastText},[`&.${WV.disabled}`]:{pointerEvents:"none",color:(e.vars||e).palette.text.disabled},variants:[{props:{isClockNumberInInnerRing:!0},style:l({},e.typography.body2,{color:(e.vars||e).palette.text.secondary})}]}));function qV(e){const t=Lh({props:e,name:"MuiClockNumber"}),{className:n,classes:r,disabled:i,index:o,inner:a,label:s,selected:c}=t,u=tt(t,GV),{ownerState:d}=iV(),p=l({},d,{isClockNumberInInnerRing:a,isClockNumberSelected:c,isClockNumberDisabled:i}),h=((e,t)=>NB({root:["root",t.isClockNumberSelected&&"selected",t.isClockNumberDisabled&&"disabled"]},YV,e))(r,p),m=o%12/12*Math.PI*2-Math.PI/2,f=91*(a?.65:1),g=Math.round(Math.cos(m)*f),y=Math.round(Math.sin(m)*f);return(0,O.jsx)(KV,l({className:Hh(h.root,n),"aria-disabled":!!i||void 0,"aria-selected":!!c||void 0,role:"option",style:{transform:`translate(${g}px, ${y+92}px`},ownerState:p},u,{children:s}))}const XV=({ampm:e,value:t,getClockNumberText:n,isDisabled:r,selectedId:i,adapter:o})=>{const a=t?o.getHours(t):null,s=[],l=e?12:23,c=t=>null!==a&&(e?12===t?12===a||0===a:a===t||a-12===t:a===t);for(let t=e?1:0;t<=l;t+=1){let a=t.toString();0===t&&(a="00");const l=!e&&(0===t||t>12);a=o.formatNumber(a);const u=c(t);s.push((0,O.jsx)(qV,{id:u?i:void 0,index:t,inner:l,selected:u,disabled:r(t),label:a,"aria-label":n(a)},t))}return s},ZV=({adapter:e,value:t,isDisabled:n,getClockNumberText:r,selectedId:i})=>{const o=e.formatNumber;return[[5,o("05")],[10,o("10")],[15,o("15")],[20,o("20")],[25,o("25")],[30,o("30")],[35,o("35")],[40,o("40")],[45,o("45")],[50,o("50")],[55,o("55")],[0,o("00")]].map(([e,o],a)=>{const s=e===t;return(0,O.jsx)(qV,{label:o,id:s?i:void 0,index:a+1,inner:!1,disabled:n(e),selected:s,"aria-label":r(o)},e)})},JV=1,QV=2,eU=3,tU=5,nU=6,rU=7,iU=(e,t,n)=>{if(t===JV)return e.startOfYear(n);if(t===QV)return e.startOfMonth(n);if(t===eU)return e.startOfDay(n);let r=n;return t{let{value:t,referenceDate:n}=e,r=tt(e,oU);return r.adapter.isValid(t)?t:null!=n?n:(({props:e,adapter:t,granularity:n,timezone:r,getTodayDate:i})=>{let o=i?i():iU(t,n,LV(t,r));null!=e.minDate&&t.isAfterDay(e.minDate,o)&&(o=iU(t,n,e.minDate)),null!=e.maxDate&&t.isBeforeDay(e.maxDate,o)&&(o=iU(t,n,e.maxDate));const a=mV(e.disableIgnoringDatePartForTimeValidation??!1,t);return null!=e.minTime&&a(e.minTime,o)&&(o=iU(t,n,e.disableIgnoringDatePartForTimeValidation?e.minTime:jV(t,o,e.minTime))),null!=e.maxTime&&a(o,e.maxTime)&&(o=iU(t,n,e.disableIgnoringDatePartForTimeValidation?e.maxTime:jV(t,o,e.maxTime))),o})(r)},cleanValue:(e,t)=>e.isValid(t)?t:null,areValuesEqual:(e,t,n)=>!e.isValid(t)&&null!=t&&!e.isValid(n)&&null!=n||e.isEqual(t,n),isSameError:(e,t)=>e===t,hasError:e=>null!=e,defaultErrorState:null,getTimezone:(e,t)=>e.isValid(t)?e.getTimezone(t):null,setTimezone:(e,t,n)=>null==n?null:e.setTimezone(n,t)},sU=["ampm","ampmInClock","autoFocus","slots","slotProps","value","defaultValue","referenceDate","disableIgnoringDatePartForTimeValidation","maxTime","minTime","disableFuture","disablePast","minutesStep","shouldDisableTime","showViewSwitcher","onChange","view","views","openTo","onViewChange","focusedView","onFocusedViewChange","className","classes","disabled","readOnly","timezone"],lU=bm(bV,{name:"MuiTimeClock",slot:"Root"})({display:"flex",flexDirection:"column",position:"relative"}),cU=bm(dV,{name:"MuiTimeClock",slot:"ArrowSwitcher"})({position:"absolute",right:12,top:15}),uU=["hours","minutes"],dU=e.forwardRef(function(t,n){const r=UB(),i=Lh({props:t,name:"MuiTimeClock"}),{ampm:o=r.is12HourCycleInCurrentLocale(),ampmInClock:a=!1,autoFocus:s,slots:c,slotProps:u,value:d,defaultValue:p,referenceDate:h,disableIgnoringDatePartForTimeValidation:m=!1,maxTime:f,minTime:g,disableFuture:y,disablePast:v,minutesStep:b=1,shouldDisableTime:x,showViewSwitcher:I,onChange:w,view:k,views:S=uU,openTo:M,onViewChange:C,focusedView:P,onFocusedViewChange:E,className:T,classes:A,disabled:j,readOnly:L,timezone:R}=i,D=tt(i,sU),{value:$,handleValueChange:z,timezone:N}=(({name:t,timezone:n,value:r,defaultValue:i,referenceDate:o,onChange:a,valueManager:s})=>{const l=UB(),[c,u]=yV({name:t,state:"value",controlled:r,default:i??s.emptyValue}),d=e.useMemo(()=>s.getTimezone(l,c),[l,s,c]),p=gV(e=>null==d?e:s.setTimezone(l,d,e)),h=e.useMemo(()=>n||d||(o?l.getTimezone(Array.isArray(o)?o[0]:o):"default"),[n,d,o,l]);return{value:e.useMemo(()=>s.setTimezone(l,h,c),[s,l,h,c]),handleValueChange:gV((e,...t)=>{const n=p(e);u(n),a?.(n,...t)}),timezone:h}})({name:"TimeClock",timezone:R,value:d,defaultValue:p,referenceDate:h,onChange:w,valueManager:aU}),_=(({value:t,referenceDate:n,adapter:r,props:i,timezone:o})=>{const a=e.useMemo(()=>aU.getInitialReferenceValue({value:t,adapter:r,props:i,referenceDate:n,granularity:eU,timezone:o,getTodayDate:()=>LV(r,o,"date")}),[n,o]);return t??a})({value:$,referenceDate:h,adapter:r,props:i,timezone:N}),F=YB(),H=(t=>{const n=UB(),r=e.useRef(void 0);return void 0===r.current&&(r.current=n.date(void 0,t)),r.current})(N),B=function(t){if(void 0!==FB){const e=FB();return t??e}return function(t){const[n,r]=e.useState(t),i=t||n;return e.useEffect(()=>{null==n&&(_B+=1,r(`mui-${_B}`))},[n]),i}(t)}(),{ownerState:V}=iV(),{view:U,setView:Y,previousView:W,nextView:G,setValueAndGoToNextView:K}=function({onChange:t,onViewChange:n,openTo:r,view:i,views:o,autoFocus:a,focusedView:s,onFocusedViewChange:c,getStepNavigation:u}){const d=e.useRef(r),p=e.useRef(o),h=e.useRef(o.includes(r)?r:o[0]),[m,f]=yV({name:"useViews",state:"view",controlled:i,default:h.current}),g=e.useRef(a?m:null),[y,v]=yV({name:"useViews",state:"focusedView",controlled:s,default:g.current}),b=u?u({setView:f,view:m,defaultView:h.current,views:o}):vV;e.useEffect(()=>{(d.current&&d.current!==r||p.current&&p.current.some(e=>!o.includes(e)))&&(f(o.includes(r)?r:o[0]),p.current=o,d.current=r)},[r,f,m,o]);const x=o.indexOf(m),I=o[x-1]??null,w=o[x+1]??null,k=gV((e,t)=>{v(t?e:t=>e===t?null:t),c?.(e,t)}),S=gV(e=>{k(e,!0),e!==m&&(f(e),n&&n(e))}),M=gV(()=>{w&&S(w)}),C=gV((e,n,r)=>{const i="finish"===n,a=r?o.indexOf(r)o.isValid(t)?t:null,[o,t]),s=((e,t)=>e?t.getHours(e)>=12?"pm":"am":null)(a,o),l=e.useCallback(e=>{const t=null==a?null:((e,t,n,r)=>{const i=pV(r.getHours(e),t,n);return r.setHours(e,i)})(a,e,Boolean(n),o);r(t,i??"partial")},[n,a,r,i,o]);return{meridiemMode:s,handleMeridiemChange:l}}(_,o,K),Z=e.useCallback((e,t)=>{const n=mV(m,r),i="hours"===t||"minutes"===t&&S.includes("seconds"),a=({start:e,end:t})=>!(g&&n(g,t)||f&&n(e,f)||y&&n(e,H)||v&&n(H,i?t:e)),s=(e,n=1)=>{if(e%n!==0)return!1;if(x)switch(t){case"hours":return!x(r.setHours(_,e),"hours");case"minutes":return!x(r.setMinutes(_,e),"minutes");case"seconds":return!x(r.setSeconds(_,e),"seconds");default:return!1}return!0};switch(t){case"hours":{const t=pV(e,q,o),n=r.setHours(_,t);return r.getHours(n)!==t||(!a({start:r.setSeconds(r.setMinutes(n,0),0),end:r.setSeconds(r.setMinutes(n,59),59)})||!s(t))}case"minutes":{const t=r.setMinutes(_,e);return!a({start:r.setSeconds(t,0),end:r.setSeconds(t,59)})||!s(e,b)}case"seconds":{const t=r.setSeconds(_,e);return!a({start:t,end:t})||!s(e)}default:throw new Error("not supported")}},[o,_,m,f,q,g,b,x,r,y,v,H,S]),J=e.useMemo(()=>{switch(U){case"hours":{const e=(e,t)=>{const n=pV(e,q,o);K(r.setHours(_,n),t,"hours")},t=r.getHours(_);let n;return n=o?t>12?[12,23]:[0,11]:[0,23],{onChange:e,viewValue:t,children:XV({value:$,adapter:r,ampm:o,onChange:e,getClockNumberText:F.hoursClockNumberText,isDisabled:e=>j||Z(e,"hours"),selectedId:B}),viewRange:n}}case"minutes":{const e=r.getMinutes(_),t=(e,t)=>{K(r.setMinutes(_,e),t,"minutes")};return{viewValue:e,onChange:t,children:ZV({adapter:r,value:e,onChange:t,getClockNumberText:F.minutesClockNumberText,isDisabled:e=>j||Z(e,"minutes"),selectedId:B}),viewRange:[0,59]}}case"seconds":{const e=r.getSeconds(_),t=(e,t)=>{K(r.setSeconds(_,e),t,"seconds")};return{viewValue:e,onChange:t,children:ZV({adapter:r,value:e,onChange:t,getClockNumberText:F.secondsClockNumberText,isDisabled:e=>j||Z(e,"seconds"),selectedId:B}),viewRange:[0,59]}}default:throw new Error("You must provide the type for ClockView")}},[U,r,$,o,F.hoursClockNumberText,F.minutesClockNumberText,F.secondsClockNumberText,q,K,_,Z,B,j]),Q=(e=>NB({root:["root"],arrowSwitcher:["arrowSwitcher"]},xV,e))(A);return(0,O.jsxs)(lU,l({ref:n,className:Hh(Q.root,T),ownerState:V},D,{children:[(0,O.jsx)(UV,l({autoFocus:s??!!P,ampmInClock:a&&S.includes("hours"),value:$,type:U,ampm:o,minutesStep:b,isTimeDisabled:Z,meridiemMode:q,handleMeridiemChange:X,selectedId:B,disabled:j,readOnly:L},J)),I&&(0,O.jsx)(cU,{className:Q.arrowSwitcher,slots:c,slotProps:u,onGoToPrevious:()=>Y(W),isPreviousDisabled:!W,previousLabel:F.openPreviousView,onGoToNext:()=>Y(G),isNextDisabled:!G,nextLabel:F.openNextView,ownerState:V})]}))});function pU(){return pU=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n{const{ownerState:n}=e;return[t.root,t[n.variant],t[`color${Cm(n.color)}`]]}})(wm(({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:qy||{animation:`${Gy} 1.4s linear infinite`}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}}))]}))),Jy=bm("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),Qy=bm("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.circle,t[`circle${Cm(n.variant)}`],n.disableShrink&&t.circleDisableShrink]}})(wm(({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:Xy||{animation:`${Ky} 1.4s ease-in-out infinite`}}]}))),ev=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiCircularProgress"}),{className:r,color:i="primary",disableShrink:o=!1,size:a=40,style:s,thickness:l=3.6,value:c=0,variant:u="indeterminate",...d}=n,p={...n,color:i,disableShrink:o,size:a,thickness:l,value:c,variant:u},h=(e=>{const{classes:t,variant:n,color:r,disableShrink:i}=e;return Gh({root:["root",n,`color${Cm(r)}`],svg:["svg"],circle:["circle",`circle${Cm(n)}`,i&&"circleDisableShrink"]},Wy,t)})(p),m={},f={},g={};if("determinate"===u){const e=2*Math.PI*((44-l)/2);m.strokeDasharray=e.toFixed(3),g["aria-valuenow"]=Math.round(c),m.strokeDashoffset=`${((100-c)/100*e).toFixed(3)}px`,f.transform="rotate(-90deg)"}return(0,O.jsx)(Zy,{className:Hh(h.root,r),style:{width:a,height:a,...f,...s},ownerState:p,ref:t,role:"progressbar",...g,...d,children:(0,O.jsx)(Jy,{className:h.svg,ownerState:p,viewBox:"22 22 44 44",children:(0,O.jsx)(Qy,{className:h.circle,style:m,ownerState:p,cx:44,cy:44,r:(44-l)/2,fill:"none",strokeWidth:l})})})}),tv=ev;function nv(e){return Ig("MuiIconButton",e)}const rv=wg("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge","loading","loadingIndicator","loadingWrapper"]),iv=bm(Yy,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.loading&&t.loading,"default"!==n.color&&t[`color${Cm(n.color)}`],n.edge&&t[`edge${Cm(n.edge)}`],t[`size${Cm(n.size)}`]]}})(wm(({theme:e})=>({textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:8,borderRadius:"50%",color:(e.vars||e).palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),variants:[{props:e=>!e.disableRipple,style:{"--IconButton-hoverBg":e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette.action.active,e.palette.action.hoverOpacity),"&:hover":{backgroundColor:"var(--IconButton-hoverBg)","@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}}]})),wm(({theme:e})=>({variants:[{props:{color:"inherit"},style:{color:"inherit"}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{"--IconButton-hoverBg":e.vars?`rgba(${(e.vars||e).palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:op((e.vars||e).palette[t].main,e.palette.action.hoverOpacity)}})),{props:{size:"small"},style:{padding:5,fontSize:e.typography.pxToRem(18)}},{props:{size:"large"},style:{padding:12,fontSize:e.typography.pxToRem(28)}}],[`&.${rv.disabled}`]:{backgroundColor:"transparent",color:(e.vars||e).palette.action.disabled},[`&.${rv.loading}`]:{color:"transparent"}}))),ov=bm("span",{name:"MuiIconButton",slot:"LoadingIndicator",overridesResolver:(e,t)=>t.loadingIndicator})(({theme:e})=>({display:"none",position:"absolute",visibility:"visible",top:"50%",left:"50%",transform:"translate(-50%, -50%)",color:(e.vars||e).palette.action.disabled,variants:[{props:{loading:!0},style:{display:"flex"}}]})),av=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiIconButton"}),{edge:r=!1,children:i,className:o,color:a="default",disabled:s=!1,disableFocusRipple:l=!1,size:c="medium",id:u,loading:d=null,loadingIndicator:p,...h}=n,m=Dg(u),f=p??(0,O.jsx)(tv,{"aria-labelledby":m,color:"inherit",size:16}),g={...n,edge:r,color:a,disabled:s,disableFocusRipple:l,loading:d,loadingIndicator:f,size:c},y=(e=>{const{classes:t,disabled:n,color:r,edge:i,size:o,loading:a}=e;return Gh({root:["root",a&&"loading",n&&"disabled","default"!==r&&`color${Cm(r)}`,i&&`edge${Cm(i)}`,`size${Cm(o)}`],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]},nv,t)})(g);return(0,O.jsxs)(iv,{id:d?m:u,className:Hh(y.root,o),centerRipple:!0,focusRipple:!l,disabled:s||d,ref:t,...h,ownerState:g,children:["boolean"==typeof d&&(0,O.jsx)("span",{className:y.loadingWrapper,style:{display:"contents"},children:(0,O.jsx)(ov,{className:y.loadingIndicator,ownerState:g,children:d&&f})}),i]})}),sv=av;function lv(e){return Ig("MuiButton",e)}const cv=wg("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"]),uv=e.createContext({}),dv=e.createContext(void 0),pv=[{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}}}],hv=bm(Yy,{shouldForwardProp:e=>ym(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`${n.variant}${Cm(n.color)}`],t[`size${Cm(n.size)}`],t[`${n.variant}Size${Cm(n.size)}`],"inherit"===n.color&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth,n.loading&&t.loading]}})(wm(({theme:e})=>{const t="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],n="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return{...e.typography.button,minWidth:64,padding:"6px 16px",border:0,borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":{textDecoration:"none"},[`&.${cv.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{variant:"contained"},style:{color:"var(--variant-containedColor)",backgroundColor:"var(--variant-containedBg)",boxShadow:(e.vars||e).shadows[2],"&:hover":{boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2]}},"&:active":{boxShadow:(e.vars||e).shadows[8]},[`&.${cv.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},[`&.${cv.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).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)",[`&.${cv.disabled}`]:{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`}}},{props:{variant:"text"},style:{padding:"6px 8px",color:"var(--variant-textColor)",backgroundColor:"var(--variant-textBg)"}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{"--variant-textColor":(e.vars||e).palette[t].main,"--variant-outlinedColor":(e.vars||e).palette[t].main,"--variant-outlinedBorder":e.vars?`rgba(${e.vars.palette[t].mainChannel} / 0.5)`:op(e.palette[t].main,.5),"--variant-containedColor":(e.vars||e).palette[t].contrastText,"--variant-containedBg":(e.vars||e).palette[t].main,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":(e.vars||e).palette[t].dark,"--variant-textBg":e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette[t].main,e.palette.action.hoverOpacity),"--variant-outlinedBorder":(e.vars||e).palette[t].main,"--variant-outlinedBg":e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette[t].main,e.palette.action.hoverOpacity)}}}})),{props:{color:"inherit"},style:{color:"inherit",borderColor:"currentColor","--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedBg:t,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedHoverBg:n,"--variant-textBg":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette.text.primary,e.palette.action.hoverOpacity),"--variant-outlinedBg":e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette.text.primary,e.palette.action.hoverOpacity)}}}},{props:{size:"small",variant:"text"},style:{padding:"4px 5px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"text"},style:{padding:"8px 11px",fontSize:e.typography.pxToRem(15)}},{props:{size:"small",variant:"outlined"},style:{padding:"3px 9px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"outlined"},style:{padding:"7px 21px",fontSize:e.typography.pxToRem(15)}},{props:{size:"small",variant:"contained"},style:{padding:"4px 10px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"contained"},style:{padding:"8px 22px",fontSize:e.typography.pxToRem(15)}},{props:{disableElevation:!0},style:{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${cv.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${cv.disabled}`]:{boxShadow:"none"}}},{props:{fullWidth:!0},style:{width:"100%"}},{props:{loadingPosition:"center"},style:{transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),[`&.${cv.loading}`]:{color:"transparent"}}}]}})),mv=bm("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.startIcon,n.loading&&t.startIconLoadingStart,t[`iconSize${Cm(n.size)}`]]}})(({theme:e})=>({display:"inherit",marginRight:8,marginLeft:-4,variants:[{props:{size:"small"},style:{marginLeft:-2}},{props:{loadingPosition:"start",loading:!0},style:{transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"start",loading:!0,fullWidth:!0},style:{marginRight:-8}},...pv]})),fv=bm("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.endIcon,n.loading&&t.endIconLoadingEnd,t[`iconSize${Cm(n.size)}`]]}})(({theme:e})=>({display:"inherit",marginRight:-4,marginLeft:8,variants:[{props:{size:"small"},style:{marginRight:-2}},{props:{loadingPosition:"end",loading:!0},style:{transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"end",loading:!0,fullWidth:!0},style:{marginLeft:-8}},...pv]})),gv=bm("span",{name:"MuiButton",slot:"LoadingIndicator",overridesResolver:(e,t)=>t.loadingIndicator})(({theme:e})=>({display:"none",position:"absolute",visibility:"visible",variants:[{props:{loading:!0},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:(e.vars||e).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:!0},style:{position:"relative",left:-10}},{props:{loadingPosition:"end",fullWidth:!0},style:{position:"relative",right:-10}}]})),yv=bm("span",{name:"MuiButton",slot:"LoadingIconPlaceholder",overridesResolver:(e,t)=>t.loadingIconPlaceholder})({display:"inline-block",width:"1em",height:"1em"}),vv=e.forwardRef(function(t,n){const r=e.useContext(uv),i=e.useContext(dv),o=Mm({props:cc(r,t),name:"MuiButton"}),{children:a,color:s="primary",component:l="button",className:c,disabled:u=!1,disableElevation:d=!1,disableFocusRipple:p=!1,endIcon:h,focusVisibleClassName:m,fullWidth:f=!1,id:g,loading:y=null,loadingIndicator:v,loadingPosition:b="center",size:x="medium",startIcon:I,type:w,variant:k="text",...S}=o,M=Dg(g),C=v??(0,O.jsx)(tv,{"aria-labelledby":M,color:"inherit",size:16}),P={...o,color:s,component:l,disabled:u,disableElevation:d,disableFocusRipple:p,fullWidth:f,loading:y,loadingIndicator:C,loadingPosition:b,size:x,type:w,variant:k},E=(e=>{const{color:t,disableElevation:n,fullWidth:r,size:i,variant:o,loading:a,loadingPosition:s,classes:l}=e,c=Gh({root:["root",a&&"loading",o,`${o}${Cm(t)}`,`size${Cm(i)}`,`${o}Size${Cm(i)}`,`color${Cm(t)}`,n&&"disableElevation",r&&"fullWidth",a&&`loadingPosition${Cm(s)}`],startIcon:["icon","startIcon",`iconSize${Cm(i)}`],endIcon:["icon","endIcon",`iconSize${Cm(i)}`],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]},lv,l);return{...l,...c}})(P),T=(I||y&&"start"===b)&&(0,O.jsx)(mv,{className:E.startIcon,ownerState:P,children:I||(0,O.jsx)(yv,{className:E.loadingIconPlaceholder,ownerState:P})}),A=(h||y&&"end"===b)&&(0,O.jsx)(fv,{className:E.endIcon,ownerState:P,children:h||(0,O.jsx)(yv,{className:E.loadingIconPlaceholder,ownerState:P})}),j=i||"",L="boolean"==typeof y?(0,O.jsx)("span",{className:E.loadingWrapper,style:{display:"contents"},children:y&&(0,O.jsx)(gv,{className:E.loadingIndicator,ownerState:P,children:C})}):null;return(0,O.jsxs)(hv,{ownerState:P,className:Hh(r.className,E.root,c,j),component:l,disabled:u||y,focusRipple:!p,focusVisibleClassName:Hh(E.focusVisible,m),ref:n,type:w,id:y?M:g,...S,classes:E,children:[T,"end"!==b&&L,a,"end"===b&&L,A]})}),bv=l({},{baseButton:vv,baseIconButton:sv},{});function xv(e){return Ig("MuiListItemIcon",e)}const Iv=wg("MuiListItemIcon",["root","alignItemsFlexStart"]);function wv(e){return Ig("MuiListItemText",e)}const kv=wg("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);function Sv(e){return Ig("MuiMenuItem",e)}const Mv=wg("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),Cv=bm(Yy,{shouldForwardProp:e=>ym(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,n.divider&&t.divider,!n.disableGutters&&t.gutters]}})(wm(({theme:e})=>({...e.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:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${Mv.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:op(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${Mv.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:op(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`&.${Mv.selected}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:op(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:op(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${Mv.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${Mv.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`& + .${hy.root}`]:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},[`& + .${hy.inset}`]:{marginLeft:52},[`& .${kv.root}`]:{marginTop:0,marginBottom:0},[`& .${kv.inset}`]:{paddingLeft:36},[`& .${Iv.root}`]:{minWidth:36},variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>!e.dense,style:{[e.breakpoints.up("sm")]:{minHeight:"auto"}}},{props:({ownerState:e})=>e.dense,style:{minHeight:32,paddingTop:4,paddingBottom:4,...e.typography.body2,[`& .${Iv.root} svg`]:{fontSize:"1.25rem"}}}]}))),Pv=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiMenuItem"}),{autoFocus:i=!1,component:o="li",dense:a=!1,divider:s=!1,disableGutters:l=!1,focusVisibleClassName:c,role:u="menuitem",tabIndex:d,className:p,...h}=r,m=e.useContext(Zg),f=e.useMemo(()=>({dense:a||m.dense||!1,disableGutters:l}),[m.dense,a,l]),g=e.useRef(null);iy(()=>{i&&g.current&&g.current.focus()},[i]);const y={...r,dense:f.dense,divider:s,disableGutters:l},v=(e=>{const{disabled:t,dense:n,divider:r,disableGutters:i,selected:o,classes:a}=e,s=Gh({root:["root",n&&"dense",t&&"disabled",!i&&"gutters",r&&"divider",o&&"selected"]},Sv,a);return{...a,...s}})(r),b=Vm(g,n);let x;return r.disabled||(x=void 0!==d?d:-1),(0,O.jsx)(Zg.Provider,{value:f,children:(0,O.jsx)(Cv,{ref:b,role:u,tabIndex:x,component:o,focusVisibleClassName:Hh(v.focusVisible,c),className:Hh(v.root,p),...h,ownerState:y,classes:v})})}),Ev=Pv,Tv=bm("div",{name:"MuiListItemIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"flex-start"===n.alignItems&&t.alignItemsFlexStart]}})(wm(({theme:e})=>({minWidth:56,color:(e.vars||e).palette.action.active,flexShrink:0,display:"inline-flex",variants:[{props:{alignItems:"flex-start"},style:{marginTop:8}}]}))),Av=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiListItemIcon"}),{className:i,...o}=r,a=e.useContext(Zg),s={...r,alignItems:a.alignItems},l=(e=>{const{alignItems:t,classes:n}=e;return Gh({root:["root","flex-start"===t&&"alignItemsFlexStart"]},xv,n)})(s);return(0,O.jsx)(Tv,{className:Hh(l.root,i),ownerState:s,ref:n,...o})});function Ov(e){return Ig("MuiTypography",e)}const jv=wg("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const Lv={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},Rv=function(e){const{sx:t,...n}=e,{systemProps:r,otherProps:i}=(e=>{const t={systemProps:{},otherProps:{}},n=e?.theme?.unstable_sxConfig??vu;return Object.keys(e).forEach(r=>{n[r]?t.systemProps[r]=e[r]:t.otherProps[r]=e[r]}),t})(n);let o;return o=Array.isArray(t)?[r,...t]:"function"==typeof t?(...e)=>{const n=t(...e);return pc(n)?{...r,...n}:r}:{...r,...t},{...i,sx:o}},Dv=bm("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],"inherit"!==n.align&&t[`align${Cm(n.align)}`],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})(wm(({theme:e})=>({margin:0,variants:[{props:{variant:"inherit"},style:{font:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},...Object.entries(e.typography).filter(([e,t])=>"inherit"!==e&&t&&"object"==typeof t).map(([e,t])=>({props:{variant:e},style:t})),...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),...Object.entries(e.palette?.text||{}).filter(([,e])=>"string"==typeof e).map(([t])=>({props:{color:`text${Cm(t)}`},style:{color:(e.vars||e).palette.text[t]}})),{props:({ownerState:e})=>"inherit"!==e.align,style:{textAlign:"var(--Typography-textAlign)"}},{props:({ownerState:e})=>e.noWrap,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},{props:({ownerState:e})=>e.gutterBottom,style:{marginBottom:"0.35em"}},{props:({ownerState:e})=>e.paragraph,style:{marginBottom:16}}]}))),$v={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},zv=e.forwardRef(function(e,t){const{color:n,...r}=Mm({props:e,name:"MuiTypography"}),i=Rv({...r,...!Lv[n]&&{color:n}}),{align:o="inherit",className:a,component:s,gutterBottom:l=!1,noWrap:c=!1,paragraph:u=!1,variant:d="body1",variantMapping:p=$v,...h}=i,m={...i,align:o,color:n,className:a,component:s,gutterBottom:l,noWrap:c,paragraph:u,variant:d,variantMapping:p},f=s||(u?"p":p[d]||$v[d])||"span",g=(e=>{const{align:t,gutterBottom:n,noWrap:r,paragraph:i,variant:o,classes:a}=e;return Gh({root:["root",o,"inherit"!==e.align&&`align${Cm(t)}`,n&&"gutterBottom",r&&"noWrap",i&&"paragraph"]},Ov,a)})(m);return(0,O.jsx)(Dv,{as:f,ref:t,className:Hh(g.root,a),...h,ownerState:m,style:{..."inherit"!==o&&{"--Typography-textAlign":o},...h.style}})}),Nv=zv,_v=bm("div",{name:"MuiListItemText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${kv.primary}`]:t.primary},{[`& .${kv.secondary}`]:t.secondary},t.root,n.inset&&t.inset,n.primary&&n.secondary&&t.multiline,n.dense&&t.dense]}})({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4,[`.${jv.root}:where(& .${kv.primary})`]:{display:"block"},[`.${jv.root}:where(& .${kv.secondary})`]:{display:"block"},variants:[{props:({ownerState:e})=>e.primary&&e.secondary,style:{marginTop:6,marginBottom:6}},{props:({ownerState:e})=>e.inset,style:{paddingLeft:56}}]}),Fv=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiListItemText"}),{children:i,className:o,disableTypography:a=!1,inset:s=!1,primary:l,primaryTypographyProps:c,secondary:u,secondaryTypographyProps:d,slots:p={},slotProps:h={},...m}=r,{dense:f}=e.useContext(Zg);let g=null!=l?l:i,y=u;const v={...r,disableTypography:a,inset:s,primary:!!g,secondary:!!y,dense:f},b=(e=>{const{classes:t,inset:n,primary:r,secondary:i,dense:o}=e;return Gh({root:["root",n&&"inset",o&&"dense",r&&i&&"multiline"],primary:["primary"],secondary:["secondary"]},wv,t)})(v),x={slots:p,slotProps:{primary:c,secondary:d,...h}},[I,w]=Ng("root",{className:Hh(b.root,o),elementType:_v,externalForwardedProps:{...x,...m},ownerState:v,ref:n}),[k,S]=Ng("primary",{className:b.primary,elementType:Nv,externalForwardedProps:x,ownerState:v}),[M,C]=Ng("secondary",{className:b.secondary,elementType:Nv,externalForwardedProps:x,ownerState:v});return null==g||g.type===Nv||a||(g=(0,O.jsx)(k,{variant:f?"body2":"body1",component:S?.variant?void 0:"span",...S,children:g})),null==y||y.type===Nv||a||(y=(0,O.jsx)(M,{variant:"body2",color:"textSecondary",...C,children:y})),(0,O.jsxs)(I,{...w,children:[g,y]})}),Hv=["inert","iconStart","iconEnd","children"],Bv=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function Vv(e){const t=[],n=[];return Array.from(e.querySelectorAll(Bv)).forEach((e,r)=>{const i=function(e){const t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}(e);-1!==i&&function(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;const t=t=>e.ownerDocument.querySelector(`input[type="radio"]${t}`);let n=t(`[name="${e.name}"]:checked`);return n||(n=t(`[name="${e.name}"]`)),n!==e}(e))}(e)&&(0===i?t.push(e):n.push({documentOrder:r,tabIndex:i,node:e}))}),n.sort((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex).map(e=>e.node).concat(t)}function Uv(){return!0}const Yv=function(t){const{children:n,disableAutoFocus:r=!1,disableEnforceFocus:i=!1,disableRestoreFocus:o=!1,getTabbable:a=Vv,isEnabled:s=Uv,open:l}=t,c=e.useRef(!1),u=e.useRef(null),d=e.useRef(null),p=e.useRef(null),h=e.useRef(null),m=e.useRef(!1),f=e.useRef(null),g=Bm(Jh(n),f),y=e.useRef(null);e.useEffect(()=>{l&&f.current&&(m.current=!r)},[r,l]),e.useEffect(()=>{if(!l||!f.current)return;const e=Xm(f.current);return f.current.contains(e.activeElement)||(f.current.hasAttribute("tabIndex")||f.current.setAttribute("tabIndex","-1"),m.current&&f.current.focus()),()=>{o||(p.current&&p.current.focus&&(c.current=!0,p.current.focus()),p.current=null)}},[l]),e.useEffect(()=>{if(!l||!f.current)return;const e=Xm(f.current),t=t=>{y.current=t,!i&&s()&&"Tab"===t.key&&e.activeElement===f.current&&t.shiftKey&&(c.current=!0,d.current&&d.current.focus())},n=()=>{const t=f.current;if(null===t)return;if(!e.hasFocus()||!s()||c.current)return void(c.current=!1);if(t.contains(e.activeElement))return;if(i&&e.activeElement!==u.current&&e.activeElement!==d.current)return;if(e.activeElement!==h.current)h.current=null;else if(null!==h.current)return;if(!m.current)return;let n=[];if(e.activeElement!==u.current&&e.activeElement!==d.current||(n=a(f.current)),n.length>0){const e=Boolean(y.current?.shiftKey&&"Tab"===y.current?.key),t=n[0],r=n[n.length-1];"string"!=typeof t&&"string"!=typeof r&&(e?r.focus():t.focus())}else t.focus()};e.addEventListener("focusin",n),e.addEventListener("keydown",t,!0);const r=setInterval(()=>{e.activeElement&&"BODY"===e.activeElement.tagName&&n()},50);return()=>{clearInterval(r),e.removeEventListener("focusin",n),e.removeEventListener("keydown",t,!0)}},[r,i,o,s,l,a]);const v=e=>{null===p.current&&(p.current=e.relatedTarget),m.current=!0};return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("div",{tabIndex:l?0:-1,onFocus:v,ref:u,"data-testid":"sentinelStart"}),e.cloneElement(n,{ref:g,onFocus:e=>{null===p.current&&(p.current=e.relatedTarget),m.current=!0,h.current=e.target;const t=n.props.onFocus;t&&t(e)}}),(0,O.jsx)("div",{tabIndex:l?0:-1,onFocus:v,ref:d,"data-testid":"sentinelEnd"})]})};function Wv(e){return e.substring(2).toLowerCase()}function Gv(t){const{children:n,disableReactTree:r=!1,mouseEvent:i="onClick",onClickAway:o,touchEvent:a="onTouchEnd"}=t,s=e.useRef(!1),l=e.useRef(null),c=e.useRef(!1),u=e.useRef(!1);e.useEffect(()=>(setTimeout(()=>{c.current=!0},0),()=>{c.current=!1}),[]);const d=Bm(Jh(n),l),p=Ag(e=>{const t=u.current;u.current=!1;const n=Xm(l.current);if(!c.current||!l.current||"clientX"in e&&function(e,t){return t.documentElement.clientWidtht=>{u.current=!0;const r=n.props[e];r&&r(t)},m={ref:d};return!1!==a&&(m[a]=h(a)),e.useEffect(()=>{if(!1!==a){const e=Wv(a),t=Xm(l.current),n=()=>{s.current=!0};return t.addEventListener(e,p),t.addEventListener("touchmove",n),()=>{t.removeEventListener(e,p),t.removeEventListener("touchmove",n)}}},[p,a]),!1!==i&&(m[i]=h(i)),e.useEffect(()=>{if(!1!==i){const e=Wv(i),t=Xm(l.current);return t.addEventListener(e,p),()=>{t.removeEventListener(e,p)}}},[p,i]),e.cloneElement(n,m)}function Kv(e){return Ig("MuiPaper",e)}wg("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 qv=bm("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t[`elevation${n.elevation}`]]}})(wm(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow"),variants:[{props:({ownerState:e})=>!e.square,style:{borderRadius:e.shape.borderRadius}},{props:{variant:"outlined"},style:{border:`1px solid ${(e.vars||e).palette.divider}`}},{props:{variant:"elevation"},style:{boxShadow:"var(--Paper-shadow)",backgroundImage:"var(--Paper-overlay)"}}]}))),Xv=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiPaper"}),r=xm(),{className:i,component:o="div",elevation:a=1,square:s=!1,variant:l="elevation",...c}=n,u={...n,component:o,elevation:a,square:s,variant:l},d=(e=>{const{square:t,elevation:n,variant:r,classes:i}=e;return Gh({root:["root",r,!t&&"rounded","elevation"===r&&`elevation${n}`]},Kv,i)})(u);return(0,O.jsx)(qv,{as:o,ownerState:u,className:Hh(d.root,i),ref:t,...c,style:{..."elevation"===l&&{"--Paper-shadow":(r.vars||r).shadows[a],...r.vars&&{"--Paper-overlay":r.vars.overlays?.[a]},...!r.vars&&"dark"===r.palette.mode&&{"--Paper-overlay":`linear-gradient(${op("#fff",yh(a))}, ${op("#fff",yh(a))})`}},...c.style}})}),Zv=Xv,Jv=["ref","open","children","className","clickAwayTouchEvent","clickAwayMouseEvent","flip","focusTrap","onExited","onClickAway","onDidShow","onDidHide","id","target","transition","placement"];function Qv(e,t){return function(e,t){return void 0===e.focusTrap?t:(0,O.jsx)(Yv,{open:!0,disableEnforceFocus:!0,disableAutoFocus:!0,children:(0,O.jsx)("div",{tabIndex:-1,children:t})})}(e,function(e,t){return void 0===e.onClickAway?t:(0,O.jsx)(Gv,{onClickAway:e.onClickAway,touchEvent:e.clickAwayTouchEvent,mouseEvent:e.clickAwayMouseEvent,children:t})}(e,t))}const eb={"bottom-start":"top left","bottom-end":"top right"};function tb(e){return Ig("MuiSvgIcon",e)}wg("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);const nb=bm("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t[`color${Cm(n.color)}`],t[`fontSize${Cm(n.fontSize)}`]]}})(wm(({theme:e})=>({userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:e.transitions?.create?.("fill",{duration:(e.vars??e).transitions?.duration?.shorter}),variants:[{props:e=>!e.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:e.typography?.pxToRem?.(20)||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:e.typography?.pxToRem?.(24)||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:e.typography?.pxToRem?.(35)||"2.1875rem"}},...Object.entries((e.vars??e).palette).filter(([,e])=>e&&e.main).map(([t])=>({props:{color:t},style:{color:(e.vars??e).palette?.[t]?.main}})),{props:{color:"action"},style:{color:(e.vars??e).palette?.action?.active}},{props:{color:"disabled"},style:{color:(e.vars??e).palette?.action?.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}))),rb=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiSvgIcon"}),{children:i,className:o,color:a="inherit",component:s="svg",fontSize:l="medium",htmlColor:c,inheritViewBox:u=!1,titleAccess:d,viewBox:p="0 0 24 24",...h}=r,m=e.isValidElement(i)&&"svg"===i.type,f={...r,color:a,component:s,fontSize:l,instanceFontSize:t.fontSize,inheritViewBox:u,viewBox:p,hasSvgAsChild:m},g={};u||(g.viewBox=p);const y=(e=>{const{color:t,fontSize:n,classes:r}=e;return Gh({root:["root","inherit"!==t&&`color${Cm(t)}`,`fontSize${Cm(n)}`]},tb,r)})(f);return(0,O.jsxs)(nb,{as:s,className:Hh(y.root,o),focusable:"false",color:c,"aria-hidden":!d||void 0,role:d?"img":void 0,ref:n,...g,...h,...m&&i.props,ownerState:f,children:[m?i.props.children:i,d?(0,O.jsx)("title",{children:d}):null]})});rb.muiName="SvgIcon";const ib=rb;function ob(t,n){function r(e,r){return(0,O.jsx)(ib,{"data-testid":`${n}Icon`,ref:r,...e,children:t})}return r.muiName=ib.muiName,e.memo(e.forwardRef(r))}const ab=ob,sb=ab((0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"}),(0,O.jsx)("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"})]}),"ZoomIn"),lb=ab((0,O.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z"}),"ZoomOut"),cb=ab((0,O.jsx)("path",{d:"M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z"}),"Export"),ub={baseTooltip:qg,basePopper:function(t){const{open:n,children:r,className:i,flip:o,onExited:a,onDidShow:s,onDidHide:c,id:u,target:d,transition:p,placement:h}=t,m=tt(t,Jv),f=e.useMemo(()=>{const e=[{name:"preventOverflow",options:{padding:8}}];return o&&e.push({name:"flip",enabled:!0,options:{rootBoundary:"document"}}),(s||c)&&e.push({name:"isPlaced",enabled:!0,phase:"main",fn:()=>{s?.()},effect:()=>()=>{c?.()}}),e},[o,s,c]);let g;if(p){const e=e=>t=>{e&&e(),a&&a(t)};g=n=>Qv(t,(0,O.jsx)(Km,l({},n.TransitionProps,{style:{transformOrigin:eb[n.placement]},onExited:e(n.TransitionProps?.onExited),children:(0,O.jsx)(Zv,{children:r})})))}else g=Qv(t,r);return(0,O.jsx)(Tg,l({id:u,className:i,open:n,anchorEl:d,transition:p,placement:h,modifiers:f},m,{children:g}))},baseMenuList:dy,baseMenuItem:function(e){const{inert:t,iconStart:n,iconEnd:r,children:i}=e,o=tt(e,Hv);return(0,O.jsxs)(Ev,l({},o,{disableRipple:!!t||o.disableRipple,children:[n&&(0,O.jsx)(Av,{children:n},"1"),(0,O.jsx)(Fv,{children:i},"2"),r&&(0,O.jsx)(Av,{children:r},"3")]}))},baseDivider:yy},db=l({},bv,ub,{zoomInIcon:sb,zoomOutIcon:lb,exportIcon:cb}),pb=e=>e.brush,hb=(ae(pb,e=>e?.start),ae(pb,e=>e?.current),ae(pb,e=>e?.start?.x??null)),mb=ae(pb,e=>e?.start?.y??null),fb=ae(pb,e=>e?.current?.x??null),gb=ae(pb,e=>e?.current?.y??null),yb=le(hb,mb,fb,gb,(e,t,n,r)=>null===e||null===t||null===n||null===r?null:{start:{x:e,y:t},current:{x:n,y:r}}),vb=ae(ft,e=>{let t=!1,n=!1;return e&&Object.entries(e).forEach(([e,r])=>{Object.values(r.series).some(e=>"horizontal"===e.layout)&&(t=!0),"scatter"===e&&r.seriesOrder.length>0&&(n=!0)}),n?"xy":t?"y":"x"}),bb=ae(qa,function(e){let t=!1,n=!1;return Object.values(e).forEach(e=>{"y"===e.axisDirection&&(n=!0),"x"===e.axisDirection&&(t=!0)}),t&&n?"xy":n?"y":t?"x":null}),xb=ae(vb,bb,(e,t)=>t??e),Ib=ae(pb,e=>e?.enabled||e?.isZoomBrushEnabled),wb=ae(Ib,pb,(e,t)=>e&&null!==t?.start&&null!==t?.current),kb=ae(pb,wb,(e,t)=>t&&e?.preventHighlight),Sb=ae(pb,wb,(e,t)=>t&&e?.preventTooltip),Mb=({store:t,svgRef:n,instance:r,params:i})=>{const o=t.use(Ib);V(()=>{t.set("brush",l({},t.state.brush,{enabled:i.brushConfig.enabled,preventTooltip:i.brushConfig.preventTooltip,preventHighlight:i.brushConfig.preventHighlight}))},[t,i.brushConfig.enabled,i.brushConfig.preventTooltip,i.brushConfig.preventHighlight]);const a=ke(function(e){t.set("brush",l({},t.state.brush,{start:t.state.brush.start??e,current:e}))}),s=ke(function(){t.set("brush",l({},t.state.brush,{start:null,current:null}))}),c=ke(function(e){t.state.brush.isZoomBrushEnabled!==e&&t.set("brush",l({},t.state.brush,{isZoomBrushEnabled:e}))});return e.useEffect(()=>{const e=n.current;if(null===e||!o)return()=>{};const t=r.addInteractionListener("brushStart",t=>{if(t.detail.target?.closest("[data-charts-zoom-slider]"))return;const n=xs(e,{clientX:t.detail.initialCentroid.x,clientY:t.detail.initialCentroid.y});a(n)}),i=r.addInteractionListener("brush",t=>{const n=xs(e,{clientX:t.detail.centroid.x,clientY:t.detail.centroid.y});a(n)}),l=r.addInteractionListener("brushCancel",s),c=r.addInteractionListener("brushEnd",s);return()=>{t.cleanup(),i.cleanup(),c.cleanup(),l.cleanup()}},[n,r,t,s,a,o]),{instance:{setBrushCoordinates:a,clearBrush:s,setZoomBrushEnabled:c}}};function Cb(e,t,n){const r="rotation"===n?"DEFAULT_ROTATION_AXIS_KEY":"DEFAULT_RADIUS_AXIS_KEY";return(e&&e.length>0?e:[{id:r}]).map((e,r)=>{const i=`defaultized-${n}-axis-${r}`,o=e.dataKey;if(void 0===o||void 0!==e.data)return l({id:i},e);if(void 0===t)throw new Error(`MUI X Charts: ${n}-axis uses \`dataKey\` but no \`dataset\` is provided.`);return l({id:i,data:t.map(e=>e[o])},e)})}function Pb(e){return pa.getTypes().has(e)}Mb.params={brushConfig:!0},Mb.getDefaultizedParams=({params:e})=>l({},e,{brushConfig:{enabled:e?.brushConfig?.enabled??!1,preventTooltip:e?.brushConfig?.preventTooltip??!0,preventHighlight:e?.brushConfig?.preventHighlight??!0}}),Mb.getInitialState=e=>({brush:{enabled:e.brushConfig.enabled,isZoomBrushEnabled:!1,preventTooltip:e.brushConfig.preventTooltip,preventHighlight:e.brushConfig.preventHighlight,start:null,current:null}});function Eb({drawingArea:e,formattedSeries:t,axis:n,seriesConfig:r,axisDirection:i}){if(void 0===n)return{axis:{},axisIds:[]};const o=((e,t,n,r)=>{const i=new Set;return Object.keys(t).filter(Pb).forEach(o=>{const a=n[o]?.series??{},s=t[o].axisTooltipGetter?.(a);void 0!==s&&s.forEach(({axisId:t,direction:n})=>{n===e&&i.add(t??r)})}),i})(i,r,t,n[0].id),a={};return n.forEach((n,s)=>{const c=n,u=function(e,t,n){if("rotation"===t){if("point"===n.scaleType){const e=[Ql(n.startAngle,0),Ql(n.endAngle,2*Math.PI)],t=e[1]-e[0];return t>2*Math.PI-.1&&(e[1]-=t/n.data.length),e}return[Ql(n.startAngle,0),Ql(n.endAngle,2*Math.PI)]}return[0,Math.min(e.height,e.width)/2]}(e,i,c),[d,p]=((e,t,n,r,i)=>{const o=Object.keys(n).filter(Pb).reduce((o,a)=>((e,t,n,r,i,o,a)=>{const s="rotation"===r?i[t].rotationExtremumGetter:i[t].radiusExtremumGetter,l=a[t]?.series??{},[c,u]=s?.({series:l,axis:n,axisIndex:o,isDefaultAxis:0===o})??[1/0,-1/0],[d,p]=e;return[Math.min(c,d),Math.max(u,p)]})(o,a,e,t,n,r,i),[1/0,-1/0]);return Number.isNaN(o[0])||Number.isNaN(o[1])?[1/0,-1/0]:o})(c,i,r,s,t),h=!c.ignoreTooltip&&o.has(c.id),m=c.data??[];if(Et(c)){const e=c.categoryGapRatio??.2,t=c.barGapRatio??.1;if(a[c.id]=l({offset:0,categoryGapRatio:e,barGapRatio:t,triggerTooltip:h},c,{data:m,scale:Sa(c.data,u).paddingInner(e).paddingOuter(e/2),tickNumber:c.data.length,colorScale:c.colorMap&&("ordinal"===c.colorMap.type?wr(l({values:c.data},c.colorMap)):kr(c.colorMap))}),sa(c.data)){const e=la(c.data,u,c.tickNumber);a[c.id].valueFormatter=c.valueFormatter??e}}if(Tt(c)&&(a[c.id]=l({offset:0,triggerTooltip:h},c,{data:m,scale:Ma(c.data,u),tickNumber:c.data.length,colorScale:c.colorMap&&("ordinal"===c.colorMap.type?wr(l({values:c.data},c.colorMap)):kr(c.colorMap))}),sa(c.data))){const e=la(c.data,u,c.tickNumber);a[c.id].valueFormatter=c.valueFormatter??e}if("point"===(f=c).scaleType||"band"===f.scaleType)return;var f;const g=c.scaleType??"linear",y=c.domainLimit??"nice",v=[c.min??d,c.max??p];if("function"==typeof y){const{min:e,max:t}=y(d,p);v[0]=e,v[1]=t}const b=Sr(c,v,Cr(Math.abs(u[1]-u[0]))),x=Mr(b,u),I=aa(g,v,u),w="nice"===y?I.nice(b):I,[k,S]=w.domain(),M=[c.min??k,c.max??S];a[c.id]=l({offset:0,triggerTooltip:h},c,{data:m,scaleType:g,scale:w.domain(M),tickNumber:x,colorScale:c.colorMap&&kr(c.colorMap)})}),{axis:a,axisIds:n.map(({id:e})=>e)}}const Tb=e=>e.polarAxis,Ab=ae(Tb,e=>e?.rotation),Ob=ae(Tb,e=>e?.radius),jb=le(Ab,he,ft,ht,(e,t,n,r)=>Eb({drawingArea:t,formattedSeries:n,axis:e,seriesConfig:r,axisDirection:"rotation"})),Lb=le(Ob,he,ft,ht,(e,t,n,r)=>Eb({drawingArea:t,formattedSeries:n,axis:e,seriesConfig:r,axisDirection:"radius"})),Rb=le(he,function(e){return{cx:e.left+e.width/2,cy:e.top+e.height/2}}),Db=e=>(t,n)=>Math.atan2(t-e.cx,e.cy-n);function $b(e){return(e%360+360)%360}const zb=2*Math.PI;function Nb(e,t){const{scale:n,data:r,reverse:i}=e;if(!fa(n))throw new Error("MUI X Charts: getAxisValue is not implemented for polare continuous axes.");if(!r)return-1;const o=((t-Math.min(...n.range()))%zb+zb)%zb,a=0===n.bandwidth()?Math.floor((o+n.step()/2)/n.step())%r.length:Math.floor(o/n.step());return a<0||a>=r.length?-1:i?r.length-1-a:a}const _b=({params:t,store:n,seriesConfig:r,svgRef:i,instance:o})=>{const{rotationAxis:a,radiusAxis:s,dataset:c}=t,u=n.use(he),d=n.use(ft),p=n.use(Rb),h=n.use(ws),{axis:m,axisIds:f}=n.use(jb),{axis:g,axisIds:y}=n.use(Lb),v=e.useRef(!0);e.useEffect(()=>{v.current?v.current=!1:n.set("polarAxis",l({},n.state.polarAxis,{rotation:Cb(a,c,"rotation"),radius:Cb(s,c,"radius")}))},[r,u,a,s,c,n]);const b=e.useMemo(()=>Db({cx:p.cx,cy:p.cy}),[p.cx,p.cy]),x=e.useMemo(()=>(e=>(t,n)=>{const r=Math.atan2(t-e.cx,e.cy-n);return[Math.sqrt((t-e.cx)**2+(e.cy-n)**2),r]})({cx:p.cx,cy:p.cy}),[p.cx,p.cy]),I=e.useMemo(()=>(e=>(t,n)=>[e.cx+t*Math.sin(n),e.cy-t*Math.cos(n)])({cx:p.cx,cy:p.cy}),[p.cx,p.cy]),w=f[0],k=y[0],S=e.useRef({isInChart:!1}),M=Fs(o);return e.useEffect(()=>{const e=i.current;if(!h||!M||null===e||t.disableAxisListener)return()=>{};const n=o.addInteractionListener("moveEnd",e=>{e.detail.activeGestures.pan||(S.current.isInChart=!1,o.cleanInteraction())}),r=o.addInteractionListener("panEnd",e=>{e.detail.activeGestures.move||(S.current.isInChart=!1,o.cleanInteraction?.())}),a=o.addInteractionListener("quickPressEnd",e=>{e.detail.activeGestures.move||e.detail.activeGestures.pan||(S.current.isInChart=!1,o.cleanInteraction?.())}),s=t=>{const n=t.detail.srcEvent;if("touch"===t.detail.srcEvent.pointerType){const t=e.getBoundingClientRect();if(n.clientXt.right||n.clientYt.bottom)return S.current.isInChart=!1,void o.cleanInteraction?.();const r=xs(e,n);return S.current.isInChart=!0,void o.setPointerCoordinate?.(r)}const r=xs(e,n);o.isPointInside(r.x,r.y,t.detail.target)?(p.cx-r.x)**2+(p.cy-r.y)**2>g[k].scale.range()[1]**2?S.current.isInChart&&(o.cleanInteraction?.(),S.current.isInChart=!1):(S.current.isInChart=!0,o.setPointerCoordinate?.(r)):S.current.isInChart&&(o.cleanInteraction?.(),S.current.isInChart=!1)},l=o.addInteractionListener("move",s),c=o.addInteractionListener("pan",s),u=o.addInteractionListener("quickPress",s);return()=>{l.cleanup(),n.cleanup(),c.cleanup(),r.cleanup(),u.cleanup(),a.cleanup()}},[i,n,p,g,k,m,w,o,t.disableAxisListener,h,b,M]),e.useEffect(()=>{const e=i.current,n=t.onAxisClick;if(null===e||!n)return()=>{};const r=o.addInteractionListener("tap",t=>{let r=null,i=!1;const o=xs(e,t.detail.srcEvent),a=Db(p)(o.x,o.y),s=Nb(m[w],a);if(i=-1!==s,r=i?s:null,null==r||-1===r)return;const l=(i?m:g)[i?w:k].data[r],c={};Object.keys(d).filter(e=>"radar"===e).forEach(e=>{d[e]?.seriesOrder.forEach(t=>{const n=d[e].series[t];c[t]=n.data[r]})}),n(t.detail.srcEvent,{dataIndex:r,axisValue:l,seriesValues:c})});return()=>{r.cleanup()}},[p,o,t.onAxisClick,d,g,m,i,k,w]),{instance:{svg2polar:x,svg2rotation:b,polar2svg:I}}};_b.params={rotationAxis:!0,radiusAxis:!0,dataset:!0,disableAxisListener:!0,onAxisClick:!0},_b.getInitialState=e=>({polarAxis:{rotation:Cb(e.rotationAxis,e.dataset,"rotation"),radius:Cb(e.radiusAxis,e.dataset,"radius")}});const Fb=new Map,Hb=(le(ae(e=>e.visibilityManager,e=>e?.visibilityMap??Fb),e=>(t,n)=>((e,t,n)=>{const r=Ee(n,t);return!e.has(r)})(e,n,t)),(e,t)=>{const n=new Map;return e&&e.forEach(e=>{const r=Ee(t,e);n.set(r,e)}),n}),Bb=({store:e,params:t,seriesConfig:n,instance:r})=>{Y(()=>{void 0!==t.hiddenItems&&e.set("visibilityManager",l({},e.state.visibilityManager,{visibilityMap:Hb(t.hiddenItems,n)}))},[e,t.hiddenItems,n]);const i=ke(n=>{const i=e.state.visibilityManager.visibilityMap,o=r.serializeIdentifier(n);if(i.has(o))return;const a=new Map(i);a.set(o,n),e.set("visibilityManager",l({},e.state.visibilityManager,{visibilityMap:a})),t.onHiddenItemsChange?.(Array.from(a.values()))}),o=ke(n=>{const i=e.state.visibilityManager.visibilityMap,o=r.serializeIdentifier(n);if(!i.has(o))return;const a=new Map(i);a.delete(o),e.set("visibilityManager",l({},e.state.visibilityManager,{visibilityMap:a})),t.onHiddenItemsChange?.(Array.from(a.values()))}),a=ke(t=>{const n=e.state.visibilityManager.visibilityMap,a=r.serializeIdentifier(t);n.has(a)?o(t):i(t)});return{instance:{hideItem:i,showItem:o,toggleItemVisibility:a}}};function Vb(e){return e&&e.ownerDocument||document}function Ub(e,t,n){const r=[],i=t.querySelectorAll("style, link[rel='stylesheet']");for(let t=0;t{a.addEventListener("load",()=>e())}))}n&&a.setAttribute("nonce",n),e.head.appendChild(a),n&&a.setAttribute("nonce",n)}return r}function Yb(e){const t=document.createElement("iframe");return t.style.position="absolute",t.style.width="0px",t.style.height="0px",t.title=e||document.title,t}function Wb(e,t){const n={};return Object.entries(t).forEach(([t,r])=>{const i=e.style.getPropertyValue(t);n[t]=i,e.style.setProperty(t,r)}),n}Bb.getInitialState=(e,t,n)=>({visibilityManager:{visibilityMap:e.hiddenItems?Hb(e.hiddenItems,n):Fb,isControlled:void 0!==e.hiddenItems}}),Bb.params={onHiddenItemsChange:!0,hiddenItems:!0};const Gb=e=>e,Kb=(()=>{let e=Gb;return{configure(t){e=t},generate:t=>e(t),reset(){e=Gb}}})(),qb={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 Xb(e,t,n="Mui"){const r=qb[t];return r?`${n}-${r}`:`${Kb.generate(e)}-${t}`}function Zb(e,t,n="Mui"){const r={};return t.forEach(t=>{r[t]=Xb(e,t,n)}),r}const Jb=Zb("MuiChartsToolbar",["root"]);function Qb(e){const t=e.contentDocument.querySelector(`.${Jb.root}`);t?.remove()}function ex(){let e;const t=new Promise(t=>{e=t});return window.requestAnimationFrame(()=>{e()}),t}const tx=({chartRootRef:e,svgRef:t,instance:n})=>{const r=async t=>{const r=e.current;if(r){const e=n.disableAnimation();try{await ex(),function(e,{fileName:t,onBeforeExport:n=Qb,copyStyles:r=!0,nonce:i}={}){const o=Yb(t),a=Vb(e);o.onload=async()=>{const t=o.contentDocument,s=e.cloneNode(!0);t.body.replaceChildren(s),t.body.style.margin="0px";const l=e.getRootNode(),c="ShadowRoot"===l.constructor.name?l:a;r&&await Promise.all(Ub(t,c,i)),o.contentWindow.matchMedia("print").addEventListener("change",e=>{!1===e.matches&&a.body.removeChild(o)}),await n(o),o.contentWindow.print()},a.body.appendChild(o)}(r,t)}catch(e){console.error("MUI X Charts: Error exporting chart as print:",e)}finally{e()}}},i=async r=>{const i=e.current,o=t.current;if(i&&o){const e=n.disableAnimation();try{await ex(),await async function(e,t,n){const{fileName:r,type:i="image/png",quality:o=.9,onBeforeExport:s=Qb,copyStyles:l=!0,nonce:c}=n??{},u=(async()=>{try{const e=await a.e(235).then(a.t.bind(a,3436,19));return(e.default||e).drawDocument}catch(e){throw new Error("MUI X Charts: Failed to import 'rasterizehtml' module. This dependency is mandatory when exporting a chart as an image. Make sure you have it installed as a dependency.",{cause:e})}})(),d=Vb(e),p=Yb(r),h=Wb(t,{width:`${t.getBoundingClientRect().width}px`});let m;const f=new Promise(e=>{m=e});p.onload=async()=>{const n=p.contentDocument,r=e.cloneNode(!0);Wb(t,h),n.body.replaceChildren(r),n.body.style.margin="0px",n.body.style.width="fit-content";const i=e.getRootNode(),o="ShadowRoot"===i.constructor.name?i:d;l&&await Promise.all(Ub(n,o,c)),m()},d.body.appendChild(p),await f,await s(p);const g=await u,y=p.contentDocument.body.getBoundingClientRect(),v=document.createElement("canvas"),b=window.devicePixelRatio||1;v.width=y.width*b,v.height=y.height*b,v.style.width=`${y.width}px`,v.style.height=`${y.height}px`;try{await g(p.contentDocument,v,{zoom:b,nonce:c})}finally{d.body.removeChild(p)}let x;const I=new Promise(e=>{x=e});let w;try{v.toBlob(e=>x(e),i,o),w=await I}catch(e){throw new Error("MUI X Charts: Failed to create blob from canvas.",{cause:e})}if(!w)throw new Error("MUI X Charts: Failed to create blob from canvas.");const k=URL.createObjectURL(w);!function(e,t){const n=document.createElement("a");n.href=e,n.download=t,n.click()}(k,r||document.title),URL.revokeObjectURL(k)}(i,o,r)}catch(e){console.error("MUI X Charts: Error exporting chart as image:",e)}finally{e()}}};return{publicAPI:{exportAsPrint:r,exportAsImage:i},instance:{exportAsPrint:r,exportAsImage:i}}};function nx(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)){const n=e.length;if(n!==t.length)return!1;for(let r=0;r{n=null,e(...t)};function i(...e){t=e,n||(n=requestAnimationFrame(r))}return i.clear=()=>{n&&(cancelAnimationFrame(n),n=null)},i}tx.params={},tx.getDefaultizedParams=({params:e})=>l({},e),tx.getInitialState=()=>({export:{}});const ix=(e,t,n,r)=>{const i=r.minStart,o=r.maxEnd,a=r.minSpan,s=n.start,l=n.end,c=s+e*(l-s);let u=(s+c*(t-1))/t,d=(l+c*(t-1))/t,p=0,h=0;return uo&&(h=Math.abs(d-o),d=o),p>0&&h>0?[i,o]:(d+=p,u-=h,u=Math.min(o-a,Math.max(i,u)),d=Math.max(a,Math.min(o,d)),[u,d])};function ox(e,t,n,r){const i=t-e;return!(i<0||n&&ir.maxSpan||er.maxEnd)}function ax(e,t,n){const{left:r,width:i}=t,o=(e.x-r)/i;return n?1-o:o}function sx(e,t,n){const{top:r,height:i}=t,o=(r-e.y)/i+1;return n?1-o:o}function lx(e,t,n,r,i="xy"){return e.map(e=>{const o=r[e.axisId];if(!o||!o.panning||"x"===o.axisDirection&&"y"===i||"y"===o.axisDirection&&"x"===i)return e;const a=e.start,s=e.end,c=s-a,u=o.minStart,d=o.maxEnd,p="x"===o.axisDirection?t.x:t.y,h=o.reverse?-p:p,m="x"===o.axisDirection?n.width:n.height;let f=a-h/m*c,g=s-h/m*c;return fd&&(g=d,f=g-c),fd||co.maxSpan?e:l({},e,{start:f,end:g})})}ne({memoize:J,memoizeOptions:{maxSize:1,equalityCheck:Object.is}});const cx=(e,t,n,r,i,o,a,s,...l)=>{if(l.length>0)throw new Error("Unsupported number of selectors");let c;if(e&&t&&n&&r&&i&&o&&a&&s)c=(l,c,u,d)=>{const p=e(l,c,u,d),h=t(l,c,u,d),m=n(l,c,u,d),f=r(l,c,u,d),g=i(l,c,u,d),y=o(l,c,u,d),v=a(l,c,u,d);return s(p,h,m,f,g,y,v,c,u,d)};else if(e&&t&&n&&r&&i&&o&&a)c=(s,l,c,u)=>{const d=e(s,l,c,u),p=t(s,l,c,u),h=n(s,l,c,u),m=r(s,l,c,u),f=i(s,l,c,u),g=o(s,l,c,u);return a(d,p,h,m,f,g,l,c,u)};else if(e&&t&&n&&r&&i&&o)c=(a,s,l,c)=>{const u=e(a,s,l,c),d=t(a,s,l,c),p=n(a,s,l,c),h=r(a,s,l,c),m=i(a,s,l,c);return o(u,d,p,h,m,s,l,c)};else if(e&&t&&n&&r&&i)c=(o,a,s,l)=>{const c=e(o,a,s,l),u=t(o,a,s,l),d=n(o,a,s,l),p=r(o,a,s,l);return i(c,u,d,p,a,s,l)};else if(e&&t&&n&&r)c=(i,o,a,s)=>{const l=e(i,o,a,s),c=t(i,o,a,s),u=n(i,o,a,s);return r(l,c,u,o,a,s)};else if(e&&t&&n)c=(r,i,o,a)=>{const s=e(r,i,o,a),l=t(r,i,o,a);return n(s,l,i,o,a)};else if(e&&t)c=(n,r,i,o)=>{const a=e(n,r,i,o);return t(a,r,i,o)};else{if(!e)throw new Error("Missing arguments");c=e}return c},ux=e=>e.zoom,dx=(cx(ux,e=>e.isInteracting),cx(qa,e=>Object.keys(e).length>0)),px=cx(Ga,(e,t)=>e?.get(t)),hx=cx(ux,qa,(e,t)=>e.zoomData.every(e=>{const n=e.end-e.start,r=t[e.axisId];return e.start===r.minStart&&e.end===r.maxEnd||n===r.maxSpan})),mx=cx(ux,qa,(e,t)=>e.zoomData.every(e=>e.end-e.start===t[e.axisId].minSpan)),fx=cx(ux,(e,t)=>e.zoomInteractionConfig.zoom[t]??null),gx=cx(ux,(e,t)=>e.zoomInteractionConfig.pan[t]??null),yx=(cx(qa,e=>fx(e,"brush"),(e,t)=>Object.keys(e).length>0&&t||!1),({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=e.useRef(!1),l=e.useRef(null),c=t.use(fx,"wheel"),u=Object.keys(a).length>0&&Boolean(c);e.useEffect(()=>{u&&n.updateZoomInteractionListeners("zoomTurnWheel",{requiredKeys:c.requiredKeys})},[c,u,n]),e.useEffect(()=>{const e=r.current;if(null===e||!u)return()=>{};const t=rx(i),c=n.addInteractionListener("zoomTurnWheel",r=>{const i=xs(e,{clientX:r.detail.centroid.x,clientY:r.detail.centroid.y});if(s.current||!n.isPointInside(i.x,i.y))return s.current=!0,l.current&&clearTimeout(l.current),void(l.current=setTimeout(()=>{s.current=!1,l.current=null},100));r.detail.srcEvent.preventDefault(),t(e=>e.map(e=>{const t=a[e.axisId];if(!t)return e;const n="x"===t.axisDirection?ax(i,o,t.reverse):sx(i,o,t.reverse),{scaleRatio:s,isZoomIn:l}=function(e,t){const n=-e.deltaY,r=function(e){const t=e.ctrlKey?3:1;return 1===e.deltaMode?1*t:e.deltaMode?10*t:.2*t}(e),i=t*r*n/1e3;return{scaleRatio:Math.min(Math.max(1+i,.1),1.9),isZoomIn:n>0}}(r.detail.srcEvent,t.step),[c,u]=ix(n,s,e,t);return ox(c,u,l,t)?{axisId:e.axisId,start:c,end:u}:e}))});return()=>{c.cleanup(),l.current&&(clearTimeout(l.current),l.current=null),s.current=!1,t.clear()}},[r,o,u,a,n,i,t])}),vx=(e,t)=>{const n={zoom:{},pan:{}};if(n.zoom=e?.zoom?bx("zoom",e.zoom):{wheel:{type:"wheel",requiredKeys:[],mouse:{},touch:{}},pinch:{type:"pinch",requiredKeys:[],mouse:{},touch:{}}},e?.pan)n.pan=bx("pan",e.pan);else{n.pan={drag:{type:"drag",requiredKeys:[],mouse:{},touch:{}}};let e=!1,r=!1;t&&Object.values(t).forEach(t=>{"x"===t.axisDirection&&(e=!0),"y"===t.axisDirection&&(r=!0)}),e&&!r&&(n.pan.wheel={type:"wheel",requiredKeys:[],allowedDirection:"x",mouse:{},touch:{}})}return n};function bx(e,t){const n=t.reduce((e,t)=>{if("string"==typeof t)return e[t]||(e[t]=[]),e[t].push({type:t,requiredKeys:[]}),e;const n=t.type;return e[n]||(e[n]=[]),e[n].push({type:n,pointerMode:t.pointerMode,requiredKeys:t.requiredKeys,allowedDirection:t.allowedDirection}),e},{}),r={};for(const[t,i]of Object.entries(n)){const n=i.findLast(e=>!e.pointerMode),o=i.findLast(e=>"mouse"===e.pointerMode),a=i.findLast(e=>"touch"===e.pointerMode);r[t]={type:t,pointerMode:n?[]:Array.from(new Set(i.filter(e=>e.pointerMode).map(e=>e.pointerMode))),requiredKeys:n?.requiredKeys??[],mouse:o?{requiredKeys:o?.requiredKeys??[]}:{},touch:a?{requiredKeys:a?.requiredKeys??[]}:{}},"wheel"===t&&"pan"===e&&(r[t].allowedDirection=n?.allowedDirection??"x")}return r}function xx(e,t){const n=new Map;return t?.forEach(t=>{e[t.axisId]&&n.set(t.axisId,t)}),Object.values(e).map(({axisId:e,minStart:t,maxEnd:r})=>n.has(e)?n.get(e):{axisId:e,start:t,end:r})}const Ix=t=>{const{store:n,params:r}=t,{zoomData:i,onZoomChange:o,zoomInteractionConfig:a}=r,s=Og(o??(()=>{})),c=n.use(qa);!function(t,r){const i=e.useRef(!0);e.useEffect(()=>{i.current?i.current=!1:n.set("zoom",l({},n.state.zoom,{zoomInteractionConfig:vx(a,c)}))},r)}(0,[n,a,c]);const u=e.useMemo(()=>function(e,t=166){let n;function r(...r){clearTimeout(n),n=setTimeout(()=>{e.apply(this,r)},t)}return r.clear=()=>{clearTimeout(n)},r}(()=>n.set("zoom",l({},n.state.zoom,{isInteracting:!1})),166),[n]);e.useEffect(()=>{void 0!==i&&(n.set("zoom",l({},n.state.zoom,{isInteracting:!0,zoomData:i})),u())},[n,i,u]);const d=e.useCallback(e=>{const t="function"==typeof e?e([...n.state.zoom.zoomData]):e;nx(n.state.zoom.zoomData,t)||(s(t),n.state.zoom.isControlled?n.set("zoom",l({},n.state.zoom,{isInteracting:!0})):(n.set("zoom",l({},n.state.zoom,{isInteracting:!0,zoomData:t})),u()))},[s,n,u]),p=e.useCallback((e,t)=>{d(n=>n.map(n=>n.axisId!==e?n:"function"==typeof t?t(n):t))},[d]),h=e.useCallback((e,t)=>{d(n=>n.map(n=>{if(n.axisId!==e)return n;const r=c[e];if(!r)return n;let i=n.start,o=n.end;if(t>0){const e=o-i;o=Math.min(o+t,r.maxEnd),i=o-e}else{const e=o-i;i=Math.max(i+t,r.minStart),o=i+e}return l({},n,{start:i,end:o})}))},[c,d]);e.useEffect(()=>()=>{u.clear()},[u]),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=t.use(gx,"drag"),l=Object.values(a).some(e=>e.panning)&&Boolean(s);e.useEffect(()=>{l&&n.updateZoomInteractionListeners("zoomPan",{requiredKeys:s.requiredKeys,pointerMode:s.pointerMode,pointerOptions:{mouse:s.mouse,touch:s.touch}})},[l,s,n]),e.useEffect(()=>{const e=r.current;let t=!1;const s={x:0,y:0};if(null===e||!l)return()=>{};const c=rx(()=>{const e=s.x,t=s.y;s.x=0,s.y=0,i(n=>lx(n,{x:e,y:-t},{width:o.width,height:o.height},a))}),u=n.addInteractionListener("zoomPan",e=>{t&&(s.x+=e.detail.deltaX,s.y+=e.detail.deltaY,c())}),d=n.addInteractionListener("zoomPanStart",e=>{e.detail.target?.closest("[data-charts-zoom-slider]")||(t=!0)}),p=n.addInteractionListener("zoomPanEnd",()=>{t=!1});return()=>{d.cleanup(),u.cleanup(),p.cleanup(),c.clear()}},[n,r,l,a,o.width,o.height,i,t])})(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=e.useRef(!1),l=e.useRef({x:0,y:0}),c=t.use(gx,"pressAndDrag"),u=Object.values(a).some(e=>e.panning)&&Boolean(c);e.useEffect(()=>{u&&n.updateZoomInteractionListeners("zoomPressAndDrag",{requiredKeys:c.requiredKeys,pointerMode:c.pointerMode,pointerOptions:{mouse:c.mouse,touch:c.touch}})},[u,c,n]),e.useEffect(()=>{if(null===r.current||!u)return()=>{};const e=rx(()=>{const e=l.current.x,t=l.current.y;l.current.x=0,l.current.y=0,i(n=>lx(n,{x:e,y:-t},{width:o.width,height:o.height},a))}),t=n.addInteractionListener("zoomPressAndDrag",t=>{s.current&&(l.current.x+=t.detail.deltaX,l.current.y+=t.detail.deltaY,e())}),c=n.addInteractionListener("zoomPressAndDragStart",e=>{e.detail.target?.closest("[data-charts-zoom-slider]")||(s.current=!0,l.current={x:0,y:0})}),d=n.addInteractionListener("zoomPressAndDragEnd",()=>{s.current=!1});return()=>{c.cleanup(),t.cleanup(),d.cleanup(),e.clear()}},[n,r,u,a,o.width,o.height,i,t,s])})(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=e.useRef(!1),l=e.useRef(null),c=t.use(gx,"wheel"),u=Object.keys(a).length>0&&Boolean(c);e.useEffect(()=>{u&&n.updateZoomInteractionListeners("panTurnWheel",{requiredKeys:c.requiredKeys})},[c,u,n]),e.useEffect(()=>{const e=r.current,t={x:0,y:0};if(null===e||!u)return()=>{};const d=rx(i),p=n.addInteractionListener("panTurnWheel",r=>{const i=xs(e,{clientX:r.detail.centroid.x,clientY:r.detail.centroid.y});if(s.current||!n.isPointInside(i.x,i.y))return s.current=!0,l.current&&clearTimeout(l.current),void(l.current=setTimeout(()=>{s.current=!1,l.current=null},100));r.detail.srcEvent.preventDefault();const u=c?.allowedDirection??"x";0===r.detail.deltaX&&0===r.detail.deltaY||(t.x+=r.detail.deltaX,t.y+=r.detail.deltaY,d(e=>{const n=t.x,r=t.y;t.x=0,t.y=0;let i=0,s=0;return"x"!==u&&"xy"!==u||(i=-n),"y"!==u&&"xy"!==u||(s=r),0===i&&0===s?e:lx(e,{x:i,y:s},o,a,u)}))});return()=>{p.cleanup(),l.current&&(clearTimeout(l.current),l.current=null),s.current=!1,d.clear()}},[r,o,u,a,n,i,t,c])})(t,d),yx(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=t.use(fx,"pinch"),l=Object.keys(a).length>0&&Boolean(s);e.useEffect(()=>{l&&n.updateZoomInteractionListeners("zoomPinch",{requiredKeys:s.requiredKeys})},[s,l,n]),e.useEffect(()=>{const e=r.current;if(null===e||!l)return()=>{};const t=rx(t=>{0!==t.detail.direction&&i(n=>n.map(n=>{const r=a[n.axisId];if(!r)return n;const i=t.detail.direction>0,s=1+t.detail.deltaScale,l=xs(e,{clientX:t.detail.centroid.x,clientY:t.detail.centroid.y}),c="x"===r.axisDirection?ax(l,o,r.reverse):sx(l,o,r.reverse),[u,d]=ix(c,s,n,r);return ox(u,d,i,r)?{axisId:n.axisId,start:u,end:d}:n}))}),s=n.addInteractionListener("zoomPinch",t);return()=>{s.cleanup(),t.clear()}},[r,o,l,a,t,n,i])})(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=t.use(fx,"tapAndDrag"),l=Object.keys(a).length>0&&Boolean(s);e.useEffect(()=>{l&&n.updateZoomInteractionListeners("zoomTapAndDrag",{requiredKeys:s.requiredKeys,pointerMode:s.pointerMode,pointerOptions:{mouse:s.mouse,touch:s.touch}})},[s,l,n]),e.useEffect(()=>{const e=r.current;if(null===e||!l)return()=>{};const t=rx(t=>{0!==t.detail.deltaY&&i(n=>n.map(n=>{const r=a[n.axisId];if(!r)return n;const i=t.detail.deltaY>0,s=1+t.detail.deltaY/100,l=xs(e,{clientX:t.detail.initialCentroid.x,clientY:t.detail.initialCentroid.y}),c="x"===r.axisDirection?ax(l,o,r.reverse):sx(l,o,r.reverse),[u,d]=ix(c,s,n,r);return ox(u,d,i,r)?{axisId:n.axisId,start:u,end:d}:n}))}),s=n.addInteractionListener("zoomTapAndDrag",t);return()=>{s.cleanup(),t.clear()}},[r,o,l,a,t,n,i])})(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(he),a=t.use(qa),s=t.use(fx,"brush"),l=Object.keys(a).length>0&&Boolean(s);e.useEffect(()=>{n.setZoomBrushEnabled(l)},[l,n]),e.useEffect(()=>{const e=r.current;if(null===e||!l)return()=>{};const t=n.addInteractionListener("brushEnd",t=>{i(n=>{const r=xs(e,{clientX:t.detail.initialCentroid.x,clientY:t.detail.initialCentroid.y}),i=xs(e,{clientX:t.detail.centroid.x,clientY:t.detail.centroid.y}),s=Math.min(r.x,i.x),l=Math.max(r.x,i.x),c=Math.min(r.y,i.y),u=Math.max(r.y,i.y);return n.map(e=>{const t=a[e.axisId];if(!t)return e;let n,r;const i=t.reverse;"x"===t.axisDirection?(n=ax({x:s,y:0},o,i),r=ax({x:l,y:0},o,i)):(n=sx({x:0,y:u},o,i),r=sx({x:0,y:c},o,i));const d=Math.min(n,r),p=Math.max(n,r),h=e.start,m=e.end-h,f=h+d*m,g=h+p*m,y=Math.max(t.minStart,Math.min(t.maxEnd,f)),v=Math.max(t.minStart,Math.min(t.maxEnd,g));return ox(y,v,!0,t)?{axisId:e.axisId,start:y,end:v}:e})})});return()=>{t.cleanup()}},[r,o,l,a,n,i,t])})(t,d),(({store:t,instance:n,svgRef:r},i)=>{const o=t.use(qa),a=t.use(fx,"doubleTapReset"),s=Object.keys(o).length>0&&Boolean(a);e.useEffect(()=>{s&&n.updateZoomInteractionListeners("zoomDoubleTapReset",{requiredKeys:a.requiredKeys,pointerMode:a.pointerMode,pointerOptions:{mouse:a.mouse,touch:a.touch}})},[a,s,n]),e.useEffect(()=>{if(null===r.current||!s)return()=>{};const e=n.addInteractionListener("zoomDoubleTapReset",()=>{i(e=>e.map(e=>{const t=o[e.axisId];return t?{axisId:e.axisId,start:t.minStart,end:t.maxEnd}:e}))});return()=>{e.cleanup()}},[r,s,o,n,i,t])})(t,d);const m=e.useCallback(e=>{d(t=>t.map(t=>{const r=Xa(n.state,t.axisId);return function(e,t,{minSpan:n,maxSpan:r,minStart:i,maxEnd:o}){const a=e.end-e.start;let s=a*t/2;return s=s>0?Math.min(s,(a-n)/2):Math.max(s,(a-r)/2),l({},e,{start:Math.max(i,e.start+s),end:Math.min(o,e.end-s)})}(t,e,r)}))},[d,n]),f=e.useCallback(()=>m(.1),[m]),g=e.useCallback(()=>m(-.1),[m]);return{publicAPI:{setZoomData:d,setAxisZoomData:p,zoomIn:f,zoomOut:g},instance:{setZoomData:d,setAxisZoomData:p,moveZoomRange:h,zoomIn:f,zoomOut:g}}};Ix.params={initialZoom:!0,onZoomChange:!0,zoomData:!0,zoomInteractionConfig:!0},Ix.getInitialState=e=>{const{initialZoom:t,zoomData:n,defaultizedXAxis:r,defaultizedYAxis:i}=e,o=l({},Ia("x")(r),Ia("y")(i));return{zoom:{zoomData:xx(o,void 0!==n?n:void 0!==t?t:void 0),isInteracting:!1,isControlled:void 0!==n,zoomInteractionConfig:vx(e.zoomInteractionConfig,o)}}};const wx=[Xs,Mb,Ys,Ws,Bs,Zs,Bb,Ix,tx],kx=({params:t,store:n,svgRef:r})=>{const i=ke(function(){null!==n.state.keyboardNavigation.item&&n.set("keyboardNavigation",l({},n.state.keyboardNavigation,{item:null}))});return e.useEffect(()=>{const e=r.current;if(e&&t.enableKeyboardNavigation)return e.addEventListener("keydown",o),e.addEventListener("blur",i),()=>{e.removeEventListener("keydown",o),e.removeEventListener("blur",i)};function o(e){let t=n.state.keyboardNavigation.item,r=t?.type;if(!r&&(r=Object.keys(pt(n.state)).find(e=>void 0!==n.state.series.seriesConfig[e]),void 0===r))return;const i=n.state.series.seriesConfig[r]?.keyboardFocusHandler?.(e);i&&(t=i(t,n.state),t!==n.state.keyboardNavigation.item&&(e.preventDefault(),n.update(l({},n.state.highlight&&{highlight:l({},n.state.highlight,{lastUpdate:"keyboard"})},n.state.interaction&&{interaction:l({},n.state.interaction,{lastUpdate:"keyboard"})},{keyboardNavigation:l({},n.state.keyboardNavigation,{item:t})}))))}},[r,i,t.enableKeyboardNavigation,n]),V(()=>{n.state.keyboardNavigation.enableKeyboardNavigation!==t.enableKeyboardNavigation&&n.set("keyboardNavigation",l({},n.state.keyboardNavigation,{enableKeyboardNavigation:!!t.enableKeyboardNavigation}))},[n,t.enableKeyboardNavigation]),{}};function Sx(e,t,n,r,i,o,a,s,l,c,u=1/0,d=1){const p=n.copy(),h=r.copy();p.range([0,1]),h.range([0,1]);const m=n.range()[1]-n.range()[0],f=r.range()[1]-r.range()[0],g=m*m,y=f*f,v=p(Mx(n,l,e=>t[e]?.x)),b=h(Mx(r,c,e=>t[e]?.y));return e.neighbors(v,b,d,null!=u?u*u:1/0,function(e){const n=p(t[e].x),r=h(t[e].y);return n>=i&&n<=o&&r>=a&&r<=s},function(e,t){return g*e*e+y*t*t})}function Mx(e,t,n){return fa(e)?n(0===e.bandwidth()?Math.floor((t-Math.min(...e.range())+e.step()/2)/e.step()):Math.floor((t-Math.min(...e.range()))/e.step())):e.invert(t)}kx.getInitialState=e=>({keyboardNavigation:{item:null,enableKeyboardNavigation:!!e.enableKeyboardNavigation}}),kx.params={enableKeyboardNavigation:!0};const Cx=({svgRef:t,params:n,store:r,instance:i})=>{const{disableVoronoi:o,voronoiMaxRadius:a,onItemClick:s}=n,{axis:l,axisIds:c}=r.use(ls),{axis:u,axisIds:d}=r.use(cs),p=r.use(Wa),{series:h,seriesOrder:m}=r.use(ft)?.scatter??{},f=r.use(p?fs:gs),g=c[0],y=d[0];return V(()=>{r.set("voronoi",{isVoronoiEnabled:!o})},[r,o]),e.useEffect(()=>{if(null===t.current||o)return;const e=t.current;function n(t){const n=xs(e,t);if(!i.isPointInside(n.x,n.y))return"outside-chart";let o;for(const e of m??[]){const t=(h??{})[e],i=f.get(e);if(!i)continue;const s=t.xAxisId??g,c=t.yAxisId??y,d=Ka(r.state,s),p=Ka(r.state,c),m="item"===a?t.markerSize:a,v=(d?.start??0)/100,b=(d?.end??100)/100,x=(p?.start??0)/100,I=(p?.end??100)/100,w=l[s].scale,k=u[c].scale,S=Sx(i,t.data,w,k,v,b,x,I,n.x,n.y,m)[0];if(void 0===S)continue;const M=t.data[S],C=w(M.x),P=k(M.y),E=(C-n.x)**2+(P-n.y)**2;(void 0===o||E{e.detail.activeGestures.pan||(i.cleanInteraction?.(),i.clearHighlight?.(),i.removeTooltipItem?.())}),d=i.addInteractionListener("panEnd",e=>{e.detail.activeGestures.move||(i.cleanInteraction?.(),i.clearHighlight?.(),i.removeTooltipItem?.())}),p=i.addInteractionListener("quickPressEnd",e=>{e.detail.activeGestures.move||e.detail.activeGestures.pan||(i.cleanInteraction?.(),i.clearHighlight?.(),i.removeTooltipItem?.())}),v=e=>{const t=n(e.detail.srcEvent);if("outside-chart"===t)return i.cleanInteraction?.(),i.clearHighlight?.(),void i.removeTooltipItem?.();if("outside-voronoi-max-radius"===t||"no-point-found"===t)return i.removeTooltipItem?.(),i.clearHighlight?.(),void i.removeTooltipItem?.();const{seriesId:r,dataIndex:o}=t;i.setTooltipItem?.({type:"scatter",seriesId:r,dataIndex:o}),i.setLastUpdateSource?.("pointer"),i.setHighlight?.({seriesId:r,dataIndex:o})},b=i.addInteractionListener("tap",e=>{const t=n(e.detail.srcEvent);if("string"!=typeof t&&s){const{seriesId:n,dataIndex:r}=t;s(e.detail.srcEvent,{type:"scatter",seriesId:n,dataIndex:r})}}),x=i.addInteractionListener("move",v),I=i.addInteractionListener("pan",v),w=i.addInteractionListener("quickPress",v);return()=>{b.cleanup(),x.cleanup(),c.cleanup(),I.cleanup(),d.cleanup(),w.cleanup(),p.cleanup()}},[t,u,l,a,s,o,i,m,h,f,g,y,r]),{instance:{enableVoronoi:ke(()=>{r.set("voronoi",{isVoronoiEnabled:!0})}),disableVoronoi:ke(()=>{r.set("voronoi",{isVoronoiEnabled:!1})})}}};Cx.getDefaultizedParams=({params:e})=>l({},e,{disableVoronoi:e.disableVoronoi??!e.series.some(e=>"scatter"===e.type)}),Cx.getInitialState=e=>({voronoi:{isVoronoiEnabled:!e.disableVoronoi}}),Cx.params={disableVoronoi:!0,voronoiMaxRadius:!0,onItemClick:!0};const Px=[Xs,Mb,Ys,Ws,Bs,Zs,Bb,Cx,kx],Ex=["children","localeText","plugins","seriesConfig","slots","slotProps"],Tx=e=>{const t=Lh({props:e,name:"MuiChartDataProvider"}),{children:n,localeText:r,plugins:i=Px,seriesConfig:o,slots:a,slotProps:s}=t,c=tt(t,Ex);return{children:n,localeText:r,chartProviderProps:{plugins:i,seriesConfig:o,pluginParams:l({theme:xm().palette.mode},c)},slots:a,slotProps:s}},Ax=e=>{const{chartProviderProps:t,localeText:n,slots:r,slotProps:i,children:o}=Tx(e);return{children:o,localeText:n,chartProviderProps:t,slots:r,slotProps:i}},Ox="MTc2NzgzMDQwMDAwMA==",jx="x-charts-pro",Lx=rc;function Rx(e){const{children:t,localeText:n,chartProviderProps:r,slots:i,slotProps:o}=Ax(l({},e,{seriesConfig:e.seriesConfig??Lx,plugins:e.plugins??wx}));return A(jx,Ox),(0,O.jsxs)(oc,l({},r,{children:[(0,O.jsx)(_h,{localeText:n,children:(0,O.jsx)(lc,{slots:i,slotProps:o,defaultSlots:db,children:t})}),(0,O.jsx)(L,{packageName:jx,releaseInfo:Ox})]}))}function Dx(...t){const n=e.useRef(void 0),r=e.useCallback(e=>{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}const $x=()=>{const t=e.useContext(ot);if(null==t)throw new Error(["MUI X Charts: Could not find the Chart context.","It looks like you rendered your component outside of a ChartDataProvider.","This can also happen if you are bundling multiple versions of the library."].join("\n"));return t};function zx(){const e=$x();if(!e)throw new Error(["MUI X Charts: Could not find the charts context.","It looks like you rendered your component outside of a ChartContainer parent component."].join("\n"));return e.store}function Nx(){return zx().use(he)}function _x(){const e=zx(),{axis:t,axisIds:n}=e.use(ls);return{xAxis:t,xAxisIds:n}}function Fx(){const e=zx(),{axis:t,axisIds:n}=e.use(cs);return{yAxis:t,yAxisIds:n}}function Hx(e){const t=zx(),{axis:n,axisIds:r}=t.use(ls);return n[e??r[0]]}function Bx(e){const t=zx(),{axis:n,axisIds:r}=t.use(cs);return n[e??r[0]]}function Vx(){const e=zx(),{axis:t,axisIds:n}=e.use(jb);return{rotationAxis:t,rotationAxisIds:n}}function Ux(t){const{isReversed:n,gradientId:r,size:i,direction:o,scale:a,colorMap:s}=t;return i<=0?null:(0,O.jsx)("linearGradient",{id:r,x1:"0",x2:"0",y1:"0",y2:"0",[`${o}${n?1:2}`]:`${i}px`,gradientUnits:"userSpaceOnUse",children:s.thresholds.map((t,r)=>{const o=a(t);if(void 0===o)return null;const l=n?1-o/i:o/i;return Number.isNaN(l)?null:(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("stop",{offset:l,stopColor:s.colors[r],stopOpacity:1}),(0,O.jsx)("stop",{offset:l,stopColor:s.colors[r+1],stopOpacity:1})]},t.toString()+r)})})}function Yx(e){const{gradientUnits:t,isReversed:n,gradientId:r,size:i,direction:o,scale:a,colorScale:s,colorMap:l}=e,c=[l.min??0,l.max??100],u=c.map(a).filter(e=>void 0!==e);if(2!==u.length)return null;const d="number"==typeof c[0]?Tn(c[0],c[1]):En(c[0],c[1]),p=Math.round((Math.max(...u)-Math.min(...u))/10),h=`${c[0]}-${c[1]}-`;return(0,O.jsx)("linearGradient",{id:r,x1:"0",x2:"0",y1:"0",y2:"0",[`${o}${n?1:2}`]:"objectBoundingBox"===t?1:`${i}px`,gradientUnits:t??"userSpaceOnUse",children:Array.from({length:p+1},(e,t)=>{const r=d(t/p);if(void 0===r)return null;const o=a(r);if(void 0===o)return null;const l=n?1-o/i:o/i,c=s(r);return null===c?null:(0,O.jsx)("stop",{offset:l,stopColor:c,stopOpacity:1},h+t)})})}function Wx(e){const{isReversed:t,gradientId:n,colorScale:r,colorMap:i}=e,o=[i.min??0,i.max??100],a="number"==typeof o[0]?Tn(o[0],o[1]):En(o[0],o[1]),s=`${o[0]}-${o[1]}-`;return(0,O.jsx)("linearGradient",l({id:n},(e=>e?{x1:"1",x2:"0",y1:"0",y2:"0"}:{x1:"0",x2:"1",y1:"0",y2:"0"})(t),{gradientUnits:"objectBoundingBox",children:Array.from({length:11},(e,t)=>{const n=t/10,i=a(n);if(void 0===i)return null;const o=r(i);return null===o?null:(0,O.jsx)("stop",{offset:n,stopColor:o,stopOpacity:1},s+t)})}))}const Gx=ae(e=>e,e=>e.zAxis);function Kx(){const e=zx(),{axis:t,axisIds:n}=e.use(Gx)??{axis:{},axisIds:[]};return{zAxis:t,zAxisIds:n}}const qx=ae(e=>e.id,e=>e.chartId);function Xx(){return zx().use(qx)}function Zx(){const t=Xx();return e.useCallback(e=>`${t}-gradient-${e}`,[t])}function Jx(){const t=Xx();return e.useCallback(e=>`${t}-gradient-${e}-object-bound`,[t])}function Qx(){const{top:t,height:n,bottom:r,left:i,width:o,right:a}=Nx(),s=t+n+r,l=i+o+a,c=Zx(),u=Jx(),{xAxis:d,xAxisIds:p}=_x(),{yAxis:h,yAxisIds:m}=Fx(),{zAxis:f,zAxisIds:g}=Kx(),y=m.filter(e=>void 0!==h[e].colorMap),v=p.filter(e=>void 0!==d[e].colorMap),b=g.filter(e=>void 0!==f[e].colorMap);return 0===y.length&&0===v.length&&0===b.length?null:(0,O.jsxs)("defs",{children:[y.map(t=>{const n=c(t),r=u(t),{colorMap:i,scale:o,colorScale:a,reverse:l}=h[t];return"piecewise"===i?.type?(0,O.jsx)(Ux,{isReversed:!l,scale:o,colorMap:i,size:s,gradientId:n,direction:"y"},n):"continuous"===i?.type?(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(Yx,{isReversed:!l,scale:o,colorScale:a,colorMap:i,size:s,gradientId:n,direction:"y"}),(0,O.jsx)(Wx,{isReversed:l,colorScale:a,colorMap:i,gradientId:r})]},n):null}),v.map(t=>{const n=c(t),r=u(t),{colorMap:i,scale:o,reverse:a,colorScale:s}=d[t];return"piecewise"===i?.type?(0,O.jsx)(Ux,{isReversed:a,scale:o,colorMap:i,size:l,gradientId:n,direction:"x"},n):"continuous"===i?.type?(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(Yx,{isReversed:a,scale:o,colorScale:s,colorMap:i,size:l,gradientId:n,direction:"x"}),(0,O.jsx)(Wx,{isReversed:a,colorScale:s,colorMap:i,gradientId:r})]},n):null}),b.map(e=>{const t=u(e),{colorMap:n,colorScale:r}=f[e];return"continuous"===n?.type?(0,O.jsx)(Wx,{colorScale:r,colorMap:n,gradientId:t},t):null})]})}function eI(){const e=$x();if(!e)throw new Error(["MUI X Charts: Could not find the svg ref context.","It looks like you rendered your component outside of a ChartContainer parent component."].join("\n"));return e.svgRef}const tI=e=>e.keyboardNavigation,nI=ae(tI,(e,t)=>null!=e?.item&&Us(e.item,t)),rI=ae(tI,e=>null!=e?.item),iI=ae(tI,e=>e?.item??null),oI=ae(tI,e=>!!e?.enableKeyboardNavigation),aI=e=>(t,n,r)=>{if(null==t||!("dataIndex"in t)||void 0===t.dataIndex)return;const i=r[t.type]?.series[t.seriesId];if(!i)return;let o="x"===e?"xAxisId"in i&&i.xAxisId:"yAxisId"in i&&i.yAxisId;return void 0!==o&&!1!==o||(o=n.axisIds[0]),{axisId:o,dataIndex:t.dataIndex}},sI=ae(iI,ls,ft,aI("x")),lI=ae(iI,cs,ft,aI("y")),cI=ae(tI,function(e){if(null==e?.item)return null;const{type:t,seriesId:n}=e.item;return void 0===t||void 0===n?null:e.item});function uI(e,t,n=void 0){const r={};for(const i in e){const o=e[i];let a="",s=!0;for(let e=0;e({width:e.width??"100%",height:e.height??"100%",display:"flex",position:"relative",flexDirection:"column",alignItems:"center",justifyContent:"center",overflow:"hidden",touchAction:e.hasZoom?"pan-y":void 0,userSelect:"none",gridArea:"chart","&:focus":{outline:"none"}})),mI=e.forwardRef(function(e,t){const n=zx(),r=n.use(me),i=n.use(fe),o=n.use(ge),a=n.use(ye),s=n.use(oI),c=n.use(rI),u=n.use(Ya),d=Dx(eI(),t),p=Lh({props:e,name:"MuiChartsSurface"}),{children:h,className:m,title:f,desc:g}=p,y=tt(p,pI),v=uI({root:["root"]},dI),b=i>0&&r>0;return(0,O.jsxs)(hI,l({ownerState:{width:o,height:a,hasZoom:u},viewBox:`0 0 ${r} ${i}`,className:Hh(v.root,m),tabIndex:s?0:void 0,"data-has-focused-item":c||void 0},y,{ref:d,children:[f&&(0,O.jsx)("title",{children:f}),g&&(0,O.jsx)("desc",{children:g}),(0,O.jsx)(Qx,{}),b&&h]}))}),fI=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},gI=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n}({...i,...r}),s=fI(r),l=fI(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}},yI=function(e){const{elementType:t,externalSlotProps:n,ownerState:r,skipResolvingSlotProps:i=!1,...o}=e,a=i?{}:function(e,t,n){return"function"==typeof e?e(t,n):e}(n,r),{props:s,internalRef:l}=gI({...o,externalSlotProps:a});return function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}}(t,{...s,ref:Dx(l,a?.ref,e.additionalProps?.ref)},r)};function vI(e){"hasPointerCapture"in e.currentTarget&&e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId)}const bI=(t,n)=>{const{instance:r}=$x(),i=e.useRef(!1),o=ke(()=>{i.current=!0,r.setLastUpdateSource("pointer"),r.setTooltipItem(t),r.setHighlight("sankey"===t.type?t:{seriesId:t.seriesId,dataIndex:t.dataIndex})}),a=ke(()=>{i.current=!1,r.removeTooltipItem(t),r.clearHighlight()});return e.useEffect(()=>()=>{i.current&&a()},[a]),e.useMemo(()=>n?{}:{onPointerEnter:o,onPointerLeave:a,onPointerDown:vI},[n,o,a])};function xI(){return!1}function II(e,t){return e&&t?function(n){return!!n&&("series"===e.highlight||"item"===e.highlight&&n.dataIndex===t.dataIndex)&&n.seriesId===t.seriesId}:xI}function wI(){return!1}function kI(e,t){return e&&t?function(n){return!!n&&("series"===e.fade?n.seriesId===t.seriesId&&n.dataIndex!==t.dataIndex:"global"===e.fade&&(n.seriesId!==t.seriesId||n.dataIndex!==t.dataIndex))}:wI}function SI(e,t,n){return"series"===e?.highlight&&t?.seriesId===n}function MI(e,t,n){return"item"===e?.highlight&&t?.seriesId===n?t.dataIndex:null}const CI=ae(ft,e=>{const t=new Map;return Object.keys(e).forEach(n=>{const r=e[n];r?.seriesOrder?.forEach(e=>{const n=r?.series[e];t.set(e,n?.highlightScope)})}),t}),PI=le(e=>e.highlight,cI,function(e,t){return e.isControlled||"pointer"===e.lastUpdate?e.item:t}),EI=ae(CI,PI,function(e,t){if(!t)return null;const n=e.get(t.seriesId);return void 0===n?null:n}),TI=le(EI,PI,II),AI=le(EI,PI,kI),OI=ae(EI,PI,function(e,t,n){return II(e,t)(n)}),jI=ae(EI,PI,SI),LI=ae(EI,PI,function(e,t,n){return!SI(e,t,n)&&("global"===e?.fade&&null!=t||"series"===e?.fade&&t?.seriesId===n)}),RI=ae(EI,PI,function(e,t,n){return SI(e,t,n)||MI(e,t,n)===t?.dataIndex||"series"!==e?.fade&&"global"!==e?.fade||t?.seriesId!==n?null:t.dataIndex}),DI=ae(EI,PI,MI),$I=ae(EI,PI,function(e,t,n){return kI(e,t)(n)});function zI(e){const t=zx(),n=t.use(OI,e),r=t.use($I,e);return{isHighlighted:n,isFaded:!n&&r}}var NI=a(9853);const _I=300,FI="cubic-bezier(0.66, 0, 0.34, 1)",HI=NI(.66,0,.34,1);var BI,VI,UI=0,YI=0,WI=0,GI=0,KI=0,qI=0,XI="object"==typeof performance&&performance.now?performance:Date,ZI="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function JI(){return KI||(ZI(QI),KI=XI.now()+qI)}function QI(){KI=0}function ew(){this._call=this._time=this._next=null}function tw(e,t,n){var r=new ew;return r.restart(e,t,n),r}function nw(){KI=(GI=XI.now())+qI,UI=YI=0;try{!function(){JI(),++UI;for(var e,t=BI;t;)(e=KI-t._time)>=0&&t._call.call(void 0,e),t=t._next;--UI}()}finally{UI=0,function(){for(var e,t,n=BI,r=1/0;n;)n._call?(r>n._time&&(r=n._time),e=n,n=n._next):(t=n._next,n._next=null,n=e?e._next=t:BI=t);VI=e,iw(r)}(),KI=0}}function rw(){var e=XI.now(),t=e-GI;t>1e3&&(qI-=t,GI=e)}function iw(e){UI||(YI&&(YI=clearTimeout(YI)),e-KI>24?(e<1/0&&(YI=setTimeout(nw,e-XI.now()-qI)),WI&&(WI=clearInterval(WI))):(WI||(GI=XI.now(),WI=setInterval(rw,1e3)),UI=1,ZI(nw)))}ew.prototype=tw.prototype={constructor:ew,restart:function(e,t,n){if("function"!=typeof e)throw new TypeError("callback is not a function");n=(null==n?JI():+n)+(null==t?0:+t),this._next||VI===this||(VI?VI._next=this:BI=this,VI=this),this._call=e,this._time=n,iw()},stop:function(){this._call&&(this._call=null,this._time=1/0,iw())}};class ow{elapsed=0;timer=null;constructor(e,t,n){this.duration=e,this.easingFn=t,this.onTickCallback=n,this.resume()}get running(){return null!==this.timer}timerCallback(e){this.elapsed=Math.min(e,this.duration);const t=0===this.duration?1:this.elapsed/this.duration,n=this.easingFn(t);this.onTickCallback(n),this.elapsed>=this.duration&&this.stop()}resume(){if(this.running||this.elapsed>=this.duration)return this;const e=JI()-this.elapsed;return this.timer=tw(e=>this.timerCallback(e),0,e),this}stop(){return this.running?(this.timer&&(this.timer.stop(),this.timer=null),this):this}finish(){return this.stop(),e=()=>this.timerCallback(this.duration),n=new ew,t=null==t?0:+t,n.restart(t=>{n.stop(),e()},t,void 0),this;var e,t,n}}function aw(t,{createInterpolator:n,transformProps:r,applyProps:i,skip:o,initialProps:a=t,ref:s}){const c=r??(e=>e),[u,d]=function(t,{createInterpolator:n,applyProps:r,skip:i,initialProps:o=t}){const a=e.useRef(o),s=e.useRef(null),l=e.useRef(null),c=e.useRef(t);V(()=>{c.current=t},[t]),V(()=>{i&&(s.current?.finish(),s.current=null,l.current=null,a.current=t)},[t,i]);const u=e.useCallback(e=>{const i=a.current,o=n(i,t);s.current=new ow(_I,HI,t=>{const n=o(t);a.current=n,r(e,n)})},[r,n,t]),d=e.useCallback(e=>{if(null===e)return void s.current?.stop();const n=l.current;if(n===e){if(function(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r=0;ri(e,c(t)),skip:o});return l({},r(o?t:d),{ref:Dx(u,s)})}function sw(e){return e.replace(" ","_")}const lw=Zb("MuiAppearingMask",["animate"]),cw=bm("rect",{slot:"internal",shouldForwardProp:void 0})({animationName:"animate-width",animationTimingFunction:FI,animationDuration:"0s",[`&.${lw.animate}`]:{animationDuration:`${_I}ms`},"@keyframes animate-width":{from:{width:0}}});function uw(t){const n=Nx(),r=sw(`${Xx()}-${t.id}`);return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("clipPath",{id:r,children:(0,O.jsx)(cw,{className:t.skipAnimation?"":lw.animate,x:0,y:0,width:n.left+n.width+n.right,height:n.top+n.height+n.bottom})}),(0,O.jsx)("g",{clipPath:`url(#${r})`,children:t.children})]})}const dw=["skipAnimation","ownerState"];function pw(e){const{skipAnimation:t,ownerState:n}=e,r=tt(e,dw),i=function(e){return aw({d:e.d},{createInterpolator:(e,t)=>{const n=Ln(e.d,t.d);return e=>({d:n(e)})},applyProps:(e,{d:t})=>e.setAttribute("d",t),transformProps:e=>e,skip:e.skipAnimation,ref:e.ref})}(e);return(0,O.jsx)(uw,{skipAnimation:t,id:`${n.id}-area-clip`,children:(0,O.jsx)("path",l({fill:n.gradientId?`url(#${n.gradientId})`:n.color,filter:n.isHighlighted?"brightness(140%)":n.gradientId?void 0:"brightness(120%)",opacity:n.isFaded?.3:1,stroke:"none","data-series":n.id,"data-highlighted":n.isHighlighted||void 0,"data-faded":n.isFaded||void 0},r,i))})}const hw=["id","classes","color","gradientId","slots","slotProps","onClick"];function mw(e){return Xb("MuiAreaElement",e)}const fw=Zb("MuiAreaElement",["root","highlighted","faded","series"]),gw=e=>{const{classes:t,id:n,isFaded:r,isHighlighted:i}=e;return uI({root:["root",`series-${n}`,i&&"highlighted",r&&"faded"]},mw,t)};function yw(e){const{id:t,classes:n,color:r,gradientId:i,slots:o,slotProps:a,onClick:s}=e,c=tt(e,hw),u=bI({type:"line",seriesId:t}),{isFaded:d,isHighlighted:p}=zI({seriesId:t}),h={id:t,classes:n,color:r,gradientId:i,isFaded:d,isHighlighted:p},m=gw(h),f=o?.area??pw,g=yI({elementType:f,externalSlotProps:a?.area,additionalProps:l({},u,{onClick:s,cursor:s?"pointer":"unset"}),className:m.root,ownerState:h});return(0,O.jsx)(f,l({},c,g))}const vw=ae(e=>e.animation,e=>e.skip||e.skipAnimationRequests>0);function bw(e){const t=zx().use(vw);return e||t}function xw(){return zx().use(Wa)}function Iw(e){this._context=e}function ww(e){return new Iw(e)}Iw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};const kw=Math.PI,Sw=2*kw,Mw=1e-6,Cw=Sw-Mw;function Pw(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Pw;const n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;tMw)if(Math.abs(u*s-l*c)>Mw&&i){let p=n-o,h=r-a,m=s*s+l*l,f=p*p+h*h,g=Math.sqrt(m),y=Math.sqrt(d),v=i*Math.tan((kw-Math.acos((m+d-f)/(2*g*y)))/2),b=v/y,x=v/g;Math.abs(b-1)>Mw&&this._append`L${e+b*c},${t+b*u}`,this._append`A${i},${i},0,0,${+(u*p>c*h)},${this._x1=e+x*s},${this._y1=t+x*l}`}else this._append`L${this._x1=e},${this._y1=t}`}arc(e,t,n,r,i,o){if(e=+e,t=+t,o=!!o,(n=+n)<0)throw new Error(`negative radius: ${n}`);let a=n*Math.cos(r),s=n*Math.sin(r),l=e+a,c=t+s,u=1^o,d=o?r-i:i-r;null===this._x1?this._append`M${l},${c}`:(Math.abs(this._x1-l)>Mw||Math.abs(this._y1-c)>Mw)&&this._append`L${l},${c}`,n&&(d<0&&(d=d%Sw+Sw),d>Cw?this._append`A${n},${n},0,1,${u},${e-a},${t-s}A${n},${n},0,1,${u},${this._x1=l},${this._y1=c}`:d>Mw&&this._append`A${n},${n},0,${+(d>=kw)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}}function Tw(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(null==n)t=null;else{const e=Math.floor(n);if(!(e>=0))throw new RangeError(`invalid digits: ${n}`);t=e}return e},()=>new Ew(t)}function Aw(e){return e[0]}function Ow(e){return e[1]}function jw(e,t){var n=rl(!0),r=null,i=ww,o=null,a=Tw(s);function s(s){var l,c,u,d=(s=nl(s)).length,p=!1;for(null==r&&(o=i(u=a())),l=0;l<=d;++l)!(l=d;--p)s.point(y[p],v[p]);s.lineEnd(),s.areaEnd()}g&&(y[u]=+e(h,u,c),v[u]=+t(h,u,c),s.point(r?+r(h,u,c):y[u],n?+n(h,u,c):v[u]))}if(m)return s=null,m+""||null}function u(){return jw().defined(i).curve(a).context(o)}return e="function"==typeof e?e:void 0===e?Aw:rl(+e),t="function"==typeof t?t:rl(void 0===t?0:+t),n="function"==typeof n?n:void 0===n?Ow:rl(+n),c.x=function(t){return arguments.length?(e="function"==typeof t?t:rl(+t),r=null,c):e},c.x0=function(t){return arguments.length?(e="function"==typeof t?t:rl(+t),c):e},c.x1=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:rl(+e),c):r},c.y=function(e){return arguments.length?(t="function"==typeof e?e:rl(+e),n=null,c):t},c.y0=function(e){return arguments.length?(t="function"==typeof e?e:rl(+e),c):t},c.y1=function(e){return arguments.length?(n=null==e?null:"function"==typeof e?e:rl(+e),c):n},c.lineX0=c.lineY0=function(){return u().x(e).y(t)},c.lineY1=function(){return u().x(e).y(n)},c.lineX1=function(){return u().x(r).y(t)},c.defined=function(e){return arguments.length?(i="function"==typeof e?e:rl(!!e),c):i},c.curve=function(e){return arguments.length?(a=e,null!=o&&(s=a(o)),c):a},c.context=function(e){return arguments.length?(null==e?o=s=null:s=a(o=e),c):o},c}function Rw(e,t,n){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-n),e._x2,e._y2)}function Dw(e,t){this._context=e,this._k=(1-t)/6}function $w(e,t){this._context=e,this._alpha=t}Ew.prototype,Dw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Rw(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Rw(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}},function e(t){function n(e){return new Dw(e,t)}return n.tension=function(t){return e(+t)},n}(0),$w.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var n=this._x2-e,r=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:!function(e,t,n){var r=e._x1,i=e._y1,o=e._x2,a=e._y2;if(e._l01_a>Kl){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,l=3*e._l01_a*(e._l01_a+e._l12_a);r=(r*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/l,i=(i*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/l}if(e._l23_a>Kl){var c=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,u=3*e._l23_a*(e._l23_a+e._l12_a);o=(o*c+e._x1*e._l23_2a-t*e._l12_2a)/u,a=(a*c+e._y1*e._l23_2a-n*e._l12_2a)/u}e._context.bezierCurveTo(r,i,o,a,e._x2,e._y2)}(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const zw=function e(t){function n(e){return t?new $w(e,t):new Dw(e,0)}return n.alpha=function(t){return e(+t)},n}(.5);function Nw(e){return e<0?-1:1}function _w(e,t,n){var r=e._x1-e._x0,i=t-e._x1,o=(e._y1-e._y0)/(r||i<0&&-0),a=(n-e._y1)/(i||r<0&&-0),s=(o*i+a*r)/(r+i);return(Nw(o)+Nw(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function Fw(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function Hw(e,t,n){var r=e._x0,i=e._y0,o=e._x1,a=e._y1,s=(o-r)/3;e._context.bezierCurveTo(r+s,i+s*t,o-s,a-s*n,o,a)}function Bw(e){this._context=e}function Vw(e){this._context=new Uw(e)}function Uw(e){this._context=e}function Yw(e){return new Bw(e)}function Ww(e){return new Vw(e)}function Gw(e){this._context=e}function Kw(e){var t,n,r=e.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=e[0]+2*e[1],t=1;t=0;--t)i[t]=(a[t]-i[t+1])/o[t];for(o[r-1]=(e[r]+i[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}}this._x=e,this._y=t}};class ek{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t)}this._x0=e,this._y0=t}}function tk(e){return new ek(e,!0)}function nk(e){return new ek(e,!1)}function rk(e){switch(e){case"catmullRom":return zw.alpha(.5);case"linear":return ww;case"monotoneX":default:return Yw;case"monotoneY":return Ww;case"natural":return qw;case"step":return Zw;case"stepBefore":return Jw;case"stepAfter":return Qw;case"bumpY":return nk;case"bumpX":return tk}}const ik=ae(ft,(e,t)=>e[t]),ok=le(ft,(e,t,n)=>{if(void 0===n||Array.isArray(n)&&0===n.length)return e[t]?.seriesOrder?.map(n=>e[t]?.series[n])??[];if(!Array.isArray(n))return e[t]?.series?.[n];const r=[],i=[];for(const o of n){const n=e[t]?.series?.[o];n?r.push(n):i.push(o)}return r}),ak=e=>zx().use(ik,e),sk=(e,t)=>zx().use(ok,e,t);function lk(){return ak("line")}function ck(e){if(fa(e))return t=>(e(t)??0)+e.bandwidth()/2;const t=e.domain();return t[0]===t[1]?n=>n===t[0]?e(n):NaN:t=>e(t)}function uk(e){return Hx(e).scale}function dk(e){return Bx(e).scale}function pk(t,n){const r=lk(),i=_x().xAxisIds[0],o=Fx().yAxisIds[0],a=Zx(),s=e.useMemo(()=>{if(void 0===r)return[];const{series:e,stackingGroups:s}=r,l=[];for(const r of s){const s=r.ids;for(let r=s.length-1;r>=0;r-=1){const c=s[r],{xAxisId:u=i,yAxisId:d=o,stackedData:p,data:h,connectNulls:m,baseline:f,curve:g,strictStepCurve:y,area:v}=e[c];if(!v||!(u in t)||!(d in n))continue;const b=t[u].scale,x=ck(b),I=n[d].scale,w=t[u].data,k=n[d].colorScale&&a(d)||t[u].colorScale&&a(u)||void 0,S=g?.includes("step")&&!y&&fa(b),M=w?.flatMap((e,t)=>{const n=null==h[t];if(S){const r=[{x:e,y:p[t],nullData:n,isExtension:!1}];return n||0!==t&&null!=h[t-1]||r.unshift({x:(b(e)??0)-(b.step()-b.bandwidth())/2,y:p[t],nullData:n,isExtension:!0}),n||t!==h.length-1&&null!=h[t+1]||r.push({x:(b(e)??0)+(b.step()+b.bandwidth())/2,y:p[t],nullData:n,isExtension:!0}),r}return{x:e,y:p[t],nullData:n}})??[],C=m?M.filter(e=>!e.nullData):M,P=Lw().x(e=>e.isExtension?e.x:x(e.x)).defined(e=>m||!e.nullData||!!e.isExtension).y0(e=>{if("number"==typeof f)return I(f);if("max"===f)return I.range()[1];if("min"===f)return I.range()[0];const t=e.y&&I(e.y[0]);return Number.isNaN(t)?I.range()[0]:t}).y1(e=>e.y&&I(e.y[1])),E=P.curve(rk(g))(C)||"";l.push({area:e[c].area,color:e[c].color,gradientId:k,d:E,seriesId:c})}}return l},[r,i,o,t,n,a]);return s}const hk=["slots","slotProps","onItemClick","skipAnimation"],mk=bm("g",{name:"MuiAreaPlot",slot:"Root"})({[`& .${fw.root}`]:{transitionProperty:"opacity, fill",transitionDuration:`${_I}ms`,transitionTimingFunction:FI}}),fk=()=>{const{xAxis:e}=_x(),{yAxis:t}=Fx();return pk(e,t)};function gk(e){const{slots:t,slotProps:n,onItemClick:r,skipAnimation:i}=e,o=tt(e,hk),a=bw(xw()||i),s=fk();return(0,O.jsx)(mk,l({},o,{children:s.map(({d:e,seriesId:i,color:o,area:s,gradientId:l})=>!!s&&(0,O.jsx)(yw,{id:i,d:e,color:o,gradientId:l,slots:t,slotProps:n,onClick:r&&(e=>r(e,{type:"line",seriesId:i})),skipAnimation:a},i))}))}const yk=["skipAnimation","ownerState"],vk=e.forwardRef(function(e,t){const{skipAnimation:n,ownerState:r}=e,i=tt(e,yk),o=function(e){return aw({d:e.d},{createInterpolator:(e,t)=>{const n=Ln(e.d,t.d);return e=>({d:n(e)})},applyProps:(e,{d:t})=>e.setAttribute("d",t),skip:e.skipAnimation,transformProps:e=>e,ref:e.ref})}({d:e.d,skipAnimation:n,ref:t}),a=r.isFaded?.3:1;return(0,O.jsx)(uw,{skipAnimation:n,id:`${r.id}-line-clip`,children:(0,O.jsx)("path",l({stroke:r.gradientId?`url(#${r.gradientId})`:r.color,strokeWidth:2,strokeLinejoin:"round",fill:"none",filter:r.isHighlighted?"brightness(120%)":void 0,opacity:r.hidden?0:a,"data-series":r.id,"data-highlighted":r.isHighlighted||void 0,"data-faded":r.isFaded||void 0},i,o))})}),bk=["id","classes","color","gradientId","slots","slotProps","onClick","hidden"];function xk(e){return Xb("MuiLineElement",e)}const Ik=Zb("MuiLineElement",["root","highlighted","faded","series"]),wk=e=>{const{classes:t,id:n,isFaded:r,isHighlighted:i}=e;return uI({root:["root",`series-${n}`,i&&"highlighted",r&&"faded"]},xk,t)};function kk(e){const{id:t,classes:n,color:r,gradientId:i,slots:o,slotProps:a,onClick:s,hidden:c}=e,u=tt(e,bk),d=bI({type:"line",seriesId:t}),{isFaded:p,isHighlighted:h}=zI({seriesId:t}),m={id:t,classes:n,color:r,gradientId:i,isFaded:p,isHighlighted:h,hidden:c},f=wk(m),g=o?.line??vk,y=yI({elementType:g,externalSlotProps:a?.line,additionalProps:l({},d,{onClick:s,cursor:s?"pointer":"unset"}),className:f.root,ownerState:m});return(0,O.jsx)(g,l({},u,y))}function Sk(t,n){const r=lk(),i=_x().xAxisIds[0],o=Fx().yAxisIds[0],a=Zx();return e.useMemo(()=>{if(void 0===r)return[];const{series:e,stackingGroups:s}=r,l=[];for(const r of s){const s=r.ids;for(const r of s){const{xAxisId:s=i,yAxisId:c=o,stackedData:u,data:d,connectNulls:p,curve:h,strictStepCurve:m}=e[r];if(!(s in t)||!(c in n))continue;const f=t[s].scale,g=ck(f),y=n[c].scale,v=t[s].data,b=n[c].colorScale&&a(c)||t[s].colorScale&&a(s)||void 0,x=h?.includes("step")&&!m&&fa(f),I=v?.flatMap((e,t)=>{const n=null==d[t];if(x){const r=[{x:e,y:u[t],nullData:n,isExtension:!1}];return n||0!==t&&null!=d[t-1]||r.unshift({x:(f(e)??0)-(f.step()-f.bandwidth())/2,y:u[t],nullData:n,isExtension:!0}),n||t!==d.length-1&&null!=d[t+1]||r.push({x:(f(e)??0)+(f.step()+f.bandwidth())/2,y:u[t],nullData:n,isExtension:!0}),r}return{x:e,y:u[t],nullData:n}})??[],w=p?I.filter(e=>!e.nullData):I,k=jw().x(e=>e.isExtension?e.x:g(e.x)).defined(e=>p||!e.nullData||!!e.isExtension).y(e=>y(e.y[1])),S=k.curve(rk(h))(w)||"";l.push({color:e[r].color,gradientId:b,d:S,seriesId:r})}}return l},[r,i,o,t,n,a])}const Mk=["slots","slotProps","skipAnimation","onItemClick"],Ck=bm("g",{name:"MuiAreaPlot",slot:"Root"})({[`& .${Ik.root}`]:{transitionProperty:"opacity, fill",transitionDuration:`${_I}ms`,transitionTimingFunction:FI}}),Pk=()=>{const{xAxis:e}=_x(),{yAxis:t}=Fx();return Sk(e,t)};function Ek(e){const{slots:t,slotProps:n,skipAnimation:r,onItemClick:i}=e,o=tt(e,Mk),a=bw(xw()||r),s=Pk();return(0,O.jsx)(Ck,l({},o,{children:s.map(({d:e,seriesId:r,color:o,gradientId:s})=>(0,O.jsx)(kk,{id:r,d:e,color:o,gradientId:s,skipAnimation:a,slots:t,slotProps:n,onClick:i&&(e=>i(e,{type:"line",seriesId:r}))},r))}))}function Tk(e){return Xb("MuiMarkElement",e)}const Ak=Zb("MuiMarkElement",["root","highlighted","faded","animate","series"]),Ok=e=>{const{classes:t,id:n,isFaded:r,isHighlighted:i,skipAnimation:o}=e;return uI({root:["root",`series-${n}`,i&&"highlighted",r&&"faded",o?void 0:"animate"]},Tk,t)},jk=["x","y","id","classes","color","dataIndex","onClick","skipAnimation","isFaded","isHighlighted","shape","hidden"],Lk=bm("circle",{slot:"internal",shouldForwardProp:void 0})({[`&.${Ak.animate}`]:{transitionDuration:`${_I}ms`,transitionProperty:"cx, cy, opacity",transitionTimingFunction:FI}});function Rk(e){const{x:t,y:n,id:r,classes:i,color:o,dataIndex:a,onClick:s,skipAnimation:c,isFaded:u=!1,isHighlighted:d=!1,hidden:p}=e,h=tt(e,jk),m=xm(),f=bI({type:"line",seriesId:r,dataIndex:a}),g=Ok({id:r,classes:i,isHighlighted:d,isFaded:u,skipAnimation:c});return(0,O.jsx)(Lk,l({},h,{cx:t,cy:n,r:5,fill:(m.vars||m).palette.background.paper,stroke:o,strokeWidth:2,className:g.root,onClick:s,cursor:s?"pointer":"unset",pointerEvents:p?"none":void 0},f,{"data-highlighted":d||void 0,"data-faded":u||void 0,opacity:p?0:1}))}Gl(3);const Dk={draw(e,t){const n=Gl(t/ql);e.moveTo(n,0),e.arc(0,0,n,0,Zl)}},$k={draw(e,t){const n=Gl(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},zk=Gl(1/3),Nk=2*zk,_k={draw(e,t){const n=Gl(t/Nk),r=n*zk;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},Fk={draw(e,t){const n=Gl(t),r=-n/2;e.rect(r,r,n,n)}},Hk=Wl(ql/10)/Wl(7*ql/10),Bk=Wl(Zl/10)*Hk,Vk=-Vl(Zl/10)*Hk,Uk={draw(e,t){const n=Gl(.8908130915292852*t),r=Bk*n,i=Vk*n;e.moveTo(0,-n),e.lineTo(r,i);for(let t=1;t<5;++t){const o=Zl*t/5,a=Vl(o),s=Wl(o);e.lineTo(s*n,-a*n),e.lineTo(a*r-s*i,s*r+a*i)}e.closePath()}},Yk=Gl(3),Wk={draw(e,t){const n=-Gl(t/(3*Yk));e.moveTo(0,2*n),e.lineTo(-Yk*n,-n),e.lineTo(Yk*n,-n),e.closePath()}},Gk=(Gl(3),-.5),Kk=Gl(3)/2,qk=1/Gl(12),Xk=3*(qk/2+1),Zk={draw(e,t){const n=Gl(t/Xk),r=n/2,i=n*qk,o=r,a=n*qk+n,s=-o,l=a;e.moveTo(r,i),e.lineTo(o,a),e.lineTo(s,l),e.lineTo(Gk*r-Kk*i,Kk*r+Gk*i),e.lineTo(Gk*o-Kk*a,Kk*o+Gk*a),e.lineTo(Gk*s-Kk*l,Kk*s+Gk*l),e.lineTo(Gk*r+Kk*i,Gk*i-Kk*r),e.lineTo(Gk*o+Kk*a,Gk*a-Kk*o),e.lineTo(Gk*s+Kk*l,Gk*l-Kk*s),e.closePath()}},Jk=[Dk,$k,_k,Fk,Uk,Wk,Zk];function Qk(e,t){let n=null,r=Tw(i);function i(){let i;if(n||(n=i=r()),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+""||null}return e="function"==typeof e?e:rl(e||Dk),t="function"==typeof t?t:rl(void 0===t?64:+t),i.type=function(t){return arguments.length?(e="function"==typeof t?t:rl(t),i):e},i.size=function(e){return arguments.length?(t="function"==typeof e?e:rl(+e),i):t},i.context=function(e){return arguments.length?(n=null==e?null:e,i):n},i}function eS(e){switch(e){case"circle":default:return 0;case"cross":return 1;case"diamond":return 2;case"square":return 3;case"star":return 4;case"triangle":return 5;case"wye":return 6}}const tS=["x","y","id","classes","color","shape","dataIndex","onClick","skipAnimation","isFaded","isHighlighted","hidden","style"],nS=bm("path",{name:"MuiMarkElement",slot:"Root"})(({theme:e})=>({fill:(e.vars||e).palette.background.paper,[`&.${Ak.animate}`]:{transitionDuration:`${_I}ms`,transitionProperty:"transform, transform-origin, opacity",transitionTimingFunction:FI}}));function rS(e){const{x:t,y:n,id:r,classes:i,color:o,shape:a,dataIndex:s,onClick:c,skipAnimation:u,isFaded:d=!1,isHighlighted:p=!1,hidden:h,style:m}=e,f=tt(e,tS),g=bI({type:"line",seriesId:r,dataIndex:s}),y={id:r,classes:i,isHighlighted:p,isFaded:d,skipAnimation:u},v=Ok(y);return(0,O.jsx)(nS,l({},f,{style:l({},m,{transform:`translate(${t}px, ${n}px)`,transformOrigin:`${t}px ${n}px`}),ownerState:y,className:v.root,d:Qk(Jk[eS(a)])(),onClick:c,cursor:c?"pointer":"unset",pointerEvents:h?"none":void 0},g,{"data-highlighted":p||void 0,"data-faded":d||void 0,opacity:h?0:1,strokeWidth:2,stroke:o}))}function iS(){const e=zx();return{isHighlighted:e.use(TI),isFaded:e.use(AI)}}const oS=e=>e.controlledCartesianAxisHighlight,aS=(e,t,n,r)=>r?[]:void 0!==n?n.filter(e=>void 0!==t.axis[e.axisId]).map(e=>e):null===e?[]:[{axisId:t.axisIds[0],dataIndex:e}],sS=le(As,ls,oS,kb,aS),lS=(le(Os,cs,oS,kb,aS),(e,t,n,r,i,o,a)=>{if(a)return[];if(void 0!==r)return r.map(e=>l({},e,{value:n.axis[e.axisId]?.data?.[e.dataIndex]})).filter(({value:e})=>void 0!==e);const s=null!==t&&{axisId:n.axisIds[0],dataIndex:e,value:t},c=i&&n.axis[i.axisId]?.data?.[i.dataIndex],u=i&&null!=c&&l({},i,{value:c});if("pointer"===o){if(s)return[s];if(u)return[u]}if("keyboard"===o){if(u)return[u];if(s)return[s]}return[]}),cS=le(As,Rs,ls,oS,sI,Cs,kb,lS),uS=le(Os,Ds,cs,oS,lI,Cs,kb,lS),dS=(e,t)=>void 0===e?[t.axis[t.axisIds[0]]]:e.map(e=>t.axis[e.axisId]??null).filter(e=>null!==e);ae(oS,ls,dS),ae(oS,cs,dS);const pS=["slots","slotProps","skipAnimation","onItemClick"];function hS(t){const{slots:n,slotProps:r,skipAnimation:i,onItemClick:o}=t,a=tt(t,pS),s=bw(xw()||i),{xAxis:c}=_x(),{yAxis:u}=Fx(),{store:d}=$x(),{isFaded:p,isHighlighted:h}=iS(),m=d.use(sS),f=e.useMemo(()=>{const e={};for(const{dataIndex:t,axisId:n}of m)void 0===e[n]?e[n]=new Set([t]):e[n].add(t);return e},[m]),g=function(t,n){const r=lk(),i=_x().xAxisIds[0],o=Fx().yAxisIds[0],a=Xx(),{instance:s}=$x(),l=e.useMemo(()=>{if(void 0===r)return[];const{series:e,stackingGroups:l}=r,c=[];for(const r of l){const l=r.ids;for(const r of l){const{xAxisId:l=i,yAxisId:u=o,stackedData:d,data:p,showMark:h=!0,shape:m="circle"}=e[r];if(!1===h)continue;if(!(l in t)||!(u in n))continue;const f=ck(t[l].scale),g=n[u].scale,y=t[l].data,v=sw(`${a}-${r}-line-clip`),b=$l(e[r],t[l],n[u]),x=[];if(y)for(let e=0;e{const u=n?.mark??("circle"===i?Rk:rS),d=h({seriesId:e}),m=!d&&p({seriesId:e});return(0,O.jsx)("g",{clipPath:`url(#${t})`,"data-series":e,children:c.map(({x:t,y:n,index:c,color:p})=>(0,O.jsx)(u,l({id:e,dataIndex:c,shape:i,color:p,x:t,y:n,skipAnimation:s,onClick:o&&(t=>o(t,{type:"line",seriesId:e,dataIndex:c})),isHighlighted:f[a]?.has(c)||d,isFaded:m},r?.mark),`${e}-${c}`))},e)})}))}new Set;const mS=e.createContext(),fS=()=>e.useContext(mS)??!1;function gS(){const[t,n]=e.useState(!1);return e.useEffect(()=>{n(!0)},[]),t}function yS(e){return"number"==typeof e&&!Number.isFinite(e)}function vS(e,t){return Math.abs(12*t.getFullYear()+t.getMonth()-12*e.getFullYear()-e.getMonth())}function bS(e,t){return Math.abs(t.getTime()-e.getTime())/864e5}const xS={years:{getTickNumber:function(e,t){return Math.abs(t.getFullYear()-e.getFullYear())},isTick:(e,t)=>t.getFullYear()!==e.getFullYear(),format:e=>e.getFullYear().toString()},quarterly:{getTickNumber:(e,t)=>Math.floor(vS(e,t)/3),isTick:(e,t)=>t.getMonth()!==e.getMonth()&&t.getMonth()%3==0,format:new Intl.DateTimeFormat("default",{month:"short"}).format},months:{getTickNumber:vS,isTick:(e,t)=>t.getMonth()!==e.getMonth(),format:new Intl.DateTimeFormat("default",{month:"short"}).format},biweekly:{getTickNumber:(e,t)=>bS(e,t)/14,isTick:(e,t)=>(t.getDay()7)&&Math.floor(t.getDate()/7)%2==1,format:new Intl.DateTimeFormat("default",{day:"numeric"}).format},weeks:{getTickNumber:(e,t)=>bS(e,t)/7,isTick:(e,t)=>t.getDay()=7,format:new Intl.DateTimeFormat("default",{day:"numeric"}).format},days:{getTickNumber:bS,isTick:(e,t)=>t.getDate()!==e.getDate(),format:new Intl.DateTimeFormat("default",{day:"numeric"}).format},hours:{getTickNumber:function(e,t){return Math.abs(t.getTime()-e.getTime())/36e5},isTick:(e,t)=>t.getHours()!==e.getHours(),format:new Intl.DateTimeFormat("default",{hour:"2-digit",minute:"2-digit"}).format}},IS={start:0,extremities:0,end:1,middle:.5};function wS(e,t,n){return e(t)-(e.step()-e.bandwidth())/2+IS[n]*e.step()}function kS(t){const{scale:n,tickNumber:r,valueFormatter:i,tickInterval:o,tickPlacement:a="extremities",tickLabelPlacement:s,tickSpacing:l,direction:c,ordinalTimeTicks:u}=t,{instance:d}=$x(),p="x"===c?d.isXInside:d.isYInside;return e.useMemo(()=>function(e){const{scale:t,tickNumber:n,valueFormatter:r,tickInterval:i,tickPlacement:o,tickLabelPlacement:a,tickSpacing:s,isInside:l,ordinalTimeTicks:c}=e;if(void 0!==c&&sa(t.domain())&&fa(t)){const e=t.domain();if(0===e.length||1===e.length)return[];const r="middle",i=function(e,t,n,r,i){if(0===n.length)return[];const o=r.range()[0]>r.range()[1],a=e.findIndex(e=>i(wS(r,e,o?"start":"end"))),s=e.findLastIndex(e=>i(wS(r,e,o?"end":"start"))),l=e[0],c=e[e.length-1];if(!(l instanceof Date&&c instanceof Date))return[];let u=0;for(let e=0;et||t/r"string"==typeof e?xS[e]:e),t,l);return i.map(({index:n,formatter:i})=>{const o=e[n];return{value:o,formattedValue:i(o),offset:wS(t,o,r),labelOffset:0}})}const u=o??"extremities";if(fa(t)){const e=t.domain(),o=a??"middle";let c=e;if("object"==typeof i&&null!=i?c=i:("function"==typeof i&&(c=c.filter(i)),void 0!==s&&s>0&&(c=function(e,t,n){const r=Math.abs(t[1]-t[0]),i=Math.ceil(e.length/(r/n));return Number.isNaN(i)||i<=1?e:e.filter((e,t)=>t%i===0)}(c,t.range(),s))),0===c.length)return[];if(t.bandwidth()>0){const i=t.range()[0]>t.range()[1],a=c.findIndex(e=>l(wS(t,e,i?"start":"end"))),s=c.findLastIndex(e=>l(wS(t,e,i?"end":"start")));return[...c.slice(a,s+1).map(e=>{const i=`${e}`;return{value:e,formattedValue:r?.(e,{location:"tick",scale:t,tickNumber:n,defaultTickLabel:i})??i,offset:wS(t,e,u),labelOffset:"tick"===o?0:t.step()*(IS[o]-IS[u])}}),..."extremities"===u&&s===e.length-1&&l(t.range()[1])?[{formattedValue:void 0,offset:t.range()[1],labelOffset:0}]:[]]}return c.map(e=>{const i=`${e}`;return{value:e,formattedValue:r?.(e,{location:"tick",scale:t,tickNumber:n,defaultTickLabel:i})??i,offset:t(e),labelOffset:0}})}if(t.domain().some(yS))return[];const d=a,p="object"==typeof i?i:function(e,t){const n=e.domain();return n[0]===n[1]?[n[0]]:e.ticks(t)}(t,n),h=[];for(let e=0;e=t)break;return r}:function(e,t){return e.slice(0,t)},ES="…";function TS(e,t){const{width:n,height:r,measureText:i}=t,o=t.angle*(Math.PI/180),a=i(e),s=Math.abs(a.width*Math.cos(o))+Math.abs(a.height*Math.sin(o)),l=Math.abs(a.width*Math.sin(o))+Math.abs(a.height*Math.cos(o));return s<=n&&l<=r}function AS(e,t){if(t(e))return e;let n=e,r=1,i=.5;const o=MS(e);let a=o,s=o,l=null;do{if(s=a,a=Math.floor(o*i),0===a)break;n=PS(e,a).trim(),r+=1,t(n+ES)?(l=n,i+=1/2**r):i-=1/2**r}while(1!==Math.abs(a-s));return l?l+ES:""}function OS(){return"undefined"==typeof window}const jS=new Map,LS=2e3,RS=new Set(["minWidth","maxWidth","width","minHeight","maxHeight","height","top","left","fontSize","padding","margin","paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom"]);function DS(e,t){return RS.has(e)&&t===+t?`${t}px`:t}const $S=/([A-Z])/g;function zS(e){return String(e).replace($S,e=>`-${e.toLowerCase()}`)}function NS(e){let t="";for(const n in e)if(Object.hasOwn(e,n)){const r=n,i=e[r];if(void 0===i)continue;t+=`${zS(r)}:${DS(r,i)};`}return t}const _S=(e,t={})=>{if(null==e||OS())return{width:0,height:0};const n=String(e),r=`${n}-${NS(t)}`,i=jS.get(r);if(i)return i;try{const e=BS(),i=document.createElementNS("http://www.w3.org/2000/svg","text");Object.keys(t).map(e=>(i.style[zS(e)]=DS(e,t[e]),e)),i.textContent=n,e.replaceChildren(i);const o=FS(i);return jS.set(r,o),jS.size+1>LS&&jS.clear(),o}catch{return{width:0,height:0}}};function FS(e){try{const t=e.getBBox();return{width:t.width,height:t.height}}catch{const t=e.getBoundingClientRect();return{width:t.width,height:t.height}}}let HS=null;function BS(){return null===HS&&(HS=document.createElementNS("http://www.w3.org/2000/svg","svg"),HS.setAttribute("aria-hidden","true"),HS.style.position="absolute",HS.style.top="-20000px",HS.style.left="0",HS.style.padding="0",HS.style.margin="0",HS.style.border="none",HS.style.pointerEvents="none",HS.style.visibility="hidden",HS.style.contain="strict",document.body.appendChild(HS)),HS}const VS=5;function US(e){return Xb("MuiChartsAxis",e)}const YS=Zb("MuiChartsAxis",["root","line","tickContainer","tick","tickLabel","label","directionX","directionY","top","bottom","left","right","id"]),WS=e=>{const{classes:t,position:n,id:r}=e;return uI({root:["root","directionX",n,`id-${r}`],line:["line"],tickContainer:["tickContainer"],tick:["tick"],tickLabel:["tickLabel"],label:["label"]},US,t)},GS=3,KS=4,qS={disableLine:!1,disableTicks:!1,tickSize:6,tickLabelMinGap:4},XS=["x","y","style","text","ownerState"],ZS=["angle","textAnchor","dominantBaseline"];function JS(t){const{x:n,y:r,style:i,text:o}=t,a=tt(t,XS),s=i??{},{angle:c,textAnchor:u,dominantBaseline:d}=s,p=tt(s,ZS),h=gS(),m=e.useMemo(()=>function({style:e,needsComputation:t,text:n}){return n.split("\n").map(n=>l({text:n},t?_S(n,e):{width:0,height:0}))}({style:p,needsComputation:h&&o.includes("\n"),text:o}),[p,o,h]);let f;switch(d){case"hanging":case"text-before-edge":f=0;break;case"central":f=(m.length-1)/2*-m[0].height;break;default:f=(m.length-1)*-m[0].height}return(0,O.jsx)("text",l({},a,{transform:c?`rotate(${c}, ${n}, ${r})`:void 0,x:n,y:r,textAnchor:u,dominantBaseline:d,style:p,children:m.map((e,t)=>(0,O.jsx)("tspan",{x:n,dy:`${0===t?f:m[0].height}px`,dominantBaseline:d,children:e.text},t))}))}function QS(e){const t=$b(e);return t<=30||t>=330||t<=210&&t>=150?"middle":t<=180?"end":"start"}function eM(e){const t=$b(e);return t<=30||t>=330?"hanging":t<=210&&t>=150?"auto":"central"}function tM(e){switch(e){case"start":return"end";case"end":return"start";default:return e}}const nM=["scale","tickNumber","reverse"];function rM(e){const{xAxis:t,xAxisIds:n}=_x(),r=t[e.axisId??n[0]],{scale:i,tickNumber:o,reverse:a}=r,s=Lh({props:l({},tt(r,nM),e),name:"MuiChartsXAxis"}),c=l({},qS,s),{position:u,tickLabelStyle:d,slots:p,slotProps:h}=c,m=xm(),f=fS(),g=WS(c),y="bottom"===u?1:-1,v=p?.axisTick??"line",b=p?.axisTickLabel??JS,x=QS(("bottom"===u?0:180)-(d?.angle??0)),I=eM(("bottom"===u?0:180)-(d?.angle??0));return{xScale:i,defaultizedProps:c,tickNumber:o,positionSign:y,classes:g,Tick:v,TickLabel:b,axisTickLabelProps:yI({elementType:b,externalSlotProps:h?.axisTickLabel,additionalProps:{style:l({},m.typography.caption,{fontSize:12,lineHeight:1.25,textAnchor:f?tM(x):x,dominantBaseline:I},d)},className:g.tickLabel,ownerState:{}}),reverse:a}}function iM(t){const{axisLabelHeight:n,ordinalTimeTicks:r}=t,{xScale:i,defaultizedProps:o,tickNumber:a,positionSign:s,classes:c,Tick:u,TickLabel:d,axisTickLabelProps:p,reverse:h}=rM(t),m=fS(),f=function(t=!1){const[n,r]=e.useState(!1);return V(()=>{t||r(!0)},[t]),e.useEffect(()=>{t&&r(!0)},[t]),n}(),{disableTicks:g,tickSize:y,valueFormatter:v,slotProps:b,tickInterval:x,tickLabelInterval:I,tickPlacement:w,tickLabelPlacement:k,tickLabelMinGap:S,tickSpacing:M,height:C}=o,P=Nx(),{instance:E}=$x(),T=gS(),A=g?4:y,j=kS({scale:i,tickNumber:a,valueFormatter:v,tickInterval:x,tickPlacement:w,tickLabelPlacement:k,tickSpacing:M,direction:"x",ordinalTimeTicks:r}),L=function(e,{tickLabelStyle:t,tickLabelInterval:n,tickLabelMinGap:r,reverse:i,isMounted:o,isXInside:a}){if("function"==typeof n)return new Set(e.filter((e,t)=>n(e.value,t)));let s=0;const c=i?-1:1,u=e.filter(e=>{const{offset:t,labelOffset:n,formattedValue:r}=e;return""!==r&&a(t+n)}),d=function(e,t){const n=new Set;for(const t of e)t.formattedValue&&t.formattedValue.split("\n").forEach(e=>n.add(e));return function(e,t={}){if(OS())return new Map(Array.from(e).map(e=>[e,{width:0,height:0}]));const n=new Map,r=[],i=NS(t);for(const t of e){const e=`${t}-${i}`,o=jS.get(e);o?n.set(t,o):r.push(t)}const o=BS(),a=l({},t);Object.keys(a).map(e=>(o.style[zS(e)]=DS(e,a[e]),e));const s=[];for(const e of r){const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.textContent=`${e}`,s.push(t)}o.replaceChildren(...s);for(let e=0;eLS&&jS.clear(),n}(n,t)}(u,t);return new Set(u.filter((e,n)=>{const{offset:i,labelOffset:a}=e,l=i+a;if(n>0&&c*l90-VS)return t;const i=Ql(r);return i0&&c*(l-c*h/2)0?n+KS:0)-A-GS),D=T?function(e,t,n,r,i){const o=new Map,a=$b(i?.angle??0);let s=1,l=1;"start"===i?.textAnchor?(s=1/0,l=1):"end"===i?.textAnchor?(s=1,l=1/0):(s=2,l=2),a>90&&a<270&&([s,l]=[l,s]),r&&([s,l]=[l,s]);for(const r of e)if(r.formattedValue){const e=Math.min((r.offset+r.labelOffset)*s,(t.left+t.width+t.right-r.offset-r.labelOffset)*l),c=t=>TS(t,{width:e,height:n,angle:a,measureText:e=>_S(e,i)});o.set(r,AS(r.formattedValue.toString(),c))}return o}(L,P,R,m,p.style):new Map(Array.from(L).map(e=>[e,e.formattedValue]));return(0,O.jsx)(e.Fragment,{children:j.map((e,t)=>{const{offset:n,labelOffset:r}=e,i=r??0,o=s*(A+GS),a=E.isXInside(n),h=D.get(e),m=L.has(e);return(0,O.jsxs)("g",{transform:`translate(${n}, 0)`,className:c.tickContainer,children:[!g&&a&&(0,O.jsx)(u,l({y2:s*A,className:c.tick},b?.axisTick)),void 0!==h&&m&&(0,O.jsx)(d,l({x:i,y:o},p,{text:h}))]},t)})})}const oM={start:0,extremities:0,end:1,middle:.5,tick:0};function aM(t){const{scale:n,tickInterval:r,tickLabelPlacement:i="middle",tickPlacement:o="extremities",groups:a}=t;return e.useMemo(()=>{const e=n.domain(),t="function"==typeof r&&e.filter(r)||"object"==typeof r&&r||e;if(n.bandwidth()>0){const e=sM(t,a,o,i,n);return e[0]&&(e[0].ignoreTick=!0),[{formattedValue:void 0,offset:n.range()[0],labelOffset:0,groupIndex:a.length-1},...e,{formattedValue:void 0,offset:n.range()[1],labelOffset:0,groupIndex:a.length-1}]}return sM(t,a,o,i,n)},[n,r,a,o,i])}function sM(e,t,n,r,i){const o=[],a=new Map;let s=0;for(let l=0;l{const r=e[t]??{},i=n??lM.tickSize,o=i*t*2+i;return l({},lM,r,{tickSize:r.tickSize??o})};function uM(t){const{xScale:n,defaultizedProps:r,tickNumber:i,positionSign:o,classes:a,Tick:s,TickLabel:c,axisTickLabelProps:u}=rM(t);if(!fa(n))throw new Error("MUI X Charts: ChartsGroupedXAxis only supports the `band` and `point` scale types.");const{disableTicks:d,tickSize:p,valueFormatter:h,slotProps:m,tickInterval:f,tickPlacement:g,tickLabelPlacement:y}=r,v=r.groups,{instance:b}=$x(),x=aM({scale:n,tickNumber:i,valueFormatter:h,tickInterval:f,tickPlacement:g,tickLabelPlacement:y,direction:"x",groups:v});return(0,O.jsx)(e.Fragment,{children:x.map((e,t)=>{const{offset:n,labelOffset:r}=e,i=r??0,h=b.isXInside(n),f=e.formattedValue,g=e.ignoreTick??!1,y=e.groupIndex??0,x=cM(v,y,p),I=o*x.tickSize,w=o*(x.tickSize+GS);return(0,O.jsxs)("g",{transform:`translate(${n}, 0)`,className:a.tickContainer,"data-group-index":y,children:[!d&&!g&&h&&(0,O.jsx)(s,l({y2:I,className:a.tick},m?.axisTick)),void 0!==f&&(0,O.jsx)(c,l({x:i,y:w},u,{style:l({},u.style,x.tickLabelStyle),text:f}))]},t)})})}const dM=bm("g",{name:"MuiChartsAxis",slot:"Root"})(({theme:e})=>({[`& .${YS.tickLabel}`]:l({},e.typography.caption,{fill:(e.vars||e).palette.text.primary}),[`& .${YS.label}`]:{fill:(e.vars||e).palette.text.primary},[`& .${YS.line}`]:{stroke:(e.vars||e).palette.text.primary,shapeRendering:"crispEdges",strokeWidth:1},[`& .${YS.tick}`]:{stroke:(e.vars||e).palette.text.primary,shapeRendering:"crispEdges"}})),pM=["axis"],hM=["scale","tickNumber","reverse","ordinalTimeTicks"],mM=bm(dM,{name:"MuiChartsXAxis",slot:"Root"})({});function fM(e){let{axis:t}=e,n=tt(e,pM);const{scale:r,ordinalTimeTicks:i}=t,o=Lh({props:l({},tt(t,hM),n),name:"MuiChartsXAxis"}),a=l({},qS,o),{position:s,labelStyle:c,offset:u,slots:d,slotProps:p,sx:h,disableLine:m,label:f,height:g}=a,y=xm(),v=WS(a),{left:b,top:x,width:I,height:w}=Nx(),k="bottom"===s?1:-1,S=d?.axisLine??"line",M=d?.axisLabel??JS,C=yI({elementType:M,externalSlotProps:p?.axisLabel,additionalProps:{style:l({},y.typography.body1,{lineHeight:1,fontSize:14,textAnchor:"middle",dominantBaseline:"bottom"===s?"text-after-edge":"text-before-edge"},c)},ownerState:{}});if("none"===s)return null;const P=f?_S(f,C.style).height:0,E=r.domain();let T=null;(fa(r)?0===E.length:E.some(yS))||(T="groups"in t&&Array.isArray(t.groups)?(0,O.jsx)(uM,l({},n)):(0,O.jsx)(iM,l({},n,{axisLabelHeight:P,ordinalTimeTicks:i})));const A={x:b+I/2,y:k*g};return(0,O.jsxs)(mM,{transform:`translate(0, ${"bottom"===s?x+w+u:x-u})`,className:v.root,sx:h,children:[!m&&(0,O.jsx)(S,l({x1:b,x2:b+I,className:v.line},p?.axisLine)),T,f&&(0,O.jsx)("g",{className:v.label,children:(0,O.jsx)(M,l({},A,C,{text:f}))})]})}function gM(e){const{xAxis:t,xAxisIds:n}=_x(),r=t[e.axisId??n[0]];return r?(0,O.jsx)(fM,l({},e,{axis:r})):(e.axisId,null)}const yM=e=>{const{classes:t,position:n,id:r}=e;return uI({root:["root","directionY",n,`id-${r}`],line:["line"],tickContainer:["tickContainer"],tick:["tick"],tickLabel:["tickLabel"],label:["label"]},US,t)},vM=2,bM=2,xM={disableLine:!1,disableTicks:!1,tickSize:6},IM=["scale","tickNumber","reverse"];function wM(e){const{yAxis:t,yAxisIds:n}=Fx(),r=t[e.axisId??n[0]],{scale:i,tickNumber:o}=r,a=Lh({props:l({},tt(r,IM),e),name:"MuiChartsYAxis"}),s=l({},xM,a),{position:c,tickLabelStyle:u,slots:d,slotProps:p}=s,h=xm(),m=fS(),f=yM(s),g="right"===c?1:-1,y="number"==typeof u?.fontSize?u.fontSize:12,v=d?.axisTick??"line",b=d?.axisTickLabel??JS,x=QS(("right"===c?-90:90)-(u?.angle??0)),I=eM(("right"===c?-90:90)-(u?.angle??0));return{yScale:i,defaultizedProps:s,tickNumber:o,positionSign:g,classes:f,Tick:v,TickLabel:b,axisTickLabelProps:yI({elementType:b,externalSlotProps:p?.axisTickLabel,additionalProps:{style:l({},h.typography.caption,{fontSize:y,textAnchor:m?tM(x):x,dominantBaseline:I},u)},className:f.tickLabel,ownerState:{}})}}function kM(t){const{axisLabelHeight:n,ordinalTimeTicks:r}=t,{yScale:i,defaultizedProps:o,tickNumber:a,positionSign:s,classes:c,Tick:u,TickLabel:d,axisTickLabelProps:p}=wM(t),h=fS(),{disableTicks:m,tickSize:f,valueFormatter:g,slotProps:y,tickPlacement:v,tickLabelPlacement:b,tickInterval:x,tickLabelInterval:I,tickSpacing:w,width:k}=o,S=Nx(),{instance:M}=$x(),C=gS(),P=m?4:f,E=kS({scale:i,tickNumber:a,valueFormatter:g,tickPlacement:v,tickLabelPlacement:b,tickInterval:x,tickSpacing:w,direction:"y",ordinalTimeTicks:r}),T=Math.max(0,k-(n>0?n+bM:0)-P-vM),A=C?function(e,t,n,r,i){const o=new Map,a=$b(i?.angle??0);let s=1,l=1;"start"===i?.textAnchor?(s=1/0,l=1):"end"===i?.textAnchor?(s=1,l=1/0):(s=2,l=2),a>180&&([s,l]=[l,s]),r&&([s,l]=[l,s]);for(const r of e)if(r.formattedValue){const e=Math.min((r.offset+r.labelOffset)*s,(t.top+t.height+t.bottom-r.offset-r.labelOffset)*l),c=t=>TS(t,{width:n,height:e,angle:a,measureText:e=>_S(e,i)});o.set(r,AS(r.formattedValue.toString(),c))}return o}(E,S,T,h,p.style):new Map(Array.from(E).map(e=>[e,e.formattedValue]));return(0,O.jsx)(e.Fragment,{children:E.map((e,t)=>{const{offset:n,labelOffset:r,value:i}=e,o=s*(P+vM),a=r,h="function"==typeof I&&!I?.(i,t),f=M.isYInside(n),g=A.get(e);return f?(0,O.jsxs)("g",{transform:`translate(0, ${n})`,className:c.tickContainer,children:[!m&&(0,O.jsx)(u,l({x2:s*P,className:c.tick},y?.axisTick)),void 0!==g&&!h&&(0,O.jsx)(d,l({x:o,y:a,text:g},p))]},t):null})})}const SM={tickSize:6},MM=(e,t,n)=>{const r=e[t]??{},i=n??SM.tickSize,o=i*t*2+i;return l({},SM,r,{tickSize:r.tickSize??o})};function CM(t){const{yScale:n,defaultizedProps:r,tickNumber:i,positionSign:o,classes:a,Tick:s,TickLabel:c,axisTickLabelProps:u}=wM(t);if(!fa(n))throw new Error("MUI X Charts: ChartsGroupedYAxis only supports the `band` and `point` scale types.");const{disableTicks:d,tickSize:p,valueFormatter:h,slotProps:m,tickInterval:f,tickPlacement:g,tickLabelPlacement:y}=r,v=r.groups,{instance:b}=$x(),x=aM({scale:n,tickNumber:i,valueFormatter:h,tickInterval:f,tickPlacement:g,tickLabelPlacement:y,direction:"y",groups:v});return(0,O.jsx)(e.Fragment,{children:x.map((e,t)=>{const{offset:n,labelOffset:r}=e,i=r??0,h=b.isYInside(n),f=e.formattedValue,g=e.ignoreTick??!1,y=e.groupIndex??0,x=MM(v,y,p),I=o*x.tickSize,w=o*(x.tickSize+vM);return(0,O.jsxs)("g",{transform:`translate(0, ${n})`,className:a.tickContainer,"data-group-index":y,children:[!d&&!g&&h&&(0,O.jsx)(s,l({x2:I,className:a.tick},m?.axisTick)),void 0!==f&&(0,O.jsx)(c,l({x:w,y:i},u,{style:l({},u.style,x.tickLabelStyle),text:f}))]},t)})})}const PM=["axis"],EM=["scale","tickNumber","reverse","ordinalTimeTicks"],TM=bm(dM,{name:"MuiChartsYAxis",slot:"Root"})({});function AM(e){let{axis:t}=e,n=tt(e,PM);const{scale:r,ordinalTimeTicks:i}=t,o=tt(t,EM),a=gS(),s=Lh({props:l({},o,n),name:"MuiChartsYAxis"}),c=l({},xM,s),{position:u,disableLine:d,label:p,labelStyle:h,offset:m,width:f,sx:g,slots:y,slotProps:v}=c,b=xm(),x=yM(c),{left:I,top:w,width:k,height:S}=Nx(),M="right"===u?1:-1,C=y?.axisLine??"line",P=y?.axisLabel??JS,E=yI({elementType:C,externalSlotProps:v?.axisLine,additionalProps:{strokeLinecap:"square"},ownerState:{}}),T=yI({elementType:P,externalSlotProps:v?.axisLabel,additionalProps:{style:l({},b.typography.body1,{lineHeight:1,fontSize:14,angle:90*M,textAnchor:"middle",dominantBaseline:"text-before-edge"},h)},ownerState:{}});if("none"===u)return null;const A={x:M*f,y:w+S/2},j=null==p?0:_S(p,T.style).height,L=r.domain();let R=null;return(fa(r)?0===L.length:L.some(yS))||(R="groups"in t&&Array.isArray(t.groups)?(0,O.jsx)(CM,l({},n)):(0,O.jsx)(kM,l({},n,{axisLabelHeight:j,ordinalTimeTicks:i}))),(0,O.jsxs)(TM,{transform:`translate(${"right"===u?I+k+m:I-m}, 0)`,className:x.root,sx:g,children:[!d&&(0,O.jsx)(C,l({y1:w,y2:w+S,className:x.line},E)),R,p&&a&&(0,O.jsx)("g",{className:x.label,children:(0,O.jsx)(P,l({},A,T,{text:p}))})]})}function OM(e){const{yAxis:t,yAxisIds:n}=Fx(),r=t[e.axisId??n[0]];return r?(0,O.jsx)(AM,l({},e,{axis:r})):(e.axisId,null)}function jM(e){return Xb("MuiChartsGrid",e)}const LM=Zb("MuiChartsGrid",["root","line","horizontalLine","verticalLine"]),RM=bm("g",{name:"MuiChartsGrid",slot:"Root",overridesResolver:(e,t)=>[{[`&.${LM.verticalLine}`]:t.verticalLine},{[`&.${LM.horizontalLine}`]:t.horizontalLine},t.root]})({}),DM=bm("line",{name:"MuiChartsGrid",slot:"Line"})(({theme:e})=>({stroke:(e.vars||e).palette.divider,shapeRendering:"crispEdges",strokeWidth:1}));function $M(t){const{instance:n}=$x(),{axis:r,start:i,end:o,classes:a}=t,{scale:s,tickNumber:l,tickInterval:c,tickSpacing:u}=r,d=kS({scale:s,tickNumber:l,tickInterval:c,tickSpacing:u,direction:"x",ordinalTimeTicks:"ordinalTimeTicks"in r?r.ordinalTimeTicks:void 0});return(0,O.jsx)(e.Fragment,{children:d.map(({value:e,offset:t})=>n.isXInside(t)?(0,O.jsx)(DM,{y1:i,y2:o,x1:t,x2:t,className:a.verticalLine},`vertical-${e?.getTime?.()??e}`):null)})}function zM(t){const{instance:n}=$x(),{axis:r,start:i,end:o,classes:a}=t,{scale:s,tickNumber:l,tickInterval:c,tickSpacing:u}=r,d=kS({scale:s,tickNumber:l,tickInterval:c,tickSpacing:u,direction:"y",ordinalTimeTicks:"ordinalTimeTicks"in r?r.ordinalTimeTicks:void 0});return(0,O.jsx)(e.Fragment,{children:d.map(({value:e,offset:t})=>n.isYInside(t)?(0,O.jsx)(DM,{y1:t,y2:t,x1:i,x2:o,className:a.horizontalLine},`horizontal-${e?.getTime?.()??e}`):null)})}const NM=["vertical","horizontal"],_M=({classes:e})=>uI({root:["root"],verticalLine:["line","verticalLine"],horizontalLine:["line","horizontalLine"]},jM,e);function FM(e){const t=Lh({props:e,name:"MuiChartsGrid"}),n=Nx(),{vertical:r,horizontal:i}=t,o=tt(t,NM),{xAxis:a,xAxisIds:s}=_x(),{yAxis:c,yAxisIds:u}=Fx(),d=_M(t),p=c[u[0]],h=a[s[0]];return(0,O.jsxs)(RM,l({},o,{className:d.root,children:[r&&(0,O.jsx)($M,{axis:h,start:n.top,end:n.height+n.top,classes:d}),i&&(0,O.jsx)(zM,{axis:p,start:n.left,end:n.width+n.left,classes:d})]}))}function HM(e){return Xb("MuiChartsTooltip",e)}const BM=Zb("MuiChartsTooltip",["root","paper","table","row","cell","mark","markContainer","labelCell","valueCell","axisValueCell"]),VM=e=>uI({root:["root"],paper:["paper"],table:["table"],row:["row"],cell:["cell"],mark:["mark"],markContainer:["markContainer"],labelCell:["labelCell"],valueCell:["valueCell"],axisValueCell:["axisValueCell"]},HM,e);function UM(){return zx().use(ft)}const YM=ae(e=>e.tooltip,e=>e?.item??null),WM=ae(YM,e=>null!==e),GM=ae(Cs,YM,cI,(e,t,n)=>"keyboard"===e?n:t??null),KM=ae(Cs,WM,rI,(e,t,n)=>"keyboard"===e?n:t),qM=le(GM,ls,cs,jb,Lb,ft,function(e,{axis:t,axisIds:n},{axis:r,axisIds:i},o,a,s){if(!e)return{};const l=s[e.type]?.series[e.seriesId];if(!l)return{};const c={rotationAxes:o,radiusAxes:a},u=ma(l)?l.xAxisId??n[0]:void 0,d=ma(l)?l.yAxisId??i[0]:void 0;return void 0!==u&&(c.x=t[u]),void 0!==d&&(c.y=r[d]),c}),XM=le(GM,he,ht,ft,gt,qM,function(e,t,n,r,i,o,a="top"){if(!e)return null;const s=r[e.type]?.series[e.seriesId];return s?n[s.type].tooltipItemPositionGetter?.({series:r,seriesLayout:i,drawingArea:t,axesConfig:o,identifier:e,placement:a})??null:null});function ZM(){const e=zx(),t=e.use(GM),n=e.use(ht),r=UM(),{xAxis:i,xAxisIds:o}=_x(),{yAxis:a,yAxisIds:s}=Fx(),{zAxis:l,zAxisIds:c}=Kx(),{rotationAxis:u,rotationAxisIds:d}=Vx();if(!t)return null;const p=r[t.type]?.series[t.seriesId];if(!p)return null;const h=ma(p)?p.xAxisId??o[0]:void 0,m=ma(p)?p.yAxisId??s[0]:void 0,f="zAxisId"in p?p.zAxisId??c[0]:c[0],g=d[0],y=n[p.type].colorProcessor?.(p,void 0!==h?i[h]:void 0,void 0!==m?a[m]:void 0,void 0!==f?l[f]:void 0)??(()=>""),v={};return void 0!==h&&(v.x=i[h]),void 0!==m&&(v.y=a[m]),void 0!==g&&(v.rotation=u[g]),n[p.type].tooltipGetter({series:p,axesConfig:v,getColor:y,identifier:t})}const JM=bm("div",{name:"MuiChartsTooltip",slot:"Container",overridesResolver:(e,t)=>t.paper})(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,borderRadius:(e.vars||e).shape?.borderRadius,border:`solid ${(e.vars||e).palette.divider} 1px`})),QM=bm("table",{name:"MuiChartsTooltip",slot:"Table"})(({theme:e})=>({borderSpacing:0,[`& .${BM.markContainer}`]:{display:"inline-block",width:`calc(20px + ${e.spacing(1.5)})`,verticalAlign:"middle"},"& caption":{borderBottom:`solid ${(e.vars||e).palette.divider} 1px`,padding:e.spacing(.5,1.5),textAlign:"start",whiteSpace:"nowrap","& span":{marginRight:e.spacing(1.5)}}})),eC=bm("tr",{name:"MuiChartsTooltip",slot:"Row"})(({theme:e})=>({"tr:first-of-type& td":{paddingTop:e.spacing(.5)},"tr:last-of-type& td":{paddingBottom:e.spacing(.5)}})),tC=bm(Nv,{name:"MuiChartsTooltip",slot:"Cell"})(({theme:e})=>({verticalAlign:"middle",color:(e.vars||e).palette.text.secondary,textAlign:"start",[`&.${BM.cell}`]:{paddingLeft:e.spacing(1),paddingRight:e.spacing(1)},[`&.${BM.labelCell}`]:{whiteSpace:"nowrap",fontWeight:e.typography.fontWeightRegular},[`&.${BM.valueCell}, &.${BM.axisValueCell}`]:{color:(e.vars||e).palette.text.primary,fontWeight:e.typography.fontWeightMedium},[`&.${BM.valueCell}`]:{paddingLeft:e.spacing(1.5),paddingRight:e.spacing(1.5)},"td:first-of-type&, th:first-of-type&":{paddingLeft:e.spacing(1.5)},"td:last-of-type&, th:last-of-type&":{paddingRight:e.spacing(1.5)}}));function nC(e){return Xb("MuiChartsLabelMark",e)}const rC=Zb("MuiChartsLabelMark",["root","line","square","circle","mask","fill"]);function iC(e,t,n=!1){const r={...t};for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)){const o=i;if("components"===o||"slots"===o)r[o]={...e[o],...r[o]};else if("componentsProps"===o||"slotProps"===o){const i=e[o],a=t[o];if(a)if(i){r[o]={...a};for(const e in i)if(Object.prototype.hasOwnProperty.call(i,e)){const t=e;r[o][t]=iC(i[t],a[t],n)}}else r[o]=a;else r[o]=i||{}}else"className"===o&&n&&t.className?r.className=Hh(e?.className,t?.className):"style"===o&&n&&t.style?r.style={...e?.style,...t?.style}:void 0===r[o]&&(r[o]=e[o])}return r}const oC=(t,n,r)=>e.forwardRef(function(i,o){const a=Lh({props:i,name:t}),s=iC("function"==typeof n.defaultProps?n.defaultProps(a):n.defaultProps??{},a),c=xm(),u=n.classesResolver?.(s,c),d=e.forwardRef(r);return(0,O.jsx)(d,l({},s,{classes:u,ref:o}))}),aC=["type","color","className","classes"],sC=bm("div",{name:"MuiChartsLabelMark",slot:"Root"})(()=>({display:"flex",width:14,height:14,[`&.${rC.line}`]:{width:16,height:"unset",alignItems:"center",[`.${rC.mask}`]:{height:4,width:"100%",borderRadius:1,overflow:"hidden"}},[`&.${rC.square}`]:{height:13,width:13,borderRadius:2,overflow:"hidden"},[`&.${rC.circle}`]:{height:15,width:15},svg:{display:"block"},[`& .${rC.mask} > *`]:{height:"100%",width:"100%"},[`& .${rC.mask}`]:{height:"100%",width:"100%"}})),lC=oC("MuiChartsLabelMark",{defaultProps:{type:"square"},classesResolver:e=>{const{type:t}=e;return uI({root:"function"==typeof t?["root"]:["root",t],mask:["mask"],fill:["fill"]},nC,e.classes)}},function(e,t){const{type:n,color:r,className:i,classes:o}=e,a=tt(e,aC),s=n;return(0,O.jsx)(sC,l({className:Hh(o?.root,i),ownerState:e,"aria-hidden":"true",ref:t},a,{children:(0,O.jsx)("div",{className:o?.mask,children:"function"==typeof s?(0,O.jsx)(s,{className:o?.fill,color:r}):(0,O.jsx)("svg",{viewBox:"0 0 24 24",preserveAspectRatio:"line"===n?"none":void 0,children:"circle"===n?(0,O.jsx)("circle",{className:o?.fill,r:"12",cx:"12",cy:"12",fill:r}):(0,O.jsx)("rect",{className:o?.fill,width:"24",height:"24",fill:r})})})}))});function cC(e){const{classes:t,sx:n}=e,r=ZM(),i=VM(t);if(!r)return null;if("values"in r){const{label:e,color:t,markType:o}=r;return(0,O.jsx)(JM,{sx:n,className:i.paper,children:(0,O.jsxs)(QM,{className:i.table,children:[(0,O.jsxs)(Nv,{component:"caption",children:[(0,O.jsx)("div",{className:i.markContainer,children:(0,O.jsx)(lC,{type:o,color:t,className:i.mark})}),e]}),(0,O.jsx)("tbody",{children:r.values.map(({formattedValue:e,label:t})=>(0,O.jsxs)(eC,{className:i.row,children:[(0,O.jsx)(tC,{className:Hh(i.labelCell,i.cell),component:"th",children:t}),(0,O.jsx)(tC,{className:Hh(i.valueCell,i.cell),component:"td",children:e})]},t))})]})})}const{color:o,label:a,formattedValue:s,markType:l}=r;return(0,O.jsx)(JM,{sx:n,className:i.paper,children:(0,O.jsx)(QM,{className:i.table,children:(0,O.jsx)("tbody",{children:(0,O.jsxs)(eC,{className:i.row,children:[(0,O.jsxs)(tC,{className:Hh(i.labelCell,i.cell),component:"th",children:[(0,O.jsx)("div",{className:i.markContainer,children:(0,O.jsx)(lC,{type:l,color:o,className:i.mark})}),a]}),(0,O.jsx)(tC,{className:Hh(i.valueCell,i.cell),component:"td",children:s})]})})})})}function uC(t,n,r,i,o){const[a,s]=e.useState(()=>o&&r?r(t).matches:i?i(t).matches:n);return qm(()=>{if(!r)return;const e=r(t),n=()=>{s(e.matches)};return n(),e.addEventListener("change",n),()=>{e.removeEventListener("change",n)}},[t,r]),a}const dC={...e}.useSyncExternalStore;function pC(t,n,r,i,o){const a=e.useCallback(()=>n,[n]),s=e.useMemo(()=>{if(o&&r)return()=>r(t).matches;if(null!==i){const{matches:e}=i(t);return()=>e}return a},[a,t,i,o,r]),[l,c]=e.useMemo(()=>{if(null===r)return[a,()=>()=>{}];const e=r(t);return[()=>e.matches,t=>(e.addEventListener("change",t),()=>{e.removeEventListener("change",t)})]},[a,r,t]);return dC(c,l,s)}function hC(e={}){const{themeId:t}=e;return function(e,n={}){let r=qd();r&&t&&(r=r[t]||r);const i="undefined"!=typeof window&&void 0!==window.matchMedia,{defaultMatches:o=!1,matchMedia:a=(i?window.matchMedia:null),ssrMatchMedia:s=null,noSsr:l=!1}=uc({name:"MuiUseMediaQuery",props:n,theme:r});let c="function"==typeof e?e(r):e;return c=c.replace(/^@media( ?)/m,""),c.includes("print")&&console.warn(["MUI: You have provided a `print` query to the `useMediaQuery` hook.","Using the print media query to modify print styles can lead to unexpected results.","Consider using the `displayPrint` field in the `sx` prop instead.","More information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."].join("\n")),(void 0!==dC?pC:uC)(c,o,a,s,l)}}hC();const mC=hC({themeId:jh}),fC=()=>mC("@media (pointer: fine)",{defaultMatches:!0}),gC=(e,t)=>t,yC=(e,t)=>t;function vC(e,t,n){return Array.isArray(n)?n.map(n=>Nb(t.axis[n],e)):Nb(t.axis[n],e)}const bC=ae(Ss,Ms,Rb,(e,t,n)=>null===e||null===t?null:Db(n)(e,t)),xC=ae(bC,jb,gC,(e,t,n=t.axisIds[0])=>null===e?null:vC(e,t,n)),IC=ae(bC,jb,yC,(e,t,n=t.axisIds)=>null===e?null:vC(e,t,n)),wC=(ae(jb,xC,gC,(e,t,n=e.axisIds[0])=>{if(null===t||-1===t||0===e.axisIds.length)return null;const r=e.axis[n]?.data;return r?r[t]:null}),ae(jb,IC,yC,(e,t,n=e.axisIds)=>null===t?null:n.map((n,r)=>{const i=t[r];return-1===i?null:e.axis[n].data?.[i]})),se({memoizeOptions:{resultEqualityCheck:Ps}})(IC,jb,(e,t)=>null===e?[]:t.axisIds.map((t,n)=>({axisId:t,dataIndex:e[n]})).filter(({axisId:e,dataIndex:n})=>t.axis[e].triggerTooltip&&n>=0))),kC=ae(wC,e=>e.length>0);function SC(e,t,n){const r=e.data?.[t]??null,i=(e.valueFormatter??(t=>"utc"===e.scaleType?function(e){return e instanceof Date?e.toUTCString():e.toLocaleString()}(t):t.toLocaleString()))(r,{location:"tooltip",scale:e.scale});return{axisDirection:n,axisId:e.id,mainAxis:e,dataIndex:t,axisValue:r,axisFormattedValue:i,seriesItems:[]}}function MC(t){return function(t={}){const{multipleAxes:n,directions:r}=t,i=Hx(),o=Bx(),a=function(){const e=zx(),{axis:t,axisIds:n}=e.use(jb);return t[n[0]]}(),s=zx(),l=s.use(zs),c=s.use(Ns),u=s.use(wC),d=UM(),{xAxis:p}=_x(),{yAxis:h}=Fx(),{zAxis:m,zAxisIds:f}=Kx(),{rotationAxis:g}=Vx(),y=function(){const t=zx().use(ht);return e.useMemo(()=>{const e={};return Object.keys(t).forEach(n=>{e[n]=t[n].colorProcessor}),e},[t])}();if(0===l.length&&0===c.length&&0===u.length)return null;const v=[];return(void 0===r||r.includes("x"))&&l.forEach(({axisId:e,dataIndex:t})=>{!n&&v.length>1||v.push(SC(p[e],t,"x"))}),(void 0===r||r.includes("y"))&&c.forEach(({axisId:e,dataIndex:t})=>{!n&&v.length>1||v.push(SC(h[e],t,"y"))}),(void 0===r||r.includes("rotation"))&&u.forEach(({axisId:e,dataIndex:t})=>{!n&&v.length>1||v.push(SC(g[e],t,"rotation"))}),Object.keys(d).filter(ha).forEach(e=>{const t=d[e];return t?t.seriesOrder.forEach(n=>{const r=t.series[n],a=r.xAxisId??i.id,s=r.yAxisId??o.id,l=v.findIndex(({axisDirection:e,axisId:t})=>"x"===e&&t===a||"y"===e&&t===s);if(l>=0){const t="zAxisId"in r?r.zAxisId:f[0],{dataIndex:i}=v[l],o=y[e]?.(r,p[a],h[s],t?m[t]:void 0)(i)??"",c=r.data[i]??null,u=r.valueFormatter(c,{dataIndex:i}),d=yl(r.label,"tooltip")??null;v[l].seriesItems.push({seriesId:n,color:o,value:c,formattedValue:u,formattedLabel:d,markType:r.labelMarkType})}}):[]}),Object.keys(d).filter(Pb).forEach(e=>{const t=d[e];return t?t.seriesOrder.forEach(n=>{const r=t.series[n],i=r.rotationAxisId??a?.id,o=v.findIndex(({axisDirection:e,axisId:t})=>"rotation"===e&&t===i);if(o>=0){const{dataIndex:t}=v[o],i=y[e]?.(r)(t)??"",a=r.data[t]??null,s=r.valueFormatter(a,{dataIndex:t}),l=yl(r.label,"tooltip")??null;v[o].seriesItems.push({seriesId:n,color:i,value:a,formattedValue:s,formattedLabel:l,markType:r.labelMarkType})}}):[]}),n?v:0===v.length?v[0]:null}(l({},t,{multipleAxes:!0}))}function CC(e){const t=VM(e.classes),n=MC();return null===n?null:(0,O.jsx)(JM,{sx:e.sx,className:t.paper,children:n.map(({axisId:e,mainAxis:n,axisValue:r,axisFormattedValue:i,seriesItems:o})=>(0,O.jsxs)(QM,{className:t.table,children:[null!=r&&!n.hideTooltip&&(0,O.jsx)(Nv,{component:"caption",children:i}),(0,O.jsx)("tbody",{children:o.map(({seriesId:e,color:n,formattedValue:r,formattedLabel:i,markType:o})=>null==r?null:(0,O.jsxs)(eC,{className:t.row,children:[(0,O.jsxs)(tC,{className:Hh(t.labelCell,t.cell),component:"th",children:[(0,O.jsx)("div",{className:t.markContainer,children:(0,O.jsx)(lC,{type:o,color:n,className:t.mark})}),i||null]}),(0,O.jsx)(tC,{className:Hh(t.valueCell,t.cell),component:"td",children:r})]},e))})]},e))})}const PC=function(t){const{children:n,defer:r=!1,fallback:i=null}=t,[o,a]=e.useState(!1);return qm(()=>{r||a(!0)},[r]),e.useEffect(()=>{r&&a(!0)},[r]),o?n:i},EC=["trigger","position","anchor","classes","children"],TC=()=>!1,AC=()=>null,OC=bm(Tg,{name:"MuiChartsTooltip",slot:"Root"})(({theme:e})=>({pointerEvents:"none",zIndex:e.zIndex.modal}));function jC(t){const n=Lh({props:t,name:"MuiChartsTooltipContainer"}),{trigger:r="axis",position:i,anchor:o="pointer",classes:a,children:s}=n,c=tt(n,EC),u=eI(),d=e.useRef(null),p=VM(a),h=function(){const t=eI(),[n,r]=e.useState(null);return e.useEffect(()=>{const e=t.current;if(null===e)return()=>{};const n=e=>{"mouse"!==e.pointerType&&r(null)},i=e=>{r({pointerType:e.pointerType})};return e.addEventListener("pointerenter",i),e.addEventListener("pointerup",n),()=>{e.removeEventListener("pointerenter",i),e.removeEventListener("pointerup",n)}},[t]),n}(),m=fC(),f=e.useRef(null),g=st(()=>({x:0,y:0})),y=function(){const e=zx(),t=e.use(Ab),n=e.use(ce);return void 0!==t?"polar":void 0!==n?"cartesian":"none"}(),v=zx(),b=v.use(Sb),x=v.use(function(e,t,n){return n?TC:"item"===e?KM:"polar"===t?kC:"cartesian"===t?_s:TC}(r,y,b)),I="keyboard"===v.use(Cs)?"node":o,w=v.use("item"===r&&"node"===I?XM:AC,i);e.useEffect(()=>{const e=u.current;if(null===e)return()=>{};if(null!==w)return;const t=function(){let e,t;const n=()=>{t=null,((e,t)=>{g.current={x:e,y:t},f.current?.update()})(...e)};function r(...r){e=r,t||(t=requestAnimationFrame(n))}return r.clear=()=>{t&&(cancelAnimationFrame(t),t=null)},r}(),n=e=>{t(e.clientX,e.clientY)};return e.addEventListener("pointerdown",n),e.addEventListener("pointermove",n),e.addEventListener("pointerenter",n),()=>{e.removeEventListener("pointerdown",n),e.removeEventListener("pointermove",n),e.removeEventListener("pointerenter",n),t.clear()}},[u,g,w]);const k=e.useMemo(()=>({getBoundingClientRect:()=>({x:g.current.x,y:g.current.y,top:g.current.y,left:g.current.x,right:g.current.x,bottom:g.current.y,width:0,height:0,toJSON:()=>""})}),[g]),S="mouse"===h?.pointerType||m,M="touch"===h?.pointerType||!m,C=e.useMemo(()=>[{name:"offset",options:{offset:()=>M?[0,64]:[0,8]}},...S?[]:[{name:"flip",options:{fallbackPlacements:["top-end","top-start","bottom-end","bottom"]}}],{name:"preventOverflow",options:{altAxis:!0}}],[S,M]);return"none"===r?null:(null!==w&&d.current&&(d.current.setAttribute("x",String(w.x)),d.current.setAttribute("y",String(w.y))),(0,O.jsxs)(e.Fragment,{children:[u.current&&Tm.createPortal((0,O.jsx)("rect",{ref:d,display:"hidden"}),u.current),(0,O.jsx)(PC,{children:x&&(0,O.jsx)(OC,l({},c,{className:p?.root,open:x,placement:c.placement??i??(null!==h&&S?"right-start":"top"),popperRef:f,anchorEl:w?d.current:k,modifiers:C,children:s}))})]}))}function LC(e){const{classes:t,trigger:n="axis"}=e,r=VM(t);return(0,O.jsx)(jC,l({},e,{classes:t,children:"axis"===n?(0,O.jsx)(CC,{classes:r}):(0,O.jsx)(cC,{classes:r})}))}function RC(e){return Xb("MuiChartsAxisHighlight",e)}Zb("MuiChartsAxisHighlight",["root"]);const DC=bm("path",{name:"MuiChartsAxisHighlight",slot:"Root"})(({theme:e})=>({pointerEvents:"none",variants:[{props:{axisHighlight:"band"},style:l({fill:"white",fillOpacity:.1},e.applyStyles("light",{fill:"gray"}))},{props:{axisHighlight:"line"},style:l({strokeDasharray:"5 2",stroke:"#ffffff"},e.applyStyles("light",{stroke:"#000000"}))}]}));function $C(t){const{type:n,classes:r}=t,{left:i,width:o}=Nx(),a=zx(),s=a.use(uS),l=a.use(cs);return 0===s.length?null:s.map(({axisId:t,value:a})=>{const s=l.axis[t].scale,c=ck(s),u="band"===n&&null!==a&&fa(s);return(0,O.jsxs)(e.Fragment,{children:[u&&void 0!==s(a)&&(0,O.jsx)(DC,{d:`M ${i} ${s(a)-(s.step()-s.bandwidth())/2} l 0 ${s.step()} l ${o} 0 l 0 ${-s.step()} Z`,className:r.root,ownerState:{axisHighlight:"band"}}),"line"===n&&null!==a&&(0,O.jsx)(DC,{d:`M ${i} ${c(a)} L ${i+o} ${c(a)}`,className:r.root,ownerState:{axisHighlight:"line"}})]},`${t}-${a}`)})}function zC(t){const{type:n,classes:r}=t,{top:i,height:o}=Nx(),a=zx(),s=a.use(cS),l=a.use(ls);return 0===s.length?null:s.map(({axisId:t,value:a})=>{const s=l.axis[t].scale,c=ck(s),u="band"===n&&null!==a&&fa(s);return(0,O.jsxs)(e.Fragment,{children:[u&&void 0!==s(a)&&(0,O.jsx)(DC,{d:`M ${s(a)-(s.step()-s.bandwidth())/2} ${i} l ${s.step()} 0 l 0 ${o} l ${-s.step()} 0 Z`,className:r.root,ownerState:{axisHighlight:"band"}}),"line"===n&&null!==a&&(0,O.jsx)(DC,{d:`M ${c(a)} ${i} L ${c(a)} ${i+o}`,className:r.root,ownerState:{axisHighlight:"line"}})]},`${t}-${a}`)})}const NC=()=>uI({root:["root"]},RC);function _C(t){const{x:n,y:r}=t,i=NC();return(0,O.jsxs)(e.Fragment,{children:[n&&"none"!==n&&(0,O.jsx)(zC,{type:n,classes:i}),r&&"none"!==r&&(0,O.jsx)($C,{type:r,classes:i})]})}function FC(e,t){return Object.keys(e).flatMap(n=>{const r=t[n].legendGetter;return void 0===r?[]:r(e[n])})}function HC(e){return Xb("MuiChartsLegend",e)}const BC=Zb("MuiChartsLegend",["root","item","series","mark","label","vertical","horizontal"]),VC=["slots","slotProps"],UC=["ownerState"];function YC(e){return Xb("MuiChartsLabel",e)}Zb("MuiChartsLabel",["root"]);const WC=["children","className","classes"],GC=oC("MuiChartsLabel",{classesResolver:e=>uI({root:["root"]},YC,e.classes)},function(e,t){const{children:n,className:r,classes:i}=e,o=tt(e,WC);return(0,O.jsx)("span",l({className:Hh(i?.root,r),ref:t},o,{children:n}))}),KC=["direction","onItemClick","className","classes"],qC=bm("ul",{name:"MuiChartsLegend",slot:"Root"})(({ownerState:e,theme:t})=>l({},t.typography.caption,{color:(t.vars||t).palette.text.primary,lineHeight:"100%",display:"flex",flexDirection:"vertical"===e.direction?"column":"row",alignItems:"vertical"===e.direction?void 0:"center",flexShrink:0,gap:t.spacing(2),listStyleType:"none",paddingInlineStart:0,marginBlock:t.spacing(1),marginInline:t.spacing(1),flexWrap:"wrap",li:{display:"horizontal"===e.direction?"inline-flex":void 0},[`button.${BC.series}`]:{background:"none",border:"none",padding:0,fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",letterSpacing:"inherit",color:"inherit"},[`& .${BC.series}`]:{display:"vertical"===e.direction?"flex":"inline-flex",alignItems:"center",gap:t.spacing(1)},gridArea:"legend"})),XC=((t,n,r,i)=>{function o(e,t){const o=Lh({props:e,name:"MuiChartsLegend"}),a=iC("function"==typeof r.defaultProps?r.defaultProps(o):r.defaultProps??{},o),s=a,{slots:c,slotProps:u}=s,d=tt(s,VC),p=xm(),h=r.classesResolver?.(a,p),m=c?.[n]??i,f=r.propagateSlots&&!c?.[n],g=yI({elementType:m,externalSlotProps:u?.[n],additionalProps:l({},d,{classes:h},f&&{slots:c,slotProps:u}),ownerState:{}}),y=l({},tt(g,UC));for(const e of r.omitProps??[])delete y[e];return(0,O.jsx)(m,l({},y,{ref:t}))}return e.forwardRef(o)})(0,"legend",{defaultProps:{direction:"horizontal"},omitProps:["position"],classesResolver:e=>{const{classes:t,direction:n}=e;return uI({root:["root",n],item:["item"],mark:["mark"],label:["label"],series:["series"]},HC,t)}},e.forwardRef(function(e,t){const n={items:FC(UM(),zx().use(ht))},{onItemClick:r,className:i,classes:o}=e,a=tt(e,KC);if(0===n.items.length)return null;const s=r?"button":"div";return(0,O.jsx)(qC,l({className:Hh(o?.root,i),ref:t},a,{ownerState:e,children:n.items.map((e,t)=>(0,O.jsx)("li",{className:o?.item,"data-series":e.seriesId,children:(0,O.jsxs)(s,{className:o?.series,role:r?"button":void 0,type:r?"button":void 0,onClick:r?n=>{return r(n,{type:"series",color:(i=e).color,label:i.label,seriesId:i.seriesId,itemId:i.itemId,dataIndex:i.dataIndex},t);var i}:void 0,children:[(0,O.jsx)(lC,{className:o?.mark,color:e.color,type:e.markType}),(0,O.jsx)(GC,{className:o?.label,children:e.label})]})},`${e.seriesId}-${e.dataIndex}`))}))}));function ZC(e){const{id:t,offset:n}=e,{left:r,top:i,width:o,height:a}=Nx(),s=l({top:0,right:0,bottom:0,left:0},n);return(0,O.jsx)("clipPath",{id:t,children:(0,O.jsx)("rect",{x:r-s.left,y:i-s.top,width:o+s.left+s.right,height:a+s.top+s.bottom})})}function JC(e,...t){const n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append("args[]",e)),`Minified MUI error #${e}; visit ${n} for the full message.`}function QC(e,t=0,n=1){return function(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}(e,t,n)}function eP(e){if(e.type)return e;if("#"===e.charAt(0))return eP(function(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?`rgb${4===n.length?"a":""}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}(e));const t=e.indexOf("("),n=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error(JC(9,e));let r,i=e.substring(t+1,e.length-1);if("color"===n){if(i=i.split(" "),r=i.shift(),4===i.length&&"/"===i[3].charAt(0)&&(i[3]=i[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(r))throw new Error(JC(10,r))}else i=i.split(",");return i=i.map(e=>parseFloat(e)),{type:n,values:i,colorSpace:r}}function tP(e,t){return e=eP(e),t=QC(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,function(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return t.includes("rgb")?r=r.map((e,t)=>t<3?parseInt(e,10):e):t.includes("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=t.includes("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}(e)}let nP=0;const rP={...t}.useId;function iP(t){if(void 0!==rP){const e=rP();return t??e}return function(t){const[n,r]=e.useState(t),i=t||n;return e.useEffect(()=>{null==n&&(nP+=1,r(`mui-${nP}`))},[n]),i}(t)}function oP(e,t){return"x"===e?{left:0,top:0,width:t.width,height:vt,right:t.width,bottom:vt}:{left:0,top:0,width:vt,height:t.height,right:vt,bottom:t.height}}const aP=le(ce,he,qa,is,function(e,t,n,r,i){const o=e?.some(e=>e.id===i),a=oP(o?"x":"y",t),s=n[i],l={};return e?.forEach(e=>{const t=e,n=r[t.id].copy(),i=Ca(a,"x",t),o=Ea(i,[s.minStart,s.maxEnd]);n.range(o),l[t.id]=n}),l}),sP=le(ft,ht,qa,he,aP,Qa,(e,t,n,r,i,{axes:o,domains:a},s)=>{const l=o?.some(e=>e.id===s),c=oP(l?"x":"y",r),u=n[s],d=ya({scales:i,drawingArea:c,formattedSeries:e,axis:o,seriesConfig:t,axisDirection:"x",zoomMap:new Map([[s,{axisId:s,start:u.minStart,end:u.maxEnd}]]),domains:a});return d.axis[s]?{[s]:d.axis[s]}:d.axis}),lP=le(ue,he,qa,os,function(e,t,n,r,i){const o=e?.some(e=>e.id===i),a=oP(o?"y":"x",t),s=n[i],l={};return e?.forEach(e=>{const t=e,n=r[t.id].copy();let i=Ca(a,"y",t);fa(n)&&(i=i.reverse());const o=Ea(i,[s.minStart,s.maxEnd]);n.range(o),l[t.id]=n}),l}),cP=le(ft,ht,qa,he,lP,es,(e,t,n,r,i,{axes:o,domains:a},s)=>{const l=o?.some(e=>e.id===s),c=oP(l?"y":"x",r),u=n[s],d=ya({scales:i,drawingArea:c,formattedSeries:e,axis:o,seriesConfig:t,axisDirection:"y",zoomMap:new Map([[s,{axisId:s,start:u.minStart,end:u.maxEnd}]]),domains:a});return d.axis[s]?{[s]:d.axis[s]}:d.axis}),uP=(e,t)=>t===("x"===e?W:G)?`The first \`${e}Axis\``:`The ${e}-axis with id "${t}"`;function dP(){return ak("bar")}function pP(e,t,n){const r=dP()??{series:{},stackingGroups:[],seriesOrder:[]},i=_x().xAxisIds[0],o=Fx().yAxisIds[0],a=Xx(),{series:s,stackingGroups:c}=r,u={},d=c.flatMap(({ids:r},d)=>{const p=e.left,h=e.left+e.width,m=e.top,f=e.top+e.height,g=new Map,y=new Map;return r.map(e=>{const r=s[e].xAxisId??i,v=s[e].yAxisId??o,b=s[e].layout,x=t[r],I=n[v],w="vertical"===s[e].layout,k=(w?I.reverse:x.reverse)??!1;!function(e,t,n,r,i,o,a){const s=i[r],l=a[o],c=e?s:l,u=e?l:s,d=e?r:o,p=e?o:r,h=e?"x":"y",m=e?"y":"x";if("band"!==c.scaleType)throw new Error(`MUI X Charts: ${uP(h,d)} should be of type "band" to display the bar series of id "${t}".`);if(void 0===c.data)throw new Error(`MUI X Charts: ${uP(h,d)} should have data property.`);if("band"===u.scaleType||"point"===u.scaleType)throw new Error(`MUI X Charts: ${uP(m,p)} should be a continuous type to display the bar series of id "${t}".`)}(w,e,s[e].stackedData.length,r,t,v,n);const S=w?x:I,M=x.scale,C=I.scale,P=Math.round(M(0)??0),E=Math.round(C(0)??0),T=bl(s[e],t[r],n[v]),A=[];for(let t=0;th||i.x+i.widthf||i.y+i.height0?(v&&delete v.borderRadiusSide,i.borderRadiusSide=w?"top":"right",y.set(t,i)):S<0&&(o&&delete o.borderRadiusSide,i.borderRadiusSide=w?"bottom":"left",g.set(t,i)),u[i.maskId]||(u[i.maskId]={id:i.maskId,width:0,height:0,hasNegative:!1,hasPositive:!1,layout:b,xOrigin:P,yOrigin:E,x:0,y:0});const M=u[i.maskId];M.width="vertical"===b?i.width:M.width+i.width,M.height="vertical"===b?M.height+i.height:i.height,M.x=Math.min(0===M.x?1/0:M.x,i.x),M.y=Math.min(0===M.y?1/0:M.y,i.y);const C=i.value??0;M.hasNegative=M.hasNegative||(k?C>0:C<0),M.hasPositive=M.hasPositive||(k?C<0:C>0),A.push(i)}return{seriesId:e,barLabel:s[e].barLabel,barLabelPlacement:s[e].barLabelPlacement,data:A,layout:b,xOrigin:P,yOrigin:E}})});return{completedData:d,masksData:Object.values(u)}}function hP(e){return Xb("MuiBarElement",e)}const mP=Zb("MuiBarElement",["root","highlighted","faded","series"]);function fP(e,t){const n=Tn(e.x,t.x),r=Tn(e.y,t.y),i=Tn(e.width,t.width),o=Tn(e.height,t.height);return e=>({x:n(e),y:r(e),width:i(e),height:o(e)})}const gP=["ownerState","skipAnimation","id","dataIndex","xOrigin","yOrigin"];function yP(e){const{ownerState:t}=e,n=tt(e,gP),r=function(e){const t={x:"vertical"===e.layout?e.x:e.xOrigin,y:"vertical"===e.layout?e.yOrigin:e.y,width:"vertical"===e.layout?e.width:0,height:"vertical"===e.layout?0:e.height};return aw({x:e.x,y:e.y,width:e.width,height:e.height},{createInterpolator:fP,applyProps(e,t){e.setAttribute("x",t.x.toString()),e.setAttribute("y",t.y.toString()),e.setAttribute("width",t.width.toString()),e.setAttribute("height",t.height.toString())},transformProps:e=>e,initialProps:t,skip:e.skipAnimation,ref:e.ref})}(e);return(0,O.jsx)("rect",l({},n,{filter:t.isHighlighted?"brightness(120%)":void 0,opacity:t.isFaded?.3:1,"data-highlighted":t.isHighlighted||void 0,"data-faded":t.isFaded||void 0},r))}const vP=["id","dataIndex","classes","color","slots","slotProps","style","onClick","skipAnimation","layout","x","xOrigin","y","yOrigin","width","height"];function bP(t){const{id:n,dataIndex:r,classes:i,color:o,slots:a,slotProps:s,style:c,onClick:u,skipAnimation:d,layout:p,x:h,xOrigin:m,y:f,yOrigin:g,width:y,height:v}=t,b=tt(t,vP),x=e.useMemo(()=>({type:"bar",seriesId:n,dataIndex:r}),[n,r]),I=bI(x),{isFaded:w,isHighlighted:k}=zI(x),S=(M=e.useMemo(()=>({type:"bar",seriesId:n,dataIndex:r}),[n,r]),zx().use(nI,M));var M;const C={id:n,dataIndex:r,classes:i,color:o,isFaded:w,isHighlighted:k,isFocused:S},P=(e=>{const{classes:t,id:n,isHighlighted:r,isFaded:i}=e;return uI({root:["root",`series-${n}`,r&&"highlighted",i&&"faded"]},hP,t)})(C),E=a?.bar??yP,T=yI({elementType:E,externalSlotProps:s?.bar,externalForwardedProps:b,additionalProps:l({},I,{id:n,dataIndex:r,color:o,x:h,xOrigin:m,y:f,yOrigin:g,width:y,height:v,style:c,onClick:u,cursor:u?"pointer":"unset",stroke:"none",fill:o,skipAnimation:d,layout:p}),className:P.root,ownerState:C});return(0,O.jsx)(E,l({},T))}function xP(t,n,r,i){return e.useMemo(()=>{const e=ck(n),o=ck(r),a=[];for(let n=0;ne>=s&&e<=s+c&&t>=l&&t<=l+u,[u,c,s,l]),p=xP(n,r,i,d);return(0,O.jsx)("g",{"data-series":n.id,children:p.map((e,t)=>(0,O.jsx)(kP,{dataIndex:e.dataIndex,color:a?a(t):o,x:e.x,y:e.y,seriesId:n.id,size:n.preview.markerSize,isHighlighted:!1,isFaded:!1},e.id??e.dataIndex))})}const MP=["id","color","gradientId","onClick"],CP=bm("g",{name:"MuiAreaPlot",slot:"Root"})({});function PP({axisId:e}){const t=function(e){const t=zx();return pk(t.use(sP,e),t.use(cP,e))}(e);return(0,O.jsx)(CP,{children:t.map(({d:e,seriesId:t,color:n,area:r,gradientId:i})=>!!r&&(0,O.jsx)(EP,{id:t,d:e,color:n,gradientId:i},t))})}function EP(e){let{id:t,color:n,gradientId:r}=e,i=tt(e,MP);return(0,O.jsx)("path",l({fill:r?`url(#${r})`:n,stroke:"none","data-series":t},i))}const TP=["id","color","gradientId","onClick"];function AP({axisId:e}){const t=function(e){const t=zx();return Sk(t.use(sP,e),t.use(cP,e))}(e);return(0,O.jsx)("g",{children:t.map(({d:e,seriesId:t,color:n,gradientId:r})=>(0,O.jsx)(OP,{id:t,d:e,color:n,gradientId:r},t))})}function OP(e){let{id:t,color:n,gradientId:r}=e,i=tt(e,TP);return(0,O.jsx)("path",l({stroke:r?`url(#${r})`:n,strokeWidth:2,strokeLinejoin:"round",fill:"none","data-series":t},i))}const jP=new Map([["bar",function(e){const t={left:e.x,top:e.y,width:e.width,height:e.height,right:e.x+e.width,bottom:e.y+e.height},{completedData:n}=function(e,t){const n=zx();return pP(t,n.use(sP,e),n.use(cP,e))}(e.axisId,t);return(0,O.jsx)("g",{children:n.map(({seriesId:e,layout:t,xOrigin:n,yOrigin:r,data:i})=>(0,O.jsx)("g",{children:i.map(({dataIndex:i,color:o,x:a,y:s,width:l,height:c})=>(0,O.jsx)(bP,{id:e,dataIndex:i,color:o,skipAnimation:!0,layout:t??"vertical",x:a,xOrigin:n,y:s,yOrigin:r,width:l,height:c},i))},e))})}],["line",function({axisId:t}){return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(PP,{axisId:t}),(0,O.jsx)(AP,{axisId:t})]})}],["scatter",function({axisId:t,x:n,y:r,height:i,width:o}){const a=zx(),s=IP(),l=a.use(sP,t),c=a.use(cP,t),u=_x().xAxisIds[0],d=Fx().yAxisIds[0],{zAxis:p,zAxisIds:h}=Kx(),m=h[0];if(void 0===s)return null;const{series:f,seriesOrder:g}=s;return(0,O.jsx)(e.Fragment,{children:g.map(e=>{const{id:t,xAxisId:a,yAxisId:s,zAxisId:h,color:g}=f[e],y=Dl.colorProcessor(f[e],l[a??u],c[s??d],p[h??m]),v=l[a??u].scale,b=c[s??d].scale;return(0,O.jsx)(SP,{xScale:v,yScale:b,color:g,colorGetter:y,series:f[e],x:n,y:r,height:i,width:o},t)})})}]]);function LP(t){const{axisId:n,x:r,y:i,width:o,height:a}=t,s=zx().use(ft),c=[],u=`zoom-preview-mask-${n}`;for(const[e,n]of jP)(s[e]?.seriesOrder?.length??0)>0&&c.push((0,O.jsx)(n,l({},t),e));return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("clipPath",{id:u,children:(0,O.jsx)("rect",{x:r,y:i,width:o,height:a})}),(0,O.jsx)("g",{clipPath:`url(#${u})`,children:c})]})}const RP=["axisId","axisDirection","reverse"],DP=bm("rect",{slot:"internal",shouldForwardProp:void 0})(({theme:e})=>({rx:4,ry:4,stroke:e.palette.grey[700],fill:tP(e.palette.grey[700],.4)}));function $P(e){let{axisId:t,axisDirection:n}=e,r=tt(e,RP);return(0,O.jsxs)("g",l({},r,{children:[(0,O.jsx)(zP,l({},r,{axisId:t,axisDirection:n})),(0,O.jsx)("rect",l({},r,{fill:"transparent",rx:4,ry:4})),(0,O.jsx)(LP,l({axisId:t},r))]}))}function zP(t){const{axisId:n,axisDirection:r}=t,i=zx(),o=i.use(px,n),a=i.use(Xa,n),s=iP();if(!o)return null;const l=`zoom-preview-mask-${n}-${s}`;let c,u,d,p;const h=a.maxEnd-a.minStart;return"x"===r?(c=t.x+(o.start-a.minStart)/h*t.width,u=t.y,d=(o.end-o.start)/h*t.width,p=t.height):(c=t.x,u=t.y+(1-o.end/h)*t.height,d=t.width,p=(o.end-o.start)/h*t.height),(0,O.jsxs)(e.Fragment,{children:[(0,O.jsxs)("mask",{id:l,children:[(0,O.jsx)("rect",{x:t.x,y:t.y,width:t.width,height:t.height,fill:"white"}),(0,O.jsx)("rect",{x:c,y:u,width:d,height:p,fill:"black",rx:4,ry:4})]}),(0,O.jsx)(DP,{x:t.x,y:t.y,width:t.width,height:t.height,mask:`url(#${l})`})]})}const NP=8,_P=10,FP=20,HP=10,BP=Math.max(NP,_P,FP,HP);const VP=[];function UP(e){return VP[0]=e,Nd(VP)}function YP(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function WP(t){if(e.isValidElement(t)||(0,dc.Hy)(t)||!YP(t))return t;const n={};return Object.keys(t).forEach(e=>{n[e]=WP(t[e])}),n}function GP(t,n,r={clone:!0}){const i=r.clone?{...t}:t;return YP(t)&&YP(n)&&Object.keys(n).forEach(o=>{e.isValidElement(n[o])||(0,dc.Hy)(n[o])?i[o]=n[o]:YP(n[o])&&Object.prototype.hasOwnProperty.call(t,o)&&YP(t[o])?i[o]=GP(t[o],n[o],r):r.clone?i[o]=YP(n[o])?WP(n[o]):n[o]:i[o]=n[o]}),i}function KP(e,t){if(!e.containerQueries)return t;const n=Object.keys(t).filter(e=>e.startsWith("@container")).sort((e,t)=>{const n=/min-width:\s*([0-9.]+)/;return+(e.match(n)?.[1]||0)-+(t.match(n)?.[1]||0)});return n.length?n.reduce((e,n)=>{const r=t[n];return delete e[n],e[n]=r,e},{...t}):t}const qP={borderRadius:4},XP={xs:0,sm:600,md:900,lg:1200,xl:1536},ZP={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${XP[e]}px)`},JP={containerQueries:e=>({up:t=>{let n="number"==typeof t?t:XP[t]||t;return"number"==typeof n&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function QP(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||ZP;return t.reduce((r,i,o)=>(r[e.up(e.keys[o])]=n(t[o]),r),{})}if("object"==typeof t){const e=r.breakpoints||ZP;return Object.keys(t).reduce((i,o)=>{if(function(e,t){return"@"===t||t.startsWith("@")&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}(e.keys,o)){const e=function(e,t){const n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,r,i]=n,o=Number.isNaN(+r)?r||0:+r;return e.containerQueries(i).up(o)}(r.containerQueries?r:JP,o);e&&(i[e]=n(t[o],o))}else if(Object.keys(e.values||XP).includes(o))i[e.up(o)]=n(t[o],o);else{const e=o;i[e]=t[e]}return i},{})}return n(t)}function eE(e,t){return e.reduce((e,t)=>{const n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e},t)}function tE(e){if("string"!=typeof e)throw new Error(JC(7));return e.charAt(0).toUpperCase()+e.slice(1)}function nE(e,t,n=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&n){const n=`vars.${t}`.split(".").reduce((e,t)=>e&&e[t]?e[t]:null,e);if(null!=n)return n}return t.split(".").reduce((e,t)=>e&&null!=e[t]?e[t]:null,e)}function rE(e,t,n,r=n){let i;return i="function"==typeof e?e(n):Array.isArray(e)?e[n]||r:nE(e,n)||r,t&&(i=t(i,r,e)),i}const iE=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:r,transform:i}=e,o=e=>{if(null==e[t])return null;const o=e[t],a=nE(e.theme,r)||{};return QP(e,o,e=>{let r=rE(a,i,e);return e===r&&"string"==typeof e&&(r=rE(a,i,`${t}${"default"===e?"":tE(e)}`,e)),!1===n?r:{[n]:r}})};return o.propTypes={},o.filterProps=[t],o},oE=function(e,t){return t?GP(e,t,{clone:!1}):e},aE={m:"margin",p:"padding"},sE={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},lE={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},cE=function(){const e={};return t=>(void 0===e[t]&&(e[t]=(e=>{if(e.length>2){if(!lE[e])return[e];e=lE[e]}const[t,n]=e.split(""),r=aE[t],i=sE[n]||"";return Array.isArray(i)?i.map(e=>r+e):[r+i]})(t)),e[t])}(),uE=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],dE=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],pE=[...uE,...dE];function hE(e,t,n,r){const i=nE(e,t,!0)??n;return"number"==typeof i||"string"==typeof i?e=>"string"==typeof e?e:"string"==typeof i?i.startsWith("var(")&&0===e?0:i.startsWith("var(")&&1===e?i:`calc(${e} * ${i})`:i*e:Array.isArray(i)?e=>{if("string"==typeof e)return e;const t=Math.abs(e),n=i[t];return e>=0?n:"number"==typeof n?-n:"string"==typeof n&&n.startsWith("var(")?`calc(-1 * ${n})`:`-${n}`}:"function"==typeof i?i:()=>{}}function mE(e){return hE(e,"spacing",8)}function fE(e,t){return"string"==typeof t||null==t?t:e(t)}function gE(e,t){const n=mE(e.theme);return Object.keys(e).map(r=>function(e,t,n,r){if(!t.includes(n))return null;const i=function(e,t){return n=>e.reduce((e,r)=>(e[r]=fE(t,n),e),{})}(cE(n),r);return QP(e,e[n],i)}(e,t,r,n)).reduce(oE,{})}function yE(e){return gE(e,uE)}function vE(e){return gE(e,dE)}function bE(e){return gE(e,pE)}yE.propTypes={},yE.filterProps=uE,vE.propTypes={},vE.filterProps=dE,bE.propTypes={},bE.filterProps=pE;const xE=function(...e){const t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),n=e=>Object.keys(e).reduce((n,r)=>t[r]?oE(n,t[r](e)):n,{});return n.propTypes={},n.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),n};function IE(e){return"number"!=typeof e?e:`${e}px solid`}function wE(e,t){return iE({prop:e,themeKey:"borders",transform:t})}const kE=wE("border",IE),SE=wE("borderTop",IE),ME=wE("borderRight",IE),CE=wE("borderBottom",IE),PE=wE("borderLeft",IE),EE=wE("borderColor"),TE=wE("borderTopColor"),AE=wE("borderRightColor"),OE=wE("borderBottomColor"),jE=wE("borderLeftColor"),LE=wE("outline",IE),RE=wE("outlineColor"),DE=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=hE(e.theme,"shape.borderRadius",4),n=e=>({borderRadius:fE(t,e)});return QP(e,e.borderRadius,n)}return null};DE.propTypes={},DE.filterProps=["borderRadius"],xE(kE,SE,ME,CE,PE,EE,TE,AE,OE,jE,DE,LE,RE);const $E=e=>{if(void 0!==e.gap&&null!==e.gap){const t=hE(e.theme,"spacing",8),n=e=>({gap:fE(t,e)});return QP(e,e.gap,n)}return null};$E.propTypes={},$E.filterProps=["gap"];const zE=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=hE(e.theme,"spacing",8),n=e=>({columnGap:fE(t,e)});return QP(e,e.columnGap,n)}return null};zE.propTypes={},zE.filterProps=["columnGap"];const NE=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=hE(e.theme,"spacing",8),n=e=>({rowGap:fE(t,e)});return QP(e,e.rowGap,n)}return null};function _E(e,t){return"grey"===t?t:e}function FE(e){return e<=1&&0!==e?100*e+"%":e}NE.propTypes={},NE.filterProps=["rowGap"],xE($E,zE,NE,iE({prop:"gridColumn"}),iE({prop:"gridRow"}),iE({prop:"gridAutoFlow"}),iE({prop:"gridAutoColumns"}),iE({prop:"gridAutoRows"}),iE({prop:"gridTemplateColumns"}),iE({prop:"gridTemplateRows"}),iE({prop:"gridTemplateAreas"}),iE({prop:"gridArea"})),xE(iE({prop:"color",themeKey:"palette",transform:_E}),iE({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:_E}),iE({prop:"backgroundColor",themeKey:"palette",transform:_E}));const HE=iE({prop:"width",transform:FE}),BE=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const t=t=>{const n=e.theme?.breakpoints?.values?.[t]||XP[t];return n?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:n}:{maxWidth:FE(t)}};return QP(e,e.maxWidth,t)}return null};BE.filterProps=["maxWidth"];const VE=iE({prop:"minWidth",transform:FE}),UE=iE({prop:"height",transform:FE}),YE=iE({prop:"maxHeight",transform:FE}),WE=iE({prop:"minHeight",transform:FE}),GE=(iE({prop:"size",cssProperty:"width",transform:FE}),iE({prop:"size",cssProperty:"height",transform:FE}),xE(HE,BE,VE,UE,YE,WE,iE({prop:"boxSizing"})),{border:{themeKey:"borders",transform:IE},borderTop:{themeKey:"borders",transform:IE},borderRight:{themeKey:"borders",transform:IE},borderBottom:{themeKey:"borders",transform:IE},borderLeft:{themeKey:"borders",transform:IE},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:IE},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:DE},color:{themeKey:"palette",transform:_E},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:_E},backgroundColor:{themeKey:"palette",transform:_E},p:{style:vE},pt:{style:vE},pr:{style:vE},pb:{style:vE},pl:{style:vE},px:{style:vE},py:{style:vE},padding:{style:vE},paddingTop:{style:vE},paddingRight:{style:vE},paddingBottom:{style:vE},paddingLeft:{style:vE},paddingX:{style:vE},paddingY:{style:vE},paddingInline:{style:vE},paddingInlineStart:{style:vE},paddingInlineEnd:{style:vE},paddingBlock:{style:vE},paddingBlockStart:{style:vE},paddingBlockEnd:{style:vE},m:{style:yE},mt:{style:yE},mr:{style:yE},mb:{style:yE},ml:{style:yE},mx:{style:yE},my:{style:yE},margin:{style:yE},marginTop:{style:yE},marginRight:{style:yE},marginBottom:{style:yE},marginLeft:{style:yE},marginX:{style:yE},marginY:{style:yE},marginInline:{style:yE},marginInlineStart:{style:yE},marginInlineEnd:{style:yE},marginBlock:{style:yE},marginBlockStart:{style:yE},marginBlockEnd:{style:yE},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:$E},rowGap:{style:NE},columnGap:{style:zE},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:FE},maxWidth:{style:BE},minWidth:{transform:FE},height:{transform:FE},maxHeight:{transform:FE},minHeight:{transform:FE},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}),KE=GE,qE=function(){function e(e,t,n,r){const i={[e]:t,theme:n},o=r[e];if(!o)return{[e]:t};const{cssProperty:a=e,themeKey:s,transform:l,style:c}=o;if(null==t)return null;if("typography"===s&&"inherit"===t)return{[e]:t};const u=nE(n,s)||{};return c?c(i):QP(i,t,t=>{let n=rE(u,l,t);return t===n&&"string"==typeof t&&(n=rE(u,l,`${e}${"default"===t?"":tE(t)}`,t)),!1===a?n:{[a]:n}})}return function t(n){const{sx:r,theme:i={},nested:o}=n||{};if(!r)return null;const a=i.unstable_sxConfig??KE;function s(n){let r=n;if("function"==typeof n)r=n(i);else if("object"!=typeof n)return n;if(!r)return null;const s=function(e={}){const t=e.keys?.reduce((t,n)=>(t[e.up(n)]={},t),{});return t||{}}(i.breakpoints),l=Object.keys(s);let c=s;return Object.keys(r).forEach(n=>{const o=function(e,t){return"function"==typeof e?e(t):e}(r[n],i);if(null!=o)if("object"==typeof o)if(a[n])c=oE(c,e(n,o,i,a));else{const e=QP({theme:i},o,e=>({[n]:e}));!function(...e){const t=e.reduce((e,t)=>e.concat(Object.keys(t)),[]),n=new Set(t);return e.every(e=>n.size===Object.keys(e).length)}(e,o)?c=oE(c,e):c[n]=t({sx:o,theme:i,nested:!0})}else c=oE(c,e(n,o,i,a))}),!o&&i.modularCssLayers?{"@layer sx":KP(i,eE(l,c))}:KP(i,eE(l,c))}return Array.isArray(r)?r.map(s):s(r)}}();qE.filterProps=["sx"];const XE=qE;function ZE(e,t){const n=this;if(n.vars){if(!n.colorSchemes?.[e]||"function"!=typeof n.getColorSchemeSelector)return{};let r=n.getColorSchemeSelector(e);return"&"===r?t:((r.includes("data-")||r.includes("."))&&(r=`*:where(${r.replace(/\s*&$/,"")}) &`),{[r]:t})}return n.palette.mode===e?t:{}}const JE=function(e={},...t){const{breakpoints:n={},palette:r={},spacing:i,shape:o={},...a}=e,s=function(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5,...i}=e,o=(e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})})(t),a=Object.keys(o);function s(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function l(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-r/100}${n})`}function c(e,i){const o=a.indexOf(i);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==o&&"number"==typeof t[a[o]]?t[a[o]]:i)-r/100}${n})`}return{keys:a,values:o,up:s,down:l,between:c,only:function(e){return a.indexOf(e)+1(0===e.length?[1]:e).map(e=>{const n=t(e);return"number"==typeof n?`${n}px`:n}).join(" ");return n.mui=!0,n}(i);let c=GP({breakpoints:s,direction:"ltr",components:{},palette:{mode:"light",...r},spacing:l,shape:{...qP,...o}},a);return c=function(e){const t=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function n(n,r){n.up=(...n)=>t(e.breakpoints.up(...n),r),n.down=(...n)=>t(e.breakpoints.down(...n),r),n.between=(...n)=>t(e.breakpoints.between(...n),r),n.only=(...n)=>t(e.breakpoints.only(...n),r),n.not=(...n)=>{const i=t(e.breakpoints.not(...n),r);return i.includes("not all and")?i.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):i}}const r={},i=e=>(n(r,e),r);return n(i),{...e,containerQueries:i}}(c),c.applyStyles=ZE,c=t.reduce((e,t)=>GP(e,t),c),c.unstable_sxConfig={...KE,...a?.unstable_sxConfig},c.unstable_sx=function(e){return XE({sx:e,theme:this})},c}();function QE(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function eT(e,t){return t&&e&&"object"==typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function tT(e){return e?(t,n)=>n[e]:null}function nT(e,t,n){const r="function"==typeof t?t(e):t;if(Array.isArray(r))return r.flatMap(t=>nT(e,t,n));if(Array.isArray(r?.variants)){let t;if(r.isProcessed)t=n?eT(r.style,n):r.style;else{const{variants:e,...i}=r;t=n?eT(UP(i),n):i}return rT(e,r.variants,[t],n)}return r?.isProcessed?n?eT(UP(r.style),n):r.style:n?eT(UP(r),n):r}function rT(e,t,n=[],r=void 0){let i;e:for(let o=0;oe,uT=(()=>{let e=cT;return{configure(t){e=t},generate:t=>e(t),reset(){e=cT}}})();function dT(e){return`${uT.generate("MuiChartAxisZoomSliderTrack")}-${e}`}["horizontal","vertical","background","active"].reduce((e,t)=>(e[t]=dT(t),e),{});const pT=e=>{const{axisDirection:t}=e;return lT({background:["x"===t?"horizontal":"vertical","background"],active:["x"===t?"horizontal":"vertical","active"]},dT)},hT=["axisId","axisDirection","reverse","onSelectStart","onSelectEnd"],mT=bm("rect",{slot:"internal",shouldForwardProp:e=>QE(e)&&"axisDirection"!==e&&"isSelecting"!==e})(({theme:e})=>l({fill:(e.vars||e).palette.grey[300]},e.applyStyles("dark",{fill:(e.vars||e).palette.grey[800]}),{cursor:"pointer",variants:[{props:{axisDirection:"x",isSelecting:!0},style:{cursor:"ew-resize"}},{props:{axisDirection:"y",isSelecting:!0},style:{cursor:"ns-resize"}}]}));function fT(t){let{axisId:n,axisDirection:r,onSelectStart:i,onSelectEnd:o}=t,a=tt(t,hT);const s=e.useRef(null),{instance:c,svgRef:u}=$x(),d=zx(),[p,h]=e.useState(!1),m=pT({axisDirection:r});return(0,O.jsx)(mT,l({ref:s,onPointerDown:function(e){const t=s.current,r=u.current;if(!t||!r)return;const a=xs(r,e),p=oT(d.state,n,a);if(null===p)return;const m=rx(function(e){const t=xs(r,e),i=oT(d.state,n,t);if(null===i)return;const o=Xa(d.state,n);c.setAxisZoomData(n,e=>{if(i>p){const t=sT(i,l({},e,{start:p}),o),n=aT(p,l({},e,{start:p,end:t}),o);return l({},e,{start:n,end:t})}const t=aT(i,l({},e,{end:p}),o),n=sT(p,l({},e,{start:t,end:p}),o);return l({},e,{start:t,end:n})})});e.preventDefault(),e.stopPropagation(),t.setPointerCapture(e.pointerId),document.addEventListener("pointerup",function e(n){t.releasePointerCapture(n.pointerId),t.removeEventListener("pointermove",m),document.removeEventListener("pointerup",e),h(!1),o?.()}),t.addEventListener("pointermove",m),i?.(),h(!0)},axisDirection:r,isSelecting:p},a,{className:Hh(m.background,a.className)}))}function gT(e,t,n){return fa(e)?t[yT(e,n)]:e.invert(n)}function yT(e,t){return 0===e.bandwidth()?Math.floor((t-Math.min(...e.range())+e.step()/2)/e.step()):Math.floor((t-Math.min(...e.range()))/e.step())}function vT(...t){const n=e.useRef(void 0),r=e.useCallback(e=>{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}const bT="undefined"!=typeof window?e.useLayoutEffect:e.useEffect,xT={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 IT(e,t,n="Mui"){const r=xT[t];return r?`${n}-${r}`:`${uT.generate(e)}-${t}`}function wT(e,t,n="Mui"){const r={};return t.forEach(t=>{r[t]=IT(e,t,n)}),r}const kT=wT("MuiChartAxisZoomSliderThumb",["root","horizontal","vertical","start","end"]);function ST(e){return IT("MuiChartAxisZoomSliderThumb",e)}const MT=["className","onMove","orientation","placement","rx","ry"],CT=bm("rect",{slot:"internal",shouldForwardProp:void 0})(({theme:e})=>({[`&.${kT.root}`]:l({fill:(e.vars||e).palette.common.white,stroke:(e.vars||e).palette.grey[500]},e.applyStyles("dark",{fill:(e.vars||e).palette.grey[300],stroke:(e.vars||e).palette.grey[600]})),[`&.${kT.horizontal}`]:{cursor:"ew-resize"},[`&.${kT.vertical}`]:{cursor:"ns-resize"}}));function PT(e){e.preventDefault()}const ET=e.forwardRef(function(t,n){let{className:r,onMove:i,orientation:o,placement:a,rx:s=4,ry:c=4}=t,u=tt(t,MT);const d=(e=>{const{orientation:t,placement:n}=e;return lT({root:["root","horizontal"===t?"horizontal":"vertical","start"===n?"start":"end"]},ST)})({onMove:i,orientation:o,placement:a}),p=e.useRef(null),h=vT(p,n),m=function(t){const n=e.useRef(t);return bT(()=>{n.current=t}),e.useRef((...e)=>(0,n.current)(...e)).current}(i);return e.useEffect(()=>{const e=p.current;if(!e)return()=>{};e.addEventListener("touchmove",PT,{passive:!1});const t=rx(e=>{m(e)}),n=r=>{e.removeEventListener("pointermove",t),e.removeEventListener("pointerup",n),e.removeEventListener("pointercancel",n),e.releasePointerCapture(r.pointerId)},r=r=>{r.preventDefault(),r.stopPropagation(),e.setPointerCapture(r.pointerId),e.addEventListener("pointermove",t),e.addEventListener("pointercancel",n),e.addEventListener("pointerup",n)};return e.addEventListener("pointerdown",r),()=>{e.removeEventListener("pointerdown",r),e.removeEventListener("pointermove",t),e.removeEventListener("pointercancel",n),e.removeEventListener("pointerup",n),e.removeEventListener("touchmove",PT),t.clear()}},[m,o]),(0,O.jsx)(CT,l({className:Hh(d.root,r),ref:h,rx:s,ry:c},u))}),TT=bm(Tg,{name:"MuiChartsZoomSliderTooltip",slot:"Root"})(({theme:e})=>({pointerEvents:"none",zIndex:e.zIndex.modal})),AT=[{name:"offset",options:{offset:[0,4]}}];function OT({anchorEl:e,open:t,placement:n,modifiers:r=AT,children:i}){return(0,O.jsx)(PC,{children:t?(0,O.jsx)(TT,{open:t,anchorEl:e,placement:n,modifiers:r,children:(0,O.jsx)(JM,{sx:{paddingX:.5},children:(0,O.jsx)(Nv,{variant:"caption",children:i})})}):null})}const jT=bm("rect",{slot:"internal",shouldForwardProp:e=>QE(e)&&"preview"!==e})(({theme:e})=>l({fill:(e.vars||e).palette.grey[600]},e.applyStyles("dark",{fill:(e.vars||e).palette.grey[500]}),{cursor:"grab",variants:[{props:{preview:!0},style:l({fill:"transparent"},e.applyStyles("dark",{fill:"transparent"}),{rx:4,ry:4,stroke:e.palette.grey[500]})}]}));function LT({axisId:t,axisDirection:n,axisPosition:r,size:i,preview:o,zoomData:a,reverse:s,showTooltip:c,onPointerEnter:u,onPointerLeave:d}){const{instance:p,svgRef:h}=$x(),m=zx(),f=m.use(us,t),g=Nx(),y=e.useRef(null),[v,b]=e.useState(null),[x,I]=e.useState(null),{tooltipStart:w,tooltipEnd:k}=function(e,t){const n=t=>e.valueFormatter?e.valueFormatter(t,{location:"zoom-slider-tooltip",scale:e.scale}):`${t}`,r="top"===e.position||"bottom"===e.position?"x":"y";let i="x"===r?t.left:t.top;let o=i+("x"===r?t.width:t.height);"y"===r&&([i,o]=[o,i]),e.reverse&&([i,o]=[o,i]);const a=gT(e.scale,e.data??[],i)??e.data?.at(0),s=gT(e.scale,e.data??[],o)??e.data?.at(-1);return{tooltipStart:n(a),tooltipEnd:n(s)}}(f,g),S=pT({axisDirection:n}),M="x"===n?HP:FP,C="x"===n?FP:HP;let P,E,T,A,j,L,R,D;e.useEffect(()=>{const e=y.current;if(!e)return;let n=0;const r=rx(e=>{const r=h.current;if(!r)return;const i=xs(r,e),o=oT(m.state,t,i);if(null===o)return;const a=o-n;n=o,p.moveZoomRange(t,a)}),i=()=>{e.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i)},o=o=>{o.preventDefault(),e.setPointerCapture(o.pointerId);const a=px(m.state,t),s=h.current;if(!a||!s)return;const l=xs(s,o),c=oT(m.state,t,l);null!==c&&(n=c,document.addEventListener("pointerup",i),e.addEventListener("pointermove",r))};return e.addEventListener("pointerdown",o),()=>{e.removeEventListener("pointerdown",o),r.clear()}},[n,t,p,s,m,h]);const{minStart:$,maxEnd:z}=Xa(m.state,t),N=z-$,_=Math.max($,a.start),F=Math.min(a.end,z);"x"===n?(P=(_-$)/N*g.width,E=0,T=g.width*(F-_)/N,A=i,j=(_-$)/N*g.width,L=FPi?(FP-i)/2:0;return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(jT,{ref:y,x:P+("x"===n?0:H),y:E+("x"===n?H:0),preview:o,width:T,height:A,onPointerEnter:u,onPointerLeave:d,className:S.active}),(0,O.jsx)(ET,{ref:b,x:j,y:L,width:M,height:C,orientation:"x"===n?"horizontal":"vertical",onMove:e=>{const n=h.current;if(!n)return;const r=xs(n,e);p.setZoomData(e=>{const n=Xa(m.state,t);return e.map(e=>{if(e.axisId===t){const i=oT(m.state,t,r);return null===i?e:l({},e,{start:aT(i,e,n)})}return e})})},onPointerEnter:u,onPointerLeave:d,placement:"start"}),(0,O.jsx)(ET,{ref:I,x:R,y:D,width:M,height:C,orientation:"x"===n?"horizontal":"vertical",onMove:e=>{const n=h.current;if(!n)return;const r=xs(n,e);p.setZoomData(e=>{const n=Xa(m.state,t);return e.map(e=>{if(e.axisId===t){const i=oT(m.state,t,r);return null===i?e:l({},e,{end:sT(i,e,n)})}return e})})},onPointerEnter:u,onPointerLeave:d,placement:"end"}),(0,O.jsx)(OT,{anchorEl:v,open:c&&""!==w,placement:r,children:w}),(0,O.jsx)(OT,{anchorEl:x,open:c&&""!==k,placement:r,children:k})]})}function RT({axisDirection:t,axisId:n}){const r=zx(),i=Nx(),o=r.use(px,n),a=r.use(Xa,n),[s,l]=e.useState(!1),{xAxis:c}=_x(),{yAxis:u}=Fx(),d=a.slider.preview;if(!o)return null;let p,h,m,f,g;const y=d?vt:BP;if("x"===t){const e=c[n];if(!e||"none"===e.position)return null;const t=e.height;p=i.left,h="bottom"===e.position?i.top+i.height+e.offset+t+yt:i.top-e.offset-t-y-yt,m=e.reverse??!1,f=e.position??"bottom",g=e.zoom?.slider?.showTooltip??It}else{const e=u[n];if(!e||"none"===e.position)return null;const t=e.width;p="right"===e.position?i.left+i.width+e.offset+t+yt:i.left-e.offset-t-y-yt,h=i.top,m=e.reverse??!1,f=e.position??"left",g=e.zoom?.slider?.showTooltip??It}const v=(y-NP)/2,b=d?(0,O.jsx)($P,{axisId:n,axisDirection:t,reverse:m,x:0,y:0,height:"x"===t?vt:i.height,width:"x"===t?i.width:vt}):(0,O.jsx)(fT,{x:"x"===t?0:v,y:"x"===t?v:0,height:"x"===t?NP:i.height,width:"x"===t?i.width:NP,rx:NP/2,ry:NP/2,axisId:n,axisDirection:t,reverse:m,onSelectStart:"hover"===g?()=>l(!0):void 0,onSelectEnd:"hover"===g?()=>l(!1):void 0});return(0,O.jsxs)("g",{"data-charts-zoom-slider":!0,transform:`translate(${p} ${h})`,style:{touchAction:"none"},children:[b,(0,O.jsx)(LT,{zoomData:o,axisId:n,axisPosition:f,axisDirection:t,reverse:m,showTooltip:s&&"never"!==g||"always"===g,size:d?vt:_P,preview:d,onPointerEnter:"hover"===g?()=>l(!0):void 0,onPointerLeave:"hover"===g?()=>l(!1):void 0})]})}function DT(){const{xAxisIds:t,xAxis:n}=_x(),{yAxisIds:r,yAxis:i}=Fx();return(0,O.jsxs)(e.Fragment,{children:[t.map(e=>{const t=n[e],r=t.zoom?.slider;return r?.enabled?(0,O.jsx)(RT,{axisId:e,axisDirection:"x"},e):null}),r.map(e=>{const t=i[e],n=t.zoom?.slider;return n?.enabled?(0,O.jsx)(RT,{axisId:e,axisDirection:"y"},e):null})]})}function $T(e){return Xb("MuiChartsReferenceLine",e)}const zT=Zb("MuiChartsReferenceLine",["root","vertical","horizontal","line","label"]),NT=bm("g",{slot:"internal",shouldForwardProp:void 0})(({theme:e})=>({[`& .${zT.line}`]:{fill:"none",stroke:(e.vars||e).palette.text.primary,shapeRendering:"crispEdges",strokeWidth:1,pointerEvents:"none"},[`& .${zT.label}`]:l({fill:(e.vars||e).palette.text.primary,stroke:"none",pointerEvents:"none",fontSize:12},e.typography.body1)})),_T=({top:e,height:t,spacing:n,position:r,labelAlign:i="middle"})=>{const o="middle"===i?0:5,a=("object"==typeof n?n.x:n)??5,s=("object"==typeof n?n.y:o)??o;switch(i){case"start":return{x:r+a,y:e+s,style:{dominantBaseline:"hanging",textAnchor:"start"}};case"end":return{x:r+a,y:e+t-s,style:{dominantBaseline:"auto",textAnchor:"start"}};default:return{x:r+a,y:e+t/2+s,style:{dominantBaseline:"central",textAnchor:"start"}}}};function FT(e){const{x:t,label:n="",spacing:r,classes:i,labelAlign:o="middle",lineStyle:a,labelStyle:s,axisId:c}=e,{top:u,height:d}=Nx(),p=uk(c)(t);if(void 0===p)return null;const h=`M ${p} ${u} l 0 ${d}`,m=function(e){return uI({root:["root","vertical"],line:["line"],label:["label"]},$T,e)}(i),f=l({text:n,fontSize:12},_T({top:u,height:d,spacing:r,position:p,labelAlign:o}),{className:m.label});return(0,O.jsxs)(NT,{className:m.root,children:[(0,O.jsx)("path",{d:h,className:m.line,style:a}),(0,O.jsx)(JS,l({},f,{style:l({},f.style,s)}))]})}const HT=({left:e,width:t,spacing:n,position:r,labelAlign:i="middle"})=>{const o="middle"===i?0:5,a=("object"==typeof n?n.x:o)??o,s=("object"==typeof n?n.y:n)??5;switch(i){case"start":return{y:r-s,x:e+a,style:{dominantBaseline:"auto",textAnchor:"start"}};case"end":return{y:r-s,x:e+t-a,style:{dominantBaseline:"auto",textAnchor:"end"}};default:return{y:r-s,x:e+t/2+a,style:{dominantBaseline:"auto",textAnchor:"middle"}}}};function BT(e){const{y:t,label:n="",spacing:r,classes:i,labelAlign:o="middle",lineStyle:a,labelStyle:s,axisId:c}=e,{left:u,width:d}=Nx(),p=dk(c)(t);if(void 0===p)return null;const h=`M ${u} ${p} l ${d} 0`,m=function(e){return uI({root:["root","horizontal"],line:["line"],label:["label"]},$T,e)}(i),f=l({text:n,fontSize:12},HT({left:u,width:d,spacing:r,position:p,labelAlign:o}),{className:m.label});return(0,O.jsxs)(NT,{className:m.root,children:[(0,O.jsx)("path",{d:h,className:m.line,style:a}),(0,O.jsx)(JS,l({},f,{style:l({},f.style,s)}))]})}function VT(e){const{x:t,y:n}=e;if(void 0!==t&&void 0!==n)throw new Error("MUI X Charts: The ChartsReferenceLine cannot have both `x` and `y` props set.");if(void 0===t&&void 0===n)throw new Error("MUI X Charts: The ChartsReferenceLine should have a value in `x` or `y` prop.");return void 0!==t?(0,O.jsx)(FT,l({},e)):(0,O.jsx)(BT,l({},e))}const UT=Zb("MuiChartsBrushOverlay",["root","rect","x","y"]);function YT(e){return(0,O.jsx)("rect",l({className:UT.rect,strokeWidth:1,fillOpacity:.2,pointerEvents:"none"},e))}function WT(e){const t=zx(),n=t.use(he),r=xm(),i=t.use(hb),o=t.use(mb),a=t.use(fb),s=t.use(gb),c=t.use(xb);if(null===i||null===o||null===a||null===s)return null;const{left:u,top:d,width:p,height:h}=n,m=e=>Math.max(u,Math.min(u+p,e)),f=e=>Math.max(d,Math.min(d+h,e)),g=m(i),y=f(o),v=m(a),b=f(s),x="light"===r.palette.mode?r.palette.common.black:r.palette.common.white;if("xy"===c){const t=v-g,n=b-y;return(0,O.jsx)("g",{className:Hh(UT.root,UT.x,UT.y),children:(0,O.jsx)(YT,l({fill:x,x:t>=0?g:v,y:n>=0?y:b,width:Math.abs(t),height:Math.abs(n)},e))})}if("y"===c){const t=Math.min(y,b),n=Math.max(y,b)-t;return(0,O.jsx)("g",{className:Hh(UT.root,UT.y),children:(0,O.jsx)(YT,l({fill:x,x:u,y:t,width:p,height:n},e))})}const I=Math.min(g,v),w=Math.max(g,v)-I;return(0,O.jsx)("g",{className:Hh(UT.root,UT.x),children:(0,O.jsx)(YT,l({fill:x,x:I,y:d,width:w,height:h},e))})}function GT(t,n,r,i={}){return"function"==typeof n?n(r,i):n?(n.props.className&&(r.className=(o=n.props.className,a=r.className,o&&a?`${o} ${a}`:o||a)),(n.props.style||r.style)&&(r.style=l({},r.style,n.props.style)),e.cloneElement(n,r)):e.createElement(t,r);var o,a}const KT=e.createContext(void 0);function qT({children:t}){const[n,r]=e.useState(null),i=e.useRef(n),[o,a]=e.useState([]),s=e.useCallback(()=>o.sort(XT),[o]),l=e.useCallback((e,t,n=!0)=>{let r=e;const i=s(),o=i.length;for(let e=0;e=o){if(!n)return-1;r=0}else if(r<0){if(!n)return-1;r=o-1}if(!i[r].ref.current?.disabled&&"true"!==i[r].ref.current?.ariaDisabled)return r}return-1},[s]),c=e.useCallback((e,t)=>{a(n=>[...n,{id:e,ref:t}])},[]),u=e.useCallback(e=>{a(t=>t.filter(t=>t.id!==e))},[]),d=e.useCallback(e=>{if(!n)return;const t=s(),i=t.findIndex(e=>e.id===n);let o=-1;if("ArrowRight"===e.key?(e.preventDefault(),o=l(i,1)):"ArrowLeft"===e.key?(e.preventDefault(),o=l(i,-1)):"Home"===e.key?(e.preventDefault(),o=l(-1,1,!1)):"End"===e.key&&(e.preventDefault(),o=l(t.length,-1,!1)),o>=0&&o{n!==e&&r(e)},[n,r]),h=e.useCallback(e=>{const t=s(),n=t.findIndex(t=>t.id===e),i=l(n,1);if(i>=0&&i{i.current=n},[n]),e.useEffect(()=>{const e=s();if(e.length>0){if(!i.current)return void r(e[0].id);const t=e.findIndex(e=>e.id===i.current);if(e[t]){if(-1===t){const n=e[t];n&&(r(n.id),n.ref.current?.focus())}}else{const t=e[e.length-1];t&&(r(t.id),t.ref.current?.focus())}}},[s,l]);const m=e.useMemo(()=>({focusableItemId:n,registerItem:c,unregisterItem:u,onItemKeyDown:d,onItemFocus:p,onItemDisabled:h}),[n,c,u,d,p,h]);return(0,O.jsx)(KT.Provider,{value:m,children:t})}function XT(e,t){if(!e.ref.current||!t.ref.current)return 0;const n=e.ref.current.compareDocumentPosition(t.ref.current);return n?n&Node.DOCUMENT_POSITION_FOLLOWING||n&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:n&Node.DOCUMENT_POSITION_PRECEDING||n&Node.DOCUMENT_POSITION_CONTAINS?1:0:0}const ZT=["render","onKeyDown","onFocus","disabled","aria-disabled"],JT=["tabIndex"],QT=e.forwardRef(function(t,n){const{render:r}=t,i=tt(t,ZT),{slots:o,slotProps:a}=sc(),s=e.useRef(null),c=Dx(s,n),u=function(t,n){const{onKeyDown:r,onFocus:i,disabled:o,"aria-disabled":a}=t,s=z(),{focusableItemId:l,registerItem:c,unregisterItem:u,onItemKeyDown:d,onItemFocus:p,onItemDisabled:h}=function(){const t=e.useContext(KT);if(void 0===t)throw new Error("MUI X: Missing context. Toolbar subcomponents must be placed within a component.");return t}();e.useEffect(()=>(c(s,n),()=>u(s)),[s,n,c,u]);const m=e.useRef(o);e.useEffect(()=>{m.current!==o&&!0===o&&h(s,o),m.current=o},[o,s,h]);const f=e.useRef(a);return e.useEffect(()=>{f.current!==a&&!0===a&&h(s,!0),f.current=a},[a,s,h]),{tabIndex:l===s?0:-1,disabled:o,"aria-disabled":a,onKeyDown:e=>{d(e),r?.(e)},onFocus:e=>{p(s),i?.(e)}}}(t,s),{tabIndex:d}=u,p=tt(u,JT),h=GT(o.baseIconButton,r,l({},a?.baseIconButton,{tabIndex:d},i,p,{ref:c}));return(0,O.jsx)(e.Fragment,{children:h})}),eA=["className","render"],tA=bm("div",{name:"MuiChartsToolbar",slot:"Root"})(({theme:e})=>({flex:0,display:"flex",alignItems:"center",justifyContent:"end",gap:e.spacing(.25),padding:e.spacing(.5),marginBottom:e.spacing(1.5),minHeight:44,boxSizing:"border-box",border:`1px solid ${(e.vars||e).palette.divider}`,borderRadius:4})),nA=e.forwardRef(function(e,t){let{className:n,render:r}=e,i=tt(e,eA);const o=GT(tA,r,l({role:"toolbar","aria-orientation":"horizontal",className:Hh(Jb.root,n)},i,{ref:t}));return(0,O.jsx)(qT,{children:o})}),rA=()=>{const t=e.useContext(Nh);if(null===t)throw new Error(["MUI X Charts: Can not find the charts localization context.","It looks like you forgot to wrap your component in ChartsLocalizationProvider.","This can also happen if you are bundling multiple versions of the `@mui/x-charts` package"].join("\n"));return t},iA=function(e={}){const{themeId:t,defaultTheme:n=JE,rootShouldForwardProp:r=QE,slotShouldForwardProp:i=QE}=e;function o(e){!function(e,t,n){e.theme=function(e){for(const t in e)return!1;return!0}(e.theme)?n:e.theme[t]||e.theme}(e,t,n)}return(e,t={})=>{!function(e){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=(e=>e.filter(e=>e!==XE))(e.__emotion_styles))}(e);const{name:n,slot:a,skipVariantsResolver:s,skipSx:l,overridesResolver:c=tT(iT(a)),...u}=t,d=n&&n.startsWith("Mui")||a?"components":"custom",p=void 0!==s?s:a&&"Root"!==a&&"root"!==a||!1,h=l||!1;let m=QE;"Root"===a||"root"===a?m=r:a?m=i:function(e){return"string"==typeof e&&e.charCodeAt(0)>96}(e)&&(m=void 0);const f=function(e,t){return om(e,t)}(e,{shouldForwardProp:m,label:void 0,...u}),g=e=>{if(e.__emotion_real===e)return e;if("function"==typeof e)return function(t){return nT(t,e,t.theme.modularCssLayers?d:void 0)};if(YP(e)){const t=function(e){const{variants:t,...n}=e,r={variants:t,style:UP(n),isProcessed:!0};return r.style===n||t&&t.forEach(e=>{"function"!=typeof e.style&&(e.style=UP(e.style))}),r}(e);return function(e){return t.variants?nT(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?eT(t.style,d):t.style}}return e},y=(...t)=>{const r=[],i=t.map(g),a=[];if(r.push(o),n&&c&&a.push(function(e){const t=e.theme,r=t.components?.[n]?.styleOverrides;if(!r)return null;const i={};for(const t in r)i[t]=nT(e,r[t],e.theme.modularCssLayers?"theme":void 0);return c(e,i)}),n&&!p&&a.push(function(e){const t=e.theme,r=t?.components?.[n]?.variants;return r?rT(e,r,[],e.theme.modularCssLayers?"theme":void 0):null}),h||a.push(XE),Array.isArray(i[0])){const e=i.shift(),t=new Array(r.length).fill(""),n=new Array(a.length).fill("");let o;o=[...t,...e,...n],o.raw=[...t,...e.raw,...n],r.unshift(o)}const s=[...r,...i,...a],l=f(...s);return e.muiName&&(l.muiName=e.muiName),l};return f.withConfig&&(y.withConfig=f.withConfig),y}}(),oA=iA(function(e){throw new Error("Failed assertion: should not be rendered")},{name:"MuiChartsToolbar",slot:"Divider"})(({theme:e})=>({margin:e.spacing(0,.5),height:"50%"})),aA=e.forwardRef(function(e,t){const{slots:n,slotProps:r}=sc();return(0,O.jsx)(oA,l({as:n.baseDivider,orientation:"vertical"},r.baseDivider,e,{ref:t}))}),sA=["open","target","onClose","children","position","className","onExited"];function lA(t){const{open:n,target:r,onClose:i,children:o,position:a,onExited:s}=t,c=tt(t,sA),{slots:u,slotProps:d}=sc(),p=u.basePopper,h=e.useRef(null);return bT(()=>{n?h.current=document.activeElement instanceof HTMLElement?document.activeElement:null:(h.current?.focus?.(),h.current=null)},[n]),(0,O.jsx)(p,l({open:n,target:r,transition:!0,placement:a,onClickAway:e=>{e.target&&(r===e.target||r?.contains(e.target))||i(e)},onExited:s,clickAwayMouseEvent:"onMouseDown"},c,d?.basePopper,{children:o}))}function cA(t,n,r,i={}){return"function"==typeof n?n(r,i):n?(n.props.className&&(r.className=(o=n.props.className,a=r.className,o&&a?`${o} ${a}`:o||a)),(n.props.style||r.style)&&(r.style=l({},r.style,n.props.style)),e.cloneElement(n,r)):e.createElement(t,r);var o,a}const uA=["render"],dA=e.forwardRef(function(t,n){let{render:r}=t,i=tt(t,uA);const{slots:o,slotProps:a}=sc(),{instance:s,store:c}=$x(),u=c.use(mx),d=cA(o.baseButton,r,l({},a.baseButton,{onClick:()=>s.zoomIn(),disabled:u},i,{ref:n}));return(0,O.jsx)(e.Fragment,{children:d})}),pA=["render"],hA=e.forwardRef(function(t,n){let{render:r}=t,i=tt(t,pA);const{slots:o,slotProps:a}=sc(),{instance:s,store:c}=$x(),u=c.use(hx),d=cA(o.baseButton,r,l({},a.baseButton,{onClick:()=>s.zoomOut(),disabled:u},i,{ref:n}));return(0,O.jsx)(e.Fragment,{children:d})}),mA=parseInt(e.version,10),fA=t=>{if(mA>=19){const e=e=>t(e,e.ref??null);return e.displayName=t.displayName??t.name,e}return e.forwardRef(t)};function gA(){return function(){const{publicAPI:t}=$x(),n=e.useRef(t);return e.useEffect(()=>{n.current=t},[t]),n}()}const yA=["render","options","onClick"],vA=fA(function(t,n){const{render:r,options:i,onClick:o}=t,a=tt(t,yA),{slots:s,slotProps:c}=sc(),u=gA(),d=cA(s.baseButton,r,l({},c?.baseButton,{onClick:e=>{u.current.exportAsPrint(i),o?.(e)}},a,{ref:n}));return(0,O.jsx)(e.Fragment,{children:d})}),bA=["render","options","onClick"],xA=fA(function(t,n){const{render:r,options:i,onClick:o}=t,a=tt(t,bA),{slots:s,slotProps:c}=sc(),u=gA(),d=cA(s.baseButton,r,l({},c?.baseButton,{onClick:e=>{u.current.exportAsImage(i),o?.(e)}},a,{ref:n}));return(0,O.jsx)(e.Fragment,{children:d})}),IA=["printOptions","imageExportOptions"],wA=[{type:"image/png"}];function kA(t){let{printOptions:n,imageExportOptions:r}=t,i=tt(t,IA);const{slots:o,slotProps:a}=sc(),{store:s}=$x(),{localeText:c}=rA(),[u,d]=e.useState(!1),p=e.useRef(null),h=iP(),m=iP(),f=s.use(dx),g=r??wA,y=!n?.disableToolbarButton||g.length>0,v=[];if(f){const e=o.baseTooltip,t=o.zoomOutIcon,n=o.zoomInIcon;v.push((0,O.jsx)(e,l({},a.baseTooltip,{title:c.zoomIn,children:(0,O.jsx)(dA,{render:(0,O.jsx)(QT,{size:"small"}),children:(0,O.jsx)(n,l({fontSize:"small"},a.zoomInIcon))})}),"zoom-in")),v.push((0,O.jsx)(e,l({},a.baseTooltip,{title:c.zoomOut,children:(0,O.jsx)(hA,{render:(0,O.jsx)(QT,{size:"small"}),children:(0,O.jsx)(t,l({fontSize:"small"},a.zoomOutIcon))})}),"zoom-out"))}if(y){const t=o.baseTooltip,r=o.baseMenuList,i=o.baseMenuItem,s=o.exportIcon,f=()=>d(!1),y=e=>{var t;"Tab"===e.key&&e.preventDefault(),("Tab"===(t=e.key)||"Escape"===t)&&f()};v.length>0&&v.push((0,O.jsx)(aA,{},"divider")),v.push((0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(t,{title:c.toolbarExport,disableInteractive:u,children:(0,O.jsx)(QT,{ref:p,id:m,"aria-controls":h,"aria-haspopup":"true","aria-expanded":u?"true":void 0,onClick:()=>d(!u),size:"small",children:(0,O.jsx)(s,{fontSize:"small"})})}),(0,O.jsx)(lA,{target:p.current,open:u,onClose:f,position:"bottom-end",children:(0,O.jsxs)(r,l({id:h,"aria-labelledby":m,onKeyDown:y,autoFocusItem:!0},a?.baseMenuList,{children:[!n?.disableToolbarButton&&(0,O.jsx)(vA,{render:(0,O.jsx)(i,l({dense:!0},a?.baseMenuItem)),options:n,onClick:f,children:c.toolbarExportPrint}),g.map(e=>(0,O.jsx)(xA,{render:(0,O.jsx)(i,l({dense:!0},a?.baseMenuItem)),options:e,onClick:f,children:c.toolbarExportImage(e.type)},e.type))]}))})]},"export-menu"))}return 0===v.length?null:(0,O.jsx)(nA,l({},i,{children:v}))}function SA(){return SA=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0?a:l;return n().createElement("g",null,n().createElement("line",{x1:v,y1:m,x2:v,y2:m+g,stroke:i,strokeWidth:2,strokeDasharray:"5,5",pointerEvents:"none"}),n().createElement("line",{x1:b,y1:m,x2:b,y2:m+g,stroke:i,strokeWidth:2,strokeDasharray:"5,5",pointerEvents:"none"}),n().createElement("rect",{x,y:m,width:w,height:g,fill:i,fillOpacity:.1,pointerEvents:"none"}),n().createElement("g",{transform:"translate(".concat(v,", ").concat(m+15,")")},n().createElement("rect",{x:-30,y:0,width:60,height:40,fill:i,rx:4}),n().createElement("text",{x:0,y:16,textAnchor:"middle",fill:"white",fontSize:10},String(A)),n().createElement("text",{x:0,y:32,textAnchor:"middle",fill:"white",fontSize:11,fontWeight:"bold"},"number"==typeof C?C.toFixed(2):C)),n().createElement("g",{transform:"translate(".concat(b,", ").concat(m+15,")")},n().createElement("rect",{x:-30,y:0,width:60,height:40,fill:i,rx:4}),n().createElement("text",{x:0,y:16,textAnchor:"middle",fill:"white",fontSize:10},String(O)),n().createElement("text",{x:0,y:32,textAnchor:"middle",fill:"white",fontSize:11,fontWeight:"bold"},"number"==typeof P?P.toFixed(2):P)),n().createElement("g",{transform:"translate(".concat((x+I)/2,", ").concat(m+g-30,")")},n().createElement("rect",{x:-50,y:0,width:100,height:26,fill:j,rx:4}),n().createElement("text",{x:0,y:17,textAnchor:"middle",fill:"white",fontSize:12,fontWeight:"bold"},E>=0?"+":"",E.toFixed(2)," (",T,"%)")))}function $A(t){var r,i=t.id,o=t.licenseKey,a=t.series,l=void 0===a?[]:a,c=t.xAxis,u=t.yAxis,d=t.height,p=void 0===d?400:d,h=t.width,m=t.margin,f=t.grid,g=t.colors,y=t.hideLegend,v=void 0!==y&&y,b=t.tooltip,x=t.skipAnimation,I=void 0!==x&&x,w=t.loading,k=void 0!==w&&w,S=t.zoom,M=t.initialZoom,C=t.showSlider,P=void 0!==C&&C,E=t.zoomInteractionConfig,T=t.referenceLines,A=void 0===T?[]:T,O=t.brushConfig,j=t.brushOverlay,L=void 0===j?"none":j,R=t.brushSeriesId,D=t.axisHighlight,$=void 0===D?{x:"line",y:"none"}:D,z=t.highlightedAxis,N=t.highlightedItem,_=t.tooltipItem,F=t.showToolbar,H=void 0!==F&&F,B=(t.brushData,t.zoomData,t.clickData,t.n_clicks),V=void 0===B?0:B,U=t.setProps,Y=(0,e.useId)();o&&!jA&&(s.setLicenseKey(o),jA=!0);var W=EA((0,e.useState)(function(){return S&&Array.isArray(S)&&S.length>0?S:M&&Array.isArray(M)&&M.length>0?M:[]}),2),G=W[0],K=W[1],q=(0,e.useRef)(JSON.stringify(S||M||[])),X=EA((0,e.useState)(0),2),Z=X[0],J=X[1];(0,e.useEffect)(function(){var e=JSON.stringify(S);S&&Array.isArray(S)&&e!==q.current&&(q.current=e,K(S),J(function(e){return e+1}))},[S]);var Q=(0,e.useRef)(JSON.stringify(null!=z?z:[])),ee=EA((0,e.useState)(function(){return z&&Array.isArray(z)?z:[]}),2),te=ee[0],ne=ee[1];(0,e.useEffect)(function(){var e=JSON.stringify(null!=z?z:[]);e!==Q.current&&(Q.current=e,ne(null!=z?z:[]))},[z]);var re=(0,e.useRef)(JSON.stringify(null!=N?N:null)),ie=EA((0,e.useState)(function(){return null!=N?N:null}),2),oe=ie[0],ae=ie[1];(0,e.useEffect)(function(){var e=JSON.stringify(null!=N?N:null);e!==re.current&&(re.current=e,ae(null!=N?N:null))},[N]);var se=(0,e.useRef)(JSON.stringify(null!=_?_:null)),le=EA((0,e.useState)(function(){return null!=_?_:null}),2),ce=le[0],ue=le[1];(0,e.useEffect)(function(){var e=JSON.stringify(null!=_?_:null);e!==se.current&&(se.current=e,ue(null!=_?_:null))},[_]);var de=(0,e.useMemo)(function(){return l.some(function(e){return e.area})},[l]),pe=(0,e.useMemo)(function(){return l.some(function(e){return!1!==e.showMark})},[l]),he=(0,e.useMemo)(function(){return l.map(function(e){return CA({type:"line"},e)})},[l]),me=(0,e.useMemo)(function(){var e=function(e){return!!e&&e.some(function(e){var t=e.zoom;return t&&"object"===OA(t)&&t.slider&&t.slider.enabled})};return e(c)||e(u)},[c,u]),fe=(0,e.useMemo)(function(){if(c)return c.map(function(e){var t=CA({},e);if(e.dateFormat)t.valueFormatter=function(e,t){var n=t||e;return function(t,r){return function(e,t){var n=e instanceof Date?e:new Date(e);return t.replace(/YYYY|YY|MMM|MM|dd|HH|mm|M|d/g,function(e){switch(e){case"YYYY":return n.getFullYear();case"YY":return String(n.getFullYear()).slice(-2);case"MMM":return LA[n.getMonth()];case"MM":return RA(n.getMonth()+1);case"M":return n.getMonth()+1;case"dd":return RA(n.getDate());case"d":return n.getDate();case"HH":return RA(n.getHours());case"mm":return RA(n.getMinutes());default:return e}})}(t,r&&"tick"===r.location?n:e)}}(e.dateFormat,e.dateTickFormat),delete t.dateFormat,delete t.dateTickFormat;else if(e.valueFormatter&&"function"!=typeof e.valueFormatter){var n=function(e){if("function"==typeof e)return e;if(e&&"object"===OA(e)&&"string"==typeof e.function){var t=window.dashMuiChartsFunctions;if(t&&"function"==typeof t[e.function]){var n=t[e.function],r=e.options||{};return function(){for(var e=arguments.length,t=new Array(e),i=0;i0&&(ge.initialZoom=G),ge.highlightedAxis=te,ge.onHighlightedAxisChange=function(e){var t=null!=e?e:[];ne(t),Q.current=JSON.stringify(t),U&&U({highlightedAxis:t})},ge.highlightedItem=oe,ge.onHighlightChange=function(e){var t=null!=e?e:null;ae(t),re.current=JSON.stringify(t),U&&U({highlightedItem:t})},ge.tooltipItem=ce,ge.onTooltipItemChange=function(e){var t=null!=e?e:null;ue(t),se.current=JSON.stringify(t),U&&U({tooltipItem:t})};var ye=["tickSize","disableLine","disableTicks","tickLabelStyle","labelStyle","tickLabelPlacement","tickPlacement","tickLabelMinGap","tickSpacing","tickInterval","tickLabelInterval"],ve=function(e){if(!e)return{};for(var t={},n=0,r=ye;n({x:n(e),y:r(e),width:i(e),height:o(e)})}const FA=4,HA=["seriesId","dataIndex","color","isFaded","isHighlighted","classes","skipAnimation","layout","xOrigin","yOrigin","placement","hidden"],BA=bm("text",{name:"MuiBarLabel",slot:"Root",overridesResolver:(e,t)=>[{[`&.${NA.faded}`]:t.faded},{[`&.${NA.highlighted}`]:t.highlighted},t.root]})(({theme:e})=>l({},e?.typography?.body2,{stroke:"none",fill:(e.vars||e)?.palette?.text?.primary,transitionProperty:"opacity, fill",transitionDuration:`${_I}ms`,transitionTimingFunction:FI,pointerEvents:"none"}));function VA(e){const t=Lh({props:e,name:"MuiBarLabel"}),{isFaded:n,hidden:r}=t,i=tt(t,HA),o=function(e){const{initialX:t,currentX:n,initialY:r,currentY:i}="outside"===e.placement?function(e){let t=0,n=0,r=0,i=0;return"vertical"===e.layout?(e.ye,applyProps(e,t){e.setAttribute("x",t.x.toString()),e.setAttribute("y",t.y.toString()),e.setAttribute("width",t.width.toString()),e.setAttribute("height",t.height.toString())},initialProps:o,skip:e.skipAnimation,ref:e.ref})}(t),a=function({placement:e,layout:t,xOrigin:n,x:r}){return"outside"===e&&"horizontal"===t?r{const{classes:t,seriesId:n,isFaded:r,isHighlighted:i,skipAnimation:o}=e;return uI({root:["root",`series-${n}`,i&&"highlighted",r&&"faded",!o&&"animate"]},zA,t)})(k),M=a?.barLabel??VA,C=yI({elementType:M,externalSlotProps:s?.barLabel,additionalProps:l({},x,{xOrigin:c,yOrigin:u,x:d,y:p,width:h,height:m,placement:v,className:S.root}),ownerState:k}),{ownerState:P}=C,E=tt(C,YA);if(!o)return null;const T=function(e){const{barLabel:t,value:n,dataIndex:r,seriesId:i,height:o,width:a}=e;return"value"===t?n?n?.toString():null:t({seriesId:i,dataIndex:r,value:n},{bar:{height:o,width:a}})}({barLabel:o,value:f,dataIndex:i,seriesId:t,height:m,width:h});return T?(0,O.jsx)(M,l({},E,P,{hidden:b,children:T})):null}const GA=["processedSeries","className","skipAnimation"];function KA(e){const{processedSeries:t,className:n,skipAnimation:r}=e,i=tt(e,GA),{seriesId:o,data:a,layout:s,xOrigin:c,yOrigin:u}=t,d=t.barLabel??e.barLabel;return d?(0,O.jsx)("g",{className:n,"data-series":o,children:a.map(({x:e,y:n,dataIndex:a,color:p,value:h,width:m,height:f})=>(0,O.jsx)(WA,l({seriesId:o,dataIndex:a,value:h,color:p,xOrigin:c,yOrigin:u,x:e,y:n,width:m,height:f,skipAnimation:r??!1,layout:s??"vertical"},i,{barLabel:d,barLabelPlacement:t.barLabelPlacement||"center"}),a))},o):null}function qA(e){return Xb("MuiBar",e)}Zb("MuiBar",["root","series","seriesLabels"]);const XA=e=>uI({root:["root"],series:["series"],seriesLabels:["seriesLabels"]},qA,e);function ZA(e,t){const n=Tn(e.x,t.x),r=Tn(e.y,t.y),i=Tn(e.width,t.width),o=Tn(e.height,t.height),a=Tn(e.borderRadius,t.borderRadius);return e=>({x:n(e),y:r(e),width:i(e),height:o(e),borderRadius:a(e)})}function JA(e){const{maskId:t,x:n,y:r,width:i,height:o,skipAnimation:a}=e,{ref:s,d:l}=function(e){const t={x:"vertical"===e.layout?e.x:e.xOrigin,y:"vertical"===e.layout?e.yOrigin:e.y,width:"vertical"===e.layout?e.width:0,height:"vertical"===e.layout?0:e.height,borderRadius:e.borderRadius};return aw({x:e.x,y:e.y,width:e.width,height:e.height,borderRadius:e.borderRadius},{createInterpolator:ZA,transformProps:t=>({d:QA(e.hasNegative,e.hasPositive,e.layout,t.x,t.y,t.width,t.height,e.xOrigin,e.yOrigin,t.borderRadius)}),applyProps(e,{d:t}){t&&e.setAttribute("d",t)},initialProps:t,skip:e.skipAnimation,ref:e.ref})}({layout:e.layout??"vertical",hasNegative:e.hasNegative,hasPositive:e.hasPositive,xOrigin:e.xOrigin,yOrigin:e.yOrigin,x:n,y:r,width:i,height:o,borderRadius:e.borderRadius??0,skipAnimation:a});return!e.borderRadius||e.borderRadius<=0?null:(0,O.jsx)("clipPath",{id:t,children:(0,O.jsx)("path",{ref:s,d:l})})}function QA(e,t,n,r,i,o,a,s,l,c){if("vertical"===n){if(t&&e){const e=Math.min(c,o/2,a/2);return`M${r},${i+a/2} v${-(a/2-e)} a${e},${e} 0 0 1 ${e},${-e} h${o-2*e} a${e},${e} 0 0 1 ${e},${e} v${a-2*e} a${e},${e} 0 0 1 ${-e},${e} h${-(o-2*e)} a${e},${e} 0 0 1 ${-e},${-e} v${-(a/2-e)}`}const n=Math.min(c,o/2);if(t)return`M${r},${Math.max(l,i+n)} v${Math.min(0,-(l-i-n))} a${n},${n} 0 0 1 ${n},${-n} h${o-2*n} a${n},${n} 0 0 1 ${n},${n} v${Math.max(0,l-i-n)} Z`;if(e)return`M${r},${Math.min(l,i+a-n)} v${Math.max(0,a-n)} a${n},${n} 0 0 0 ${n},${n} h${o-2*n} a${n},${n} 0 0 0 ${n},${-n} v${-Math.max(0,a-n)} Z`}if("horizontal"===n){if(t&&e){const e=Math.min(c,o/2,a/2);return`M${r+o/2},${i} h${o/2-e} a${e},${e} 0 0 1 ${e},${e} v${a-2*e} a${e},${e} 0 0 1 ${-e},${e} h${-(o-2*e)} a${e},${e} 0 0 1 ${-e},${-e} v${-(a-2*e)} a${e},${e} 0 0 1 ${e},${-e} h${o/2-e}`}const n=Math.min(c,a/2);if(t)return`M${Math.min(s,r-n)},${i} h${o} a${n},${n} 0 0 1 ${n},${n} v${a-2*n} a${n},${n} 0 0 1 ${-n},${n} h${-o} Z`;if(e)return`M${Math.max(s,r+o+n)},${i} h${-o} a${n},${n} 0 0 0 ${-n},${n} v${a-2*n} a${n},${n} 0 0 0 ${n},${n} h${o} Z`}}const eO=["completedData","masksData","borderRadius","onItemClick","skipAnimation"];function tO(t){let{completedData:n,masksData:r,borderRadius:i,onItemClick:o,skipAnimation:a}=t,s=tt(t,eO);const c=XA(),u=!i||i<=0;return(0,O.jsxs)(e.Fragment,{children:[!u&&r.map(({id:e,x:t,y:n,xOrigin:r,yOrigin:o,width:s,height:l,hasPositive:c,hasNegative:u,layout:d})=>(0,O.jsx)(JA,{maskId:e,borderRadius:i,hasNegative:u,hasPositive:c,layout:d,x:t,y:n,xOrigin:r,yOrigin:o,width:s,height:l,skipAnimation:a??!1},e)),n.map(({seriesId:e,layout:t,xOrigin:n,yOrigin:r,data:i})=>(0,O.jsx)("g",{"data-series":e,className:c.series,children:i.map(({dataIndex:i,color:c,maskId:d,x:p,y:h,width:m,height:f})=>{const g=(0,O.jsx)(bP,l({id:e,dataIndex:i,color:c,skipAnimation:a??!1,layout:t??"vertical",x:p,xOrigin:n,y:h,yOrigin:r,width:m,height:f},s,{onClick:o&&(t=>{o(t,{type:"bar",seriesId:e,dataIndex:i})})}),i);return u?g:(0,O.jsx)("g",{clipPath:`url(#${d})`,children:g},i)})},e))]})}const nO=ae(ls,cs,ft,function({axis:e,axisIds:t},{axis:n,axisIds:r},i,o){const{series:a,stackingGroups:s=[]}=i?.bar??{},l=t[0],c=r[0];let u;for(let t=0;t=P&&v<=E){const e="horizontal"===r.layout?o.x:o.y,t=r.stackedData[b],n=g.scale(t[0]),a=g.scale(t[1]);if(null==n||null==a)continue;const s=Math.min(n,a),l=Math.max(n,a);e>=s&&e<=l&&(u={seriesId:i,dataIndex:b})}}}if(u)return{type:"bar",seriesId:u.seriesId,dataIndex:u.dataIndex}});function rO(e,t,n){let r=e.get(t);return r?r.push(n):(r=[n],e.set(t,r)),r}function iO(e,t){return function(e,t,n,r,i,o,a,s){const l=Math.min(i,n/2,r/2),c=Math.min(o,n/2,r/2),u=Math.min(a,n/2,r/2),d=Math.min(s,n/2,r/2);return`M${e+l},${t}\n h${n-l-c}\n a${c},${c} 0 0 1 ${c},${c}\n v${r-c-u}\n a${u},${u} 0 0 1 -${u},${u}\n h-${n-u-d}\n a${d},${d} 0 0 1 -${d},-${d}\n v-${r-d-l}\n a${l},${l} 0 0 1 ${l},-${l}\n Z`}(e.x,e.y,e.width,e.height,"left"===e.borderRadiusSide||"top"===e.borderRadiusSide?t:0,"right"===e.borderRadiusSide||"top"===e.borderRadiusSide?t:0,"right"===e.borderRadiusSide||"bottom"===e.borderRadiusSide?t:0,"left"===e.borderRadiusSide||"bottom"===e.borderRadiusSide?t:0)}const oO=["skipAnimation","layout","xOrigin","yOrigin"],aO=["children","layout","xOrigin","yOrigin"],sO=bm("g")({'&[data-faded="true"]':{opacity:.3},"& path":{pointerEvents:"none"}});function lO(e){let{skipAnimation:t,layout:n,xOrigin:r,yOrigin:i}=e,o=tt(e,oO);return t?(0,O.jsx)(sO,l({},o)):(0,O.jsx)(uO,l({},o,{layout:n,xOrigin:r,yOrigin:i}))}const cO=bm("rect")({"@keyframes scaleInX":{from:{transform:"scaleX(0)"},to:{transform:"scaleX(1)"}},"@keyframes scaleInY":{from:{transform:"scaleY(0)"},to:{transform:"scaleY(1)"}},animationDuration:`${_I}ms`,animationFillMode:"forwards",'&[data-orientation="horizontal"]':{animationName:"scaleInX"},'&[data-orientation="vertical"]':{animationName:"scaleInY"}});function uO(t){let{children:n,layout:r,xOrigin:i,yOrigin:o}=t,a=tt(t,aO);const s=zx().use(he),c=z(),u=[];return"horizontal"===r?(u.push((0,O.jsx)(cO,{"data-orientation":"horizontal",x:s.left,width:i-s.left,y:s.top,height:s.height,style:{transformOrigin:`${i}px ${s.top+s.height/2}px`}},"left")),u.push((0,O.jsx)(cO,{"data-orientation":"horizontal",x:i,width:s.left+s.width-i,y:s.top,height:s.height,style:{transformOrigin:`${i}px ${s.top+s.height/2}px`}},"right"))):(u.push((0,O.jsx)(cO,{"data-orientation":"vertical",x:s.left,width:s.width,y:s.top,height:o-s.top,style:{transformOrigin:`${s.left+s.width/2}px ${o}px`}},"top")),u.push((0,O.jsx)(cO,{"data-orientation":"vertical",x:s.left,width:s.width,y:o,height:s.top+s.height-o,style:{transformOrigin:`${s.left+s.width/2}px ${o}px`}},"bottom"))),(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("clipPath",{id:c,children:u}),(0,O.jsx)(sO,l({clipPath:`url(#${c})`},a,{children:n}))]})}function dO({completedData:t,borderRadius:n=0,onItemClick:r,skipAnimation:i=!1}){const o=e.useRef(null),a=eI();return function(t,n,r){const{instance:i}=$x(),o=eI(),a=zx(),s=e.useRef(!1),l=e.useRef(void 0),c=ke(()=>n?.()),u=ke(()=>r?.());e.useEffect(()=>{const e=o.current;if(!e)return;function n(){s.current=!0}function r(){const e=l.current;e&&(l.current=void 0,i.removeTooltipItem(e),i.clearHighlight(),u())}function d(){s.current=!1,r()}const p=function(n){const o=xs(e,n);if(!i.isPointInside(o.x,o.y))return void r();const s=t(a.state,o);s?(i.setLastUpdateSource("pointer"),i.setTooltipItem(s),i.setHighlight(s),c(),l.current=s):r()};return e.addEventListener("pointerleave",d),e.addEventListener("pointermove",p),e.addEventListener("pointerenter",n),()=>{e.removeEventListener("pointerenter",n),e.removeEventListener("pointermove",p),e.removeEventListener("pointerleave",d),s.current&&d()}},[t,i,c,u,a,o])}(nO,r?()=>{const e=a.current;e&&null==o.current&&(o.current=e.style.cursor,e.style.cursor="pointer")}:void 0,r?()=>{const e=a.current;e&&null!=o.current&&(e.style.cursor=o.current,o.current=null)}:void 0),function(t){const{instance:n}=$x(),r=eI(),i=zx();e.useEffect(()=>{const e=r.current;if(!e||!t)return;let o=null;const a=function(r){let a=r;o&&Math.abs(r.clientX-o.clientX)<=1&&Math.abs(r.clientY-o.clientY)<=1&&(a={clientX:o.clientX,clientY:o.clientY}),o=null;const s=xs(e,a);if(!n.isPointInside(s.x,s.y))return;const l=nO(i.state,s);l&&t(r,{type:"bar",seriesId:l.seriesId,dataIndex:l.dataIndex})},s=function(e){o=e};return e.addEventListener("click",a),e.addEventListener("pointerup",s),()=>{e.removeEventListener("click",a),e.removeEventListener("pointerup",s)}},[n,t,i,r])}(r),(0,O.jsx)(e.Fragment,{children:t.map(e=>(0,O.jsx)(hO,{series:e,borderRadius:n,skipAnimation:i},e.seriesId))})}const pO=e.memo(fO);function hO({series:t,borderRadius:n,skipAnimation:r}){const i=XA(),{store:o}=$x(),a=o.use(jI,t.seriesId),s=o.use(LI,t.seriesId);return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(lO,{className:i.series,"data-series":t.seriesId,layout:t.layout,xOrigin:t.xOrigin,yOrigin:t.yOrigin,skipAnimation:r,"data-faded":s||void 0,"data-highlighted":a||void 0,children:(0,O.jsx)(mO,{processedSeries:t,borderRadius:n})}),(0,O.jsx)(pO,{processedSeries:t,borderRadius:n})]})}function mO({processedSeries:t,borderRadius:n}){const r=function(e,t){const n=new Map,r=new Map;for(let i=0;i=1e3&&(rO(n,o.color,s.join("")),r.delete(o.color))}for(const[e,t]of r.entries())t.length>0&&rO(n,e,t.join(""));return n}(t,n),i=[];let o=0;for(const[e,t]of r.entries())for(const n of t)i.push((0,O.jsx)("path",{fill:e,d:n},o)),o+=1;return(0,O.jsx)(e.Fragment,{children:i})}function fO({processedSeries:t,borderRadius:n}){const{store:r}=$x(),i=r.use(DI,t.seriesId),o=r.use(RI,t.seriesId),a=null!=i&&t.data.find(e=>e.dataIndex===i)||null,s=null!=o&&t.data.find(e=>e.dataIndex===o)||null,l=[];return null!=a&&l.push((0,O.jsx)("path",{fill:a.color,filter:"brightness(120%)","data-highlighted":!0,d:iO(a,n)},`highlighted-${t.seriesId}`)),null!=s&&l.push((0,O.jsx)("path",{fill:s.color,d:iO(s,n)},`unfaded-${s.seriesId}`)),(0,O.jsx)(e.Fragment,{children:l})}const gO=["skipAnimation","onItemClick","borderRadius","barLabel","renderer"],yO=bm("g",{name:"MuiBarPlot",slot:"Root"})({[`& .${mP.root}`]:{transitionProperty:"opacity, fill",transitionDuration:`${_I}ms`,transitionTimingFunction:FI}});function vO(e){const{skipAnimation:t,onItemClick:n,borderRadius:r,barLabel:i,renderer:o}=e,a=tt(e,gO),s=bw(xw()||t),c=bw(t),{xAxis:u}=_x(),{yAxis:d}=Fx(),{completedData:p,masksData:h}=pP(Nx(),u,d),m=XA(),f="svg-batch"===o?dO:tO;return(0,O.jsxs)(yO,{className:m.root,children:[(0,O.jsx)(f,l({completedData:p,masksData:h,skipAnimation:"svg-batch"===o?c:s,onItemClick:n,borderRadius:r},a)),p.map(e=>(0,O.jsx)(KA,l({className:m.seriesLabels,processedSeries:e,skipAnimation:s,barLabel:i},a),e.seriesId))]})}const bO=["x","y","id","classes","color","shape"];function xO(e){return Xb("MuiHighlightElement",e)}function IO(e){const{x:t,y:n,color:r,shape:i}=e,o=tt(e,bO),a=(e=>{const{classes:t,id:n}=e;return uI({root:["root",`series-${n}`]},xO,t)})(e),s="circle"===i?"circle":"path",c="circle"===i?{cx:0,cy:0,r:void 0===o.r?5:o.r}:{d:Qk(Jk[eS(i)])()},u=F>18?{transformOrigin:`${t} ${n}`}:{"transform-origin":`${t} ${n}`};return(0,O.jsx)(s,l({pointerEvents:"none",className:a.root,transform:`translate(${t} ${n})`,fill:r},u,c,o))}Zb("MuiHighlightElement",["root"]);const wO=["slots","slotProps"];function kO(e){const{slots:t,slotProps:n}=e,r=tt(e,wO),i=lk(),{xAxis:o,xAxisIds:a}=_x(),{yAxis:s,yAxisIds:c}=Fx(),{instance:u}=$x(),d=zx().use(sS);if(0===d.length)return null;if(void 0===i)return null;const{series:p,stackingGroups:h}=i,m=a[0],f=c[0],g=t?.lineHighlight??IO;return(0,O.jsx)("g",l({},r,{children:d.flatMap(({dataIndex:e,axisId:t})=>h.flatMap(({ids:r})=>r.flatMap(r=>{const{xAxisId:i=m,yAxisId:a=f,stackedData:c,data:d,disableHighlight:h,shape:y="circle"}=p[r];if(h||null==d[e])return null;if(t!==i)return null;const v=ck(o[i].scale),b=s[a].scale,x=o[i].data;if(void 0===x)throw new Error(`MUI X Charts: ${i===W?"The first `xAxis`":`The x-axis with id "${i}"`} should have data property to be able to display a line plot.`);const I=v(x[e]),w=b(c[e][1]);if(!u.isPointInside(I,w))return null;const k=$l(p[r],o[i],s[a]);return(0,O.jsx)(g,l({id:r,color:k(e),x:I,y:w,shape:y},n?.lineHighlight),`${r}`)})))}))}function SO(e){const{children:t,localeText:n,chartProviderProps:r,slots:i,slotProps:o}=Tx(e);return(0,O.jsx)(oc,l({},r,{children:(0,O.jsx)(_h,{localeText:n,children:(0,O.jsx)(lc,{slots:i,slotProps:o,defaultSlots:bv,children:t})})}))}function MO(){return zx().use(iI)}function CO(){const e=xm(),t=MO(),n=lk(),{xAxis:r,xAxisIds:i}=_x(),{yAxis:o,yAxisIds:a}=Fx();if(null===t||"line"!==t.type||!n)return null;const s=n.series[t.seriesId];if(null==s.data[t.dataIndex])return null;const l=s.xAxisId??i[0],c=s.yAxisId??a[0];return(0,O.jsx)("rect",{fill:"none",stroke:(e.vars??e).palette.text.primary,strokeWidth:2,x:r[l].scale(r[l].data[t.dataIndex])-6,y:o[c].scale(s.stackedData[t.dataIndex][1])-6,width:12,height:12,rx:3,ry:3})}const PO=["xAxis","yAxis","width","height","margin","color","baseline","sx","showTooltip","showHighlight","axisHighlight","children","slots","slotProps","data","plotType","valueFormatter","area","curve","className","disableClipping","clipAreaOffset","onHighlightChange","onHighlightedAxisChange","highlightedAxis","highlightedItem"],EO=5,TO=e.forwardRef(function(t,n){const{xAxis:r,yAxis:i,width:o,height:a,margin:s=EO,color:c,baseline:u,sx:d,showTooltip:p,showHighlight:h,axisHighlight:m,children:f,slots:g,slotProps:y,data:v,plotType:b="line",valueFormatter:x=e=>null===e?"":e.toString(),area:I,curve:w="linear",className:k,disableClipping:S,clipAreaOffset:M,onHighlightChange:C,onHighlightedAxisChange:P,highlightedAxis:E,highlightedItem:T}=t,A=tt(t,PO),j=`${z()}-clip-path`,L=e.useMemo(()=>({top:M?.top??1,right:M?.right??1,bottom:M?.bottom??1,left:M?.left??1}),[M?.bottom,M?.left,M?.right,M?.top]),R=e.useMemo(()=>h&&"bar"===b?{x:"band"}:{x:"none"},[b,h]),D=e.useMemo(()=>l({},R,m),[R,m]),$=t.slots?.tooltip??LC,N=e.useMemo(()=>{if(null!=c)return"function"==typeof c?e=>[c(e)]:[c]},[c]),_=e.useMemo(()=>[l({type:b,data:v,valueFormatter:x},"bar"===b?{}:{area:I,curve:w,baseline:u,disableHighlight:!h})],[I,u,w,v,b,h,x]),F=e.useMemo(()=>[l({id:W,scaleType:"bar"===b?"band":"point",hideTooltip:void 0===r},r,{data:r?.data??Array.from({length:v.length},(e,t)=>t),position:"none"})],[v.length,b,r]),H=e.useMemo(()=>[l({id:G},i,{position:"none"})],[i]);return(0,O.jsxs)(SO,{series:_,width:o,height:a,margin:s,xAxis:F,yAxis:H,colors:N,disableAxisListener:void 0===P&&(!p||"axis"!==y?.tooltip?.trigger)&&"none"===D?.x&&"none"===D?.y,onHighlightChange:C,onHighlightedAxisChange:P,highlightedAxis:E,highlightedItem:T,children:[(0,O.jsxs)(mI,l({className:k,ref:n,sx:d},A,{children:[(0,O.jsxs)("g",{clipPath:`url(#${j})`,children:["bar"===b&&(0,O.jsx)(vO,{skipAnimation:!0,slots:g,slotProps:y}),"line"===b&&(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(gk,{skipAnimation:!0,slots:g,slotProps:y}),(0,O.jsx)(Ek,{skipAnimation:!0,slots:g,slotProps:y})]})]}),"line"===b&&(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(kO,{slots:g,slotProps:y}),(0,O.jsx)(CO,{})]}),S?null:(0,O.jsx)(ZC,{id:j,offset:L}),(0,O.jsx)(_C,l({},D)),f]})),p&&(0,O.jsx)($,l({},t.slotProps?.tooltip))]})});function AO(e){return AO="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},AO(e)}function OO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function jO(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);no[e].position&&"none"!==o[e].position?(0,O.jsx)(gM,{slots:n,slotProps:r,axisId:e},e):null),a.map(e=>s[e].position&&"none"!==s[e].position?(0,O.jsx)(OM,{slots:n,slotProps:r,axisId:e},e):null)]})}DO.propTypes={id:i().string,data:i().arrayOf(i().number).isRequired,plotType:i().oneOf(["line","bar"]),width:i().number,height:i().number,color:i().string,colors:i().arrayOf(i().string),area:i().bool,curve:i().oneOf(["linear","monotoneX","monotoneY","natural","step","stepBefore","stepAfter","catmullRom","bumpX","bumpY"]),showTooltip:i().bool,showHighlight:i().bool,margin:i().shape({top:i().number,right:i().number,bottom:i().number,left:i().number}),xAxis:i().shape({id:i().string,data:i().array,scaleType:i().oneOf(["band","point","linear","log","time"])}),yAxis:i().shape({min:i().number,max:i().number}),axisHighlight:i().shape({x:i().oneOf(["line","band","none"]),y:i().oneOf(["line","band","none"])}),slotProps:i().object,clipAreaOffset:i().shape({top:i().number,right:i().number,bottom:i().number,left:i().number}),baseline:i().oneOfType([i().oneOf(["min","max"]),i().number]),strokeWidth:i().number,disableClipping:i().bool,highlightedIndex:i().number,highlightedItem:i().object,hoverIndex:i().number,hoverValue:i().number,n_hovers:i().number,setProps:i().func};const zO=e=>"start"===e?.horizontal?"start":"end"===e?.horizontal?"end":"center",NO=e=>"top"===e?.vertical?"flex-start":"bottom"===e?.vertical?"flex-end":"center",_O=bm("div",{name:"MuiChartsWrapper",slot:"Root",shouldForwardProp:e=>QE(e)&&"extendVertically"!==e&&"width"!==e})(({ownerState:e,width:t})=>{const n=((e=!1,t="horizontal",n="end",r)=>{const i=r?"auto":"1fr";return"horizontal"===t||e?i:"start"===n?`auto ${i}`:`${i} auto`})(e.hideLegend,e.legendDirection,e.legendPosition?.horizontal,t),r=((e=!1,t="horizontal",n="top")=>{const r="1fr";return"vertical"===t||e?r:"bottom"===n?`${r} auto`:`auto ${r}`})(e.hideLegend,e.legendDirection,e.legendPosition?.vertical),i=((e,t,n)=>e?'"chart"':"vertical"===t?"start"===n?.horizontal?'"legend chart"':'"chart legend"':"bottom"===n?.vertical?'"chart"\n "legend"':'"legend"\n "chart"')(e.hideLegend,e.legendDirection,e.legendPosition);return{variants:[{props:{extendVertically:!0},style:{height:"100%",minHeight:0}}],flex:1,display:"grid",gridTemplateColumns:n,gridTemplateRows:r,gridTemplateAreas:i,[`&:has(.${Jb.root})`]:{gridTemplateRows:`auto ${r}`,gridTemplateAreas:`"${n.split(" ").map(()=>"toolbar").join(" ")}"\n ${i}`},[`& .${Jb.root}`]:{gridArea:"toolbar",justifySelf:"center"},justifyContent:"safe center",justifyItems:zO(e.legendPosition),alignItems:NO(e.legendPosition)}});function FO(e){const{children:t,sx:n,extendVertically:r}=e,i=$x().chartRootRef,o=zx(),a=o.use(ge),s=o.use(ye);return(0,O.jsx)(_O,{ref:i,ownerState:e,sx:n,extendVertically:r??void 0===s,width:a,children:t})}const HO=["message"],BO=bm("text",{slot:"internal",shouldForwardProp:void 0})(({theme:e})=>l({},e.typography.body2,{stroke:"none",fill:(e.vars||e).palette.text.primary,shapeRendering:"crispEdges",textAnchor:"middle",dominantBaseline:"middle"}));function VO(e){const{message:t}=e,n=tt(e,HO),{top:r,left:i,height:o,width:a}=Nx(),{localeText:s}=rA();return(0,O.jsx)(BO,l({x:i+a/2,y:r+o/2},n,{children:t??s.loading}))}const UO=["message"],YO=bm("text",{slot:"internal",shouldForwardProp:void 0})(({theme:e})=>l({},e.typography.body2,{stroke:"none",fill:(e.vars||e).palette.text.primary,shapeRendering:"crispEdges",textAnchor:"middle",dominantBaseline:"middle"}));function WO(e){const{message:t}=e,n=tt(e,UO),{top:r,left:i,height:o,width:a}=Nx(),{localeText:s}=rA();return(0,O.jsx)(YO,l({x:i+a/2,y:r+o/2},n,{children:t??s.noData}))}function GO(e){const t=function(){const e=UM();return Object.values(e).every(e=>{if(!e)return!0;const{series:t,seriesOrder:n}=e;return n.every(e=>{const n=t[e];return"sankey"===n.type?0===n.data.links.length:0===n.data.length})})}();if(e.loading){const t=e.slots?.loadingOverlay??VO;return(0,O.jsx)(t,l({},e.slotProps?.loadingOverlay))}if(t){const t=e.slots?.noDataOverlay??WO;return(0,O.jsx)(t,l({},e.slotProps?.noDataOverlay))}return null}function KO(e){return Xb("MuiChartsLabelGradient",e)}const qO=Zb("MuiChartsLabelGradient",["root","vertical","horizontal","mask","fill"]),XO=["gradientId","direction","classes","className","rotate","reverse","thickness"],ZO=bm("div",{name:"MuiChartsLabelGradient",slot:"Root"})(({ownerState:e})=>{const t=((e,t,n,r)=>{const i=("vertical"===e?-90:0)+(n?90:0)+(t?180:0);return r&&"vertical"!==e?i+180:i})(e.direction,e.reverse,e.rotate,e.isRtl);return{display:"flex",alignItems:"center",justifyContent:"center",[`.${qO.mask}`]:{borderRadius:2,overflow:"hidden"},[`&.${qO.horizontal}`]:{width:"100%",[`.${qO.mask}`]:{height:e.thickness,width:"100%"}},[`&.${qO.vertical}`]:{height:"100%",[`.${qO.mask}`]:{width:e.thickness,height:"100%","> svg":{height:"100%"}}},svg:{transform:`rotate(${t}deg)`,display:"block"}}}),JO=oC("MuiChartsLabelGradient",{defaultProps:{direction:"horizontal",thickness:12},classesResolver:e=>{const{direction:t}=e;return uI({root:["root",t],mask:["mask"],fill:["fill"]},KO,e.classes)}},function(e,t){const{gradientId:n,classes:r,className:i}=e,o=tt(e,XO),a=fS();return(0,O.jsx)(ZO,l({className:Hh(r?.root,i),ownerState:l({},e,{isRtl:a}),"aria-hidden":"true",ref:t},o,{children:(0,O.jsx)("div",{className:r?.mask,children:(0,O.jsx)("svg",{viewBox:"0 0 24 24",children:(0,O.jsx)("rect",{className:r?.fill,width:"24",height:"24",fill:`url(#${n})`})})})}))});function QO(e){return Xb("MuiContinuousColorLegend",e)}const ej=Zb("MuiContinuousColorLegend",["root","minLabel","maxLabel","gradient","vertical","horizontal","start","end","extremes","label"]),tj=["minLabel","maxLabel","direction","axisDirection","axisId","rotateGradient","reverse","classes","className","gradientId","labelPosition","thickness"],nj=e=>{const t=e?"max-label":"min-label",n=e?"min-label":"max-label";return{row:{start:`\n '${t} . ${n}'\n 'gradient gradient gradient'\n `,end:`\n 'gradient gradient gradient'\n '${t} . ${n}'\n `,extremes:`\n '${t} gradient ${n}'\n `},column:{start:`\n '${n} gradient'\n '. gradient'\n '${t} gradient'\n `,end:`\n 'gradient ${n}'\n 'gradient .'\n 'gradient ${t}'\n `,extremes:`\n '${n}'\n 'gradient'\n '${t}'\n `}}},rj=bm("ul",{name:"MuiContinuousColorLegend",slot:"Root"})(({theme:e,ownerState:t})=>l({},e.typography.caption,{color:(e.vars||e).palette.text.primary,lineHeight:"100%",display:"grid",flexShrink:0,gap:e.spacing(.5),listStyleType:"none",paddingInlineStart:0,marginBlock:e.spacing(1),marginInline:e.spacing(1),gridArea:"legend",[`&.${ej.horizontal}`]:{gridTemplateRows:"min-content min-content",gridTemplateColumns:"min-content auto min-content",[`&.${ej.start}`]:{gridTemplateAreas:nj(t.reverse).row.start},[`&.${ej.end}`]:{gridTemplateAreas:nj(t.reverse).row.end},[`&.${ej.extremes}`]:{gridTemplateAreas:nj(t.reverse).row.extremes,gridTemplateRows:"min-content",alignItems:"center"}},[`&.${ej.vertical}`]:{gridTemplateRows:"min-content auto min-content",gridTemplateColumns:"min-content min-content",[`&.${ej.start}`]:{gridTemplateAreas:nj(t.reverse).column.start,[`.${ej.maxLabel}, .${ej.minLabel}`]:{justifySelf:"end"}},[`&.${ej.end}`]:{gridTemplateAreas:nj(t.reverse).column.end,[`.${ej.maxLabel}, .${ej.minLabel}`]:{justifySelf:"start"}},[`&.${ej.extremes}`]:{gridTemplateAreas:nj(t.reverse).column.extremes,gridTemplateColumns:"min-content",[`.${ej.maxLabel}, .${ej.minLabel}`]:{justifySelf:"center"}}},[`.${ej.gradient}`]:{gridArea:"gradient"},[`.${ej.maxLabel}`]:{gridArea:"max-label"},[`.${ej.minLabel}`]:{gridArea:"min-label"}})),ij=(e,t,n)=>"string"==typeof e?e:e?.({value:t,formattedValue:n})??n,oj=oC("MuiContinuousColorLegend",{defaultProps:{direction:"horizontal",labelPosition:"end",axisDirection:"z"},classesResolver:e=>{const{classes:t,direction:n,labelPosition:r}=e;return uI({root:["root",n,r],minLabel:["minLabel"],maxLabel:["maxLabel"],gradient:["gradient"],mark:["mark"],label:["label"]},QO,t)}},function(e,t){const{minLabel:n,maxLabel:r,direction:i,axisDirection:o,axisId:a,rotateGradient:s,reverse:c,classes:u,className:d,gradientId:p,thickness:h}=e,m=tt(e,tj),f=Jx(),g=function({axisDirection:e,axisId:t}){const{xAxis:n,xAxisIds:r}=_x(),{yAxis:i,yAxisIds:o}=Fx(),{zAxis:a,zAxisIds:s}=Kx();switch(e){case"x":return n["string"==typeof t?t:r[t??0]];case"y":return i["string"==typeof t?t:o[t??0]];default:return a["string"==typeof t?t:s[t??0]]}}({axisDirection:o,axisId:a}),y=g?.colorMap;if(!y||!y.type||"continuous"!==y.type)return null;const v=y.min??0,b=y.max??100,x=void 0===g.scale?void 0:g.valueFormatter,I=x?x(v,{location:"legend"}):v.toLocaleString(),w=x?x(b,{location:"legend"}):b.toLocaleString(),k=ij(n,v,I),S=ij(r,b,w),M=(0,O.jsx)("li",{className:u?.minLabel,children:(0,O.jsx)(GC,{className:u?.label,children:k})}),C=(0,O.jsx)("li",{className:u?.maxLabel,children:(0,O.jsx)(GC,{className:u?.label,children:S})});return(0,O.jsxs)(rj,l({className:Hh(u?.root,d),ref:t},m,{ownerState:e,children:[c?C:M,(0,O.jsx)("li",{className:u?.gradient,children:(0,O.jsx)(JO,{direction:i,rotate:s,reverse:c,thickness:h,gradientId:p??f(g.id)})}),c?M:C]}))});function aj(){return ak("heatmap")}const sj=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},lj=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n}({...i,...r}),s=sj(r),l=sj(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}};function cj(e){return["highlighted","faded"].includes(e)?IT("Charts",e):IT("MuiHeatmap",e)}l({},wT("MuiHeatmap",["cell","series"]),{highlighted:"Charts-highlighted",faded:"Charts-faded"});const uj=["seriesId","dataIndex","color","value","isHighlighted","isFaded","slotProps","slots"],dj=bm("rect",{name:"MuiHeatmap",slot:"Cell",overridesResolver:(e,t)=>t.arc})(({ownerState:e})=>({filter:(e.isHighlighted?"saturate(120%)":e.isFaded&&"saturate(80%)")||void 0,fill:e.color,shapeRendering:"crispEdges"}));function pj(e){const{seriesId:t,dataIndex:n,color:r,value:i,isHighlighted:o=!1,isFaded:a=!1,slotProps:s={},slots:c={}}=e,u=tt(e,uj),d=bI({type:"heatmap",seriesId:t,dataIndex:n}),p={seriesId:t,dataIndex:n,color:r,value:i,isFaded:a,isHighlighted:o},h=(e=>{const{classes:t,seriesId:n,isFaded:r,isHighlighted:i}=e;return lT({cell:["cell",`series-${n}`,r&&"faded",i&&"highlighted"]},cj,t)})(p),m=c?.cell??dj,f=function(e){const{elementType:t,externalSlotProps:n,ownerState:r,skipResolvingSlotProps:i=!1,...o}=e,a=i?{}:function(e,t){return"function"==typeof e?e(t,void 0):e}(n,r),{props:s,internalRef:l}=lj({...o,externalSlotProps:a});return function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}}(t,{...s,ref:vT(l,a?.ref,e.additionalProps?.ref)},r)}({elementType:m,additionalProps:d,externalForwardedProps:l({},u),externalSlotProps:s.cell,ownerState:p,className:h.cell});return(0,O.jsx)(m,l({},f))}function hj(e){const t=zx(),n=uk(),r=dk(),i=function(e){const t=function(e){const{zAxis:t,zAxisIds:n}=Kx();return t["string"==typeof e?e:n[e??0]]}(e);return t.colorScale}(),o=aj(),a=t.use(TI),s=t.use(AI),l=n.domain(),c=r.domain();if(!o||0===o.seriesOrder.length)return null;const u=o.series[o.seriesOrder[0]];return(0,O.jsx)("g",{children:u.data.map(([t,d,p],h)=>{const m=n(l[t]),f=r(c[d]),g=i?.(p);if(void 0===m||void 0===f||!g)return null;const y={seriesId:u.id,dataIndex:h};return(0,O.jsx)(pj,{width:n.bandwidth(),height:r.bandwidth(),x:m,y:f,color:g,dataIndex:h,seriesId:o.seriesOrder[0],value:p,slots:e.slots,slotProps:e.slotProps,isHighlighted:a(y),isFaded:s(y)},`${t}_${d}`)})})}const mj=e=>{const{axis:t}=e;return[Math.min(...t.data??[]),Math.max(...t.data??[])]},fj={seriesProcessor:e=>{const{series:t,seriesOrder:n}=e,r={};return Object.keys(t).forEach(e=>{r[e]=l({valueFormatter:e=>e[2].toString(),data:[],labelMarkType:"square"},t[e])}),{series:r,seriesOrder:n}},colorProcessor:(e,t,n,r)=>{const i=r?.colorScale;return i?t=>{const n=e.data[t],r=i(n[2]);return null===r?"":r}:()=>""},legendGetter:()=>[],tooltipGetter:e=>{const{series:t,getColor:n,identifier:r}=e;if(!r||void 0===r.dataIndex)return null;const i=yl(t.label,"tooltip"),o=t.data[r.dataIndex],a=t.valueFormatter(o,{dataIndex:r.dataIndex});return{identifier:r,color:n(r.dataIndex),label:i,value:o,formattedValue:a,markType:t.labelMarkType}},tooltipItemPositionGetter:e=>{const{series:t,identifier:n,axesConfig:r,placement:i}=e;if(!n||void 0===n.dataIndex)return null;const o=t.heatmap?.series[n.seriesId];if(null==o)return null;if(void 0===r.x||void 0===r.y||!Et(r.x)||!Et(r.y))return null;const[a,s]=o.data[n.dataIndex],l=r.x.scale(r.x.scale.domain()[a]),c=r.y.scale(r.y.scale.domain()[s]);if(void 0===l||void 0===c)return null;const u=r.x.scale.bandwidth(),d=r.y.scale.bandwidth();switch(i){case"bottom":return{x:l+u/2,y:c+d};case"left":return{x:l,y:c+d/2};case"right":return{x:l+u,y:c+d/2};default:return{x:l+u/2,y:c}}},xExtremumGetter:mj,yExtremumGetter:mj,getSeriesWithDefaultValues:(e,t,n)=>l({color:n[t%n.length]},e,{id:e.id??`auto-generated-id-${t}`}),identifierSerializer:jl},gj=bm("caption",{name:"MuiChartsHeatmapTooltip",slot:"AxesValue"})(({theme:e})=>({textAlign:"start",whiteSpace:"nowrap",padding:e.spacing(.5,1.5),color:(e.vars||e).palette.text.secondary,borderBottom:`solid ${(e.vars||e).palette.divider} 1px`,"& span":{marginRight:e.spacing(1.5)}})),yj=e=>{const{classes:t}=e;return lT({root:["root"],paper:["paper"],table:["table"],row:["row"],cell:["cell"],mark:["mark"],markContainer:["markContainer"],labelCell:["labelCell"],valueCell:["valueCell"]},HM,t)};function vj(e){const t=yj(e),n=Hx(),r=Bx(),i=aj(),o=ZM();if(!o||!i||0===i.seriesOrder.length)return null;const{series:a,seriesOrder:s}=i,l=s[0],{color:c,value:u,identifier:d,markType:p}=o,[h,m]=u,f=n.valueFormatter?.(n.data[h],{location:"tooltip",scale:n.scale})??n.data[h].toLocaleString(),g=r.valueFormatter?.(r.data[m],{location:"tooltip",scale:r.scale})??r.data[m].toLocaleString(),y=a[l].valueFormatter(u,{dataIndex:d.dataIndex}),v=yl(a[l].label,"tooltip");return(0,O.jsx)(JM,{className:t.paper,children:(0,O.jsxs)(QM,{className:t.table,children:[(0,O.jsxs)(gj,{children:[(0,O.jsx)("span",{children:f}),(0,O.jsx)("span",{children:g})]}),(0,O.jsx)("tbody",{children:(0,O.jsxs)(eC,{className:t.row,children:[(0,O.jsxs)(tC,{className:Hh(t.labelCell,t.cell),component:"th",children:[(0,O.jsx)("div",{className:t.markContainer,children:(0,O.jsx)(lC,{type:p,color:c,className:t.mark})}),v]}),(0,O.jsx)(tC,{className:Hh(t.valueCell,t.cell),component:"td",children:y})]})})]})})}function bj(e){const t=yj({classes:e.classes});return(0,O.jsx)(jC,l({trigger:"item"},e,{classes:t,children:(0,O.jsx)(vj,{classes:t})}))}const xj=[Xs,Ys,Ws,Bs,Zs,tx,Mb,Ix],Ij=Cn(["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"]),wj={heatmap:fj};function kj(e,t){return void 0===e?.[0]?.data||0===e[0].data.length?[]:Array.from({length:Math.max(...e[0].data.map(e=>e[t]))+1},(e,t)=>t)}const Sj=e=>kj(e,0),Mj=e=>kj(e,1),Cj=e.forwardRef(function(t,n){const r=Lh({props:t,name:"MuiHeatmap"}),{apiRef:i,xAxis:o,yAxis:a,zAxis:s,series:c,width:u,height:d,margin:p,colors:h,dataset:m,sx:f,onAxisClick:g,children:y,slots:v,slotProps:b,loading:x,highlightedItem:I,onHighlightChange:w,hideLegend:k=!0,showToolbar:S=!1}=r,M=`${iP()}-clip-path`,C=e.useMemo(()=>(o&&o.length>0?o:[{id:W}]).map(e=>l({scaleType:"band",categoryGapRatio:0},e,{data:e.data??Sj(c)})),[c,o]),P=e.useMemo(()=>(a&&a.length>0?a:[{id:G}]).map(e=>l({scaleType:"band",categoryGapRatio:0},e,{data:e.data??Mj(c)})),[c,a]),E=e.useMemo(()=>s??[{colorMap:{type:"continuous",min:0,max:100,color:Ij}}],[s]),T={sx:f,legendPosition:r.slotProps?.legend?.position,legendDirection:r.slotProps?.legend?.direction,hideLegend:k},A=v?.tooltip??bj,j=v?.toolbar??kA;return(0,O.jsx)(Rx,{apiRef:i,seriesConfig:wj,series:c.map(e=>l({type:"heatmap"},e)),width:u,height:d,margin:p,xAxis:C,yAxis:P,zAxis:E,colors:h,dataset:m,disableAxisListener:!0,highlightedItem:I,onHighlightChange:w,onAxisClick:g,plugins:xj,children:(0,O.jsxs)(FO,l({},T,{children:[S?(0,O.jsx)(j,l({},r.slotProps?.toolbar)):null,!k&&(0,O.jsx)(XC,{slots:l({},v,{legend:v?.legend??oj}),slotProps:{legend:l({labelPosition:"extremes"},b?.legend)},sx:"vertical"===b?.legend?.direction?{height:150}:{width:"50%"}}),(0,O.jsxs)(mI,{ref:n,sx:f,children:[(0,O.jsxs)("g",{clipPath:`url(#${M})`,children:[(0,O.jsx)(hj,{slots:v,slotProps:b}),(0,O.jsx)(GO,{loading:x,slots:v,slotProps:b})]}),(0,O.jsx)($O,{slots:v,slotProps:b}),(0,O.jsx)(ZC,{id:M}),(0,O.jsx)(WT,{}),y]}),!x&&(0,O.jsx)(A,l({},b?.tooltip))]}))})});var Pj=["x","y","width","height","ownerState","onCellClick"],Ej=["x","y","width","height","ownerState","cellConfig","onCellClick"];function Tj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Aj(e){for(var t=1;tA*A+O*O&&(S=C,M=P),{cx:S,cy:M,x01:-u,y01:-d,x11:S*(i/I-1),y11:M*(i/I-1)}}function Yj(){var e=_j,t=Fj,n=rl(0),r=null,i=Hj,o=Bj,a=Vj,s=null,l=Tw(c);function c(){var c,u,d,p=+e.apply(this,arguments),h=+t.apply(this,arguments),m=i.apply(this,arguments)-Xl,f=o.apply(this,arguments)-Xl,g=Hl(f-m),y=f>m;if(s||(s=c=l()),hKl)if(g>Zl-Kl)s.moveTo(h*Vl(m),h*Wl(m)),s.arc(0,0,h,m,f,!y),p>Kl&&(s.moveTo(p*Vl(f),p*Wl(f)),s.arc(0,0,p,f,m,y));else{var v,b,x=m,I=f,w=m,k=f,S=g,M=g,C=a.apply(this,arguments)/2,P=C>Kl&&(r?+r.apply(this,arguments):Gl(p*p+h*h)),E=Yl(Hl(h-p)/2,+n.apply(this,arguments)),T=E,A=E;if(P>Kl){var O=Jl(P/p*Wl(C)),j=Jl(P/h*Wl(C));(S-=2*O)>Kl?(w+=O*=y?1:-1,k-=O):(S=0,w=k=(m+f)/2),(M-=2*j)>Kl?(x+=j*=y?1:-1,I-=j):(M=0,x=I=(m+f)/2)}var L=h*Vl(x),R=h*Wl(x),D=p*Vl(k),$=p*Wl(k);if(E>Kl){var z,N=h*Vl(I),_=h*Wl(I),F=p*Vl(w),H=p*Wl(w);if(g1?0:d<-1?ql:Math.acos(d))/2),G=Gl(z[0]*z[0]+z[1]*z[1]);T=Yl(E,(p-G)/(W-1)),A=Yl(E,(h-G)/(W+1))}else T=A=0}M>Kl?A>Kl?(v=Uj(F,H,L,R,h,A,y),b=Uj(N,_,D,$,h,A,y),s.moveTo(v.cx+v.x01,v.cy+v.y01),AKl&&S>Kl?T>Kl?(v=Uj(D,$,N,_,p,-T,y),b=Uj(L,R,F,H,p,-T,y),s.lineTo(v.cx+v.x01,v.cy+v.y01),T({startAngle:n(e),endAngle:r(e),innerRadius:i(e),outerRadius:o(e),paddingAngle:a(e),cornerRadius:s(e)})}Nj.propTypes={id:i().string,licenseKey:i().string,data:i().arrayOf(i().arrayOf(i().number)),xAxis:i().shape({data:i().array,label:i().string,scaleType:i().oneOf(["band","point"]),zoom:i().oneOfType([i().bool,i().object])}),yAxis:i().shape({data:i().array,label:i().string,scaleType:i().oneOf(["band","point"]),zoom:i().oneOfType([i().bool,i().object])}),colorScale:i().shape({type:i().oneOf(["continuous","piecewise"]),min:i().number,max:i().number,colors:i().arrayOf(i().string),thresholds:i().arrayOf(i().number)}),width:i().number,height:i().number,margin:i().shape({top:i().number,right:i().number,bottom:i().number,left:i().number}),hideLegend:i().bool,tooltip:i().shape({trigger:i().oneOf(["item","none"])}),highlightScope:i().shape({highlight:i().oneOf(["item","none"]),fade:i().oneOf(["global","none"])}),cellStyle:i().oneOfType([i().oneOf(["rounded"]),i().shape({gap:i().number,borderRadius:i().number,showValue:i().bool,fontSize:i().number,fontWeight:i().number,textColor:i().string})]),slotProps:i().object,highlightedItem:i().object,clickData:i().object,n_clicks:i().number,setProps:i().func};const Gj=["className","classes","color","dataIndex","id","isFaded","isHighlighted","isFocused","onClick","cornerRadius","startAngle","endAngle","innerRadius","outerRadius","paddingAngle","skipAnimation","stroke","skipInteraction"];function Kj(e){return Xb("MuiPieArc",e)}const qj=Zb("MuiPieArc",["root","highlighted","faded","series","focusIndicator"]),Xj=bm("path",{name:"MuiPieArc",slot:"Root",overridesResolver:(e,t)=>t.arc})({transitionProperty:"opacity, fill, filter",transitionDuration:`${_I}ms`,transitionTimingFunction:FI}),Zj=e.forwardRef(function(e,t){const{className:n,classes:r,color:i,dataIndex:o,id:a,isFaded:s,isHighlighted:c,isFocused:u,onClick:d,cornerRadius:p,startAngle:h,endAngle:m,innerRadius:f,outerRadius:g,paddingAngle:y,skipAnimation:v,stroke:b,skipInteraction:x}=e,I=tt(e,Gj),w=xm(),k=b??(w.vars||w).palette.background.paper,S={id:a,dataIndex:o,classes:r,color:i,isFaded:s,isHighlighted:c,isFocused:u},M=(e=>{const{classes:t,id:n,isFaded:r,isHighlighted:i,dataIndex:o}=e;return uI({root:["root",`series-${n}`,`data-index-${o}`,i&&"highlighted",r&&"faded"]},Kj,t)})(S),C=bI({type:"pie",seriesId:a,dataIndex:o},x),P=function(e){const t={startAngle:(e.startAngle+e.endAngle)/2,endAngle:(e.startAngle+e.endAngle)/2,innerRadius:e.innerRadius,outerRadius:e.outerRadius,paddingAngle:e.paddingAngle,cornerRadius:e.cornerRadius};return aw({startAngle:e.startAngle,endAngle:e.endAngle,innerRadius:e.innerRadius,outerRadius:e.outerRadius,paddingAngle:e.paddingAngle,cornerRadius:e.cornerRadius},{createInterpolator:Wj,transformProps:e=>({d:Yj().cornerRadius(e.cornerRadius)({padAngle:e.paddingAngle,innerRadius:e.innerRadius,outerRadius:e.outerRadius,startAngle:e.startAngle,endAngle:e.endAngle}),visibility:e.startAngle===e.endAngle?"hidden":"visible"}),applyProps(e,t){e.setAttribute("d",t.d),e.setAttribute("visibility",t.visibility)},initialProps:t,skip:e.skipAnimation,ref:e.ref})}({cornerRadius:p,startAngle:h,endAngle:m,innerRadius:f,outerRadius:g,paddingAngle:y,skipAnimation:v,ref:t});return(0,O.jsx)(Xj,l({onClick:d,cursor:d?"pointer":"unset",ownerState:S,className:Hh(M.root,n),fill:S.color,opacity:S.isFaded?.3:1,filter:S.isHighlighted?"brightness(120%)":"none",stroke:k,strokeWidth:1,strokeLinejoin:"round","data-highlighted":S.isHighlighted||void 0,"data-faded":S.isFaded||void 0},I,C,P))});function Jj(e,t,n,r){const{faded:i,highlighted:o,paddingAngle:a=0,cornerRadius:s=0}=e,{radius:{inner:c=0,label:u,outer:d}}=t,p=l({additionalRadius:0},r&&i||n&&o||{}),h=Math.max(0,Ql(p.paddingAngle??a)),m=Math.max(0,p.innerRadius??c),f=Math.max(0,p.outerRadius??d+p.additionalRadius);return{paddingAngle:h,innerRadius:m,outerRadius:f,cornerRadius:p.cornerRadius??s,arcLabelRadius:p.arcLabelRadius??u??(m+f)/2}}function Qj(t){const{id:n,data:r,faded:i,highlighted:o}=t,{isFaded:a,isHighlighted:s}=iS(),c=function(){const e=MO();return t=>null!==e&&Us(e,t)}();return e.useMemo(()=>r.map((e,r)=>{const u={seriesId:n,dataIndex:r},d=s(u),p=!d&&a(u),h=c({type:"pie",seriesId:n,dataIndex:r}),m=Jj(t,{radius:{inner:t.innerRadius??0,outer:t.outerRadius,label:t.arcLabelRadius??0,available:0}},d,p),f=l({additionalRadius:0},p&&i||d&&o||{});return l({},e,f,{dataIndex:r,isFaded:p,isHighlighted:d,isFocused:h},m)}),[r,n,s,a,c,t,i,o])}const eL=["slots","slotProps","innerRadius","outerRadius","cornerRadius","paddingAngle","id","highlighted","faded","data","onItemClick","skipAnimation"];function tL(e){const{slots:t,slotProps:n,innerRadius:r=0,outerRadius:i,cornerRadius:o=0,paddingAngle:a=0,id:s,highlighted:c,faded:u={additionalRadius:-5},data:d,onItemClick:p,skipAnimation:h}=e,m=tt(e,eL),f=Qj({innerRadius:r,outerRadius:i,cornerRadius:o,paddingAngle:a,id:s,highlighted:c,faded:u,data:d});if(0===d.length)return null;const g=t?.pieArc??Zj;return(0,O.jsx)("g",l({},m,{children:f.map((e,t)=>(0,O.jsx)(g,l({startAngle:e.startAngle,endAngle:e.endAngle,paddingAngle:e.paddingAngle,innerRadius:e.innerRadius,outerRadius:e.outerRadius,cornerRadius:e.cornerRadius,skipAnimation:h??!1,id:s,color:e.color,dataIndex:t,isFaded:e.isFaded,isHighlighted:e.isHighlighted,isFocused:e.isFocused,onClick:p&&(n=>{p(n,{type:"pie",seriesId:s,dataIndex:t},e)})},n?.pieArc),e.dataIndex))}))}function nL(e,t){const n=Tn(e.startAngle,t.startAngle),r=Tn(e.endAngle,t.endAngle),i=Tn(e.innerRadius,t.innerRadius),o=Tn(e.outerRadius,t.outerRadius),a=Tn(e.paddingAngle,t.paddingAngle),s=Tn(e.cornerRadius,t.cornerRadius);return e=>({startAngle:n(e),endAngle:r(e),innerRadius:i(e),outerRadius:o(e),paddingAngle:a(e),cornerRadius:s(e)})}const rL=["id","classes","color","startAngle","endAngle","paddingAngle","arcLabelRadius","innerRadius","outerRadius","cornerRadius","formattedArcLabel","isHighlighted","isFaded","skipAnimation","hidden"];function iL(e){return Xb("MuiPieArcLabel",e)}const oL=Zb("MuiPieArcLabel",["root","highlighted","faded","animate","series"]),aL=bm("text",{name:"MuiPieArcLabel",slot:"Root"})(({theme:e})=>({fill:(e.vars||e).palette.text.primary,textAnchor:"middle",dominantBaseline:"middle",pointerEvents:"none",animationName:"animate-opacity",animationDuration:"0s",animationTimingFunction:FI,transitionDuration:`${_I}ms`,transitionProperty:"opacity",transitionTimingFunction:FI,[`&.${oL.animate}`]:{animationDuration:`${_I}ms`},"@keyframes animate-opacity":{from:{opacity:0}}})),sL=e.forwardRef(function(e,t){const{id:n,classes:r,color:i,startAngle:o,endAngle:a,paddingAngle:s,arcLabelRadius:c,cornerRadius:u,formattedArcLabel:d,isHighlighted:p,isFaded:h,skipAnimation:m,hidden:f}=e,g=tt(e,rL),y=(e=>{const{classes:t,id:n,isFaded:r,isHighlighted:i,skipAnimation:o}=e;return uI({root:["root",`series-${n}`,i&&"highlighted",r&&"faded",!o&&"animate"]},iL,t)})({id:n,classes:r,color:i,isFaded:h,isHighlighted:p,skipAnimation:m}),v=function(e){const t={startAngle:(e.startAngle+e.endAngle)/2,endAngle:(e.startAngle+e.endAngle)/2,innerRadius:e.arcLabelRadius??e.innerRadius,outerRadius:e.arcLabelRadius??e.outerRadius,paddingAngle:e.paddingAngle,cornerRadius:e.cornerRadius};return aw({startAngle:e.startAngle,endAngle:e.endAngle,innerRadius:e.arcLabelRadius??e.innerRadius,outerRadius:e.arcLabelRadius??e.outerRadius,paddingAngle:e.paddingAngle,cornerRadius:e.cornerRadius},{createInterpolator:nL,transformProps:e=>{const[t,n]=Yj().cornerRadius(e.cornerRadius).centroid({padAngle:e.paddingAngle,startAngle:e.startAngle,endAngle:e.endAngle,innerRadius:e.innerRadius,outerRadius:e.outerRadius});return{x:t,y:n}},applyProps(e,{x:t,y:n}){e.setAttribute("x",t.toString()),e.setAttribute("y",n.toString())},initialProps:t,skip:e.skipAnimation,ref:e.ref})}({cornerRadius:u,startAngle:o,endAngle:a,innerRadius:c,outerRadius:c,paddingAngle:s,skipAnimation:m,ref:t});return(0,O.jsx)(aL,l({className:y.root},g,v,{opacity:f?0:1,children:d}))}),lL=["arcLabel","arcLabelMinAngle","arcLabelRadius","cornerRadius","data","faded","highlighted","id","innerRadius","outerRadius","paddingAngle","skipAnimation","slotProps","slots"],cL=180/Math.PI;function uL(e,t,n){if(!e)return null;if((n.endAngle-n.startAngle)*cL(0,O.jsx)(v,l({startAngle:e.startAngle,endAngle:e.endAngle,paddingAngle:e.paddingAngle,innerRadius:e.innerRadius,outerRadius:e.outerRadius,arcLabelRadius:e.arcLabelRadius,cornerRadius:e.cornerRadius,id:c,color:e.color,isFaded:e.isFaded,isHighlighted:e.isHighlighted,formattedArcLabel:uL(t,n,e),skipAnimation:h??!1},m?.pieArcLabel),e.id??e.dataIndex))}))}function pL(){return ak("pie")}function hL(){return zx().use(gt).pie??{}}function mL(e){return Xb("MuiPieChart",e)}function fL(e){const{skipAnimation:t,slots:n,slotProps:r,onItemClick:i}=e,o=pL(),a=hL(),s=bw(t),l=uI({root:["root"],series:["series"],seriesLabels:["seriesLabels"]},mL,void 0);if(void 0===o)return null;const{series:c,seriesOrder:u}=o;return(0,O.jsxs)("g",{children:[u.map(e=>{const{cornerRadius:t,paddingAngle:o,data:u,highlighted:d,faded:p}=c[e];return(0,O.jsx)("g",{className:l.series,transform:`translate(${a[e].center.x}, ${a[e].center.y})`,"data-series":e,children:(0,O.jsx)(tL,{innerRadius:a[e].radius.inner,outerRadius:a[e].radius.outer,cornerRadius:t,paddingAngle:o,id:e,data:u,skipAnimation:s,highlighted:d,faded:p,onItemClick:i,slots:n,slotProps:r})},e)}),u.map(e=>{const{cornerRadius:t,paddingAngle:i,arcLabel:o,arcLabelMinAngle:u,data:d}=c[e];return(0,O.jsx)("g",{className:l.seriesLabels,transform:`translate(${a[e].center.x}, ${a[e].center.y})`,"data-series":e,children:(0,O.jsx)(dL,{innerRadius:a[e].radius.inner,outerRadius:a[e].radius.outer,arcLabelRadius:a[e].radius.label,cornerRadius:t,paddingAngle:i,id:e,data:d,skipAnimation:s,arcLabel:o,arcLabelMinAngle:u,slots:n,slotProps:r})},e)})]})}Zb("MuiPieChart",["root","series","seriesLabels"]);const gL=["width","height","margin","children","series","colors","dataset","desc","onAxisClick","highlightedAxis","onHighlightedAxisChange","disableVoronoi","voronoiMaxRadius","onItemClick","disableAxisListener","highlightedItem","onHighlightChange","sx","title","xAxis","yAxis","zAxis","rotationAxis","radiusAxis","skipAnimation","seriesConfig","plugins","localeText","slots","slotProps","experimentalFeatures","enableKeyboardNavigation","brushConfig","onHiddenItemsChange","hiddenItems"],yL=(e,t)=>{const n=e,{width:r,height:i,margin:o,children:a,series:s,colors:c,dataset:u,desc:d,onAxisClick:p,highlightedAxis:h,onHighlightedAxisChange:m,disableVoronoi:f,voronoiMaxRadius:g,onItemClick:y,disableAxisListener:v,highlightedItem:b,onHighlightChange:x,sx:I,title:w,xAxis:k,yAxis:S,zAxis:M,rotationAxis:C,radiusAxis:P,skipAnimation:E,seriesConfig:T,plugins:A,localeText:O,slots:j,slotProps:L,experimentalFeatures:R,enableKeyboardNavigation:D,brushConfig:$,onHiddenItemsChange:z,hiddenItems:N}=n,_=l({title:w,desc:d,sx:I,ref:t},tt(n,gL));return{chartDataProviderProps:{margin:o,series:s,colors:c,dataset:u,disableAxisListener:v,highlightedItem:b,onHighlightChange:x,onAxisClick:p,highlightedAxis:h,onHighlightedAxisChange:m,disableVoronoi:f,voronoiMaxRadius:g,onItemClick:y,xAxis:k,yAxis:S,zAxis:M,rotationAxis:C,radiusAxis:P,skipAnimation:E,width:r,height:i,localeText:O,seriesConfig:T,experimentalFeatures:R,enableKeyboardNavigation:D,brushConfig:$,onHiddenItemsChange:z,hiddenItems:N,plugins:A??Px,slots:j,slotProps:L},chartsSurfaceProps:_,children:a}},vL=[Ys,Ws,Zs,Bb,kx],bL=["arcLabelRadius"];function xL(e){const t=xm(),n=MO(),r=hL(),{isHighlighted:i,isFaded:o}=zI(n),a=pL();if(null===n||"pie"!==n.type||!a)return null;const s=a?.series[n.seriesId],{center:c,radius:u}=r[n.seriesId];if(!s||!c||!u)return null;const d=s.data[n.dataIndex],p=tt(Jj(s,r[n.seriesId],i,o),bL);return(0,O.jsx)(Zj,l({transform:`translate(${r[s.id].center.x}, ${r[s.id].center.y})`,startAngle:d.startAngle,endAngle:d.endAngle,color:"transparent",pointerEvents:"none",skipInteraction:!0,skipAnimation:!0,stroke:(t.vars??t).palette.text.primary,id:s.id,className:qj.focusIndicator,dataIndex:n.dataIndex,isFaded:!1,isHighlighted:!1,isFocused:!1,strokeWidth:3},p,e))}const IL=["series","width","height","margin","colors","sx","skipAnimation","hideLegend","children","slots","slotProps","onItemClick","loading","highlightedItem","onHighlightChange","className","showToolbar"],wL=e.forwardRef(function(e,t){const n=Lh({props:e,name:"MuiPieChart"}),{series:r,width:i,height:o,margin:a,colors:s,sx:c,skipAnimation:u,hideLegend:d,children:p,slots:h,slotProps:m,onItemClick:f,loading:g,highlightedItem:y,onHighlightChange:v,className:b,showToolbar:x}=n,I=tt(n,IL),w=ve(a,wt),{chartDataProviderProps:k,chartsSurfaceProps:S}=yL(l({},I,{series:r.map(e=>l({type:"pie"},e)),width:i,height:o,margin:w,colors:s,highlightedItem:y,onHighlightChange:v,className:b,skipAnimation:u,plugins:vL}),t),M=h?.tooltip??LC,C=h?.toolbar;return(0,O.jsx)(SO,l({},k,{children:(0,O.jsxs)(FO,{legendPosition:m?.legend?.position,legendDirection:m?.legend?.direction??"vertical",sx:c,hideLegend:d??!1,children:[x&&C?(0,O.jsx)(C,l({},m?.toolbar)):null,!d&&(0,O.jsx)(XC,{direction:m?.legend?.direction??"vertical",slots:h,slotProps:m}),(0,O.jsxs)(mI,l({},S,{children:[(0,O.jsx)(fL,{slots:h,slotProps:m,onItemClick:f}),(0,O.jsx)(xL,{}),(0,O.jsx)(GO,{loading:g,slots:h,slotProps:m}),p]})),!g&&(0,O.jsx)(M,l({trigger:"item"},m?.tooltip))]})}))});function kL(e){return kL="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kL(e)}function SL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ML(e){for(var t=1;t0)t=a.map(function(e,t){return ML(ML({},e),{},{id:e.id||"series-".concat(t)})});else{var $={data:o};void 0!==u&&($.innerRadius=u),void 0!==d&&($.outerRadius=d),h&&($.paddingAngle=h),f&&($.cornerRadius=f),0!==y&&($.startAngle=y),360!==b&&($.endAngle=b),void 0!==x&&($.cx=x),void 0!==I&&($.cy=I),w&&($.arcLabel=w),k&&($.arcLabelMinAngle=k),E&&($.highlightScope=E),t=[$]}var z={series:t,height:c,skipAnimation:O,onItemClick:function(e,t){if(D){var n,r,i,s,l,c=0;a&&a.length>0?(c=a.findIndex(function(e,n){return(e.id||"series-".concat(n))===t.seriesId}),-1===c&&(c=0),s=((null===(l=a[c])||void 0===l?void 0:l.data)||[])[t.dataIndex]):s=o[t.dataIndex],D({clickData:{id:null===(n=s)||void 0===n?void 0:n.id,seriesId:t.seriesId,seriesIndex:c,dataIndex:t.dataIndex,value:null===(r=s)||void 0===r?void 0:r.value,label:null===(i=s)||void 0===i?void 0:i.label,timestamp:(new Date).toISOString()},n_clicks:(L||0)+1})}},onHighlightChange:function(e){D&&D({highlightedItem:e})}};return s&&(z.width=s),S&&(z.colors=S),C&&(z.hideLegend=C),P&&(z.margin=P),T&&(z.slotProps=ML(ML({},z.slotProps),{},{tooltip:{trigger:T.trigger||"item"}})),void 0!==R&&(z.highlightedItem=R),n().createElement("div",{id:r},n().createElement(wL,z))}PL.propTypes={id:i().string,data:i().arrayOf(i().shape({id:i().oneOfType([i().number,i().string]),value:i().number.isRequired,label:i().string,color:i().string})),series:i().arrayOf(i().shape({id:i().string,data:i().arrayOf(i().shape({id:i().oneOfType([i().number,i().string]),value:i().number.isRequired,label:i().string,color:i().string})).isRequired,innerRadius:i().oneOfType([i().number,i().string]),outerRadius:i().oneOfType([i().number,i().string]),paddingAngle:i().number,cornerRadius:i().number,startAngle:i().number,endAngle:i().number,arcLabel:i().oneOf(["value","label","formattedValue"]),arcLabelMinAngle:i().number,arcLabelRadius:i().number,highlightScope:i().shape({highlight:i().oneOf(["item","none"]),fade:i().oneOf(["global","none"])})})),width:i().number,height:i().number,innerRadius:i().oneOfType([i().number,i().string]),outerRadius:i().oneOfType([i().number,i().string]),paddingAngle:i().number,cornerRadius:i().number,startAngle:i().number,endAngle:i().number,cx:i().oneOfType([i().number,i().string]),cy:i().oneOfType([i().number,i().string]),arcLabel:i().oneOf(["value","label","formattedValue"]),arcLabelMinAngle:i().number,colors:i().arrayOf(i().string),hideLegend:i().bool,margin:i().shape({top:i().number,right:i().number,bottom:i().number,left:i().number}),highlightScope:i().shape({highlight:i().oneOf(["item","none"]),fade:i().oneOf(["global","none"])}),tooltip:i().shape({trigger:i().oneOf(["item","none"])}),skipAnimation:i().bool,clickData:i().object,n_clicks:i().number,highlightedItem:i().shape({seriesId:i().string,dataIndex:i().number}),setProps:i().func};const EL=ae(e=>e.voronoi,e=>e?.isVoronoiEnabled);function TL(e){return Xb("MuiScatter",e)}Zb("MuiScatter",["root"]);const AL=e=>uI({root:["root"]},TL,e),OL=["ownerState"];function jL(e){const{series:t,xScale:n,yScale:r,colorGetter:i,onItemClick:o,classes:a,slots:s,slotProps:c}=e,{instance:u}=$x(),d=zx().use(EL)||t.disableHover,{isFaded:p,isHighlighted:h}=iS(),m=xP(t,n,r,u.isPointInside),f=s?.marker??kP,g=tt(yI({elementType:f,externalSlotProps:c?.marker,additionalProps:{seriesId:t.id,size:t.markerSize},ownerState:{}}),OL),y=AL(a);return(0,O.jsx)("g",{"data-series":t.id,className:y.root,children:m.map(e=>{const n=h(e),r=!n&&p(e);return(0,O.jsx)(f,l({dataIndex:e.dataIndex,color:i(e.dataIndex),isHighlighted:n,isFaded:r,x:e.x,y:e.y,onClick:o&&(n=>o(n,{type:"scatter",seriesId:t.id,dataIndex:e.dataIndex})),"data-highlighted":n||void 0,"data-faded":r||void 0},d?void 0:function(e,t){return{onPointerEnter:function(){t&&(e.setLastUpdateSource("pointer"),e.setTooltipItem(t),e.setHighlight("sankey"===t.type?t:{seriesId:t.seriesId,dataIndex:t.dataIndex}))},onPointerLeave:function(){t&&(e.removeTooltipItem(t),e.clearHighlight())},onPointerDown:vI}}(u,e),g),e.id??e.dataIndex)})})}const LL=.01;function RL(e,t,n){return`M${e-n} ${t} a${n} ${n} 0 1 1 0 ${LL}`}function DL(t){const{series:n,xScale:r,yScale:i,color:o,colorGetter:a,markerSize:s}=t,l=function(e,t,n,r,i,o){const{instance:a}=$x(),s=ck(n),l=ck(r),c=new Map,u=new Map;for(let n=0;n=1e3&&(rO(c,m,f.join("")),u.delete(m))}for(const[e,t]of u.entries())t.length>0&&rO(c,e,t.join(""));return c}(n.data,s,r,i,o,a),c=[];let u=0;for(const[e,t]of l.entries())for(const n of t)c.push((0,O.jsx)("path",{fill:e,d:n},u)),u+=1;return(0,O.jsx)(e.Fragment,{children:c})}const $L=e.memo(DL),zL=bm("g",{slot:"internal",shouldForwardProp:void 0})({'&[data-faded="true"]':{opacity:.3},"& path":{pointerEvents:"none"}});function NL(t){const{series:n,xScale:r,yScale:i,color:o,colorGetter:a,classes:s}=t,{store:l}=$x(),c=l.use(jI,n.id),u=l.use(LI,n.id),d=l.use(DI,n.id),p=l.use(RI,n.id),h=n.markerSize*(c?1.2:1),m=AL(s),f=[];if(null!=d){const e=n.data[d],t=ck(r),s=ck(i);f.push((0,O.jsx)("path",{fill:a?a(d):o,"data-highlighted":!0,d:RL(t(e.x),s(e.y),1.2*h)},`highlighted-${n.id}`))}if(null!=p){const e=n.data[p],t=ck(r),s=ck(i);f.push((0,O.jsx)("path",{fill:a?a(p):o,d:RL(t(e.x),s(e.y),h)},`unfaded-${n.id}`))}return(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(zL,{className:m.root,"data-series":n.id,"data-faded":u||void 0,"data-highlighted":c||void 0,children:(0,O.jsx)($L,{series:n,xScale:r,yScale:i,color:o,colorGetter:a,markerSize:h})}),f]})}function _L(t){const{slots:n,slotProps:r,onItemClick:i,renderer:o}=t,a=IP(),{xAxis:s,xAxisIds:c}=_x(),{yAxis:u,yAxisIds:d}=Fx(),{zAxis:p,zAxisIds:h}=Kx();if(void 0===a)return null;const{series:m,seriesOrder:f}=a,g=c[0],y=d[0],v=h[0],b="svg-batch"===o?NL:jL,x=n?.scatter??b;return(0,O.jsx)(e.Fragment,{children:f.map(e=>{const{id:t,xAxisId:o,yAxisId:a,zAxisId:c,color:d}=m[e],h=Dl.colorProcessor(m[e],s[o??g],u[a??y],p[c??v]),f=s[o??g].scale,b=u[a??y].scale;return(0,O.jsx)(x,l({xScale:f,yScale:b,color:d,colorGetter:h,series:m[e],onItemClick:i,slots:n,slotProps:r},r?.scatter),t)})})}const FL=[Xs,Mb,Ys,Ws,Bs,Zs,Bb,Cx,kx],HL=["xAxis","yAxis","zAxis","series","axisHighlight","voronoiMaxRadius","disableVoronoi","hideLegend","width","height","margin","colors","sx","grid","onItemClick","children","slots","slotProps","loading","highlightedItem","onHighlightChange","className","showToolbar","renderer","brushConfig"];function BL(e){const t=xm(),n=MO(),r=IP(),{xAxis:i,xAxisIds:o}=_x(),{yAxis:a,yAxisIds:s}=Fx();if(null===n||"scatter"!==n.type||!r)return null;const c=r?.series[n.seriesId],u=c.xAxisId??o[0],d=c.yAxisId??s[0],p=ck(i[u].scale),h=ck(a[d].scale),m=c.data[n.dataIndex],f=p(m.x),g=h(m.y),y=c.markerSize+3;return(0,O.jsx)("rect",l({fill:"none",stroke:(t.vars??t).palette.text.primary,strokeWidth:2,x:f-y,y:g-y,width:2*y,height:2*y,rx:3,ry:3},e))}const VL=e.forwardRef(function(t,n){const r=Lh({props:t,name:"MuiScatterChart"}),{chartsWrapperProps:i,chartContainerProps:o,chartsAxisProps:a,gridProps:s,scatterPlotProps:c,overlayProps:u,legendProps:d,axisHighlightProps:p,children:h}=(t=>{const{xAxis:n,yAxis:r,zAxis:i,series:o,axisHighlight:a,voronoiMaxRadius:s,disableVoronoi:c,width:u,height:d,margin:p,colors:h,sx:m,grid:f,onItemClick:g,children:y,slots:v,slotProps:b,loading:x,highlightedItem:I,onHighlightChange:w,className:k,renderer:S,brushConfig:M}=t,C=tt(t,HL),P=e.useMemo(()=>o.map(e=>l({type:"scatter"},e)),[o]),E=!0!==c||"svg-batch"===S,T=l({},C,{series:P,width:u,height:d,margin:p,colors:h,xAxis:n,yAxis:r,zAxis:i,highlightedItem:I,onHighlightChange:w,disableVoronoi:c,voronoiMaxRadius:s,onItemClick:E?g:void 0,className:k,plugins:FL,slots:v,slotProps:b,brushConfig:M}),A={slots:v,slotProps:b},O={vertical:f?.vertical,horizontal:f?.horizontal},j={onItemClick:E?void 0:g,slots:v,slotProps:b,renderer:S},L={loading:x,slots:v,slotProps:b},R={slots:v,slotProps:b},D=l({y:"none",x:"none"},a);return{chartsWrapperProps:{sx:m,legendPosition:t.slotProps?.legend?.position,legendDirection:t.slotProps?.legend?.direction,hideLegend:t.hideLegend??!1},chartContainerProps:T,chartsAxisProps:A,gridProps:O,scatterPlotProps:j,overlayProps:L,legendProps:R,axisHighlightProps:D,children:y}})(r),{chartDataProviderProps:m,chartsSurfaceProps:f}=yL(o,n),g=r.slots?.tooltip??LC,y=r.slots?.toolbar;return(0,O.jsx)(SO,l({},m,{children:(0,O.jsxs)(FO,l({},i,{children:[r.showToolbar&&y?(0,O.jsx)(y,l({},r.slotProps?.toolbar)):null,!r.hideLegend&&(0,O.jsx)(XC,l({},d)),(0,O.jsxs)(mI,l({},f,{children:[(0,O.jsx)($O,l({},a)),(0,O.jsx)(FM,l({},s)),(0,O.jsx)("g",{"data-drawing-container":!0,children:(0,O.jsx)(_L,l({},c))}),(0,O.jsx)(GO,l({},u)),(0,O.jsx)(_C,l({},p)),(0,O.jsx)(BL,{}),h]})),!r.loading&&(0,O.jsx)(g,l({trigger:"item"},r.slotProps?.tooltip))]}))}))});function UL(e){return UL="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},UL(e)}function YL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function WL(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function tR(e,t){if(e){if("string"==typeof e)return nR(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nR(e,t):void 0}}function nR(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ns+c||a.yl+u)){var p,h;try{var m=i.invert(a.x);p=m instanceof Date?m.getTime():m,h=o.invert(a.y)}catch(e){return}if(null!=p&&null!=h){var f={x:"number"==typeof p?Math.round(100*p)/100:p,y:"number"==typeof h?Math.round(100*h)/100:h},g="".concat(f.x,"|").concat(f.y);g!==d.current&&(d.current=g,r({crosshairPosition:f}))}}}}},onMouseLeave:function(){null!==d.current&&(d.current=null,null==r||r({crosshairPosition:null}))},onContextMenu:function(e){if(r&&null!=i&&i.invert&&null!=o&&o.invert){var t=e.currentTarget.ownerSVGElement||e.currentTarget.closest("svg");if(t){var n=t.createSVGPoint();n.x=e.clientX,n.y=e.clientY;var a=n.matrixTransform(t.getScreenCTM().inverse());if(!(a.xs+c||a.yl+u)){var d,p;try{var h=i.invert(a.x);d=h instanceof Date?h.getTime():h,p=o.invert(a.y)}catch(e){return}e.preventDefault(),r({crosshairClick:{x:"number"==typeof d?Math.round(100*d)/100:d,y:"number"==typeof p?Math.round(100*p)/100:p,button:"right",timestamp:(new Date).toISOString()}})}}}}})}var aR=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],sR=function(e){return e<10?"0"+e:""+e};function lR(e){var t=e.scatterSeries,r=e.proximity,i=MC();if(!i||0===i.length)return null;var o=i[0],a=o.axisValue,s=o.axisFormattedValue,l=o.seriesItems,c=s;a instanceof Date?c=a.toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}):"number"==typeof a&&a>1e12&&(c=new Date(a).toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}));var u=new Set((t||[]).map(function(e){return e.id})),d=(l||[]).filter(function(e){return!u.has(e.seriesId)}),p=[];if(t&&null!=a){var h,m=a instanceof Date?a.getTime():Number(a),f=eR(t);try{for(f.s();!(h=f.n()).done;){var g=h.value;if(g.data){var y,v=eR(g.data);try{for(v.s();!(y=v.n()).done;){var b=y.value;if(Math.abs(b.x-m)<=r){var x=b.y;p.push({seriesId:g.id,color:g.color||"#666",formattedLabel:g.label||g.id,formattedValue:"number"==typeof x?x.toLocaleString(void 0,{maximumFractionDigits:2}):String(x)})}}}catch(e){v.e(e)}finally{v.f()}}}}catch(e){f.e(e)}finally{f.f()}}var I=[].concat(function(e){return function(e){if(Array.isArray(e))return nR(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||tR(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(d),p);if(0===I.length)return null;var w={display:"flex",alignItems:"center",gap:6,padding:"2px 0"},k=function(e){return{display:"inline-block",width:10,height:10,borderRadius:"50%",backgroundColor:e,flexShrink:0}};return n().createElement("div",{style:{backgroundColor:"var(--mantine-color-body, white)",border:"1px solid var(--mantine-color-default-border, #e0e0e0)",borderRadius:4,padding:"8px 12px",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",fontSize:13,color:"var(--mantine-color-text, inherit)"}},n().createElement("div",{style:{marginBottom:4,fontWeight:500}},c),I.map(function(e,t){return n().createElement("div",{key:"".concat(e.seriesId,"-").concat(t),style:w},n().createElement("span",{style:k(e.color)}),n().createElement("span",null,e.formattedLabel||e.seriesId,":"),n().createElement("span",{style:{fontWeight:500}},e.formattedValue))}))}function cR(e){var t=e.dataIndex,r=(e.seriesConfig,e.scatterSeries),i=e.proximity,o=uk(),a=Nx(),s=Hx(),l=UM();if(null==t||!a)return null;var c=null==s?void 0:s.data;if(!c||t<0||t>=c.length)return null;var u,d,p=c[t];try{u=o(p)}catch(e){return null}if(null==u||isNaN(u))return null;if(p instanceof Date)d=p.toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"});else if("number"==typeof p&&p>1e12)d=new Date(p).toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"});else if(null!=s&&s.valueFormatter)try{d=s.valueFormatter(p,{location:"tooltip"})}catch(e){d=String(p)}else d=String(p);var h=[],m=l.line;if(m&&m.seriesOrder.forEach(function(e){var n,r=m.series[e];if(r){var i=null===(n=r.data)||void 0===n?void 0:n[t];null!=i&&h.push({seriesId:e,color:r.color||"#666",formattedLabel:r.label||e,formattedValue:"number"==typeof i?i.toLocaleString(void 0,{maximumFractionDigits:2}):String(i)})}}),new Set((r||[]).map(function(e){return e.id})),r&&null!=p){var f,g=p instanceof Date?p.getTime():Number(p),y=eR(r);try{for(y.s();!(f=y.n()).done;){var v=f.value;if(v.data){var b,x=eR(v.data);try{for(x.s();!(b=x.n()).done;){var I=b.value;Math.abs(I.x-g)<=i&&h.push({seriesId:v.id,color:v.color||"#666",formattedLabel:v.label||v.id,formattedValue:"number"==typeof I.y?I.y.toLocaleString(void 0,{maximumFractionDigits:2}):String(I.y)})}}catch(e){x.e(e)}finally{x.f()}}}}catch(e){y.e(e)}finally{y.f()}}if(0===h.length)return null;var w=a.left+u,k=a.left+a.width/2,S=a.left+u>k,M={display:"flex",alignItems:"center",gap:6,padding:"2px 0"},C=function(e){return{display:"inline-block",width:10,height:10,borderRadius:"50%",backgroundColor:e,flexShrink:0}};return n().createElement("div",{style:{position:"absolute",top:a.top+8,left:S?void 0:w+12,right:S?"calc(100% - ".concat(w-12,"px)"):void 0,backgroundColor:"var(--mantine-color-body, white)",border:"1px solid var(--mantine-color-default-border, #e0e0e0)",borderRadius:4,padding:"8px 12px",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",fontSize:13,zIndex:1e3,pointerEvents:"none",whiteSpace:"nowrap",color:"var(--mantine-color-text, inherit)"}},n().createElement("div",{style:{marginBottom:4,fontWeight:500}},d),h.map(function(e,t){return n().createElement("div",{key:"".concat(e.seriesId,"-").concat(t),style:M},n().createElement("span",{style:C(e.color)}),n().createElement("span",null,e.formattedLabel,":"),n().createElement("span",{style:{fontWeight:500}},e.formattedValue))}))}function uR(e){var t=e.forecast,r=e.color,i=void 0===r?"#ff9800":r,o=e.opacity,a=void 0===o?.15:o,s=e.yAxisId,l=uk(),c=dk(s);if(!t||0===t.length)return null;for(var u=[],d=0;d1e10?new Date(p.x):p.x),m=c(p.y),f=c(null!=p.upper?p.upper:p.y),g=c(null!=p.lower?p.lower:p.y);null==h||null==m||isNaN(h)||isNaN(m)||u.push({x:h,y:m,yUp:isNaN(f)?m:f,yLo:isNaN(g)?m:g})}if(u.length<2)return null;for(var y="M ".concat(u[0].x," ").concat(u[0].y),v=1;v=0;I--)b+=" L ".concat(u[I].x," ").concat(u[I].yLo);return b+=" Z",n().createElement("g",null,n().createElement("path",{d:b,fill:i,fillOpacity:a}),n().createElement("path",{d:y,stroke:i,strokeWidth:2,strokeDasharray:"6 4",fill:"none"}))}function dR(t){var r,i,o=t.id,a=t.licenseKey,l=t.series,c=void 0===l?[]:l,u=t.xAxis,d=t.yAxis,p=t.zAxis,h=t.dataset,m=t.height,f=void 0===m?400:m,g=t.width,y=t.margin,v=t.grid,b=t.colors,x=t.voronoiMaxRadius,I=t.disableVoronoi,w=void 0!==I&&I,k=t.axisHighlight,S=t.tooltip,M=t.hideLegend,C=void 0!==M&&M,P=t.skipAnimation,E=void 0!==P&&P,T=(t.loading,t.slotProps,t.referenceLines),A=t.initialZoom,O=t.showToolbar,j=void 0!==O&&O,L=t.showSlider,R=void 0!==L&&L,D=t.zoomInteractionConfig,$=t.highlightedAxis,z=t.highlightedItem,N=t.tooltipItem,_=t.syncedTooltipIndex,F=t.forecast,H=t.forecastColor,B=void 0===H?"#ff9800":H,V=t.forecastOpacity,U=void 0===V?.15:V,Y=t.enableCrosshair,W=void 0!==Y&&Y,G=(t.crosshairPosition,t.crosshairClick,t.clickData,t.n_clicks),K=void 0===G?0:G,q=(t.zoomData,t.setProps);a&&!iR&&(s.setLicenseKey(a),iR=!0);var X=(0,e.useId)(),Z="".concat(X,"-clip"),J=QL((0,e.useState)(0),2),Q=J[0],ee=J[1],te=(0,e.useRef)(JSON.stringify(A));(0,e.useEffect)(function(){var e=JSON.stringify(A);e!==te.current&&(te.current=e,ee(function(e){return e+1}))},[A]);var ne=(0,e.useRef)(JSON.stringify(null!=$?$:[])),re=QL((0,e.useState)(function(){return $&&Array.isArray($)?$:[]}),2),ie=re[0],oe=re[1];(0,e.useEffect)(function(){var e=JSON.stringify(null!=$?$:[]);e!==ne.current&&(ne.current=e,oe(null!=$?$:[]))},[$]);var ae=QL((0,e.useState)(z||null),2),se=ae[0],le=ae[1],ce=(0,e.useRef)(JSON.stringify(z));(0,e.useEffect)(function(){var e=JSON.stringify(z);e!==ce.current&&(ce.current=e,le(z||null))},[z]);var ue=(0,e.useRef)(JSON.stringify(null!=N?N:null)),de=QL((0,e.useState)(function(){return null!=N?N:null}),2),pe=de[0],he=de[1];(0,e.useEffect)(function(){var e=JSON.stringify(null!=N?N:null);e!==ue.current&&(ue.current=e,he(null!=N?N:null))},[N]);var me=(0,e.useMemo)(function(){return c&&0!==c.length?c.map(function(e,t){return ZL(ZL({},e),{},{id:e.id||"series-".concat(t)})}):[]},[c]),fe=(0,e.useMemo)(function(){return me.some(function(e){return"scatter"===e.type})},[me]),ge=(0,e.useMemo)(function(){return me.some(function(e){return"line"===e.type})},[me]),ye=(0,e.useMemo)(function(){return me.some(function(e){return"line"===e.type&&e.area})},[me]),ve=(0,e.useMemo)(function(){return me.some(function(e){return"line"===e.type&&!1!==e.showMark})},[me]),be=(0,e.useMemo)(function(){return me.filter(function(e){return"scatter"===e.type})},[me]),xe=function(e,t){q&&t&&q({clickData:{type:"line",seriesId:t.seriesId,dataIndex:t.dataIndex,timestamp:(new Date).toISOString()},n_clicks:(K||0)+1})},Ie=(0,e.useMemo)(function(){var e=function(e){return!!e&&e.some(function(e){var t=e.zoom;return t&&"object"===rR(t)&&t.slider&&t.slider.enabled})};return e(u)||e(d)},[u,d]),we=(0,e.useMemo)(function(){if(u)return u.map(function(e){var t=ZL({},e);if(e.dateFormat)t.valueFormatter=function(e,t){var n=t||e;return function(t,r){return function(e,t){var n=e instanceof Date?e:new Date(e);return t.replace(/YYYY|YY|MMM|MM|dd|HH|mm|M|d/g,function(e){switch(e){case"YYYY":return n.getFullYear();case"YY":return String(n.getFullYear()).slice(-2);case"MMM":return aR[n.getMonth()];case"MM":return sR(n.getMonth()+1);case"M":return n.getMonth()+1;case"dd":return sR(n.getDate());case"d":return n.getDate();case"HH":return sR(n.getHours());case"mm":return sR(n.getMinutes());default:return e}})}(t,r&&"tick"===r.location?n:e)}}(e.dateFormat,e.dateTickFormat),delete t.dateFormat,delete t.dateTickFormat;else if(e.valueFormatter&&"function"!=typeof e.valueFormatter){var n=function(e){if("function"==typeof e)return e;if(e&&"object"===rR(e)&&"string"==typeof e.function){var t=window.dashMuiChartsFunctions;if(t&&"function"==typeof t[e.function]){var n=t[e.function],r=e.options||{};return function(){for(var e=arguments.length,t=new Array(e),i=0;i0&&s0&&(Ae.initialZoom=A),Ae.highlightedAxis=ie,Ae.onHighlightedAxisChange=function(e){var t=null!=e?e:[];oe(t),ne.current=JSON.stringify(t),q&&q({highlightedAxis:t})},Ae.highlightedItem=se,Ae.onHighlightChange=function(e){le(e),ce.current=JSON.stringify(e),q&&q({highlightedItem:e})},Ae.tooltipItem=pe,Ae.onTooltipItemChange=function(e){var t=null!=e?e:null;he(t),ue.current=JSON.stringify(t),q&&q({tooltipItem:t})},n().createElement("div",{id:o,style:{position:"relative"}},n().createElement(Rx,qL({key:Q},Ae),j&&n().createElement(kA,null),!C&&n().createElement("div",{style:{display:"flex",justifyContent:"center",marginBottom:8}},n().createElement(XC,null)),n().createElement(mI,null,v&&n().createElement(FM,{horizontal:v.horizontal,vertical:v.vertical}),n().createElement(ZC,{id:Z}),n().createElement("g",{clipPath:"url(#".concat(Z,")")},ye&&n().createElement(gk,{skipAnimation:E}),ge&&n().createElement(Ek,{onItemClick:xe,skipAnimation:E}),fe&&n().createElement(_L,{onItemClick:function(e,t){if(q&&t){var n,r=me.find(function(e){return e.id===t.seriesId}),i=null==r||null===(n=r.data)||void 0===n?void 0:n[t.dataIndex];q({clickData:{type:"scatter",seriesId:t.seriesId,dataIndex:t.dataIndex,x:null==i?void 0:i.x,y:null==i?void 0:i.y,timestamp:(new Date).toISOString()},n_clicks:(K||0)+1})}}})),ve&&n().createElement(hS,{onItemClick:xe,skipAnimation:E}),Ee.map(function(e,t){return n().createElement(gM,qL({key:e.axisId||"x-".concat(t),axisId:e.axisId},e.renderProps))}),Te.map(function(e,t){return n().createElement(OM,qL({key:e.axisId||"y-".concat(t),axisId:e.axisId},e.renderProps))}),n().createElement(_C,{x:null!==(r=null==k?void 0:k.x)&&void 0!==r?r:ge?"line":"none",y:null!==(i=null==k?void 0:k.y)&&void 0!==i?i:"none"}),F&&F.length>0&&n().createElement(uR,{forecast:F,color:B,opacity:U}),T&&T.map(function(e,t){return n().createElement(VT,qL({key:"ref-".concat(t)},e))}),W&&n().createElement(oR,{setProps:q}),(R||Ie)&&n().createElement(DT,null)),"none"!==Se&&(Me?n().createElement(jC,{trigger:"axis"},n().createElement(lR,{scatterSeries:be,proximity:ke})):n().createElement(LC,{trigger:Se})),null!=_&&_>=0&&n().createElement(cR,{dataIndex:_,seriesConfig:me,scatterSeries:be,proximity:ke})))}function pR(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function hR(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n>>15,1|t);return(((e=e+Math.imul(e^e>>>7,61|e)^e)^e>>>14)>>>0)/4294967296},nextGaussian:function(){var e=this.next()||1e-4,t=this.next();return Math.sqrt(-2*Math.log(e))*Math.cos(2*Math.PI*t)}}}function wR(e){var t=e.candles,r=e.upColor,i=e.downColor,o=e.totalSlots,a=Nx().width,s=uk(),l=dk();if(!t||0===t.length)return null;var c=a/Math.max(o,1),u=Math.max(1,.6*c),d=Math.max(.5,.06*c);return n().createElement("g",null,t.map(function(e,t){var o=s(t);if(void 0===o)return null;var a=e.close>=e.open?r:i,c=l(e.high),p=l(e.low),h=l(e.open),m=l(e.close);if([c,p,h,m].some(function(e){return void 0===e}))return null;var f=Math.min(h,m),g=Math.max(1,Math.abs(h-m));return n().createElement("g",{key:"candle-".concat(t)},n().createElement("line",{x1:o,y1:c,x2:o,y2:p,stroke:a,strokeWidth:d}),n().createElement("rect",{x:o-u/2,y:f,width:u,height:g,fill:a,stroke:a,strokeWidth:.5}))}))}function kR(e){var t=e.candles,r=e.upColor,i=e.downColor,o=e.totalSlots,a=e.volumeHeightPct,s=Nx(),l=s.top,c=s.height,u=s.width,d=uk();if(!t||0===t.length)return null;var p=Math.max.apply(Math,fR(t.map(function(e){return e.volume})).concat([1])),h=c*(a/100),m=l+c-h,f=u/Math.max(o,1),g=Math.max(1,.55*f);return n().createElement("g",{opacity:.35},t.map(function(e,t){var o=d(t);if(void 0===o)return null;var a=e.close>=e.open,s=e.volume/p*h;return n().createElement("rect",{key:"vol-".concat(t),x:o-g/2,y:m+h-s,width:g,height:s,fill:a?r:i})}))}function SR(e){var t=e.candles,r=e.labelInterval,i=uk(),o=dk();if(!t||0===t.length)return null;var a=r||Math.max(1,Math.floor(t.length/8));return n().createElement("g",null,t.map(function(e,r){if(r%a!==0&&r!==t.length-1)return null;var s=i(r),l=o(e.close);if(void 0===s||void 0===l)return null;var c=e.close>=e.open?"#4caf50":"#f44336";return n().createElement("g",{key:"label-".concat(r)},n().createElement("circle",{cx:s,cy:l,r:3,fill:c}),n().createElement("text",{x:s,y:l-10,textAnchor:"middle",fill:c,fontSize:10,fontWeight:"bold"},e.close.toFixed(1)))}))}function MR(e){var t=e.forecastData,r=e.upperBound,i=e.lowerBound,o=e.startIndex,a=e.color,s=e.opacity,l=uk(),c=dk();if(!t||0===t.length)return null;for(var u=[],d=0;d=0;x--)v+=" L ".concat(u[x].x," ").concat(u[x].yLo);return v+=" Z",n().createElement("g",null,n().createElement("path",{d:v,fill:a,fillOpacity:s}),n().createElement("path",{d:g,stroke:a,strokeWidth:2,strokeDasharray:"6 4",fill:"none"}))}function CR(e){var t=e.alerts,r=e.alertUpColor,i=e.alertDownColor,o=e.formatterFn,a=uk(),s=dk();return t&&0!==t.length?n().createElement("g",null,t.map(function(e,t){var l=a(e.displayIndex),c=s(e.price);if(void 0===l||void 0===c)return null;var u="up"===e.type,d=u?r:i,p=o?o(e,{index:t}):"".concat(u?"+":"").concat(e.pctChange.toFixed(1),"%"),h=7*p.length+10;return n().createElement("g",{key:"alert-".concat(t)},n().createElement("rect",{x:l-h/2,y:u?c-32:c+10,width:h,height:18,rx:4,fill:d}),n().createElement("text",{x:l,y:u?c-19:c+23,textAnchor:"middle",fill:"white",fontSize:10,fontWeight:"bold"},p),n().createElement("circle",{cx:l,cy:c,r:4,fill:d,stroke:"white",strokeWidth:1.5}))})):null}function PR(e){var t=e.startIndex,r=e.endIndex,i=Nx(),o=i.top,a=i.bottom,s=i.height,l=uk(),c=l(t),u=l(r);return void 0===c||void 0===u?null:n().createElement("rect",{x:c,y:0,width:u-c,height:o+s+a,fill:"#9e9e9e",opacity:.08})}function ER(t){var r,i,o=t.id,a=t.licenseKey,l=t.height,c=void 0===l?500:l,u=t.width,d=t.margin,p=t.windowSize,h=void 0===p?60:p,m=t.forecastSize,f=void 0===m?15:m,g=t.running,y=void 0!==g&&g,v=t.intervalMs,b=void 0===v?300:v,x=t.seed,I=void 0===x?42:x,w=t.resetTrigger,k=void 0===w?0:w,S=t.initialPrice,M=void 0===S?100:S,C=t.volatility,P=void 0===C?.02:C,E=t.drift,T=void 0===E?.001:E,A=t.forecastVolatility,O=void 0===A?1.5:A,j=t.alertProbability,L=void 0===j?.08:j,R=t.alertThresholdPct,D=void 0===R?2:R,$=t.alertLookback,z=void 0===$?5:$,N=t.alertMinDistance,_=void 0===N?10:N,F=t.maxVisibleAlerts,H=void 0===F?6:F,B=t.alertFilter,V=t.alertFormatter,U=t.candleUpColor,Y=void 0===U?"#4caf50":U,W=t.candleDownColor,G=void 0===W?"#f44336":W,K=t.forecastColor,q=void 0===K?"#ff9800":K,X=t.alertUpColor,Z=void 0===X?"#4caf50":X,J=t.alertDownColor,Q=void 0===J?"#f44336":J,ee=t.uncertaintyOpacity,te=void 0===ee?.15:ee,ne=t.showVolume,re=void 0===ne||ne,ie=t.showLabels,oe=void 0!==ie&&ie,ae=t.volumeHeightPct,se=void 0===ae?20:ae,le=t.showGrid,ce=void 0===le||le,ue=t.showSlider,de=void 0!==ue&&ue,pe=(t.hideLegend,t.grid),he=t.xAxisLabel,me=void 0===he?"Tick":he,fe=t.yAxisLabel,ge=void 0===fe?"Price":fe,ye=(t.currentPrice,t.tickCount,t.alertHistory),ve=(t.zoomData,t.setProps);a&&!bR&&(s.setLicenseKey(a),bR=!0);var be=(0,e.useId)(),xe="".concat(be,"-clip"),Ie=(0,e.useRef)(IR(I)),we=(0,e.useRef)([]),ke=(0,e.useRef)([]),Se=(0,e.useRef)(null),Me=(0,e.useRef)(k);(0,e.useEffect)(function(){0===we.current.length&&(we.current=[{open:M,high:1.005*M,low:.995*M,close:M,volume:500}])},[M]);var Ce=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return s}}(e,t)||gR(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}((0,e.useState)({candles:[],forecast:[],upperBound:[],lowerBound:[],alerts:[],forecastStartIndex:0}),2),Pe=Ce[0],Ee=Ce[1],Te=(0,e.useCallback)(function(e,t,n){for(var r=[],i=[],o=[],a=e,s=0,l=0;l0?c[c.length-1].close:M,t=Ie.current,n=P,r=T,i=e,o=t.nextGaussian()*n,a=t.nextGaussian()*n,s=t.nextGaussian()*n,l=Math.max(.01,i*Math.exp(r+o)),{open:i,high:Math.max(i,l)*(1+.4*Math.abs(a)),low:Math.min(i,l)*(1-.4*Math.abs(s)),close:l,volume:Math.max(50,Math.round(800+400*t.nextGaussian()+3e3*Math.abs(o)))});c.push(u);var d=c.length-1-z;if(d>=z){var p=c[d],m=xR(B),g=null;if(m){var y=m(c,d,{lookback:z});!0===y?g=p.close>=p.open?"up":"down":"up"!==y&&"down"!==y||(g=y)}else{for(var v=Math.max(0,d-z),b=Math.min(c.length-1,d+z),x=!0,w=!0,k=v;k<=b&&(k===d||(c[k].high>p.high&&(x=!1),c[k].low=p.open?"up":"down":x?g="up":w&&(g="down")}var S=ke.current.length>0?ke.current[ke.current.length-1].tick:-1/0;if(g&&d-S>=_){var C=(p.close-p.open)/p.open*100;ke.current.push({tick:d,price:"up"===g?p.high:p.low,type:g,pctChange:C,message:"".concat("up"===g?"+":"").concat(C.toFixed(2),"%")})}}var E=Math.max(0,c.length-h),A=c.slice(E),O=Te(u.close,IR(I+c.length),f),j=O.forecast,L=O.upper,R=O.lower,D=ke.current.filter(function(e){return e.tick>=E&&e.tickH&&(D.sort(function(e,t){return Math.abs(t.pctChange)-Math.abs(e.pctChange)}),(D=D.slice(0,H)).sort(function(e,t){return e.displayIndex-t.displayIndex})),Ee({candles:A,forecast:j,upperBound:L,lowerBound:R,alerts:D,forecastStartIndex:A.length-1}),ve){var $={currentPrice:Math.round(100*u.close)/100,tickCount:c.length};ke.current.length!==(ye||[]).length&&($.alertHistory=ke.current.slice(-50)),ve($)}},b),function(){Se.current&&(clearInterval(Se.current),Se.current=null)};Se.current&&(clearInterval(Se.current),Se.current=null)},[y,b,P,T,Te,h,f,L,D,z,_,H,B,I,M,ve]);var Ae=(0,e.useMemo)(function(){var e=Pe.candles,t=e.length+Pe.forecast.length,n=Array.from({length:t},function(e,t){return t}),r=[].concat(fR(e.map(function(e){return e.close})),fR(Array(Pe.forecast.length).fill(null))),i=[].concat(fR(e.flatMap(function(e){return[e.high,e.low]})),fR(Pe.forecast),fR(Pe.upperBound),fR(Pe.lowerBound)).filter(function(e){return null!=e&&isFinite(e)}),o=0,a=200;if(i.length>0){o=Math.min.apply(Math,fR(i));var s=.12*((a=Math.max.apply(Math,fR(i)))-o)||5;o-=s,a+=s}return{series:[{type:"line",id:"close",label:"Close",data:r,color:"#9e9e9e",showMark:!1,connectNulls:!1}],xAxisData:n,yDomain:{min:o,max:a},forecastStartIdx:e.length-1}},[Pe]),Oe=Ae.series,je=Ae.xAxisData,Le=Ae.yDomain,Re=Ae.forecastStartIdx,De={id:"x-axis",data:je,scaleType:"linear",tickLabelStyle:{fontSize:11}};de&&(De.zoom={minSpan:10,panning:!0,filterMode:"discard",slider:{enabled:!0,preview:!0}});var $e={height:c,series:Oe,skipAnimation:!0,xAxis:[De],yAxis:[{id:"y-axis",label:ge,width:65,min:Le.min,max:Le.max,tickLabelStyle:{fontSize:11}}],onZoomChange:function(e){ve&&ve({zoomData:e})}};u&&($e.width=u),d&&($e.margin=d);var ze=je.length,Ne=Pe.candles,_e=Ne.length>0?Ne[Ne.length-1].close:M;return n().createElement("div",{id:o},n().createElement(Rx,$e,n().createElement(mI,null,(ce||pe)&&n().createElement(FM,{horizontal:null===(r=null==pe?void 0:pe.horizontal)||void 0===r||r,vertical:null!==(i=null==pe?void 0:pe.vertical)&&void 0!==i&&i}),n().createElement(ZC,{id:xe}),n().createElement("g",{clipPath:"url(#".concat(xe,")")},Pe.forecast.length>0&&n().createElement(PR,{startIndex:Re,endIndex:je.length-1}),re&&n().createElement(kR,{candles:Ne,upColor:Y,downColor:G,totalSlots:ze,volumeHeightPct:se}),n().createElement(wR,{candles:Ne,upColor:Y,downColor:G,totalSlots:ze}),Pe.forecast.length>0&&n().createElement(MR,{forecastData:[_e].concat(fR(Pe.forecast)),upperBound:[_e].concat(fR(Pe.upperBound)),lowerBound:[_e].concat(fR(Pe.lowerBound)),startIndex:Re,color:q,opacity:te})),oe&&n().createElement(SR,{candles:Ne}),n().createElement(CR,{alerts:Pe.alerts,alertUpColor:Z,alertDownColor:Q,formatterFn:xR(V)}),n().createElement(gM,{axisId:"x-axis",label:me}),n().createElement(OM,{axisId:"y-axis"}),n().createElement(_C,{x:"line",y:"none"}),n().createElement(VT,{y:M,label:"Open",lineStyle:{stroke:"#9e9e9e",strokeDasharray:"4 4",strokeWidth:1},labelStyle:{fill:"#9e9e9e",fontSize:11},labelAlign:"start"}),de&&n().createElement(DT,null)),n().createElement(LC,{trigger:"axis"})))}ER.propTypes={id:i().string,licenseKey:i().string,height:i().number,width:i().number,margin:i().shape({top:i().number,right:i().number,bottom:i().number,left:i().number}),windowSize:i().number,forecastSize:i().number,running:i().bool,intervalMs:i().number,seed:i().number,resetTrigger:i().number,initialPrice:i().number,volatility:i().number,drift:i().number,forecastVolatility:i().number,alertProbability:i().number,alertThresholdPct:i().number,alertLookback:i().number,alertMinDistance:i().number,maxVisibleAlerts:i().number,alertFilter:i().shape({function:i().string.isRequired,options:i().object}),alertFormatter:i().shape({function:i().string.isRequired,options:i().object}),candleUpColor:i().string,candleDownColor:i().string,forecastColor:i().string,alertUpColor:i().string,alertDownColor:i().string,uncertaintyOpacity:i().number,showVolume:i().bool,showLabels:i().bool,volumeHeightPct:i().number,showGrid:i().bool,showSlider:i().bool,hideLegend:i().bool,grid:i().shape({horizontal:i().bool,vertical:i().bool}),xAxisLabel:i().string,yAxisLabel:i().string,currentPrice:i().number,tickCount:i().number,alertHistory:i().array,zoomData:i().arrayOf(i().shape({axisId:i().oneOfType([i().string,i().number]),start:i().number,end:i().number})),setProps:i().func};const TR=[Xs,Mb,Ys,Ws,Bs,Zs,Bb,kx],AR=["xAxis","yAxis","series","width","height","margin","colors","dataset","sx","axisHighlight","grid","children","slots","slotProps","skipAnimation","loading","layout","onItemClick","highlightedItem","onHighlightChange","borderRadius","barLabel","className","hideLegend","showToolbar","brushConfig","renderer"],OR=t=>{const{xAxis:n,yAxis:r,series:i,width:o,height:a,margin:s,colors:c,dataset:u,sx:d,axisHighlight:p,grid:h,children:m,slots:f,slotProps:g,skipAnimation:y,loading:v,layout:b,onItemClick:x,highlightedItem:I,onHighlightChange:w,borderRadius:k,barLabel:S,className:M,brushConfig:C,renderer:P}=t,E=tt(t,AR),T=`${z()}-clip-path`,A="horizontal"===b||void 0===b&&i.some(e=>"horizontal"===e.layout),O=e.useMemo(()=>[{id:W,scaleType:"band",data:Array.from({length:Math.max(...i.map(e=>(e.data??u??[]).length))},(e,t)=>t)}],[u,i]),j=e.useMemo(()=>[{id:G,scaleType:"band",data:Array.from({length:Math.max(...i.map(e=>(e.data??u??[]).length))},(e,t)=>t)}],[u,i]),L=e.useMemo(()=>i.map(e=>l({type:"bar"},e,{layout:A?"horizontal":"vertical"})),[A,i]),R=A?void 0:O,D=e.useMemo(()=>n?A?n:n.map(e=>l({scaleType:"band"},e)):R,[R,A,n]),$=A?j:void 0,N=e.useMemo(()=>r?A?r.map(e=>l({scaleType:"band"},e)):r:$,[$,A,r]),_=l({},E,{series:L,width:o,height:a,margin:s,colors:c,dataset:u,xAxis:D,yAxis:N,highlightedItem:I,onHighlightChange:w,disableAxisListener:"axis"!==g?.tooltip?.trigger&&"none"===p?.x&&"none"===p?.y,className:M,skipAnimation:y,brushConfig:C,plugins:TR}),F={onItemClick:x,slots:f,slotProps:g,borderRadius:k,renderer:P,barLabel:S},H={vertical:h?.vertical,horizontal:h?.horizontal},B={clipPath:`url(#${T})`},V={id:T},U={slots:f,slotProps:g,loading:v},Y={slots:f,slotProps:g},K=l({},A?{y:"band"}:{x:"band"},p),q={slots:f,slotProps:g};return{chartsWrapperProps:{sx:d,legendPosition:t.slotProps?.legend?.position,legendDirection:t.slotProps?.legend?.direction,hideLegend:t.hideLegend??!1},chartContainerProps:_,barPlotProps:F,gridProps:H,clipPathProps:V,clipPathGroupProps:B,overlayProps:U,chartsAxisProps:Y,axisHighlightProps:K,legendProps:q,children:m}};function jR(e){const t=xm(),n=MO(),r=dP(),{xAxis:i,xAxisIds:o}=_x(),{yAxis:a,yAxisIds:s}=Fx();if(null===n||"bar"!==n.type||!r)return null;const c=r.series[n.seriesId];if(null==c.data[n.dataIndex])return null;const u=c.xAxisId??o[0],d=c.yAxisId??s[0],p=i[u],h=a[d],m="vertical"===r.series[n.seriesId].layout,f=r.stackingGroups.findIndex(e=>e.ids.includes(n.seriesId)),g=Ol({verticalLayout:m,xAxisConfig:p,yAxisConfig:h,series:c,dataIndex:n.dataIndex,numberOfGroups:r.stackingGroups.length,groupIndex:f});if(null===g)return null;const{x:y,y:v,height:b,width:x}=g;return(0,O.jsx)("rect",l({fill:"none",stroke:(t.vars??t).palette.text.primary,strokeWidth:2,x:y-3,y:v-3,width:x+6,height:b+6,rx:3,ry:3},e))}const LR=e.forwardRef(function(e,t){const n=Lh({props:e,name:"MuiBarChart"}),{chartsWrapperProps:r,chartContainerProps:i,barPlotProps:o,gridProps:a,clipPathProps:s,clipPathGroupProps:c,overlayProps:u,chartsAxisProps:d,axisHighlightProps:p,legendProps:h,children:m}=OR(n),{chartDataProviderProps:f,chartsSurfaceProps:g}=yL(i,t),y=n.slots?.tooltip??LC,v=n.slots?.toolbar;return(0,O.jsx)(SO,l({},f,{children:(0,O.jsxs)(FO,l({},r,{children:[n.showToolbar&&v?(0,O.jsx)(v,l({},n.slotProps?.toolbar)):null,!n.hideLegend&&(0,O.jsx)(XC,l({},h)),(0,O.jsxs)(mI,l({},g,{children:[(0,O.jsx)(FM,l({},a)),(0,O.jsxs)("g",l({},c,{children:[(0,O.jsx)(vO,l({},o)),(0,O.jsx)(GO,l({},u)),(0,O.jsx)(_C,l({},p)),(0,O.jsx)(jR,{})]})),(0,O.jsx)($O,l({},d)),(0,O.jsx)(ZC,l({},s)),m]})),!n.loading&&(0,O.jsx)(y,l({},n.slotProps?.tooltip))]}))}))}),RR=["initialZoom","zoomData","onZoomChange","zoomInteractionConfig","plugins","apiRef"],DR=[Xs,Mb,Ys,Ws,Bs,Zs,Bb,kx,Ix,tx],$R=["initialZoom","zoomData","onZoomChange","apiRef","showToolbar"],zR=e.forwardRef(function(e,t){const n=Lh({props:e,name:"MuiBarChartPro"}),{initialZoom:r,zoomData:i,onZoomChange:o,apiRef:a,showToolbar:s}=n,c=tt(n,$R),{chartsWrapperProps:u,chartContainerProps:d,barPlotProps:p,gridProps:h,clipPathProps:m,clipPathGroupProps:f,overlayProps:g,chartsAxisProps:y,axisHighlightProps:v,legendProps:b,children:x}=OR(c),{chartDataProviderProProps:I,chartsSurfaceProps:w}=((e,t)=>{const n=e,{initialZoom:r,zoomData:i,onZoomChange:o,zoomInteractionConfig:a,plugins:s,apiRef:c}=n,u=tt(n,RR),{chartDataProviderProps:d,chartsSurfaceProps:p,children:h}=yL(u,t);return{chartDataProviderProProps:l({},d,{initialZoom:r,zoomData:i,onZoomChange:o,zoomInteractionConfig:a,apiRef:c,plugins:s??wx}),chartsSurfaceProps:p,children:h}})(l({},d,{initialZoom:r,zoomData:i,onZoomChange:o,apiRef:a,plugins:DR}),t),k=n.slots?.tooltip??LC,S=n.slots?.toolbar??kA;return(0,O.jsx)(Rx,l({},I,{children:(0,O.jsxs)(FO,l({},u,{children:[s?(0,O.jsx)(S,l({},n.slotProps?.toolbar)):null,!n.hideLegend&&(0,O.jsx)(XC,l({},b)),(0,O.jsxs)(mI,l({},w,{children:[(0,O.jsx)(FM,l({},h)),(0,O.jsxs)("g",l({},f,{children:[(0,O.jsx)(vO,l({},p)),(0,O.jsx)(GO,l({},g)),(0,O.jsx)(_C,l({},v))]})),(0,O.jsx)($O,l({},y)),(0,O.jsx)(DT,{}),(0,O.jsx)(WT,{}),(0,O.jsx)(ZC,l({},m)),x]})),!n.loading&&(0,O.jsx)(k,l({},n.slotProps?.tooltip))]}))}))});function NR(e){return NR="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},NR(e)}function _R(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function FR(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&(ne.initialZoom=X),ne.onZoomChange=J,$&&(ne.showToolbar=!0),z&&(ne.brushConfig=z),N&&(ne.zoomInteractionConfig=N));var re=A&&A.length>0?A.map(function(e,t){return n().createElement(VT,{key:"ref-line-".concat(t),x:e.x,y:e.y,axisId:e.axisId,label:e.label||void 0,labelAlign:e.labelAlign||"middle",lineStyle:e.lineStyle||void 0,labelStyle:e.labelStyle||void 0,spacing:e.spacing||void 0})}):null,ie=B?zR:LR;return n().createElement("div",{id:r},n().createElement(ie,ne,re))}function WR(e){return WR="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},WR(e)}function GR(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function KR(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.open?i||"#4caf50":o||"#f44336",g=u(Math.max(e.open,e.close)),y=u(Math.min(e.open,e.close)),v=u(e.high),b=u(e.low),x=Math.max(1,y-g);return n().createElement("g",{key:t,style:{cursor:l?"pointer":"default"},onClick:l?function(n){return l(n,t,e)}:void 0},n().createElement("line",{x1:p,y1:v,x2:p,y2:g,stroke:f,strokeWidth:s||2}),n().createElement("line",{x1:p,y1:y,x2:p,y2:b,stroke:f,strokeWidth:s||2}),n().createElement("rect",{x:p-m/2,y:g,width:m,height:x,fill:f,stroke:f,strokeWidth:1,rx:1}))}))}function nD(e){var t=e.volumeData,r=e.labels,i=e.ohlcData,o=e.upColor,a=e.downColor,s=e.maxHeightRatio,l=uk(),c=Nx(),u=(c.left,c.top),d=c.width,p=c.height;if(!l||!t||0===t.length)return null;var h=l.bandwidth?l.bandwidth():d/t.length,m=.5*h,f=Math.max.apply(Math,ZR(t));if(0===f)return null;var g=p*(s||.2),y=u+p;return n().createElement("g",{opacity:.3},t.map(function(e,t){var s=r[t],c=l(s);if(void 0===c||0===e)return null;var u=c+h/2,d=e/f*g,p=i[t]&&i[t].close>=i[t].open?o||"#4caf50":a||"#f44336";return n().createElement("rect",{key:t,x:u-m/2,y:y-d,width:m,height:d,fill:p,rx:1})}))}function rD(t){var r=t.ohlcData,i=t.labels,o=t.tooltipEnabled,a=uk(),s=(dk(),Nx()),l=s.left,c=s.top,u=s.width,d=s.height,p=XR((0,e.useState)(null),2),h=p[0],m=p[1],f=(0,e.useRef)(null);if(!o||!a||!r||0===r.length)return null;var g=a.bandwidth?a.bandwidth():u/r.length,y=null!==h?r[h]:null;return n().createElement(n().Fragment,null,n().createElement("rect",{x:l,y:c,width:u,height:d,fill:"transparent",onMouseMove:function(e){var t=e.currentTarget.ownerSVGElement||e.currentTarget.closest("svg");if(t){var n=t.createSVGPoint();n.x=e.clientX,n.y=e.clientY;var r=n.matrixTransform(t.getScreenCTM().inverse());if(r.xl+u||r.yc+d)m(null);else{for(var o=0;o=s&&r.x=y.open?"#4caf50":"#f44336"}},y.close))))))}function iD(t){var r=t.id,i=t.series,o=void 0===i?[]:i,a=t.dataset,l=t.xAxis,c=t.yAxis,u=t.height,d=void 0===u?400:u,p=t.width,h=t.margin,m=t.grid,f=t.skipAnimation,g=void 0!==f&&f,y=t.hideLegend,v=void 0===y||y,b=t.tooltip,x=t.referenceLines,I=void 0===x?[]:x,w=t.bodyWidthRatio,k=t.wickWidth,S=t.showVolume,M=void 0!==S&&S,C=t.volumeHeightRatio,P=t.licenseKey,E=t.initialZoom,T=t.showSlider,A=void 0!==T&&T,O=t.showToolbar,j=void 0!==O&&O,L=t.zoomInteractionConfig,R=(t.clickData,t.hoverData,t.zoomData,t.setProps),D=(0,e.useId)();P&&!eD&&(s.setLicenseKey(P),eD=!0);var $=(0,e.useMemo)(function(){var e=o[0]||{},t=[],n=[],r=[],i=e.upColor||"#4caf50",s=e.downColor||"#f44336";if(e.data&&Array.isArray(e.data))t=e.data.map(function(e){return Array.isArray(e)?{open:e[0],high:e[1],low:e[2],close:e[3]}:e});else if(a&&e.datasetKeys){var c=e.datasetKeys;t=a.map(function(e){return{open:e[c.open||"open"],high:e[c.high||"high"],low:e[c.low||"low"],close:e[c.close||"close"]}})}return l&&l[0]&&(l[0].data?n=l[0].data:l[0].dataKey&&a&&(n=a.map(function(e){return e[l[0].dataKey]}))),0===n.length&&(n=t.map(function(e,t){return String(t)})),e.volumeKey&&a?r=a.map(function(t){return t[e.volumeKey]||0}):e.volume&&Array.isArray(e.volume)&&(r=e.volume),{ohlcData:t,labels:n,volumeData:r,upColor:i,downColor:s}},[o,a,l]),z=$.ohlcData,N=$.labels,_=$.volumeData,F=$.upColor,H=$.downColor,B=(0,e.useMemo)(function(){if(0===z.length)return{min:0,max:100};var e=z.map(function(e){return e.low}),t=z.map(function(e){return e.high}),n=Math.min.apply(Math,ZR(e)),r=Math.max.apply(Math,ZR(t)),i=.05*(r-n);return{min:n-i,max:r+i}},[z]),V=XR((0,e.useState)(function(){return E&&Array.isArray(E)?E:[]}),2),U=V[0],Y=V[1],W=(0,e.useRef)(JSON.stringify(E||[])),G=(0,e.useCallback)(function(e){var t="function"==typeof e?e(U):e;Y(t),W.current=JSON.stringify(t),R&&R({zoomData:t})},[R,U]),K=(0,e.useCallback)(function(e,t,n){R&&R({clickData:{dataIndex:t,label:N[t],open:n.open,high:n.high,low:n.low,close:n.close,timestamp:(new Date).toISOString()}})},[R,N]),q={height:d,series:(0,e.useMemo)(function(){return[{type:"bar",id:"__candle_placeholder",data:z.map(function(e){return e.close}),color:"transparent",highlightScope:{highlight:"none",fade:"none"}}]},[z]),xAxis:(0,e.useMemo)(function(){var e=l&&l[0]?KR({},l[0]):{},t=KR({id:e.id||"x-axis-candle",scaleType:"band",data:N},e);if(A){var n=t.zoom||{},r=!0===n?{}:"object"===WR(n)?n:{};t.zoom=KR(KR({},r),{},{slider:KR(KR({},r.slider),{},{enabled:!0})})}return[t]},[l,N,A]),yAxis:(0,e.useMemo)(function(){var e=c&&c[0]?KR({},c[0]):{};return[KR(KR(KR({id:e.id||"y-axis-candle",min:B.min,max:B.max},e),void 0!==e.min?{min:e.min}:{min:B.min}),void 0!==e.max?{max:e.max}:{max:B.max})]},[c,B]),onZoomChange:G};p&&(q.width=p),h&&(q.margin=h),g&&(q.skipAnimation=g),L&&(q.zoomInteractionConfig=L),U&&U.length>0&&(q.initialZoom=U);var X=!b||"none"!==b.trigger;return n().createElement("div",{id:r},n().createElement(Rx,q,j&&n().createElement(kA,null),!v&&n().createElement("div",{style:{display:"flex",justifyContent:"center",marginBottom:8}},n().createElement(XC,null)),n().createElement(mI,null,n().createElement(ZC,{id:D}),m&&n().createElement(FM,{horizontal:m.horizontal,vertical:m.vertical}),n().createElement("g",{clipPath:"url(#".concat(D,")")},M&&_.length>0&&n().createElement(nD,{volumeData:_,labels:N,ohlcData:z,upColor:F,downColor:H,maxHeightRatio:C}),n().createElement(tD,{ohlcData:z,labels:N,upColor:F,downColor:H,bodyWidthRatio:w,wickWidth:k,onCandleClick:K})),n().createElement(gM,null),n().createElement(OM,null),I&&I.map(function(e,t){return n().createElement(VT,{key:"ref-line-".concat(t),x:e.x,y:e.y,axisId:e.axisId,label:e.label||void 0,labelAlign:e.labelAlign||"middle",lineStyle:e.lineStyle||void 0,labelStyle:e.labelStyle||void 0,spacing:e.spacing||void 0})}),n().createElement(rD,{ohlcData:z,labels:N,tooltipEnabled:X}),A&&n().createElement(DT,null))))}iD.propTypes={id:i().string,series:i().arrayOf(i().object),dataset:i().arrayOf(i().object),xAxis:i().arrayOf(i().object),yAxis:i().arrayOf(i().object),height:i().number,width:i().number,margin:i().exact({top:i().number,bottom:i().number,left:i().number,right:i().number}),grid:i().exact({horizontal:i().bool,vertical:i().bool}),skipAnimation:i().bool,hideLegend:i().bool,tooltip:i().exact({trigger:i().oneOf(["item","none"])}),bodyWidthRatio:i().number,wickWidth:i().number,showVolume:i().bool,volumeHeightRatio:i().number,referenceLines:i().arrayOf(i().object),licenseKey:i().string,initialZoom:i().arrayOf(i().object),showSlider:i().bool,showToolbar:i().bool,zoomInteractionConfig:i().object,clickData:i().object,hoverData:i().object,zoomData:i().arrayOf(i().object),setProps:i().func};const oD={};function aD(t,n){const r=e.useRef(oD);return r.current===oD&&(r.current=t(n)),r}function sD(e,t,n,r){const i=aD(lD).current;return function(e,t,n,r,i){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==i}(i,e,t,n,r)&&function(e,t){e.refs=t,t.every(e=>null==e)?e.callback=null:e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),null!=n){const r=Array(t.length).fill(null);for(let e=0;e{for(let e=0;e=19?function(t,n,r,i,o){const a=e.useCallback(()=>n(t.getSnapshot(),r,i,o),[t,n,r,i,o]);return(0,N.useSyncExternalStore)(t.subscribe,a,a)}:function(e,t,n,r,i){return(0,_.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,e=>t(e,n,r,i))};function uD(e,t,n,r,i){return cD(e,t,n,r,i)}function dD(e){return Ig("MuiAlert",e)}const pD=wg("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]),hD=ob((0,O.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"}),"SuccessOutlined"),mD=ob((0,O.jsx)("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),fD=ob((0,O.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"}),"ErrorOutline"),gD=ob((0,O.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"}),"InfoOutlined"),yD=ob((0,O.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"}),"Close"),vD=bm(Zv,{name:"MuiAlert",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`${n.variant}${Cm(n.color||n.severity)}`]]}})(wm(({theme:e})=>{const t="light"===e.palette.mode?sp:cp,n="light"===e.palette.mode?cp:sp;return{...e.typography.body2,backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(e.palette).filter(vy(["light"])).map(([r])=>({props:{colorSeverity:r,variant:"standard"},style:{color:e.vars?e.vars.palette.Alert[`${r}Color`]:t(e.palette[r].light,.6),backgroundColor:e.vars?e.vars.palette.Alert[`${r}StandardBg`]:n(e.palette[r].light,.9),[`& .${pD.icon}`]:e.vars?{color:e.vars.palette.Alert[`${r}IconColor`]}:{color:e.palette[r].main}}})),...Object.entries(e.palette).filter(vy(["light"])).map(([n])=>({props:{colorSeverity:n,variant:"outlined"},style:{color:e.vars?e.vars.palette.Alert[`${n}Color`]:t(e.palette[n].light,.6),border:`1px solid ${(e.vars||e).palette[n].light}`,[`& .${pD.icon}`]:e.vars?{color:e.vars.palette.Alert[`${n}IconColor`]}:{color:e.palette[n].main}}})),...Object.entries(e.palette).filter(vy(["dark"])).map(([t])=>({props:{colorSeverity:t,variant:"filled"},style:{fontWeight:e.typography.fontWeightMedium,...e.vars?{color:e.vars.palette.Alert[`${t}FilledColor`],backgroundColor:e.vars.palette.Alert[`${t}FilledBg`]}:{backgroundColor:"dark"===e.palette.mode?e.palette[t].dark:e.palette[t].main,color:e.palette.getContrastText(e.palette[t].main)}}}))]}})),bD=bm("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(e,t)=>t.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),xD=bm("div",{name:"MuiAlert",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),ID=bm("div",{name:"MuiAlert",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),wD={success:(0,O.jsx)(hD,{fontSize:"inherit"}),warning:(0,O.jsx)(mD,{fontSize:"inherit"}),error:(0,O.jsx)(fD,{fontSize:"inherit"}),info:(0,O.jsx)(gD,{fontSize:"inherit"})},kD=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiAlert"}),{action:r,children:i,className:o,closeText:a="Close",color:s,components:l={},componentsProps:c={},icon:u,iconMapping:d=wD,onClose:p,role:h="alert",severity:m="success",slotProps:f={},slots:g={},variant:y="standard",...v}=n,b={...n,color:s,severity:m,variant:y,colorSeverity:s||m},x=(e=>{const{variant:t,color:n,severity:r,classes:i}=e;return Gh({root:["root",`color${Cm(n||r)}`,`${t}${Cm(n||r)}`,`${t}`],icon:["icon"],message:["message"],action:["action"]},dD,i)})(b),I={slots:{closeButton:l.CloseButton,closeIcon:l.CloseIcon,...g},slotProps:{...c,...f}},[w,k]=Ng("root",{ref:t,shouldForwardComponentProp:!0,className:Hh(x.root,o),elementType:vD,externalForwardedProps:{...I,...v},ownerState:b,additionalProps:{role:h,elevation:0}}),[S,M]=Ng("icon",{className:x.icon,elementType:bD,externalForwardedProps:I,ownerState:b}),[C,P]=Ng("message",{className:x.message,elementType:xD,externalForwardedProps:I,ownerState:b}),[E,T]=Ng("action",{className:x.action,elementType:ID,externalForwardedProps:I,ownerState:b}),[A,j]=Ng("closeButton",{elementType:sv,externalForwardedProps:I,ownerState:b}),[L,R]=Ng("closeIcon",{elementType:yD,externalForwardedProps:I,ownerState:b});return(0,O.jsxs)(w,{...k,children:[!1!==u?(0,O.jsx)(S,{...M,children:u||d[m]||wD[m]}):null,(0,O.jsx)(C,{...P,children:i}),null!=r?(0,O.jsx)(E,{...T,children:r}):null,null==r&&p?(0,O.jsx)(E,{...T,children:(0,O.jsx)(A,{size:"small","aria-label":a,title:a,color:"inherit",onClick:p,...j,children:(0,O.jsx)(L,{fontSize:"small",...R})})}):null]})}),SD=kD;function MD(e,t,n=void 0){const r={};for(const i in e){const o=e[i];let a="",s=!0;for(let e=0;en.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n},PD=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},ED=function(e,t,n){return"function"==typeof e?e(t,n):e},TD=function(t){const{elementType:n,externalSlotProps:r,ownerState:i,skipResolvingSlotProps:o=!1,...a}=t,s=o?{}:ED(r,i),{props:l,internalRef:c}=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=CD({...i,...r}),s=PD(r),l=PD(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}}({...a,externalSlotProps:s}),u=function(...t){const n=e.useRef(void 0),r=e.useCallback(e=>{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}(c,s?.ref,t.additionalProps?.ref);return function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}}(n,{...l,ref:u},i)},AD=e=>e,OD=(()=>{let e=AD;return{configure(t){e=t},generate:t=>e(t),reset(){e=AD}}})(),jD={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 LD(e,t,n="Mui"){const r=jD[t];return r?`${n}-${r}`:`${OD.generate(e)}-${t}`}function RD(e,t,n="Mui"){const r={};return t.forEach(t=>{r[t]=LD(e,t,n)}),r}function DD(e){return LD("MuiRichTreeView",e)}function $D(e){return Lh}RD("MuiRichTreeView",["root","item","itemContent","itemGroupTransition","itemIconContainer","itemLabel","itemCheckbox","itemLabelInput"]);const zD=Object.freeze([]),ND=Object.freeze({}),_D=e.createContext(null),FD=()=>{const t=e.useContext(_D);if(null==t)throw new Error(["MUI X: Could not find the Tree View context.","It looks like you rendered your component outside of a SimpleTreeView or RichTreeView parent component.","This can also happen if you are bundling multiple versions of the Tree View."].join("\n"));return t},HD=e.createContext({classes:{},slots:{},slotProps:{}}),BD=()=>e.useContext(HD);function VD(t){const{store:n,apiRef:r,rootRef:i,classes:o=ND,slots:a=ND,slotProps:s=ND,children:l}=t,c=(t=>{const{store:n,apiRef:r,rootRef:i}=t,o=aD(()=>n.buildPublicAPI()).current;!function(e,t){null!=t&&null==t.current&&(t.current=e)}(o,r);const a=e.useCallback(e=>{let t=null,r=null;const i=[],o={};n.itemPluginManager.listPlugins().forEach(n=>{const a=n({props:e,rootRef:t,contentRef:r});a?.rootRef&&(t=a.rootRef),a?.contentRef&&(r=a.contentRef),a?.propsEnhancers&&(i.push(a.propsEnhancers),Object.keys(a.propsEnhancers).forEach(e=>{o[e]=!0}))});const a=Object.fromEntries(Object.keys(o).map(e=>{return[e,(t=e,e=>{const n={};return i.forEach(r=>{const i=r[t];null!=i&&Object.assign(n,i(e))}),n})];var t}));return{contentRef:r,rootRef:t,propsEnhancers:a}},[n]),s=e.useCallback(({itemId:e,children:t,idAttribute:r})=>{let i=t;const o=n.itemPluginManager.listWrappers();for(let t=o.length-1;t>=0;t-=1)i=(0,o[t])({store:n,itemId:e,children:i,idAttribute:r});return i},[n]);return e.useMemo(()=>({runItemPlugins:a,wrapItem:s,publicAPI:o,store:n,rootRef:i}),[a,s,o,n,i])})({store:n,apiRef:r,rootRef:i}),u=e.useMemo(()=>({classes:o,slots:{collapseIcon:a.collapseIcon,expandIcon:a.expandIcon,endIcon:a.endIcon},slotProps:{collapseIcon:s.collapseIcon,expandIcon:s.expandIcon,endIcon:s.endIcon}}),[o,a.collapseIcon,a.expandIcon,a.endIcon,s.collapseIcon,s.expandIcon,s.endIcon]);return(0,O.jsx)(_D.Provider,{value:c,children:(0,O.jsx)(HD.Provider,{value:u,children:l})})}const UD=Object.is;function YD(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;let n=0,r=0;for(const r in e){if(n+=1,!UD(e[r],t[r]))return!1;if(!(r in t))return!1}for(const e in t)r+=1;return n===r}function WD(e){return Ig("MuiCollapse",e)}wg("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);const GD=bm("div",{name:"MuiCollapse",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.orientation],"entered"===n.state&&t.entered,"exited"===n.state&&!n.in&&"0px"===n.collapsedSize&&t.hidden]}})(wm(({theme:e})=>({height:0,overflow:"hidden",transition:e.transitions.create("height"),variants:[{props:{orientation:"horizontal"},style:{height:"auto",width:0,transition:e.transitions.create("width")}},{props:{state:"entered"},style:{height:"auto",overflow:"visible"}},{props:{state:"entered",orientation:"horizontal"},style:{width:"auto"}},{props:({ownerState:e})=>"exited"===e.state&&!e.in&&"0px"===e.collapsedSize,style:{visibility:"hidden"}}]}))),KD=bm("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:(e,t)=>t.wrapper})({display:"flex",width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),qD=bm("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:(e,t)=>t.wrapperInner})({width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),XD=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiCollapse"}),{addEndListener:i,children:o,className:a,collapsedSize:s="0px",component:l,easing:c,in:u,onEnter:d,onEntered:p,onEntering:h,onExit:m,onExited:f,onExiting:g,orientation:y="vertical",style:v,timeout:b=ch.standard,TransitionComponent:x=_m,...I}=r,w={...r,orientation:y,collapsedSize:s},k=(e=>{const{orientation:t,classes:n}=e;return Gh({root:["root",`${t}`],entered:["entered"],hidden:["hidden"],wrapper:["wrapper",`${t}`],wrapperInner:["wrapperInner",`${t}`]},WD,n)})(w),S=xm(),M=Wh(),C=e.useRef(null),P=e.useRef(),E="number"==typeof s?`${s}px`:s,T="horizontal"===y,A=T?"width":"height",j=e.useRef(null),L=Vm(n,j),R=e=>t=>{if(e){const n=j.current;void 0===t?e(n):e(n,t)}},D=()=>C.current?C.current[T?"clientWidth":"clientHeight"]:0,$=R((e,t)=>{C.current&&T&&(C.current.style.position="absolute"),e.style[A]=E,d&&d(e,t)}),z=R((e,t)=>{const n=D();C.current&&T&&(C.current.style.position="");const{duration:r,easing:i}=Hm({style:v,timeout:b,easing:c},{mode:"enter"});if("auto"===b){const t=S.transitions.getAutoHeightDuration(n);e.style.transitionDuration=`${t}ms`,P.current=t}else e.style.transitionDuration="string"==typeof r?r:`${r}ms`;e.style[A]=`${n}px`,e.style.transitionTimingFunction=i,h&&h(e,t)}),N=R((e,t)=>{e.style[A]="auto",p&&p(e,t)}),_=R(e=>{e.style[A]=`${D()}px`,m&&m(e)}),F=R(f),H=R(e=>{const t=D(),{duration:n,easing:r}=Hm({style:v,timeout:b,easing:c},{mode:"exit"});if("auto"===b){const n=S.transitions.getAutoHeightDuration(t);e.style.transitionDuration=`${n}ms`,P.current=n}else e.style.transitionDuration="string"==typeof n?n:`${n}ms`;e.style[A]=E,e.style.transitionTimingFunction=r,g&&g(e)});return(0,O.jsx)(x,{in:u,onEnter:$,onEntered:N,onEntering:z,onExit:_,onExited:F,onExiting:H,addEndListener:e=>{"auto"===b&&M.start(P.current||0,e),i&&i(j.current,e)},nodeRef:j,timeout:"auto"===b?null:b,...I,children:(e,{ownerState:t,...n})=>(0,O.jsx)(GD,{as:l,className:Hh(k.root,a,{entered:k.entered,exited:!u&&"0px"===E&&k.hidden}[e]),style:{[T?"minWidth":"minHeight"]:E,...v},ref:L,ownerState:{...w,state:e},...n,children:(0,O.jsx)(KD,{ownerState:{...w,state:e},className:k.wrapper,ref:C,children:(0,O.jsx)(qD,{ownerState:{...w,state:e},className:k.wrapperInner,children:o})})})})});XD&&(XD.muiSupportAuto=!0);const ZD=XD,JD=e.createContext(void 0);function QD(e){return Ig("PrivateSwitchBase",e)}wg("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);const e$=bm(Yy,{name:"MuiSwitchBase"})({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:e,ownerState:t})=>"start"===e&&"small"!==t.size,style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:e,ownerState:t})=>"end"===e&&"small"!==t.size,style:{marginRight:-12}}]}),t$=bm("input",{name:"MuiSwitchBase",shouldForwardProp:ym})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),n$=e.forwardRef(function(t,n){const{autoFocus:r,checked:i,checkedIcon:o,defaultChecked:a,disabled:s,disableFocusRipple:l=!1,edge:c=!1,icon:u,id:d,inputProps:p,inputRef:h,name:m,onBlur:f,onChange:g,onFocus:y,readOnly:v,required:b=!1,tabIndex:x,type:I,value:w,slots:k={},slotProps:S={},...M}=t,[C,P]=zg({controlled:i,default:Boolean(a),name:"SwitchBase",state:"checked"}),E=e.useContext(JD);let T=s;E&&void 0===T&&(T=E.disabled);const A="checkbox"===I||"radio"===I,j={...t,checked:C,disabled:T,disableFocusRipple:l,edge:c},L=(e=>{const{classes:t,checked:n,disabled:r,edge:i}=e;return Gh({root:["root",n&&"checked",r&&"disabled",i&&`edge${Cm(i)}`],input:["input"]},QD,t)})(j),R={slots:k,slotProps:{input:p,...S}},[D,$]=Ng("root",{ref:n,elementType:e$,className:L.root,shouldForwardComponentProp:!0,externalForwardedProps:{...R,component:"span",...M},getSlotProps:e=>({...e,onFocus:t=>{e.onFocus?.(t),(e=>{y&&y(e),E&&E.onFocus&&E.onFocus(e)})(t)},onBlur:t=>{e.onBlur?.(t),(e=>{f&&f(e),E&&E.onBlur&&E.onBlur(e)})(t)}}),ownerState:j,additionalProps:{centerRipple:!0,focusRipple:!l,disabled:T,role:void 0,tabIndex:null}}),[z,N]=Ng("input",{ref:h,elementType:t$,className:L.input,externalForwardedProps:R,getSlotProps:e=>({onChange:t=>{e.onChange?.(t),(e=>{if(e.nativeEvent.defaultPrevented)return;const t=e.target.checked;P(t),g&&g(e,t)})(t)}}),ownerState:j,additionalProps:{autoFocus:r,checked:i,defaultChecked:a,disabled:T,id:A?d:void 0,name:m,readOnly:v,required:b,tabIndex:x,type:I,..."checkbox"===I&&void 0===w?{}:{value:w}}});return(0,O.jsxs)(D,{...$,children:[(0,O.jsx)(z,{...N}),C?o:u]})}),r$=n$,i$=ob((0,O.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"}),"CheckBoxOutlineBlank"),o$=ob((0,O.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"}),"CheckBox"),a$=ob((0,O.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"}),"IndeterminateCheckBox");function s$(e){return Ig("MuiCheckbox",e)}const l$=wg("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]);function c$(e,t){if(!e)return t;if("function"==typeof e||"function"==typeof t)return n=>{const r="function"==typeof t?t(n):t,i="function"==typeof e?e({...n,...r}):e,o=Hh(n?.className,r?.className,i?.className);return{...r,...i,...!!o&&{className:o},...r?.style&&i?.style&&{style:{...r.style,...i.style}},...r?.sx&&i?.sx&&{sx:[...Array.isArray(r.sx)?r.sx:[r.sx],...Array.isArray(i.sx)?i.sx:[i.sx]]}}};const n=t,r=Hh(n?.className,e?.className);return{...t,...e,...!!r&&{className:r},...n?.style&&e?.style&&{style:{...n.style,...e.style}},...n?.sx&&e?.sx&&{sx:[...Array.isArray(n.sx)?n.sx:[n.sx],...Array.isArray(e.sx)?e.sx:[e.sx]]}}}const u$=bm(r$,{shouldForwardProp:e=>ym(e)||"classes"===e,name:"MuiCheckbox",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${Cm(n.size)}`],"default"!==n.color&&t[`color${Cm(n.color)}`]]}})(wm(({theme:e})=>({color:(e.vars||e).palette.text.secondary,variants:[{props:{color:"default",disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette.action.active,e.palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t,disableRipple:!1},style:{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette[t].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:op(e.palette[t].main,e.palette.action.hoverOpacity)}}})),...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{[`&.${l$.checked}, &.${l$.indeterminate}`]:{color:(e.vars||e).palette[t].main},[`&.${l$.disabled}`]:{color:(e.vars||e).palette.action.disabled}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]}))),d$=(0,O.jsx)(o$,{}),p$=(0,O.jsx)(i$,{}),h$=(0,O.jsx)(a$,{}),m$=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiCheckbox"}),{checkedIcon:i=d$,color:o="primary",icon:a=p$,indeterminate:s=!1,indeterminateIcon:l=h$,inputProps:c,size:u="medium",disableRipple:d=!1,className:p,slots:h={},slotProps:m={},...f}=r,g=s?l:a,y=s?l:i,v={...r,disableRipple:d,color:o,indeterminate:s,size:u},b=(e=>{const{classes:t,indeterminate:n,color:r,size:i}=e,o=Gh({root:["root",n&&"indeterminate",`color${Cm(r)}`,`size${Cm(i)}`]},s$,t);return{...t,...o}})(v),x=m.input??c,[I,w]=Ng("root",{ref:n,elementType:u$,className:Hh(b.root,p),shouldForwardComponentProp:!0,externalForwardedProps:{slots:h,slotProps:m,...f},ownerState:v,additionalProps:{type:"checkbox",icon:e.cloneElement(g,{fontSize:g.props.fontSize??u}),checkedIcon:e.cloneElement(y,{fontSize:y.props.fontSize??u}),disableRipple:d,slots:h,slotProps:{input:c$("function"==typeof x?x(v):x,{"data-indeterminate":s})}}});return(0,O.jsx)(I,{...w,classes:b})}),f$=m$,g$=ne({memoize:J,memoizeOptions:{maxSize:1,equalityCheck:Object.is}}),y$=(e,t,n,r,i,o,a,s,...l)=>{if(l.length>0)throw new Error("Unsupported number of selectors");let c;if(e&&t&&n&&r&&i&&o&&a&&s)c=(l,c,u,d)=>{const p=e(l,c,u,d),h=t(l,c,u,d),m=n(l,c,u,d),f=r(l,c,u,d),g=i(l,c,u,d),y=o(l,c,u,d),v=a(l,c,u,d);return s(p,h,m,f,g,y,v,c,u,d)};else if(e&&t&&n&&r&&i&&o&&a)c=(s,l,c,u)=>{const d=e(s,l,c,u),p=t(s,l,c,u),h=n(s,l,c,u),m=r(s,l,c,u),f=i(s,l,c,u),g=o(s,l,c,u);return a(d,p,h,m,f,g,l,c,u)};else if(e&&t&&n&&r&&i&&o)c=(a,s,l,c)=>{const u=e(a,s,l,c),d=t(a,s,l,c),p=n(a,s,l,c),h=r(a,s,l,c),m=i(a,s,l,c);return o(u,d,p,h,m,s,l,c)};else if(e&&t&&n&&r&&i)c=(o,a,s,l)=>{const c=e(o,a,s,l),u=t(o,a,s,l),d=n(o,a,s,l),p=r(o,a,s,l);return i(c,u,d,p,a,s,l)};else if(e&&t&&n&&r)c=(i,o,a,s)=>{const l=e(i,o,a,s),c=t(i,o,a,s),u=n(i,o,a,s);return r(l,c,u,o,a,s)};else if(e&&t&&n)c=(r,i,o,a)=>{const s=e(r,i,o,a),l=t(r,i,o,a);return n(s,l,i,o,a)};else if(e&&t)c=(n,r,i,o)=>{const a=e(n,r,i,o);return t(a,r,i,o)};else{if(!e)throw new Error("Missing arguments");c=e}return c},v$=(...e)=>{const t=new WeakMap;let n=1;const r=e[e.length-1],i=e.length-1||1,o=Math.max(r.length-i,0);if(o>3)throw new Error("Unsupported number of arguments");return(i,a,s,l)=>{let c=i.__cacheKey__;c||(c={id:n},i.__cacheKey__=c,n+=1);let u=t.get(c);if(!u){const n=1===e.length?[e=>e,r]:e;let i=e;const a=[void 0,void 0,void 0];switch(o){case 0:break;case 1:i=[...n.slice(0,-1),()=>a[0],r];break;case 2:i=[...n.slice(0,-1),()=>a[0],()=>a[1],r];break;case 3:i=[...n.slice(0,-1),()=>a[0],()=>a[1],()=>a[2],r];break;default:throw new Error("Unsupported number of arguments")}u=g$(...i),u.selectorArgs=a,t.set(c,u)}switch(o){case 3:u.selectorArgs[2]=l;case 2:u.selectorArgs[1]=s;case 1:u.selectorArgs[0]=a}switch(o){case 0:return u(i);case 1:return u(i,a);case 2:return u(i,a,s);case 3:return u(i,a,s,l);default:throw new Error("unreachable")}}},b$="__TREE_VIEW_ROOT_PARENT_ID__",x$=e=>{const t={};return e.forEach((e,n)=>{t[e]=n}),t},I$=(e,t)=>{if(null==t)return!1;let n=e[t];if(!n)return!1;if(n.disabled)return!0;for(;null!=n.parentId;){if(n=e[n.parentId],!n)return!1;if(n.disabled)return!0}return!1};function w$(e){const{storeParameters:t,items:n,parentId:r,depth:i,isItemExpandable:o,otherItemsMetaLookup:a}=e,s={},l={},c=[],u=[],d=e=>{const n=t.getItemId?t.getItemId(e):e.id;!function({id:e,parentId:t,item:n,itemMetaLookup:r,siblingsMetaLookup:i}){if(null==e)throw new Error(["MUI X: The Tree View component requires all items to have a unique `id` property.","Alternatively, you can use the `getItemId` prop to specify a custom id for each item.","An item was provided without id in the `items` prop:",JSON.stringify(n)].join("\n"));if(null!=i[e]||null!=r[e]&&r[e].parentId!==t)throw new Error(["MUI X: The Tree View component requires all items to have a unique `id` property.","Alternatively, you can use the `getItemId` prop to specify a custom id for each item.",`Two items were provided with the same id in the \`items\` prop: "${e}"`].join("\n"))}({id:n,parentId:r,item:e,itemMetaLookup:a,siblingsMetaLookup:s});const d=t.getItemLabel?t.getItemLabel(e):e.label;if(null==d)throw new Error(["MUI X: The Tree View component requires all items to have a `label` property.","Alternatively, you can use the `getItemLabel` prop to specify a custom label for each item.","An item was provided without label in the `items` prop:",JSON.stringify(e)].join("\n"));const p=(t.getItemChildren?t.getItemChildren(e):e.children)||[];u.push({id:n,children:p}),l[n]=e,s[n]={id:n,label:d,parentId:r,idAttribute:void 0,expandable:o(e,p),disabled:!!t.isItemDisabled&&t.isItemDisabled(e),selectable:!t.isItemSelectionDisabled||!t.isItemSelectionDisabled(e),depth:i},c.push(n)};for(const e of n)d(e);return{metaLookup:s,modelLookup:l,orderedChildrenIds:c,childrenIndexes:x$(c),itemsChildren:u}}const k$=[],S$={domStructure:y$(e=>e.domStructure),disabledItemFocusable:y$(e=>e.disabledItemsFocusable),itemMetaLookup:y$(e=>e.itemMetaLookup),itemOrderedChildrenIdsLookup:y$(e=>e.itemOrderedChildrenIdsLookup),itemMeta:y$((e,t)=>e.itemMetaLookup[t??b$]??null),itemOrderedChildrenIds:y$((e,t)=>e.itemOrderedChildrenIdsLookup[t??b$]??k$),itemModel:y$((e,t)=>e.itemModelLookup[t]),isItemDisabled:y$((e,t)=>I$(e.itemMetaLookup,t)),itemIndex:y$((e,t)=>{const n=e.itemMetaLookup[t];return null==n?-1:e.itemChildrenIndexesLookup[n.parentId??b$][n.id]}),itemParentId:y$((e,t)=>e.itemMetaLookup[t]?.parentId??null),itemDepth:y$((e,t)=>e.itemMetaLookup[t]?.depth??0),canItemBeFocused:y$((e,t)=>e.disabledItemsFocusable||null!=e.itemModelLookup[t]&&!I$(e.itemMetaLookup,t)),itemChildrenIndentation:y$(e=>e.itemChildrenIndentation)},M$=v$(e=>e.expandedItems,e=>{const t=new Map;return e.forEach(e=>{t.set(e,!0)}),t}),C$={expandedItemsRaw:y$(e=>e.expandedItems),expandedItemsMap:M$,flatList:v$(S$.itemOrderedChildrenIdsLookup,M$,(e,t)=>(e[b$]??[]).flatMap(function n(r){if(!t.has(r))return[r];const i=[r],o=e[r]||[];for(const e of o)i.push(...n(e));return i})),triggerSlot:y$(e=>e.expansionTrigger),isItemExpanded:y$(M$,(e,t)=>e.has(t)),isItemExpandable:y$(S$.itemMeta,(e,t)=>e?.expandable??!1)},P$=v$(e=>e.selectedItems,e=>Array.isArray(e)?e:null!=e?[e]:[]),E$=v$(P$,e=>{const t=new Map;return e.forEach(e=>{t.set(e,!0)}),t}),T$=y$((e,t)=>e.itemMetaLookup[t]?.selectable??!0),A$={selectedItemsRaw:y$(e=>e.selectedItems),selectedItems:P$,selectedItemsMap:E$,enabled:y$(e=>!e.disableSelection),isMultiSelectEnabled:y$(e=>e.multiSelect),isCheckboxSelectionEnabled:y$(e=>e.checkboxSelection),propagationRules:y$(e=>e.selectionPropagation),isItemSelected:y$(E$,(e,t)=>e.has(t)),isFeatureEnabledForItem:y$(T$,e=>!e.disableSelection,(e,t,n)=>t&&e),canItemBeSelected:y$(S$.isItemDisabled,T$,e=>!e.disableSelection,(e,t,n,r)=>n&&!e&&t),isItemSelectable:T$},O$=v$(A$.selectedItems,C$.expandedItemsMap,S$.itemMetaLookup,S$.disabledItemFocusable,e=>S$.itemOrderedChildrenIds(e,null),(e,t,n,r,i)=>{const o=e.find(e=>{if(!r&&I$(n,e))return!1;const i=n[e];return i&&(null==i.parentId||t.has(i.parentId))});if(null!=o)return o;const a=i.find(e=>r||!I$(n,e));return null!=a?a:null}),j$={defaultFocusableItemId:O$,isItemTheDefaultFocusableItem:y$(O$,(e,t)=>e===t),focusedItemId:y$(e=>e.focusedItemId),isItemFocused:y$((e,t)=>e.focusedItemId===t)},L$={isEmpty:y$(e=>null==e.lazyLoadedItems||0===Object.keys(e.lazyLoadedItems.loading).length&&0===Object.keys(e.lazyLoadedItems.errors).length),isItemLoading:y$((e,t)=>e.lazyLoadedItems?.loading[t??b$]??!1),itemHasError:y$((e,t)=>!!e.lazyLoadedItems?.errors[t??b$]),itemError:y$((e,t)=>e.lazyLoadedItems?.errors[t??b$])},R$={isItemEditable:y$(e=>e.isItemEditable,S$.itemModel,(e,t,n)=>!(!t||null==e)&&("boolean"==typeof e?e:e(t))),isItemBeingEdited:y$((e,t)=>null!=t&&e.editedItemId===t),isAnyItemBeingEdited:y$(e=>!!e.editedItemId)},D$=e=>Array.isArray(e)?e.length>0&&e.some(D$):Boolean(e),$$=e.createContext(()=>-1),z$=(e,t)=>{let n=t.length-1;for(;n>=0&&!S$.canItemBeFocused(e,t[n]);)n-=1;if(-1!==n)return t[n]},N$=(e,t)=>{const n=S$.itemMeta(e,t);if(!n)return null;const r=S$.itemOrderedChildrenIds(e,n.parentId),i=S$.itemIndex(e,t);if(0===i)return n.parentId;let o=i-1;for(;!S$.canItemBeFocused(e,r[o])&&o>=0;)o-=1;if(-1===o)return null==n.parentId?null:N$(e,n.parentId);let a=r[o],s=z$(e,S$.itemOrderedChildrenIds(e,a));for(;C$.isItemExpanded(e,a)&&null!=s;)a=s,s=z$(e,S$.itemOrderedChildrenIds(e,a));return a},_$=(e,t)=>{if(C$.isItemExpanded(e,t)){const n=S$.itemOrderedChildrenIds(e,t).find(t=>S$.canItemBeFocused(e,t));if(null!=n)return n}let n=S$.itemMeta(e,t);for(;null!=n;){const t=S$.itemOrderedChildrenIds(e,n.parentId),r=S$.itemIndex(e,n.id);if(r{let t=null;for(;null==t||C$.isItemExpanded(e,t);){const n=S$.itemOrderedChildrenIds(e,t),r=z$(e,n);if(null==r)return t;t=r}return t},H$=e=>S$.itemOrderedChildrenIds(e,null).find(t=>S$.canItemBeFocused(e,t)),B$=(e,t,n)=>{if(t===n)return[t,n];const r=S$.itemMeta(e,t),i=S$.itemMeta(e,n);if(!r||!i)return[t,n];if(r.parentId===i.id||i.parentId===r.id)return i.parentId===r.id?[r.id,i.id]:[i.id,r.id];const o=[r.id],a=[i.id];let s=r.parentId,l=i.parentId,c=-1!==a.indexOf(s),u=-1!==o.indexOf(l),d=!0,p=!0;for(;!u&&!c;)d&&(o.push(s),c=-1!==a.indexOf(s),d=null!==s,!c&&d&&(s=S$.itemParentId(e,s))),p&&!c&&(a.push(l),u=-1!==o.indexOf(l),p=null!==l,!u&&p&&(l=S$.itemParentId(e,l)));const h=c?s:l,m=S$.itemOrderedChildrenIds(e,h),f=o[o.indexOf(h)-1],g=a[a.indexOf(h)-1];return m.indexOf(f)t!==e.closest('*[role="treeitem"]'),U$=y$(e=>e.providedTreeId??e.treeId),Y$={treeId:U$,treeItemIdAttribute:y$(U$,(e,t,n)=>null!=n?n:`${e??""}-${t}`)},W$=(e,t,n)=>"function"==typeof n?n(e,t):n;function G$(e){return LD("MuiTreeItem",e)}RD("MuiTreeItem",["root","content","groupTransition","iconContainer","label","checkbox","labelInput","dragAndDropOverlay","errorIcon","loadingIcon","expanded","selected","focused","disabled","editable","editing"]);const K$=ob((0,O.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"TreeViewExpandIcon"),q$=ob((0,O.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"TreeViewCollapseIcon"),X$=["ownerState"];function Z$(e,t,n){return void 0!==e?e:void 0!==t?t:n}function J$(e){const{slots:t,slotProps:n,status:r}=e,{slots:i,slotProps:o}=BD(),a={collapseIcon:Z$(t?.collapseIcon,i.collapseIcon,q$),expandIcon:Z$(t?.expandIcon,i.expandIcon,K$),endIcon:Z$(t?.endIcon,i.endIcon),icon:t?.icon};let s;s=a?.icon?"icon":r.expandable?r.expanded?"collapseIcon":"expandIcon":"endIcon";const c=a[s],u=tt(TD({elementType:c,externalSlotProps:e=>l({},ED(o[s],e),ED(n?.[s],e)),ownerState:{}}),X$);return c?(0,O.jsx)(c,l({},u)):null}const Q$=bm("div",{name:"MuiTreeItemDragAndDropOverlay",slot:"Root",shouldForwardProp:e=>QE(e)&&"action"!==e})(({theme:e})=>({position:"absolute",left:0,display:"flex",top:0,bottom:0,right:0,pointerEvents:"none",variants:[{props:{action:"make-child"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))",borderRadius:e.shape.borderRadius,backgroundColor:e.vars?`rgba(${e.vars.palette.primary.darkChannel} / ${e.vars.palette.action.focusOpacity})`:op(e.palette.primary.dark,e.palette.action.focusOpacity)}},{props:{action:"reorder-above"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))",borderTop:`1px solid ${(e.vars||e).palette.action.active}`}},{props:{action:"reorder-below"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))",borderBottom:`1px solid ${(e.vars||e).palette.action.active}`}},{props:{action:"move-to-parent"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * calc(var(--TreeView-itemDepth) - 1))",borderBottom:`1px solid ${(e.vars||e).palette.action.active}`}}]}));function ez(e){return null==e.action?null:(0,O.jsx)(Q$,l({},e))}function tz(t){const{children:n,itemId:r,id:i}=t,{wrapItem:o,store:a}=FD(),s=uD(a,Y$.treeItemIdAttribute,r,i);return(0,O.jsx)(e.Fragment,{children:o({children:n,itemId:r,store:a,idAttribute:s})})}const nz=bm("input",{name:"MuiTreeItem",slot:"LabelInput"})(({theme:e})=>l({},e.typography.body1,{width:"100%",backgroundColor:(e.vars||e).palette.background.paper,borderRadius:e.shape.borderRadius,border:"none",padding:"0 2px",boxSizing:"border-box","&:focus":{outline:`1px solid ${(e.vars||e).palette.primary.main}`}})),rz=["visible"],iz=["id","itemId","label","disabled","disableSelection","children","slots","slotProps","classes"],oz=$D(),az=bm("li",{name:"MuiTreeItem",slot:"Root"})({listStyle:"none",margin:0,padding:0,outline:0}),sz=bm("div",{name:"MuiTreeItem",slot:"Content",shouldForwardProp:e=>QE(e)&&"status"!==e})(({theme:e})=>({padding:e.spacing(.5,1),paddingLeft:`calc(${e.spacing(1)} + var(--TreeView-itemChildrenIndentation) * var(--TreeView-itemDepth))`,borderRadius:e.shape.borderRadius,width:"100%",boxSizing:"border-box",position:"relative",display:"flex",alignItems:"center",gap:e.spacing(1),cursor:"pointer",WebkitTapHighlightColor:"transparent","&:hover":{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},"&[data-disabled]":{opacity:(e.vars||e).palette.action.disabledOpacity,backgroundColor:"transparent",cursor:"auto"},"&[data-focused]":{backgroundColor:(e.vars||e).palette.action.focus},"&[data-selected]":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:op(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:op(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:op(e.palette.primary.main,e.palette.action.selectedOpacity)}}},"&[data-selected][data-focused]":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:op(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}})),lz=bm("div",{name:"MuiTreeItem",slot:"Label",shouldForwardProp:e=>QE(e)&&"editable"!==e})(({theme:e})=>l({width:"100%",boxSizing:"border-box",minWidth:0,position:"relative",overflow:"hidden"},e.typography.body1,{variants:[{props:({editable:e})=>e,style:{paddingLeft:"2px"}}]})),cz=bm("div",{name:"MuiTreeItem",slot:"IconContainer"})({width:16,display:"flex",flexShrink:0,justifyContent:"center",position:"relative",cursor:"inherit","& svg":{fontSize:18}}),uz=bm(ZD,{name:"MuiTreeItem",slot:"GroupTransition",overridesResolver:(e,t)=>t.groupTransition})({margin:0,padding:0}),dz=bm("div",{name:"MuiTreeItem",slot:"ErrorIcon"})({position:"absolute",right:-3,width:7,height:7,borderRadius:"50%",backgroundColor:"red"}),pz=bm(tv,{name:"MuiTreeItem",slot:"LoadingIcon"})({color:"text.primary"}),hz=bm(e.forwardRef((e,t)=>{const{visible:n}=e,r=tt(e,rz);return n?(0,O.jsx)(f$,l({},r,{ref:t})):null}),{name:"MuiTreeItem",slot:"Checkbox"})({padding:0}),mz=e.forwardRef(function(t,n){const r=oz({props:t,name:"MuiTreeItem"}),{id:i,itemId:o,label:a,disabled:s,disableSelection:c,children:u,slots:d={},slotProps:p={},classes:h}=r,m=tt(r,iz),{getContextProviderProps:f,getRootProps:g,getContentProps:y,getIconContainerProps:v,getCheckboxProps:b,getLabelProps:x,getGroupTransitionProps:I,getLabelInputProps:w,getDragAndDropOverlayProps:k,getErrorContainerProps:S,getLoadingContainerProps:M,status:C}=(t=>{const{runItemPlugins:n,publicAPI:r,store:i}=FD(),o=e.useContext($$),a=uD(i,W$,t.itemId,o),{id:s,itemId:c,label:u,children:d,rootRef:p}=t,{rootRef:h,contentRef:m,propsEnhancers:f}=n(t),{interactions:g,status:y}=(({itemId:e,children:t})=>{const{store:n,publicAPI:r}=FD(),i=uD(n,C$.isItemExpandable,e),o=uD(n,L$.isItemLoading,e),a=uD(n,L$.itemHasError,e),s=D$(t)||i,l=uD(n,C$.isItemExpanded,e),c=uD(n,j$.isItemFocused,e),u=uD(n,A$.isItemSelected,e),d=uD(n,S$.isItemDisabled,e),p=uD(n,R$.isItemBeingEdited,e),h=uD(n,R$.isItemEditable,e),m={expandable:s,expanded:l,focused:c,selected:u,disabled:d,editing:p,editable:h,loading:o,error:a},f=()=>{n.labelEditing&&(p?n.labelEditing.setEditedItem(null):n.labelEditing.setEditedItem(e))};return{interactions:{handleExpansion:t=>{if(m.disabled)return;m.focused||n.focus.focusItem(t,e);const r=A$.isMultiSelectEnabled(n.state)&&(t.shiftKey||t.ctrlKey||t.metaKey);!m.expandable||r&&C$.isItemExpanded(n.state,e)||n.expansion.setItemExpansion({event:t,itemId:e})},handleSelection:t=>{A$.canItemBeSelected(n.state,e)&&(m.focused||m.editing||n.focus.focusItem(t,e),A$.isMultiSelectEnabled(n.state)&&(t.shiftKey||t.ctrlKey||t.metaKey)?t.shiftKey?n.selection.expandSelectionRange(t,e):n.selection.setItemSelection({event:t,itemId:e,keepExistingSelection:!0}):n.selection.setItemSelection({event:t,itemId:e,shouldBeSelected:!0}))},handleCheckboxSelection:t=>{const r=t.nativeEvent.shiftKey,i=A$.isMultiSelectEnabled(n.state);i&&r?n.selection.expandSelectionRange(t,e):n.selection.setItemSelection({event:t,itemId:e,keepExistingSelection:i,shouldBeSelected:t.target.checked})},toggleItemEditing:f,handleSaveItemLabel:(t,r)=>{n.labelEditing&&R$.isItemBeingEdited(n.state,e)&&(n.labelEditing.updateItemLabel(e,r),f(),n.focus.focusItem(t,e))},handleCancelItemLabelEditing:t=>{n.labelEditing&&R$.isItemBeingEdited(n.state,e)&&(f(),n.focus.focusItem(t,e))}},status:m,publicAPI:r}})({itemId:c,children:d}),v=e.useRef(null),b=e.useRef(null),x=sD(p,h,v),I=sD(m,b),w=e.useRef(null),k=uD(i,A$.isCheckboxSelectionEnabled),S=uD(i,Y$.treeItemIdAttribute,c,s),M=uD(i,j$.isItemTheDefaultFocusableItem,c),C={rootRefObject:v,contentRefObject:b,interactions:g},P=e=>t=>{if(e.onBlur?.(t),t.defaultMuiPrevented)return;const n=i.items.getItemDOMElement(c);y.editing||t.relatedTarget&&V$(t.relatedTarget,n)&&(t.target&&"labelInput"===t.target?.dataset?.element&&V$(t.target,n)||"labelInput"===t.relatedTarget?.dataset?.element)||i.focus.removeFocusedItem()},E=e=>t=>{e.onKeyDown?.(t),t.defaultMuiPrevented||"labelInput"===t.target?.dataset?.element||i.keyboardNavigation.handleItemKeyDown(t,c)},T=e=>t=>{e.onMouseDown?.(t),t.defaultMuiPrevented||(t.shiftKey||t.ctrlKey||t.metaKey||y.disabled)&&t.preventDefault()};return{getContextProviderProps:()=>({itemId:c,id:s}),getRootProps:(e={})=>{const n=l({},CD(t),CD(e)),r=l({},n,{ref:x,role:"treeitem",tabIndex:M?0:-1,id:S,"aria-expanded":y.expandable?y.expanded:void 0,"aria-disabled":y.disabled||void 0},e,{style:l({},e.style??{},{"--TreeView-itemDepth":a}),onFocus:(o=n,e=>{o.onFocus?.(e),e.defaultMuiPrevented||!y.focused&&S$.canItemBeFocused(i.state,c)&&e.currentTarget===e.target&&i.focus.focusItem(e,c)}),onBlur:P(n),onKeyDown:E(n)});var o;const s=f.root?.(l({},C,{externalEventHandlers:n}))??{};return l({},r,s)},getContentProps:(e={})=>{const t=CD(e),n=l({},t,e,{ref:I,onClick:(r=t,e=>{r.onClick?.(e),i.items.handleItemClick(e,c),e.defaultMuiPrevented||w.current?.contains(e.target)||("content"===C$.triggerSlot(i.state)&&g.handleExpansion(e),k||g.handleSelection(e))}),onMouseDown:T(t),status:y});var r;["expanded","selected","focused","disabled","editing","editable"].forEach(e=>{y[e]&&(n[`data-${e}`]="")});const o=f.content?.(l({},C,{externalEventHandlers:t}))??{};return l({},n,o)},getGroupTransitionProps:(e={})=>l({},CD(e),{unmountOnExit:!0,component:"ul",role:"group",in:y.expanded,children:d},e),getIconContainerProps:(e={})=>{const t=CD(e);return l({},t,e,{onClick:(n=t,e=>{n.onClick?.(e),e.defaultMuiPrevented||"iconContainer"===C$.triggerSlot(i.state)&&g.handleExpansion(e)})});var n},getCheckboxProps:(e={})=>{const t=CD(e),n=l({},t,{ref:w,"aria-hidden":!0},e),r=f.checkbox?.(l({},C,{externalEventHandlers:t}))??{};return l({},n,r)},getLabelProps:(e={})=>{const t=l({},CD(e)),n=l({},t,{children:u},e,{onDoubleClick:(r=t,e=>{r.onDoubleClick?.(e),e.defaultMuiPrevented||g.toggleItemEditing()})});var r;const i=f.label?.(l({},C,{externalEventHandlers:t}))??{};return l({},i,n)},getLabelInputProps:(e={})=>{const t=CD(e),n=f.labelInput?.(l({},C,{externalEventHandlers:t}))??{};return l({},e,n)},getDragAndDropOverlayProps:(e={})=>{const t=CD(e),n=f.dragAndDropOverlay?.(l({},C,{externalEventHandlers:t}))??{};return l({},e,n)},getErrorContainerProps:(e={})=>l({},CD(e),e),getLoadingContainerProps:(e={})=>l({size:"12px",thickness:6},CD(e),e),rootRef:x,status:y,publicAPI:r}})({id:i,itemId:o,children:u,label:a,disabled:s,disableSelection:c}),P=(e=>{const{classes:t}=BD();return MD({root:["root"],content:["content"],iconContainer:["iconContainer"],checkbox:["checkbox"],label:["label"],groupTransition:["groupTransition"],labelInput:["labelInput"],dragAndDropOverlay:["dragAndDropOverlay"],errorIcon:["errorIcon"],loadingIcon:["loadingIcon"],expanded:["expanded"],editing:["editing"],editable:["editable"],selected:["selected"],focused:["focused"],disabled:["disabled"]},G$,l({},e,{root:Hh(e?.root,t.root),content:Hh(e?.content,t.itemContent),iconContainer:Hh(e?.iconContainer,t.itemIconContainer),checkbox:Hh(e?.checkbox,t.itemCheckbox),label:Hh(e?.label,t.itemLabel),groupTransition:Hh(e?.groupTransition,t.itemGroupTransition),labelInput:Hh(e?.labelInput,t.itemLabelInput),dragAndDropOverlay:Hh(e?.dragAndDropOverlay,t.itemDragAndDropOverlay),errorIcon:Hh(e?.errorIcon,t.itemErrorIcon),loadingIcon:Hh(e?.loadingIcon,t.itemLoadingIcon)}))})(h),E=d.root??az,T=TD({elementType:E,getSlotProps:g,externalForwardedProps:m,externalSlotProps:p.root,additionalProps:{ref:n},ownerState:{},className:P.root}),A=d.content??sz,j=TD({elementType:A,getSlotProps:y,externalSlotProps:p.content,ownerState:{},className:Hh(P.content,C.expanded&&P.expanded,C.selected&&P.selected,C.focused&&P.focused,C.disabled&&P.disabled,C.editing&&P.editing,C.editable&&P.editable)}),L=d.iconContainer??cz,R=TD({elementType:L,getSlotProps:v,externalSlotProps:p.iconContainer,ownerState:{},className:P.iconContainer}),D=d.label??lz,$=TD({elementType:D,getSlotProps:x,externalSlotProps:p.label,ownerState:{},className:P.label}),z=d.checkbox??hz,N=TD({elementType:z,getSlotProps:b,externalSlotProps:p.checkbox,ownerState:{},className:P.checkbox}),_=d.groupTransition??void 0,F=TD({elementType:_,getSlotProps:I,externalSlotProps:p.groupTransition,ownerState:{},className:P.groupTransition}),H=d.labelInput??nz,B=TD({elementType:H,getSlotProps:w,externalSlotProps:p.labelInput,ownerState:{},className:P.labelInput}),V=d.dragAndDropOverlay??ez,U=TD({elementType:V,getSlotProps:k,externalSlotProps:p.dragAndDropOverlay,ownerState:{},className:P.dragAndDropOverlay}),Y=d.errorIcon??dz,W=TD({elementType:Y,getSlotProps:S,externalSlotProps:p.errorIcon,ownerState:{},className:P.errorIcon}),G=d.loadingIcon??pz,K=TD({elementType:G,getSlotProps:M,externalSlotProps:p.loadingIcon,ownerState:{},className:P.loadingIcon});return(0,O.jsx)(tz,l({},f(),{children:(0,O.jsxs)(E,l({},T,{children:[(0,O.jsxs)(A,l({},j,{children:[(0,O.jsxs)(L,l({},R,{children:[C.error&&(0,O.jsx)(Y,l({},W)),C.loading?(0,O.jsx)(G,l({},K)):(0,O.jsx)(J$,{status:C,slots:d,slotProps:p})]})),(0,O.jsx)(z,l({},N)),C.editing?(0,O.jsx)(H,l({},B)):(0,O.jsx)(D,l({},$)),(0,O.jsx)(V,l({},U))]})),u&&(0,O.jsx)(uz,l({as:_},F))]}))}))}),fz=["ownerState"],gz=e.createContext(null),yz=()=>zD,vz=e=>S$.itemOrderedChildrenIds(e,null),bz=e.memo(function({itemSlot:t,itemSlotProps:n,itemId:r,skipChildren:i}){const o=e.useContext(gz),{store:a}=FD(),s=uD(a,S$.itemMeta,r),c=uD(a,i?yz:S$.itemOrderedChildrenIds,r),u=t??mz,d=tt(TD({elementType:u,externalSlotProps:n,additionalProps:{label:s?.label,id:s?.idAttribute,itemId:r},ownerState:{itemId:r,label:s?.label}}),fz);return(0,O.jsx)(u,l({},d,{children:c?.map(o)}))},YD);function xz(t){const{slots:n,slotProps:r}=t,{store:i}=FD(),o=n?.item,a=r?.item,s=uD(i,S$.domStructure),l=uD(i,"flat"===s?C$.flatList:vz),c="flat"===s,u=e.useCallback(e=>(0,O.jsx)(bz,{itemSlot:o,itemSlotProps:a,itemId:e,skipChildren:c},e),[o,a,c]);return(0,O.jsx)(gz.Provider,{value:u,children:l.map(u)})}function Iz(e,t,n){const r=uD(e,Y$.treeId),i=uD(e,S$.itemChildrenIndentation),o=uD(e,A$.isMultiSelectEnabled);return a=>l({ref:n,role:"tree",id:r,"aria-multiselectable":o},t,a,{style:l({},t.style,{"--TreeView-itemChildrenIndentation":"number"==typeof i?`${i}px`:i}),onFocus:t=>{a.onFocus?.(t),e.focus.handleRootFocus(t)},onBlur:t=>{a.onBlur?.(t),e.focus.handleRootBlur(t)}})}const wz=["apiRef","slots","slotProps","disabledItemsFocusable","items","isItemDisabled","isItemSelectionDisabled","getItemLabel","getItemChildren","getItemId","onItemClick","itemChildrenIndentation","id","expandedItems","defaultExpandedItems","onExpandedItemsChange","onItemExpansionToggle","expansionTrigger","disableSelection","selectedItems","defaultSelectedItems","multiSelect","checkboxSelection","selectionPropagation","onSelectedItemsChange","onItemSelectionToggle","onItemFocus","onItemLabelChange","isItemEditable"],kz="undefined"!=typeof document?e.useLayoutEffect:()=>{},Sz=[];function Mz(t,n){const r=fS(),i=aD(()=>new t(l({},n,{isRtl:r}))).current;var o;return kz(()=>i.updateStateFromParameters(l({},n,{isRtl:r})),[i,r,n]),o=i.disposeEffect,e.useEffect(o,Sz),i}const Cz=({props:t})=>{const{store:n}=FD(),{label:r,itemId:i}=t,[o,a]=e.useState(r),s=uD(n,R$.isItemEditable,i),l=uD(n,R$.isItemBeingEdited,i);return e.useEffect(()=>{l||a(r)},[l,r]),{propsEnhancers:{label:()=>({editable:s}),labelInput:({externalEventHandlers:e,interactions:t})=>s?{value:o??"","data-element":"labelInput",onChange:t=>{e.onChange?.(t),a(t.target.value)},onKeyDown:n=>{if(e.onKeyDown?.(n),n.defaultMuiPrevented)return;const r=n.target;"Enter"===n.key&&r.value?t.handleSaveItemLabel(n,r.value):"Escape"===n.key&&t.handleCancelItemLabelEditing(n)},onBlur:n=>{e.onBlur?.(n),n.defaultMuiPrevented||n.target.value&&t.handleSaveItemLabel(n,n.target.value)},autoFocus:!0,type:"text"}:{}}}};class Pz{constructor(e){this.store=e,e.itemPluginManager.register(Cz,null)}buildPublicAPI=()=>({setEditedItem:this.setEditedItem,updateItemLabel:this.updateItemLabel});setEditedItem=e=>{(null===e||R$.isItemEditable(this.store.state,e))&&this.store.set("editedItemId",e)};updateItemLabel=(e,t)=>{if(!t)throw new Error(["MUI X: The Tree View component requires all items to have a `label` property.","The label of an item cannot be empty.",e].join("\n"));const n=this.store.state.itemMetaLookup[e];n.label!==t&&(this.store.set("itemMetaLookup",l({},this.store.state.itemMetaLookup,{[e]:l({},n,{label:t})})),this.store.parameters.onItemLabelChange&&this.store.parameters.onItemLabelChange(e,t))}}class Ez{static create(e){return new Ez(e)}constructor(e){this.state=e,this.listeners=new Set,this.updateTick=0}subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.state;setState(e){this.state=e,this.updateTick+=1;const t=this.updateTick,n=this.listeners.values();let r;for(;r=n.next(),!r.done;){if(t!==this.updateTick)return;(0,r.value)(e)}}update(e){for(const t in e)if(!Object.is(this.state[t],e[t]))return void this.setState(l({},this.state,e))}set(e,t){Object.is(this.state[e],t)||this.setState(l({},this.state,{[e]:t}))}use=(()=>(e,t,n,r)=>uD(this,e,t,n,r))()}class Tz{maxListeners=20;warnOnce=!1;events={};on(e,t,n={}){let r=this.events[e];r||(r={highPriority:new Map,regular:new Map},this.events[e]=r),n.isFirst?r.highPriority.set(t,!0):r.regular.set(t,!0)}removeListener(e,t){this.events[e]&&(this.events[e].regular.delete(t),this.events[e].highPriority.delete(t))}removeAllListeners(){this.events={}}emit(e,...t){const n=this.events[e];if(!n)return;const r=Array.from(n.highPriority.keys()),i=Array.from(n.regular.keys());for(let e=r.length-1;e>=0;e-=1){const i=r[e];n.highPriority.has(i)&&i.apply(this,t)}for(let e=0;et||(e?"iconContainer":"content");class Oz{constructor(e){this.store=e}static shouldRebuildItemsState=(e,t)=>["items","isItemDisabled","isItemSelectionDisabled","getItemId","getItemLabel","getItemChildren"].some(n=>{const r=n;return e[r]!==t[r]});static buildItemsStateIfNeeded=e=>{const t={},n={},r={},i={};return function o(a,s,l){const c=s??b$,{metaLookup:u,modelLookup:d,orderedChildrenIds:p,childrenIndexes:h,itemsChildren:m}=w$({storeParameters:e,items:a,parentId:s,depth:l,isItemExpandable:(e,t)=>!!t&&t.length>0,otherItemsMetaLookup:t});Object.assign(t,u),Object.assign(n,d),r[c]=p,i[c]=h;for(const e of m)o(e.children||[],e.id,l+1)}(e.items,null,0),{itemMetaLookup:t,itemModelLookup:n,itemOrderedChildrenIdsLookup:r,itemChildrenIndexesLookup:i}};getItem=e=>S$.itemModel(this.store.state,e);getItemTree=()=>{const e=t=>{const n=l({},S$.itemModel(this.store.state,t)),r=S$.itemOrderedChildrenIds(this.store.state,t);return r.length>0?n.children=r.map(e):delete n.children,n};return S$.itemOrderedChildrenIds(this.store.state,null).map(e)};getItemOrderedChildrenIds=e=>S$.itemOrderedChildrenIds(this.store.state,e);getParentId=e=>{const t=S$.itemMeta(this.store.state,e);return t?.parentId||null};setIsItemDisabled=({itemId:e,shouldBeDisabled:t})=>{if(!this.store.state.itemMetaLookup[e])return;const n=l({},this.store.state.itemMetaLookup);n[e]=l({},n[e],{disabled:t??!n[e].disabled}),this.store.set("itemMetaLookup",n)};buildPublicAPI=()=>({getItem:this.getItem,getItemDOMElement:this.getItemDOMElement,getItemOrderedChildrenIds:this.getItemOrderedChildrenIds,getItemTree:this.getItemTree,getParentId:this.getParentId,setIsItemDisabled:this.setIsItemDisabled});getItemDOMElement=e=>{const t=S$.itemMeta(this.store.state,e);if(null==t)return null;const n=Y$.treeItemIdAttribute(this.store.state,e,t.idAttribute);return document.getElementById(n)};setItemChildren=({items:e,parentId:t,getChildrenCount:n})=>{const r=t??b$,i=null==t?-1:S$.itemDepth(this.store.state,t),{metaLookup:o,modelLookup:a,orderedChildrenIds:s,childrenIndexes:c}=w$({storeParameters:this.store.parameters,items:e,parentId:t,depth:i+1,isItemExpandable:n?e=>0!==n(e):()=>!1,otherItemsMetaLookup:S$.itemMetaLookup(this.store.state)});this.store.update({itemModelLookup:l({},this.store.state.itemModelLookup,a),itemMetaLookup:l({},this.store.state.itemMetaLookup,o),itemOrderedChildrenIdsLookup:l({},this.store.state.itemOrderedChildrenIdsLookup,{[r]:s}),itemChildrenIndexesLookup:l({},this.store.state.itemChildrenIndexesLookup,{[r]:c})})};removeChildren=e=>{const t=this.store.state.itemMetaLookup,n=Object.keys(t).reduce((n,r)=>{const i=t[r];return i.parentId===e?n:l({},n,{[i.id]:i})},{}),r=l({},this.store.state.itemOrderedChildrenIdsLookup),i=l({},this.store.state.itemChildrenIndexesLookup),o=e??b$;delete i[o],delete r[o],this.store.update({itemMetaLookup:n,itemOrderedChildrenIdsLookup:r,itemChildrenIndexesLookup:i})};handleItemClick=(e,t)=>{this.store.parameters.onItemClick?.(e,t)}}function jz(e){return{disabledItemsFocusable:e.disabledItemsFocusable??!1,domStructure:"nested",itemChildrenIndentation:e.itemChildrenIndentation??"12px",providedTreeId:e.id,expansionTrigger:Az({isItemEditable:e.isItemEditable,expansionTrigger:e.expansionTrigger}),disableSelection:e.disableSelection??!1,multiSelect:e.multiSelect??!1,checkboxSelection:e.checkboxSelection??!1,selectionPropagation:e.selectionPropagation??ND}}function Lz(e,t,n){return void 0!==e?e:void 0!==t?t:n}let Rz=0;class Dz{timeoutIds=(()=>new Map)();intervalIds=(()=>new Map)();startTimeout=(e,t,n)=>{this.clearTimeout(e);const r=setTimeout(()=>{this.timeoutIds.delete(e),n()},t);this.timeoutIds.set(e,r)};startInterval=(e,t,n)=>{this.clearTimeout(e);const r=setInterval(n,t);this.intervalIds.set(e,r)};clearTimeout=e=>{const t=this.timeoutIds.get(e);null!=t&&(clearTimeout(t),this.timeoutIds.delete(e))};clearInterval=e=>{const t=this.intervalIds.get(e);null!=t&&(clearInterval(t),this.intervalIds.delete(e))};clearAll=()=>{this.timeoutIds.forEach(clearTimeout),this.timeoutIds.clear(),this.intervalIds.forEach(clearInterval),this.intervalIds.clear()}}class $z{typeaheadQuery="";constructor(e){this.store=e,this.labelMap=zz(S$.itemMetaLookup(this.store.state)),this.store.registerStoreEffect(S$.itemMetaLookup,(e,t)=>{this.store.shouldIgnoreItemsStateUpdate()||(this.labelMap=zz(t))})}canToggleItemSelection=e=>A$.canItemBeSelected(this.store.state,e);canToggleItemExpansion=e=>!S$.isItemDisabled(this.store.state,e)&&C$.isItemExpandable(this.store.state,e);getFirstItemMatchingTypeaheadQuery=(e,t)=>{const n=e=>{const t=_$(this.store.state,e);return null===t?H$(this.store.state):t},r=t=>{let r=null;const i={};let o=t.length>1?e:n(e);for(;null==r&&!i[o];){const e=this.labelMap[o];e?.startsWith(t)?r=o:(i[o]=!0,o=n(o))}return r},i=t.toLowerCase(),o=`${this.typeaheadQuery}${i}`,a=r(o);if(null!=a)return this.typeaheadQuery=o,a;const s=r(i);return null!=s?(this.typeaheadQuery=i,s):(this.typeaheadQuery="",null)};updateLabelMap=e=>{this.labelMap=e(this.labelMap)};handleItemKeyDown=async(e,t)=>{if(e.defaultMuiPrevented)return;if(e.altKey||V$(e.target,e.currentTarget))return;const n=e.ctrlKey||e.metaKey,r=e.key,i=A$.isMultiSelectEnabled(this.store.state);switch(!0){case" "===r&&this.canToggleItemSelection(t):e.preventDefault(),i&&e.shiftKey?this.store.selection.expandSelectionRange(e,t):this.store.selection.setItemSelection({event:e,itemId:t,keepExistingSelection:i,shouldBeSelected:void 0});break;case"Enter"===r:this.store.labelEditing?.setEditedItem&&R$.isItemEditable(this.store.state,t)&&!R$.isItemBeingEdited(this.store.state,t)?this.store.labelEditing.setEditedItem(t):this.canToggleItemExpansion(t)?(this.store.expansion.setItemExpansion({event:e,itemId:t}),e.preventDefault()):this.canToggleItemSelection(t)&&(i?(e.preventDefault(),this.store.selection.setItemSelection({event:e,itemId:t,keepExistingSelection:!0})):A$.isItemSelected(this.store.state,t)||(this.store.selection.setItemSelection({event:e,itemId:t}),e.preventDefault()));break;case"ArrowDown"===r:{const n=_$(this.store.state,t);n&&(e.preventDefault(),this.store.focus.focusItem(e,n),i&&e.shiftKey&&this.canToggleItemSelection(n)&&this.store.selection.selectItemFromArrowNavigation(e,t,n));break}case"ArrowUp"===r:{const n=N$(this.store.state,t);n&&(e.preventDefault(),this.store.focus.focusItem(e,n),i&&e.shiftKey&&this.canToggleItemSelection(n)&&this.store.selection.selectItemFromArrowNavigation(e,t,n));break}case"ArrowRight"===r&&!this.store.parameters.isRtl||"ArrowLeft"===r&&this.store.parameters.isRtl:if(n)return;if(C$.isItemExpanded(this.store.state,t)){const n=_$(this.store.state,t);n&&(this.store.focus.focusItem(e,n),e.preventDefault())}else this.canToggleItemExpansion(t)&&(this.store.expansion.setItemExpansion({event:e,itemId:t}),e.preventDefault());break;case"ArrowLeft"===r&&!this.store.parameters.isRtl||"ArrowRight"===r&&this.store.parameters.isRtl:if(n)return;if(this.canToggleItemExpansion(t)&&C$.isItemExpanded(this.store.state,t))this.store.expansion.setItemExpansion({event:e,itemId:t}),e.preventDefault();else{const n=S$.itemParentId(this.store.state,t);n&&(this.store.focus.focusItem(e,n),e.preventDefault())}break;case"Home"===r:this.canToggleItemSelection(t)&&i&&n&&e.shiftKey?this.store.selection.selectRangeFromStartToItem(e,t):this.store.focus.focusItem(e,H$(this.store.state)),e.preventDefault();break;case"End"===r:this.canToggleItemSelection(t)&&i&&n&&e.shiftKey?this.store.selection.selectRangeFromItemToEnd(e,t):this.store.focus.focusItem(e,F$(this.store.state)),e.preventDefault();break;case"*"===r:this.store.expansion.expandAllSiblings(e,t),e.preventDefault();break;case"A"===String.fromCharCode(e.keyCode)&&n&&i&&A$.enabled(this.store.state):this.store.selection.selectAllNavigableItems(e),e.preventDefault();break;case!n&&!e.shiftKey&&function(e){return!!e&&1===e.length&&!!e.match(/\S/)}(r):{this.store.timeoutManager.clearTimeout("typeahead");const n=this.getFirstItemMatchingTypeaheadQuery(t,r);null!=n?(this.store.focus.focusItem(e,n),e.preventDefault()):this.typeaheadQuery="",this.store.timeoutManager.startTimeout("typeahead",500,()=>{this.typeaheadQuery=""});break}}}}function zz(e){const t={};return Object.values(e).forEach(e=>{t[e.id]=e.label.toLowerCase()}),t}class Nz{constructor(e){this.store=e;let t=e.state;this.store.subscribe(e=>{if(e.itemMetaLookup===t.itemMetaLookup)return void(t=e);const n=j$.focusedItemId(e);if(null==n||S$.itemMeta(e,n))return void(t=e);const r=t=>null!=t&&S$.itemMeta(e,t)?t:null,i=r(_$(t,n))??r(N$(t,n))??H$(e);null==i?this.setFocusedItemId(null):this.applyItemFocus(null,i),t=e})}setFocusedItemId=e=>{j$.focusedItemId(this.store.state)!==e&&this.store.set("focusedItemId",e)};applyItemFocus=(e,t)=>{this.store.items.getItemDOMElement(t)?.focus(),this.setFocusedItemId(t),this.store.parameters.onItemFocus?.(e,t)};buildPublicAPI=()=>({focusItem:this.focusItem});focusItem=(e,t)=>{const n=S$.itemMeta(this.store.state,t);n&&(null==n.parentId||C$.isItemExpanded(this.store.state,n.parentId))&&this.applyItemFocus(e,t)};removeFocusedItem=()=>{const e=j$.focusedItemId(this.store.state);if(null!=e){if(S$.itemMeta(this.store.state,e)){const t=this.store.items.getItemDOMElement(e);t&&t.blur()}this.setFocusedItemId(null)}};handleRootFocus=e=>{if(e.defaultMuiPrevented)return;const t=j$.defaultFocusableItemId(this.store.state);e.target===e.currentTarget&&null!=t&&this.applyItemFocus(e,t)};handleRootBlur=e=>{e.defaultMuiPrevented||this.setFocusedItemId(null)}}const _z=y$((e,t)=>{if(A$.isItemSelected(e,t))return"checked";let n=!1,r=!1;const i=o=>{o!==t&&(A$.isItemSelected(e,o)?n=!0:r=!0),S$.itemOrderedChildrenIds(e,o).forEach(i)};return i(t),A$.propagationRules(e).parents?n&&r?"indeterminate":n&&!r?"checked":"empty":n?"indeterminate":"empty"}),Fz=({props:e})=>{const{itemId:t}=e,{store:n}=FD(),r=uD(n,A$.isCheckboxSelectionEnabled),i=uD(n,A$.isFeatureEnabledForItem,t),o=uD(n,A$.canItemBeSelected,t),a=uD(n,_z,t);return{propsEnhancers:{root:()=>{let e;return e="checked"===a||("indeterminate"===a?"mixed":!o&&void 0),{"aria-checked":e}},checkbox:({externalEventHandlers:e,interactions:s})=>({tabIndex:-1,onChange:r=>{e.onChange?.(r),r.defaultMuiPrevented||A$.canItemBeSelected(n.state,t)&&s.handleCheckboxSelection(r)},visible:r&&i,disabled:!o,checked:"checked"===a,indeterminate:"indeterminate"===a})}}};class Hz{lastSelectedItem=null;lastSelectedRange={};constructor(e){this.store=e,e.itemPluginManager.register(Fz,null)}setSelectedItems=(e,t,n)=>{const{selectionPropagation:r=ND,selectedItems:i,onItemSelectionToggle:o,onSelectedItemsChange:a}=this.store.parameters,s=A$.selectedItemsRaw(this.store.state);let l;const c=A$.isMultiSelectEnabled(this.store.state);if(l=c&&(r.descendants||r.parents)?function({store:e,selectionPropagation:t,newModel:n,oldModel:r,additionalItemsToPropagate:i}){if(!t.descendants&&!t.parents)return n;let o=!1;const a=Vz(n),s=Bz({store:e,newModel:n,oldModel:r});return i?.forEach(e=>{a[e]?s.added.includes(e)||s.added.push(e):s.removed.includes(e)||s.removed.push(e)}),s.added.forEach(n=>{if(t.descendants){const t=r=>{r!==n&&(o=!0,a[r]=!0),S$.itemOrderedChildrenIds(e.state,r).forEach(t)};t(n)}if(t.parents){const t=n=>!!a[n]&&S$.itemOrderedChildrenIds(e.state,n).every(t),r=n=>{const i=S$.itemParentId(e.state,n);null!=i&&S$.itemOrderedChildrenIds(e.state,i).every(t)&&(o=!0,a[i]=!0,r(i))};r(n)}}),s.removed.forEach(n=>{if(t.parents){let t=S$.itemParentId(e.state,n);for(;null!=t;)a[t]&&(o=!0,delete a[t]),t=S$.itemParentId(e.state,t)}if(t.descendants){const t=r=>{r!==n&&(o=!0,delete a[r]),S$.itemOrderedChildrenIds(e.state,r).forEach(t)};t(n)}}),o?Object.keys(a):n}({store:this.store,selectionPropagation:r,newModel:t,oldModel:s,additionalItemsToPropagate:n}):t,o)if(c){const t=Bz({store:this.store,newModel:l,oldModel:s});o&&(t.added.forEach(t=>{o(e,t,!0)}),t.removed.forEach(t=>{o(e,t,!1)}))}else l!==s&&(null!=s&&o(e,s,!1),null!=l&&o(e,l,!0));void 0===i&&this.store.set("selectedItems",l),a?.(e,l)};selectRange=(e,[t,n])=>{if(!A$.isMultiSelectEnabled(this.store.state))return;let r=A$.selectedItems(this.store.state).slice();Object.keys(this.lastSelectedRange).length>0&&(r=r.filter(e=>!this.lastSelectedRange[e]));const i=Vz(r),o=((e,t,n)=>{const r=t=>{if(C$.isItemExpandable(e,t)&&C$.isItemExpanded(e,t))return S$.itemOrderedChildrenIds(e,t)[0];let n=S$.itemMeta(e,t);for(;null!=n;){const t=S$.itemOrderedChildrenIds(e,n.parentId),r=S$.itemIndex(e,n.id);if(rA$.isItemSelectable(this.store.state,e)),a=o.filter(e=>!i[e]);r=r.concat(a),this.setSelectedItems(e,r),this.lastSelectedRange=Vz(o)};buildPublicAPI=()=>({setItemSelection:this.setItemSelection});setItemSelection=({itemId:e,event:t=null,keepExistingSelection:n=!1,shouldBeSelected:r})=>{if(!A$.enabled(this.store.state))return;let i;const o=A$.isMultiSelectEnabled(this.store.state);if(n){const t=A$.selectedItems(this.store.state),n=A$.isItemSelected(this.store.state,e);i=!n||!1!==r&&null!=r?n||!0!==r&&null!=r?t:[e].concat(t):t.filter(t=>t!==e)}else i=!1===r||null==r&&A$.isItemSelected(this.store.state,e)?o?[]:null:o?[e]:e;this.setSelectedItems(t,i,[e]),this.lastSelectedItem=e,this.lastSelectedRange={}};selectAllNavigableItems=e=>{if(!A$.isMultiSelectEnabled(this.store.state))return;const t=(e=>{let t=H$(e);const n=[];for(;null!=t;)n.push(t),t=_$(e,t);return n})(this.store.state);this.setSelectedItems(e,t),this.lastSelectedRange=Vz(t)};expandSelectionRange=(e,t)=>{if(null!=this.lastSelectedItem){const[n,r]=B$(this.store.state,t,this.lastSelectedItem);this.selectRange(e,[n,r])}};selectRangeFromStartToItem=(e,t)=>{this.selectRange(e,[H$(this.store.state),t])};selectRangeFromItemToEnd=(e,t)=>{this.selectRange(e,[t,F$(this.store.state)])};selectItemFromArrowNavigation=(e,t,n)=>{if(!A$.isMultiSelectEnabled(this.store.state))return;let r=A$.selectedItems(this.store.state).slice();0===Object.keys(this.lastSelectedRange).length?(r.push(n),this.lastSelectedRange={[t]:!0,[n]:!0}):(this.lastSelectedRange[t]||(this.lastSelectedRange={}),this.lastSelectedRange[n]?(r=r.filter(e=>e!==t),delete this.lastSelectedRange[t]):(r.push(n),this.lastSelectedRange[n]=!0)),this.setSelectedItems(e,r)}}function Bz({store:e,oldModel:t,newModel:n}){const r=new Map;return n.forEach(e=>{r.set(e,!0)}),{added:n.filter(t=>!A$.isItemSelected(e.state,t)),removed:t.filter(e=>!r.has(e))}}function Vz(e){const t={};return e.forEach(e=>{t[e]=!0}),t}class Uz{constructor(e){this.store=e}setExpandedItems=(e,t)=>{void 0===this.store.parameters.expandedItems&&this.store.set("expandedItems",t),this.store.parameters.onExpandedItemsChange?.(e,t)};isItemExpanded=e=>C$.isItemExpanded(this.store.state,e);buildPublicAPI=()=>({isItemExpanded:this.isItemExpanded,setItemExpansion:this.setItemExpansion});setItemExpansion=({itemId:e,event:t=null,shouldBeExpanded:n})=>{const r=C$.isItemExpanded(this.store.state,e),i=n??!r;if(r===i)return;const o={isExpansionPrevented:!1,shouldBeExpanded:i,itemId:e};this.store.publishEvent("beforeItemToggleExpansion",o,t),o.isExpansionPrevented||this.applyItemExpansion({itemId:e,event:t,shouldBeExpanded:i})};applyItemExpansion=({itemId:e,event:t,shouldBeExpanded:n})=>{const r=C$.expandedItemsRaw(this.store.state);let i;i=n?[e].concat(r):r.filter(t=>t!==e),this.store.parameters.onItemExpansionToggle?.(t,e,n),this.setExpandedItems(t,i)};expandAllSiblings=(e,t)=>{const n=S$.itemMeta(this.store.state,t);if(null==n)return;const r=S$.itemOrderedChildrenIds(this.store.state,n.parentId).filter(e=>C$.isItemExpandable(this.store.state,e)&&!C$.isItemExpanded(this.store.state,e)),i=C$.expandedItemsRaw(this.store.state).concat(r);r.length>0&&(this.store.parameters.onItemExpansionToggle&&r.forEach(t=>{this.store.parameters.onItemExpansionToggle(e,t,!0)}),this.setExpandedItems(e,i))};addExpandableItems=e=>{const t=l({},this.store.state.itemMetaLookup);for(const n of e)t[n]=l({},t[n],{expandable:!0});this.store.set("itemMetaLookup",t)}}class Yz{itemPlugins=[];itemWrappers=[];register=(e,t)=>{this.itemPlugins.push(e),t&&this.itemWrappers.push(t)};listPlugins=()=>this.itemPlugins;listWrappers=()=>this.itemWrappers}class Wz extends Ez{initialParameters=null;eventManager=(()=>new Tz)();timeoutManager=(()=>new Dz)();itemPluginManager=(()=>new Yz)();constructor(e,t,n){const r=function(e){return l({treeId:void 0,focusedItemId:null},jz(e),Oz.buildItemsStateIfNeeded(e),{expandedItems:Lz(e.expandedItems,e.defaultExpandedItems,[]),selectedItems:Lz(e.selectedItems,e.defaultSelectedItems,e.multiSelect?zD:null)})}(e);super(n.getInitialState(r,e)),this.parameters=e,this.instanceName=t,this.mapper=n,this.items=new Oz(this),this.focus=new Nz(this),this.expansion=new Uz(this),this.selection=new Hz(this),this.keyboardNavigation=new $z(this)}buildPublicAPI(){return l({},this.items.buildPublicAPI(),this.focus.buildPublicAPI(),this.expansion.buildPublicAPI(),this.selection.buildPublicAPI())}updateStateFromParameters(e){const t=(t,n,r)=>{void 0!==e[n]&&(t[n]=e[n])},n=jz(e);t(n,"expandedItems"),t(n,"selectedItems"),this.state.providedTreeId===e.id&&void 0!==this.state.treeId||(n.treeId=(Rz+=1,`mui-tree-view-${Rz}`)),!this.mapper.shouldIgnoreItemsStateUpdate(e)&&Oz.shouldRebuildItemsState(e,this.parameters)&&Object.assign(n,Oz.buildItemsStateIfNeeded(e));const r=this.mapper.updateStateFromParameters(n,e,t);this.update(r),this.parameters=e}disposeEffect=()=>this.timeoutManager.clearAll;shouldIgnoreItemsStateUpdate=()=>this.mapper.shouldIgnoreItemsStateUpdate(this.parameters);registerStoreEffect=(e,t)=>{let n=e(this.state);this.subscribe(r=>{const i=e(r);i!==n&&(t(n,i),n=i)})};publishEvent=(e,t,n)=>{(function(e){return void 0!==e?.isPropagationStopped})(n)&&n.isPropagationStopped()||this.eventManager.emit(e,t,n)};subscribeEvent=(e,t)=>{this.eventManager.on(e,t)}}const Gz=e=>({isItemEditable:e.isItemEditable??!1}),Kz={getInitialState:(e,t)=>l({},e,Gz(t),{editedItemId:null,lazyLoadedItems:null}),updateStateFromParameters:(e,t)=>l({},e,Gz(t)),shouldIgnoreItemsStateUpdate:()=>!1};class qz extends Wz{labelEditing=(()=>new Pz(this))();static rawMapper=(()=>Kz)();buildPublicAPI(){return l({},super.buildPublicAPI(),this.labelEditing.buildPublicAPI())}}class Xz extends qz{constructor(e){super(e,"RichTreeView",Kz)}}const Zz=$D(),Jz=bm("ul",{name:"MuiRichTreeView",slot:"Root"})({padding:0,margin:0,listStyle:"none",outline:0,position:"relative"}),Qz=e.forwardRef(function(t,n){const r=Zz({props:t,name:"MuiRichTreeView"}),{slots:i,slotProps:o,apiRef:a,parameters:s,forwardedProps:c}=function(t){const{apiRef:n,slots:r,slotProps:i,disabledItemsFocusable:o,items:a,isItemDisabled:s,isItemSelectionDisabled:l,getItemLabel:c,getItemChildren:u,getItemId:d,onItemClick:p,itemChildrenIndentation:h,id:m,expandedItems:f,defaultExpandedItems:g,onExpandedItemsChange:y,onItemExpansionToggle:v,expansionTrigger:b,disableSelection:x,selectedItems:I,defaultSelectedItems:w,multiSelect:k,checkboxSelection:S,selectionPropagation:M,onSelectedItemsChange:C,onItemSelectionToggle:P,onItemFocus:E,onItemLabelChange:T,isItemEditable:A}=t,O=tt(t,wz);return{apiRef:n,slots:r,slotProps:i,parameters:e.useMemo(()=>({disabledItemsFocusable:o,items:a,isItemDisabled:s,isItemSelectionDisabled:l,getItemLabel:c,getItemChildren:u,getItemId:d,onItemClick:p,itemChildrenIndentation:h,id:m,expandedItems:f,defaultExpandedItems:g,onExpandedItemsChange:y,onItemExpansionToggle:v,expansionTrigger:b,disableSelection:x,selectedItems:I,defaultSelectedItems:w,multiSelect:k,checkboxSelection:S,selectionPropagation:M,onSelectedItemsChange:C,onItemSelectionToggle:P,onItemFocus:E,onItemLabelChange:T,isItemEditable:A}),[o,a,s,l,c,u,d,p,h,m,f,g,y,v,b,x,I,w,k,S,M,C,P,E,T,A]),forwardedProps:O}}(r),u=Mz(Xz,s),d=e.useRef(null),p=Iz(u,c,sD(n,d)),h=(t=>{const{classes:n}=t;return e.useMemo(()=>MD({root:["root"],item:["item"],itemContent:["itemContent"],itemGroupTransition:["itemGroupTransition"],itemIconContainer:["itemIconContainer"],itemLabel:["itemLabel"],itemLabelInput:["itemLabelInput"],itemCheckbox:["itemCheckbox"]},DD,n),[n])})(r),m=uD(u,L$.isItemLoading,null),f=uD(u,L$.itemError,null),g=i?.root??Jz,y=TD({elementType:g,externalSlotProps:o?.root,className:h.root,getSlotProps:p,ownerState:r});return m?(0,O.jsx)(Nv,{children:"Loading..."}):f?(0,O.jsx)(SD,{severity:"error",children:f.message}):(0,O.jsx)(VD,{store:u,classes:h,slots:i,slotProps:o,apiRef:a,rootRef:d,children:(0,O.jsx)($$.Provider,{value:S$.itemDepth,children:(0,O.jsx)(g,l({},y,{children:(0,O.jsx)(xz,{slots:i,slotProps:o})}))})})}),eN=ob((0,O.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore"),tN=ob((0,O.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"ChevronRight"),nN=ob((0,O.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"}),"Folder"),rN=ob((0,O.jsx)("path",{d:"M20 6h-8l-2-2H4c-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-2m0 12H4V8h16z"}),"FolderOpen"),iN=ob((0,O.jsx)("path",{d:"M6 2c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm7 7V3.5L18.5 9z"}),"InsertDriveFile"),oN=ob((0,O.jsx)("path",{d:"M19 13H5v-2h14z"}),"Remove"),aN=ob((0,O.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add"),sN=ob((0,O.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown"),lN=ob((0,O.jsx)("path",{d:"m10 17 5-5-5-5z"}),"ArrowRight"),cN=ob((0,O.jsx)("path",{d:"M22 11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3z"}),"AccountTree"),uN=ob((0,O.jsx)("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm2 16H8v-2h8zm0-4H8v-2h8zm-3-5V3.5L18.5 9z"}),"Description"),dN=ob((0,O.jsx)("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6z"}),"Code"),pN=ob((0,O.jsx)("path",{d:"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2M8.5 13.5l2.5 3.01L14.5 12l4.5 6H5z"}),"Image"),hN=ob((0,O.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings"),mN=ob((0,O.jsx)("path",{d:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"}),"Home"),fN=ob((0,O.jsx)("path",{d:"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}),"Star"),gN=ob((0,O.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"}),"Delete"),yN=ob((0,O.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit"),vN=ob((0,O.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility"),bN=ob((0,O.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1z"}),"Lock"),xN=ob((0,O.jsx)("path",{d:"m3.5 18.49 6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z"}),"ShowChart"),IN=ob((0,O.jsx)("path",{d:"M4 9h4v11H4zm12 4h4v7h-4zm-6-9h4v16h-4z"}),"BarChart"),wN=ob((0,O.jsx)("path",{d:"M11 2v20c-5.07-.5-9-4.79-9-10s3.93-9.5 9-10m2.03 0v8.99H22c-.47-4.74-4.24-8.52-8.97-8.99m0 11.01V22c4.74-.47 8.5-4.25 8.97-8.99z"}),"PieChart"),kN=ob([(0,O.jsx)("circle",{cx:"7",cy:"14",r:"3"},"0"),(0,O.jsx)("circle",{cx:"11",cy:"6",r:"3"},"1"),(0,O.jsx)("circle",{cx:"16.6",cy:"17.6",r:"3"},"2")],"ScatterPlot"),SN=ob((0,O.jsx)("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2M8 20H4v-4h4zm0-6H4v-4h4zm0-6H4V4h4zm6 12h-4v-4h4zm0-6h-4v-4h4zm0-6h-4V4h4zm6 12h-4v-4h4zm0-6h-4v-4h4zm0-6h-4V4h4z"}),"GridOn"),MN=ob((0,O.jsx)("path",{d:"M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2"}),"Timeline"),CN=ob((0,O.jsx)("path",{d:"M9 4H7v2H5v12h2v2h2v-2h2V6H9zm10 4h-2V4h-2v4h-2v7h2v5h2v-5h2z"}),"CandlestickChart"),PN=ob((0,O.jsx)("path",{d:"m20.38 8.57-1.23 1.85a8 8 0 0 1-.22 7.58H5.07A8 8 0 0 1 15.58 6.85l1.85-1.23A10 10 0 0 0 3.35 19a2 2 0 0 0 1.72 1h13.85a2 2 0 0 0 1.74-1 10 10 0 0 0-.27-10.44zm-9.79 6.84a2 2 0 0 0 2.83 0l5.66-8.49-8.49 5.66a2 2 0 0 0 0 2.83"}),"Speed"),EN=ob((0,O.jsx)("path",{d:"m11.99 18.54-7.37-5.73L3 14.07l9 7 9-7-1.63-1.27zM12 16l7.36-5.73L21 9l-9-7-9 7 1.63 1.27z"}),"Layers"),TN=ob((0,O.jsx)("path",{d:"m16 6 2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z"}),"TrendingUp"),AN=ob((0,O.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9m-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8z"}),"History"),ON=ob((0,O.jsx)("path",{d:"M8 5v14l11-7z"}),"PlayArrow"),jN=ob((0,O.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune"),LN=ob((0,O.jsx)("path",{d:"M7 14c-1.66 0-3 1.34-3 3 0 1.31-1.16 2-2 2 .92 1.22 2.49 2 4 2 2.21 0 4-1.79 4-4 0-1.66-1.34-3-3-3m13.71-9.37-1.34-1.34a.996.996 0 0 0-1.41 0L9 12.25 11.75 15l8.96-8.96c.39-.39.39-1.02 0-1.41"}),"Brush"),RN=ob((0,O.jsx)("path",{d:"m6 14 3 3v5h6v-5l3-3V9H6zm5-12h2v3h-2zM3.5 5.88l1.41-1.41 2.12 2.12L5.62 8zm13.46.71 2.12-2.12 1.41 1.41L18.38 8z"}),"Highlight"),DN=ob((0,O.jsx)("path",{d:"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8m0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4z"}),"Sync"),$N=ob([(0,O.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"},"0"),(0,O.jsx)("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"},"1")],"ZoomIn"),zN=ob((0,O.jsx)("path",{d:"M9 11.24V7.5C9 6.12 10.12 5 11.5 5S14 6.12 14 7.5v3.74c1.21-.81 2-2.18 2-3.74C16 5.01 13.99 3 11.5 3S7 5.01 7 7.5c0 1.56.79 2.93 2 3.74m9.84 4.63-4.54-2.26c-.17-.07-.35-.11-.54-.11H13v-6c0-.83-.67-1.5-1.5-1.5S10 6.67 10 7.5v10.74c-3.6-.76-3.54-.75-3.67-.75-.31 0-.59.13-.79.33l-.79.8 4.94 4.94c.27.27.65.44 1.06.44h6.79c.75 0 1.33-.55 1.44-1.28l.75-5.27c.01-.07.02-.14.02-.2 0-.62-.38-1.16-.91-1.38"}),"TouchApp"),NN=ob((0,O.jsx)("path",{d:"M10 10.02h5V21h-5zM17 21h3c1.1 0 2-.9 2-2v-9h-5zm3-18H5c-1.1 0-2 .9-2 2v3h19V5c0-1.1-.9-2-2-2M3 19c0 1.1.9 2 2 2h3V10H3z"}),"TableChart"),_N=ob((0,O.jsx)("path",{d:"M4 9h4v11H4zm0-5h4v4H4zm6 3h4v4h-4zm6 3h4v4h-4zm0 5h4v5h-4zm-6-3h4v8h-4z"}),"StackedBarChart"),FN=ob((0,O.jsx)("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10c1.38 0 2.5-1.12 2.5-2.5 0-.61-.23-1.2-.64-1.67-.08-.1-.13-.21-.13-.33 0-.28.22-.5.5-.5H16c3.31 0 6-2.69 6-6 0-4.96-4.49-9-10-9m5.5 11c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5m-3-4c-.83 0-1.5-.67-1.5-1.5S13.67 6 14.5 6s1.5.67 1.5 1.5S15.33 9 14.5 9M5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S7.33 13 6.5 13 5 12.33 5 11.5m6-4c0 .83-.67 1.5-1.5 1.5S8 8.33 8 7.5 8.67 6 9.5 6s1.5.67 1.5 1.5"}),"Palette"),HN=ob((0,O.jsx)("path",{d:"M16.54 11 13 7.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41zM11 7H2v2h9zm10 6.41L19.59 12 17 14.59 14.41 12 13 13.41 15.59 16 13 18.59 14.41 20 17 17.41 19.59 20 21 18.59 18.41 16zM11 15H2v2h9z"}),"Rule"),BN=ob((0,O.jsx)("path",{d:"M13 1.07V9h7c0-4.08-3.05-7.44-7-7.93M4 15c0 4.42 3.58 8 8 8s8-3.58 8-8v-4H4zm7-13.93C7.05 1.56 4 4.92 4 9h7z"}),"Mouse"),VN=ob((0,O.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-2m-9 14-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckBox"),UN=ob((0,O.jsx)("path",{d:"M12 5.83 15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9zm0 12.34L8.83 15l-1.41 1.41L12 21l4.59-4.59L15.17 15z"}),"UnfoldMore"),YN=ob((0,O.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12m8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8"}),"Block"),WN=ob((0,O.jsx)("path",{d:"M12.16 3h-.32L9.21 8.25h5.58zm4.3 5.25h5.16L19 3h-5.16zm4.92 1.5h-8.63V20.1zM11.25 20.1V9.75H2.62zM7.54 8.25 10.16 3H5L2.38 8.25z"}),"Diamond"),GN=ob((0,O.jsx)("path",{d:"M14.06 9.94 12 9l2.06-.94L15 6l.94 2.06L18 9l-2.06.94L15 12zM4 14l.94-2.06L7 11l-2.06-.94L4 8l-.94 2.06L1 11l2.06.94zm4.5-5 1.09-2.41L12 5.5 9.59 4.41 8.5 2 7.41 4.41 5 5.5l2.41 1.09zm-4 11.5 6-6.01 4 4L23 8.93l-1.41-1.41-7.09 7.97-4-4L3 19z"}),"AutoGraph"),KN=ob((0,O.jsx)("path",{d:"M3 14h4v-4H3zm0 5h4v-4H3zM3 9h4V5H3zm5 5h13v-4H8zm0 5h13v-4H8zM8 5v4h13V5z"}),"ViewList"),qN=ob((0,O.jsx)("path",{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4m8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7"}),"GpsFixed"),XN=ob((0,O.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"}),"ContentCopy"),ZN=ob((0,O.jsx)("path",{d:"M15 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m-9-2V7H4v3H1v2h3v3h2v-3h3v-2zm9 4c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"}),"PersonAdd"),JN=ob((0,O.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"}),"CheckCircle"),QN=ob((0,O.jsx)("path",{d:"m20.54 5.23-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27M12 17.5 6.5 12H10v-2h4v2h3.5zM5.12 5l.81-1h12l.94 1z"}),"Archive"),e_=ob((0,O.jsx)("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreVert");var t_={ExpandMore:eN,ChevronRight:tN,Folder:nN,FolderOpen:rN,InsertDriveFile:iN,Remove:oN,Add:aN,ArrowDropDown:sN,ArrowRight:lN,AccountTree:cN,Description:uN,Code:dN,Image:pN,Settings:hN,Home:mN,Star:fN,Delete:gN,Edit:yN,Visibility:vN,Lock:bN,ShowChart:xN,BarChart:IN,PieChart:wN,ScatterPlot:kN,GridOn:SN,Timeline:MN,CandlestickChart:CN,Speed:PN,Layers:EN,TrendingUp:TN,History:AN,PlayArrow:ON,Tune:jN,Brush:LN,Highlight:RN,Sync:DN,ZoomIn:$N,TouchApp:zN,TableChart:NN,StackedBarChart:_N,Palette:FN,Rule:HN,Mouse:BN,CheckBox:VN,UnfoldMore:UN,Block:YN,Diamond:WN,AutoGraph:GN,ViewList:KN,GpsFixed:qN,ContentCopy:XN,PersonAdd:ZN,CheckCircle:JN,Archive:QN,MoreVert:e_},n_=function(e){if(e)return t_[e]||void 0},r_=["id","items","getItemId","getItemLabel","getItemChildren","selectedItems","defaultSelectedItems","multiSelect","checkboxSelection","disableSelection","selectionPropagation","expandedItems","defaultExpandedItems","expansionTrigger","isItemEditable","editableItems","disabledItems","disabledItemsFocusable","itemChildrenIndentation","height","sx","collapseIcon","expandIcon","endIcon","ariaLabel","ariaLabelledBy","setProps"],i_=function(t){var r=t.id,i=t.items,o=t.getItemId,a=t.getItemLabel,s=t.getItemChildren,l=t.selectedItems,c=t.defaultSelectedItems,u=t.multiSelect,d=t.checkboxSelection,p=t.disableSelection,h=t.selectionPropagation,m=t.expandedItems,f=t.defaultExpandedItems,g=t.expansionTrigger,y=t.isItemEditable,v=t.editableItems,b=t.disabledItems,x=t.disabledItemsFocusable,I=t.itemChildrenIndentation,w=t.height,k=t.sx,S=t.collapseIcon,M=t.expandIcon,C=t.endIcon,P=t.ariaLabel,E=t.ariaLabelledBy,T=t.setProps,A=(function(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r0){var e=new Set(v);return function(t){return e.has(A(t))}}return!1},[y,v,A]),D=(0,e.useMemo)(function(){var e={};return S&&(e.collapseIcon=n_(S)),M&&(e.expandIcon=n_(M)),C&&(e.endIcon=n_(C)),Object.keys(e).length>0?e:void 0},[S,M,C]),$=(0,e.useCallback)(function(e,t){T&&T({selectedItems:t})},[T]),z=(0,e.useCallback)(function(e,t){T&&T({expandedItems:t})},[T]),N=(0,e.useCallback)(function(e,t){T&&T({clickedItem:{itemId:t,event_timestamp:Date.now()}})},[T]),_=(0,e.useCallback)(function(e,t){T&&T({focusedItem:{itemId:t,event_timestamp:Date.now()}})},[T]),F=(0,e.useCallback)(function(e,t){T&&T({editedItemLabel:{itemId:e,newLabel:t,event_timestamp:Date.now()}})},[T]),H=(0,e.useMemo)(function(){var e={};return w&&(e.height="number"==typeof w?"".concat(w,"px"):w),e},[w]);return n().createElement("div",{id:r,style:H},n().createElement(Qz,{items:i||[],getItemId:A,getItemLabel:O,getItemChildren:j,selectedItems:l,defaultSelectedItems:c,multiSelect:u,checkboxSelection:d,disableSelection:p,selectionPropagation:h,expandedItems:m,defaultExpandedItems:f,expansionTrigger:g,isItemEditable:R,isItemDisabled:L,disabledItemsFocusable:x,itemChildrenIndentation:I,sx:k,slots:D,onSelectedItemsChange:$,onExpandedItemsChange:z,onItemClick:N,onItemFocus:_,onItemLabelChange:F,"aria-label":P,"aria-labelledby":E}))};i_.defaultProps={items:[],getItemId:"id",getItemLabel:"label",getItemChildren:"children",multiSelect:!1,checkboxSelection:!1,disableSelection:!1,disabledItemsFocusable:!1,isItemEditable:!1,expansionTrigger:"content",itemChildrenIndentation:"12px"},i_.propTypes={id:i().string,items:i().arrayOf(i().object),getItemId:i().string,getItemLabel:i().string,getItemChildren:i().string,selectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),defaultSelectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),multiSelect:i().bool,checkboxSelection:i().bool,disableSelection:i().bool,selectionPropagation:i().exact({parents:i().bool,descendants:i().bool}),expandedItems:i().arrayOf(i().string),defaultExpandedItems:i().arrayOf(i().string),expansionTrigger:i().oneOf(["content","iconContainer"]),isItemEditable:i().bool,editableItems:i().arrayOf(i().string),disabledItems:i().arrayOf(i().string),disabledItemsFocusable:i().bool,itemChildrenIndentation:i().oneOfType([i().number,i().string]),height:i().oneOfType([i().number,i().string]),sx:i().object,collapseIcon:i().string,expandIcon:i().string,endIcon:i().string,ariaLabel:i().string,ariaLabelledBy:i().string,clickedItem:i().exact({itemId:i().string,event_timestamp:i().number}),focusedItem:i().exact({itemId:i().string,event_timestamp:i().number}),editedItemLabel:i().exact({itemId:i().string,newLabel:i().string,event_timestamp:i().number}),setProps:i().func};const o_=i_;function a_(e){return LD("MuiSimpleTreeView",e)}RD("MuiSimpleTreeView",["root","item","itemContent","itemGroupTransition","itemIconContainer","itemLabel","itemCheckbox"]);const s_=["apiRef","slots","slotProps","disabledItemsFocusable","onItemClick","itemChildrenIndentation","id","expandedItems","defaultExpandedItems","onExpandedItemsChange","onItemExpansionToggle","expansionTrigger","disableSelection","selectedItems","defaultSelectedItems","multiSelect","checkboxSelection","selectionPropagation","onSelectedItemsChange","onItemSelectionToggle","onItemFocus"],l_=e.createContext(null);function c_(t){const{children:n,itemId:r=null,idAttribute:i}=t,{store:o,rootRef:a}=FD(),s=e.useRef(new Map);e.useEffect(()=>{if(!a.current)return;const e=S$.itemOrderedChildrenIds(o.state,r??null)??[],t=(i??a.current.id).replace(/["\\]/g,"\\$&");if(null!=r){const e=a.current.querySelector(`*[id="${t}"][role="treeitem"]`);if(e&&"false"===e.getAttribute("aria-expanded"))return}const n=a.current.querySelectorAll(`${null==r?"":`*[id="${t}"] `}[role="treeitem"]:not(*[id="${t}"] [role="treeitem"] [role="treeitem"])`),l=Array.from(n).map(e=>s.current.get(e.id));(l.length!==e.length||l.some((t,n)=>t!==e[n]))&&o.jsxItems.setJSXItemsOrderedChildrenIds(r??null,l)});const l=e.useMemo(()=>({registerChild:(e,t)=>s.current.set(e,t),unregisterChild:e=>s.current.delete(e),parentId:r}),[r]);return(0,O.jsx)(l_.Provider,{value:l,children:n})}const u_=({props:t,rootRef:n,contentRef:r})=>{const{store:i}=FD(),{children:o,disabled:a=!1,disableSelection:s=!1,label:l,itemId:c,id:u}=t,d=e.useContext(l_);if(null==d)throw new Error(["MUI X: Could not find the Tree View Children Item context.","It looks like you rendered your component outside of a SimpleTreeView parent component.","This can also happen if you are bundling multiple versions of the Tree View."].join("\n"));const{registerChild:p,unregisterChild:h,parentId:m}=d,f=D$(o),g=e.useRef(null),y=sD(g,r),v=uD(i,Y$.treeItemIdAttribute,c,u),b=e.useRef(!0),x=aD(Symbol);return kz(()=>(p(v,c),()=>{h(v),h(v)}),[i,p,h,v,c]),kz(()=>(b.current=!0,()=>{b.current=!1}),[]),kz(()=>{const e=i.jsxItems.upsertJSXItem({id:c,idAttribute:u,parentId:m,expandable:f,disabled:a,selectable:!s},x.current);return()=>{b.current||e()}},[i,m,c,f,a,s,u,x]),e.useEffect(()=>{if(l)return i.jsxItems.mapLabelFromJSX(c,(g.current?.textContent??"").toLowerCase())},[i,c,l]),{contentRef:y,rootRef:n}},d_=({children:t,itemId:n,idAttribute:r})=>{const i=e.useContext($$);return(0,O.jsx)(c_,{itemId:n,idAttribute:r,children:(0,O.jsx)($$.Provider,{value:i+1,children:t})})};class p_{itemOwners=(()=>new Map)();constructor(e){this.store=e,e.itemPluginManager.register(u_,d_)}upsertJSXItem=(e,t)=>{const n=this.itemOwners.get(e.id);if(null!=n&&n!==t)throw new Error(["MUI X: The Tree View component requires all items to have a unique `id` property.","Alternatively, you can use the `getItemId` prop to specify a custom id for each item.",`Two items were provided with the same id in the \`items\` prop: "${e.id}"`].join("\n"));this.itemOwners.set(e.id,t);const r=S$.itemMeta(this.store.state,e.id);if(null!=r){let t=!1;for(const n of Object.keys(e))if(r[n]!==e[n]){t=!0;break}t&&this.store.update({itemMetaLookup:l({},this.store.state.itemMetaLookup,{[e.id]:l({},r,e)})})}else this.store.update({itemMetaLookup:l({},this.store.state.itemMetaLookup,{[e.id]:e}),itemModelLookup:l({},this.store.state.itemModelLookup,{[e.id]:{id:e.id,label:e.label??""}})});return()=>{this.itemOwners.delete(e.id);const t=l({},this.store.state.itemMetaLookup),n=l({},this.store.state.itemModelLookup);delete t[e.id],delete n[e.id],this.store.update({itemMetaLookup:t,itemModelLookup:n})}};mapLabelFromJSX=(e,t)=>(this.store.keyboardNavigation.updateLabelMap(n=>(n[e]=t,n)),()=>{this.store.keyboardNavigation.updateLabelMap(t=>{const n=l({},t);return delete n[e],n})});setJSXItemsOrderedChildrenIds=(e,t)=>{const n=e??b$;this.store.update({itemOrderedChildrenIdsLookup:l({},this.store.state.itemOrderedChildrenIdsLookup,{[n]:t}),itemChildrenIndexesLookup:l({},this.store.state.itemChildrenIndexesLookup,{[n]:x$(t)})})}}const h_={getInitialState:e=>e,updateStateFromParameters:e=>e,shouldIgnoreItemsStateUpdate:()=>!0};class m_ extends Wz{jsxItems=(()=>new p_(this))();constructor(e){super(l({},e,{items:zD}),"SimpleTreeView",h_)}updateStateFromParameters(e){super.updateStateFromParameters(l({},e,{items:zD}))}}const f_=$D(),g_=bm("ul",{name:"MuiSimpleTreeView",slot:"Root"})({padding:0,margin:0,listStyle:"none",outline:0,position:"relative"}),y_=e.forwardRef(function(t,n){const r=f_({props:t,name:"MuiSimpleTreeView"}),{slots:i,slotProps:o,apiRef:a,parameters:s,forwardedProps:c}=function(t){const{apiRef:n,slots:r,slotProps:i,disabledItemsFocusable:o,onItemClick:a,itemChildrenIndentation:s,id:l,expandedItems:c,defaultExpandedItems:u,onExpandedItemsChange:d,onItemExpansionToggle:p,expansionTrigger:h,disableSelection:m,selectedItems:f,defaultSelectedItems:g,multiSelect:y,checkboxSelection:v,selectionPropagation:b,onSelectedItemsChange:x,onItemSelectionToggle:I,onItemFocus:w}=t,k=tt(t,s_);return{apiRef:n,slots:r,slotProps:i,parameters:e.useMemo(()=>({disabledItemsFocusable:o,onItemClick:a,itemChildrenIndentation:s,id:l,expandedItems:c,defaultExpandedItems:u,onExpandedItemsChange:d,onItemExpansionToggle:p,expansionTrigger:h,disableSelection:m,selectedItems:f,defaultSelectedItems:g,multiSelect:y,checkboxSelection:v,selectionPropagation:b,onSelectedItemsChange:x,onItemSelectionToggle:I,onItemFocus:w}),[o,a,s,l,c,u,d,p,h,m,f,g,y,v,b,x,I,w]),forwardedProps:k}}(r),u=Mz(m_,s),d=e.useRef(null),p=Iz(u,c,sD(n,d)),h=(t=>{const{classes:n}=t;return e.useMemo(()=>MD({root:["root"],item:["item"],itemContent:["itemContent"],itemGroupTransition:["itemGroupTransition"],itemIconContainer:["itemIconContainer"],itemLabel:["itemLabel"],itemCheckbox:["itemCheckbox"]},a_,n),[n])})(r),m=i?.root??g_,f=TD({elementType:m,externalSlotProps:o?.root,className:h.root,getSlotProps:p,ownerState:r});return(0,O.jsx)(VD,{store:u,classes:h,slots:i,slotProps:o,apiRef:a,rootRef:d,children:(0,O.jsx)(c_,{itemId:null,idAttribute:null,children:(0,O.jsx)($$.Provider,{value:0,children:(0,O.jsx)(m,l({},f))})})})});var v_=function(e){return e&&0!==e.length?e.map(function(e){var t=e.icon?n_(e.icon):null,r=t?n().createElement("span",{style:{display:"flex",alignItems:"center",gap:8}},n().createElement(t,{style:{fontSize:18,opacity:.7,flexShrink:0}}),n().createElement("span",null,e.label)):e.label;return n().createElement(mz,{key:e.itemId,itemId:e.itemId,label:r,disabled:e.disabled,disableSelection:e.disableSelection},v_(e.children))}):null},b_=function(t){var r=t.id,i=t.items,o=void 0===i?[]:i,a=t.selectedItems,s=t.defaultSelectedItems,l=t.multiSelect,c=void 0!==l&&l,u=t.checkboxSelection,d=void 0!==u&&u,p=t.disableSelection,h=void 0!==p&&p,m=t.expandedItems,f=t.defaultExpandedItems,g=t.expansionTrigger,y=void 0===g?"content":g,v=t.disabledItemsFocusable,b=void 0!==v&&v,x=t.itemChildrenIndentation,I=void 0===x?"12px":x,w=t.height,k=t.sx,S=t.collapseIcon,M=t.expandIcon,C=t.endIcon,P=t.ariaLabel,E=t.ariaLabelledBy,T=t.setProps,A=(0,e.useMemo)(function(){var e={};return S&&(e.collapseIcon=n_(S)),M&&(e.expandIcon=n_(M)),C&&(e.endIcon=n_(C)),Object.keys(e).length>0?e:void 0},[S,M,C]),O=(0,e.useCallback)(function(e,t){T&&T({selectedItems:t})},[T]),j=(0,e.useCallback)(function(e,t){T&&T({expandedItems:t})},[T]),L=(0,e.useCallback)(function(e,t){T&&T({clickedItem:{itemId:t,event_timestamp:Date.now()}})},[T]),R=(0,e.useMemo)(function(){var e={};return w&&(e.height="number"==typeof w?"".concat(w,"px"):w),e},[w]);return n().createElement("div",{id:r,style:R},n().createElement(y_,{selectedItems:a,defaultSelectedItems:s,multiSelect:c,checkboxSelection:d,disableSelection:h,expandedItems:m,defaultExpandedItems:f,expansionTrigger:y,disabledItemsFocusable:b,itemChildrenIndentation:I,sx:k,slots:A,onSelectedItemsChange:O,onExpandedItemsChange:j,onItemClick:L,"aria-label":P,"aria-labelledby":E},v_(o)))};b_.propTypes={id:i().string,items:i().arrayOf(i().shape({itemId:i().string.isRequired,label:i().string.isRequired,children:i().array,disabled:i().bool,disableSelection:i().bool})),selectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),defaultSelectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),multiSelect:i().bool,checkboxSelection:i().bool,disableSelection:i().bool,expandedItems:i().arrayOf(i().string),defaultExpandedItems:i().arrayOf(i().string),expansionTrigger:i().oneOf(["content","iconContainer"]),disabledItemsFocusable:i().bool,itemChildrenIndentation:i().oneOfType([i().number,i().string]),height:i().oneOfType([i().number,i().string]),sx:i().object,collapseIcon:i().string,expandIcon:i().string,endIcon:i().string,ariaLabel:i().string,ariaLabelledBy:i().string,clickedItem:i().exact({itemId:i().string,event_timestamp:i().number}),setProps:i().func};const x_=b_,I_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",w_=e=>{let t,n,r,i,o,a,s,l="",c=0;for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");c>4,n=(15&o)<<4|a>>2,r=(3&a)<<6|s,l+=String.fromCharCode(t),64!=a&&(l+=String.fromCharCode(n)),64!=s&&(l+=String.fromCharCode(r));return l},k_=[];let S_=0;for(;S_<64;)k_[S_]=0|4294967296*Math.sin(++S_%Math.PI);let M_=function(e){return e.NotFound="NotFound",e.Invalid="Invalid",e.ExpiredAnnual="ExpiredAnnual",e.ExpiredAnnualGrace="ExpiredAnnualGrace",e.ExpiredVersion="ExpiredVersion",e.Valid="Valid",e.OutOfScope="OutOfScope",e.NotAvailableInInitialProPlan="NotAvailableInInitialProPlan",e}({});const C_=["pro","premium"],P_=["perpetual","annual","subscription"],E_=/^.*EXPIRY=([0-9]+),.*$/,T_=/^.*ORDER:([0-9]+),.*$/,A_=["x-data-grid-pro","x-date-pickers-pro"];function O_({releaseInfo:e,licenseKey:t,packageName:n}){if(!e)throw new Error("MUI X: The release information is missing. Not able to validate license.");if(!t)return{status:M_.NotFound};const r=t.substr(0,32),i=t.substr(32);if(r!==function(e){const t=[];let n,r,i,o=unescape(encodeURI(e))+"€",a=o.length;const s=[n=1732584193,r=4023233417,~n,~r];for(e=--a/4+2|15,t[--e]=8*a;~a;)t[a>>2]|=o.charCodeAt(a)<<8*a--;for(S_=o=0;S_>4]+k_[o]+~~t[S_|15&[o,5*o+1,3*o+5,7*o][a]])<<(a=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*a+o++%4])|i>>>-a),n,r])n=0|a[1],r=a[2];for(o=4;o;)s[--o]+=a[o]}for(e="";o<32;)e+=(s[o>>3]>>4*(1^o++)&15).toString(16);return e}(i))return{status:M_.Invalid};const o=function(e){const t=w_(e);return t.includes("KEYVERSION=1")?function(e){let t,n;try{t=parseInt(e.match(E_)[1],10),t&&!Number.isNaN(t)||(t=null),n=parseInt(e.match(T_)[1],10),n&&!Number.isNaN(n)||(n=null)}catch(e){t=null,n=null}return{version:1,licenseModel:"perpetual",planScope:"pro",planVersion:"initial",expiryTimestamp:t,expiryDate:t?new Date(t):null,orderId:n}}(t):t.includes("KV=2")?function(e){const t={version:2,licenseModel:null,planScope:null,planVersion:"initial",expiryTimestamp:null,expiryDate:null,orderId:null};return e.split(",").map(e=>e.split("=")).filter(e=>2===e.length).forEach(([e,n])=>{if("S"===e&&(t.planScope=n),"LM"===e&&(t.licenseModel=n),"E"===e){const e=parseInt(n,10);e&&!Number.isNaN(e)&&(t.expiryTimestamp=e,t.expiryDate=new Date(e))}if("PV"===e&&(t.planVersion=n),"O"===e){const e=parseInt(n,10);e&&!Number.isNaN(e)&&(t.orderId=e)}}),t}(t):null}(i);if(null==o)return console.error("MUI X: Error checking license. Key version not found!"),{status:M_.Invalid};if(null==o.licenseModel||!P_.includes(o.licenseModel))return console.error("MUI X: Error checking license. License model not found or invalid!"),{status:M_.Invalid};if(null==o.expiryTimestamp)return console.error("MUI X: Error checking license. Expiry timestamp not found or invalid!"),{status:M_.Invalid};o.licenseModel;{const t=parseInt(w_(e),10);if(Number.isNaN(t))throw new Error("MUI X: The release information is invalid. Not able to validate license.");if(o.expiryTimestamp{const e=r??j_.getLicenseKey();if($_[t]&&$_[t].key===e)return $_[t].licenseVerifier;const i=t.includes("premium")?"Premium":"Pro",o=O_({releaseInfo:n,licenseKey:e,packageName:t}),a=`@mui/${t}`;return p(h.licenseVerification({licenseKey:e},{packageName:t,packageReleaseInfo:n,licenseStatus:o?.status})),o.status===M_.Valid||(o.status===M_.Invalid?R_(["MUI X: Invalid license key.","","Your MUI X license key format isn't valid. It could be because the license key is missing a character or has a typo.","","To solve the issue, you need to double check that `setLicenseKey()` is called with the right argument","Please check the license key installation https://mui.com/r/x-license-key-installation."]):o.status===M_.NotAvailableInInitialProPlan?R_(["MUI X: Component not included in your license.","","The component you are trying to use is not included in the Pro Plan you purchased.","","Your license is from an old version of the Pro Plan that is only compatible with the `@mui/x-data-grid-pro` and `@mui/x-date-pickers-pro` commercial packages.","","To start using another Pro package, please consider reaching to our sales team to upgrade your license or visit https://mui.com/r/x-get-license to get a new license key."]):o.status===M_.OutOfScope?function({packageName:e}){const t=e.replace(/-(premium|pro)$/,"");R_(["MUI X: License key plan mismatch.","","Your use of MUI X is not compatible with the plan of your license key. The feature you are trying to use is not included in the plan of your license key. This happens if you try to use Data Grid Premium with a license key for the Pro plan.","","To solve the issue, you can upgrade your plan from Pro to Premium at https://mui.com/r/x-get-license?scope=premium.",`Or if you didn't intend to use Premium features, you can replace the import of \`${t}-premium\` with \`${t}-pro\`.`])}({packageName:a}):o.status===M_.NotFound?function({plan:e,packageName:t}){R_(["MUI X: Missing license key.","",`The license key is missing. You might not be allowed to use \`${t}\` which is part of MUI X ${e}.`,"","To solve the issue, you can check the free trial conditions: https://mui.com/r/x-license-trial.","If you are eligible no actions are required. If you are not eligible to the free trial, you need to purchase a license https://mui.com/r/x-get-license or stop using the software immediately."])}({plan:i,packageName:a}):o.status===M_.ExpiredAnnualGrace?function({plan:e,licenseKey:t,expiryTimestamp:n}){R_(["MUI X: Expired license key.","",`Your annual license key to use MUI X ${e} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${e} component (more details in https://mui.com/r/x-license-annual).`,"","To solve the problem you can either:","","- Renew your license https://mui.com/r/x-get-license and use the new key",`- Stop making changes to code depending directly or indirectly on MUI X ${e}'s APIs`,"","Note that your license is perpetual in production environments with any version released before your license term ends.","",`- License key expiry timestamp: ${new Date(n)}`,`- Installed license key: ${t}`,""])}(l({plan:i},o.meta)):o.status===M_.ExpiredAnnual?function({plan:e,licenseKey:t,expiryTimestamp:n}){throw new Error(["MUI X: Expired license key.","",`Your annual license key to use MUI X ${e} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${e} component (more details in https://mui.com/r/x-license-annual).`,"","To solve the problem you can either:","","- Renew your license https://mui.com/r/x-get-license and use the new key",`- Stop making changes to code depending directly or indirectly on MUI X ${e}'s APIs`,"","Note that your license is perpetual in production environments with any version released before your license term ends.","",`- License key expiry timestamp: ${new Date(n)}`,`- Installed license key: ${t}`,""].join("\n"))}(l({plan:i},o.meta)):o.status===M_.ExpiredVersion&&function({packageName:e}){R_(["MUI X: Expired package version.","",`You have installed a version of \`${e}\` that is outside of the maintenance plan of your license key. By default, commercial licenses provide access to new versions released during the first year after the purchase.`,"","To solve the issue, you can renew your license https://mui.com/r/x-get-license or install an older version of the npm package that is compatible with your license key."])}({packageName:a})),$_[t]={key:e,licenseVerifier:o},o},[t,n,r])}const N_=Object.is;function __(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;let n=0,r=0;for(const r in e){if(n+=1,!N_(e[r],t[r]))return!1;if(!(r in t))return!1}for(const e in t)r+=1;return n===r}function F_(e){switch(e){case M_.ExpiredAnnualGrace:case M_.ExpiredAnnual:return"MUI X Expired license key";case M_.ExpiredVersion:return"MUI X Expired package version";case M_.Invalid:return"MUI X Invalid license key";case M_.OutOfScope:return"MUI X License key plan mismatch";case M_.NotAvailableInInitialProPlan:return"MUI X Product not covered by plan";case M_.NotFound:return"MUI X Missing license key";default:throw new Error("Unhandled MUI X license status.")}}const H_=function(t){return e.memo(t,__)}(function(e){const{packageName:t,releaseInfo:n}=e,r=z_(t,n);return r.status===M_.Valid?null:(0,O.jsx)("div",{style:{position:"absolute",pointerEvents:"none",color:"#8282829e",zIndex:1e5,width:"100%",textAlign:"center",bottom:"50%",right:0,letterSpacing:5,fontSize:24},children:F_(r.status)})}),B_=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},V_=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n}({...i,...r}),s=B_(r),l=B_(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}},U_=e=>e,Y_=(()=>{let e=U_;return{configure(t){e=t},generate:t=>e(t),reset(){e=U_}}})(),W_={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 G_(e,t,n="Mui"){const r=W_[t];return r?`${n}-${r}`:`${Y_.generate(e)}-${t}`}function K_(e){return G_("MuiRichTreeViewPro",e)}!function(e,t,n="Mui"){const r={};["root","item","itemContent","itemGroupTransition","itemIconContainer","itemLabel","itemCheckbox","itemLabelInput","itemDragAndDropOverlay","itemErrorIcon","itemLoadingIcon"].forEach(t=>{r[t]=G_(e,t,n)})}("MuiRichTreeViewPro");const q_=["apiRef","slots","slotProps","disabledItemsFocusable","items","isItemDisabled","isItemSelectionDisabled","getItemLabel","getItemChildren","getItemId","onItemClick","itemChildrenIndentation","id","expandedItems","defaultExpandedItems","onExpandedItemsChange","onItemExpansionToggle","expansionTrigger","disableSelection","selectedItems","defaultSelectedItems","multiSelect","checkboxSelection","selectionPropagation","onSelectedItemsChange","onItemSelectionToggle","onItemFocus","onItemLabelChange","isItemEditable","dataSource","dataSourceCache","itemsReordering","isItemReorderable","canMoveItemToNewPosition","onItemPositionChange"];class X_{constructor({ttl:e=3e5}){this.cache={},this.ttl=e}set(e,t){const n=Date.now()+this.ttl;this.cache[e]={value:t,expiry:n}}get(e){const t=this.cache[e];if(t)return Date.now()>t.expiry?(delete this.cache[e],-1):t.value}clear(){this.cache={}}}let Z_=function(e){return e[e.QUEUED=0]="QUEUED",e[e.PENDING=1]="PENDING",e[e.SETTLED=2]="SETTLED",e[e.UNKNOWN=3]="UNKNOWN",e}({});class J_{pendingRequests=(()=>new Set)();queuedRequests=(()=>new Set)();settledRequests=(()=>new Set)();constructor(e,t=1/0){this.lazyLoadingPlugin=e,this.maxConcurrentRequests=t}processQueue=async()=>{if(0===this.queuedRequests.size||this.pendingRequests.size>=this.maxConcurrentRequests)return;const e=Math.min(this.maxConcurrentRequests-this.pendingRequests.size,this.queuedRequests.size);if(0===e)return;const t=Array.from(this.queuedRequests),n=[];for(let r=0;r{const t={};e.forEach(e=>{this.queuedRequests.add(e),t[e]=!0}),await this.processQueue()};setRequestSettled=async e=>{this.pendingRequests.delete(e),this.settledRequests.add(e),await this.processQueue()};clear=()=>{this.queuedRequests.clear(),Array.from(this.pendingRequests).forEach(e=>this.clearPendingRequest(e))};clearPendingRequest=async e=>{this.pendingRequests.delete(e),await this.processQueue()};getRequestStatus=e=>this.pendingRequests.has(e)?Z_.PENDING:this.queuedRequests.has(e)?Z_.QUEUED:this.settledRequests.has(e)?Z_.SETTLED:Z_.UNKNOWN;getActiveRequestsCount=()=>this.pendingRequests.size+this.queuedRequests.size}const Q_={loading:{},errors:{}};class eF{nestedDataManager=(()=>new J_(this))();constructor(e){this.store=e,this.cache=e.parameters.dataSourceCache??new X_({}),null!=e.parameters.dataSource&&(this.init(),e.subscribeEvent("beforeItemToggleExpansion",this.handleBeforeItemToggleExpansion))}init=()=>{const e=this.store,t=this;(async()=>{if(e.parameters.items.length){const t=function(e,t){return Object.values(e.state.itemMetaLookup).filter(n=>!n.expandable&&0!==t.getChildrenCount(e.state.itemModelLookup[n.id])).map(e=>e.id)}(e,e.parameters.dataSource);t.length>0&&e.expansion.addExpandableItems(t)}else await t.fetchItemChildren({itemId:null});await async function n(r){const i=r.filter(t=>C$.isItemExpanded(e.state,t));if(i.length>0){const r=i.filter(t=>0===S$.itemOrderedChildrenIds(e.state,t).length);r.length>0&&await t.fetchItems(r);const o=i.flatMap(t=>S$.itemOrderedChildrenIds(e.state,t));await n(o)}}(S$.itemOrderedChildrenIds(e.state,null))})()};handleBeforeItemToggleExpansion=async(e,t)=>{this.store.parameters.dataSource&&e.shouldBeExpanded&&(e.isExpansionPrevented=!0,await this.fetchItems([e.itemId]),L$.itemHasError(this.store.state,e.itemId)||(this.store.expansion.applyItemExpansion({itemId:e.itemId,shouldBeExpanded:!0,event:t}),A$.isItemSelected(this.store.state,e.itemId)&&this.store.selection.setItemSelection({event:t,itemId:e.itemId,keepExistingSelection:!0,shouldBeSelected:!0})))};setItemLoading=(e,t)=>{if(!this.store.parameters.dataSource||!this.store.state.lazyLoadedItems)return;if(L$.isItemLoading(this.store.state,e)===t)return;const n=e??b$,r=l({},this.store.state.lazyLoadedItems.loading);!1===t?delete r[n]:r[n]=t,this.store.set("lazyLoadedItems",l({},this.store.state.lazyLoadedItems,{loading:r}))};setItemError=(e,t)=>{if(!this.store.parameters.dataSource||!this.store.state.lazyLoadedItems)return;if(L$.itemError(this.store.state,e)===t)return;const n=e??b$,r=l({},this.store.state.lazyLoadedItems.errors);null===t&&void 0!==r[n]?delete r[n]:r[n]=t,this.store.set("lazyLoadedItems",l({},this.store.state.lazyLoadedItems,{errors:r}))};buildPublicAPI=()=>({updateItemChildren:this.updateItemChildren});fetchItems=e=>this.nestedDataManager.queue(e);updateItemChildren=e=>this.fetchItemChildren({itemId:e,forceRefresh:!0});fetchItemChildren=async({itemId:e,forceRefresh:t})=>{if(!this.store.parameters.dataSource)return;const{getChildrenCount:n,getTreeItems:r}=this.store.parameters.dataSource;if(null!=e&&!S$.itemMeta(this.store.state,e))return void this.nestedDataManager.clearPendingRequest(e);null!=e||L$.isEmpty(this.store.state)||this.store.set("lazyLoadedItems",Q_);const i=e??b$;if(!t){const t=this.cache.get(i);if(void 0!==t&&-1!==t)return null!=e&&this.nestedDataManager.setRequestSettled(e),this.store.items.setItemChildren({items:t,parentId:e,getChildrenCount:n}),void this.setItemLoading(e,!1);this.setItemLoading(e,!0),-1===t&&this.store.items.removeChildren(e)}L$.itemError(this.store.state,e)&&this.setItemError(e,null);try{let t;null==e?t=await r():(t=await r(e),this.nestedDataManager.setRequestSettled(e)),this.cache.set(i,t),this.store.items.setItemChildren({items:t,parentId:e,getChildrenCount:n})}catch(n){const r=n;this.setItemError(e,r),t&&this.store.items.removeChildren(e)}finally{this.setItemLoading(e,!1),null!=e&&this.nestedDataManager.setRequestSettled(e)}}}const tF=ne({memoize:J,memoizeOptions:{maxSize:1,equalityCheck:Object.is}}),nF=(e,t,n,r,i,o,a,s,...l)=>{if(l.length>0)throw new Error("Unsupported number of selectors");let c;if(e&&t&&n&&r&&i&&o&&a&&s)c=(l,c,u,d)=>{const p=e(l,c,u,d),h=t(l,c,u,d),m=n(l,c,u,d),f=r(l,c,u,d),g=i(l,c,u,d),y=o(l,c,u,d),v=a(l,c,u,d);return s(p,h,m,f,g,y,v,c,u,d)};else if(e&&t&&n&&r&&i&&o&&a)c=(s,l,c,u)=>{const d=e(s,l,c,u),p=t(s,l,c,u),h=n(s,l,c,u),m=r(s,l,c,u),f=i(s,l,c,u),g=o(s,l,c,u);return a(d,p,h,m,f,g,l,c,u)};else if(e&&t&&n&&r&&i&&o)c=(a,s,l,c)=>{const u=e(a,s,l,c),d=t(a,s,l,c),p=n(a,s,l,c),h=r(a,s,l,c),m=i(a,s,l,c);return o(u,d,p,h,m,s,l,c)};else if(e&&t&&n&&r&&i)c=(o,a,s,l)=>{const c=e(o,a,s,l),u=t(o,a,s,l),d=n(o,a,s,l),p=r(o,a,s,l);return i(c,u,d,p,a,s,l)};else if(e&&t&&n&&r)c=(i,o,a,s)=>{const l=e(i,o,a,s),c=t(i,o,a,s),u=n(i,o,a,s);return r(l,c,u,o,a,s)};else if(e&&t&&n)c=(r,i,o,a)=>{const s=e(r,i,o,a),l=t(r,i,o,a);return n(s,l,i,o,a)};else if(e&&t)c=(n,r,i,o)=>{const a=e(n,r,i,o);return t(a,r,i,o)};else{if(!e)throw new Error("Missing arguments");c=e}return c},rF=(...e)=>{const t=new WeakMap;let n=1;const r=e[e.length-1],i=e.length-1||1,o=Math.max(r.length-i,0);if(o>3)throw new Error("Unsupported number of arguments");return(i,a,s,l)=>{let c=i.__cacheKey__;c||(c={id:n},i.__cacheKey__=c,n+=1);let u=t.get(c);if(!u){const n=1===e.length?[e=>e,r]:e;let i=e;const a=[void 0,void 0,void 0];switch(o){case 0:break;case 1:i=[...n.slice(0,-1),()=>a[0],r];break;case 2:i=[...n.slice(0,-1),()=>a[0],()=>a[1],r];break;case 3:i=[...n.slice(0,-1),()=>a[0],()=>a[1],()=>a[2],r];break;default:throw new Error("Unsupported number of arguments")}u=tF(...i),u.selectorArgs=a,t.set(c,u)}switch(o){case 3:u.selectorArgs[2]=l;case 2:u.selectorArgs[1]=s;case 1:u.selectorArgs[0]=a}switch(o){case 0:return u(i);case 1:return u(i,a);case 2:return u(i,a,s);case 3:return u(i,a,s,l);default:throw new Error("unreachable")}}},iF={currentReorder:nF(e=>e.currentReorder),draggedItemProperties:rF(e=>e.currentReorder,S$.itemMetaLookup,(e,t,n)=>{if(!e||e.targetItemId!==n||null==e.action)return null;const r=null==e.newPosition?.parentId?0:t[n].depth+1;return{newPosition:e.newPosition,action:e.action,targetDepth:r}}),isDragging:nF(e=>!!e.currentReorder?.draggedItemId),canItemBeReordered:nF(e=>e.isItemReorderable,R$.isAnyItemBeingEdited,(e,t,n)=>!t&&e(n))},oF=(e,t,n)=>{const r=S$.itemMeta(e.state,t);return r.parentId===n||null!=r.parentId&&oF(e,r.parentId,n)},aF=parseInt(e.version,10)>=19?function(t,n,r,i,o){const a=e.useCallback(()=>n(t.getSnapshot(),r,i,o),[t,n,r,i,o]);return(0,N.useSyncExternalStore)(t.subscribe,a,a)}:function(e,t,n,r,i){return(0,_.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,e=>t(e,n,r,i))};function sF(e,t,n,r,i){return aF(e,t,n,r,i)}const lF=({props:t})=>{const{store:n}=FD(),{itemId:r}=t,i=e.useRef(null),o=sF(n,iF.draggedItemProperties,r),a=sF(n,iF.canItemBeReordered,r),s=sF(n,iF.isDragging,r);return{propsEnhancers:{root:({rootRefObject:e,contentRefObject:t,externalEventHandlers:i})=>({draggable:!!a||void 0,onDragStart:o=>{if(i.onDragStart?.(o),!a||o.defaultMuiPrevented||o.defaultPrevented)return;if(V$(o.target,e.current))return;o.dataTransfer.effectAllowed="move",o.dataTransfer.setDragImage(t.current,0,0);const{types:s}=o.dataTransfer;!navigator.userAgent.toLowerCase().includes("android")||s.includes("text/plain")||s.includes("text/uri-list")||o.dataTransfer.setData("text/plain","android-fallback"),o.dataTransfer.setData("application/mui-x",""),n.itemsReordering.startDraggingItem(r)},onDragOver:e=>{i.onDragOver?.(e),e.defaultMuiPrevented||e.preventDefault()},onDragEnd:e=>{i.onDragEnd?.(e),e.defaultMuiPrevented||("none"!==e.dataTransfer.dropEffect?n.itemsReordering.completeDraggingItem(r):n.itemsReordering.cancelDraggingItem())}}),content:({externalEventHandlers:e,contentRefObject:t})=>s?{onDragEnter:t=>{e.onDragEnter?.(t),t.defaultMuiPrevented||(i.current=n.itemsReordering.getDroppingTargetValidActions(r))},onDragOver:o=>{if(e.onDragOver?.(o),o.defaultMuiPrevented||null==i.current||!t.current)return;const a=t.current.getBoundingClientRect(),s=o.clientY-a.top,l=o.clientX-a.left;n.itemsReordering.setDragTargetItem({itemId:r,validActions:i.current,targetHeight:a.height,cursorY:s,cursorX:l,contentElement:t.current})}}:{},dragAndDropOverlay:()=>o?{action:o.action,style:{"--TreeView-targetDepth":o.targetDepth}}:{}}}};class cF{constructor(e){this.store=e,e.itemPluginManager.register(lF,null)}getDroppingTargetValidActions=e=>{const t=iF.currentReorder(this.store.state);if(!t)throw new Error("There is no ongoing reordering.");if(e===t.draggedItemId)return{};const n=this.store.parameters.canMoveItemToNewPosition,r=S$.itemMeta(this.store.state,e),i=S$.itemIndex(this.store.state,r.id),o=S$.itemMeta(this.store.state,t.draggedItemId),a=S$.itemIndex(this.store.state,o.id),s=i===S$.itemOrderedChildrenIds(this.store.state,r.parentId).length-1,l={parentId:o.parentId,index:a},c={"make-child":{parentId:r.id,index:0},"reorder-above":{parentId:r.parentId,index:r.parentId===o.parentId&&i>a?i-1:i},"reorder-below":!r.expandable||s?{parentId:r.parentId,index:r.parentId===o.parentId&&i>a?i:i+1}:null,"move-to-parent":null==r.parentId?null:{parentId:r.parentId,index:S$.itemOrderedChildrenIds(this.store.state,r.parentId).length}},u={};return Object.keys(c).forEach(e=>{const r=c[e];null!=r&&(e=>{let r;return r=(e.parentId!==l.parentId||e.index!==l.index)&&(!n||n({itemId:t.draggedItemId,oldPosition:l,newPosition:e})),r})(r)&&(u[e]=r)}),u};startDraggingItem=e=>{R$.isItemBeingEdited(this.store.state,e)||this.store.set("currentReorder",{targetItemId:e,draggedItemId:e,action:null,newPosition:null})};cancelDraggingItem=()=>{this.store.set("currentReorder",null)};completeDraggingItem=e=>{const t=iF.currentReorder(this.store.state);if(null==t||t.draggedItemId!==e)return;if(t.draggedItemId===t.targetItemId||null==t.action||null==t.newPosition)return void this.cancelDraggingItem();const n=S$.itemMeta(this.store.state,t.draggedItemId),r={parentId:n.parentId,index:S$.itemIndex(this.store.state,n.id)},i=t.newPosition;this.store.update(l({currentReorder:null},(({itemToMoveId:e,oldPosition:t,newPosition:n,prevState:r})=>{const i=r.itemMetaLookup[e],o=t.parentId??b$,a=n.parentId??b$,s=l({},r.itemOrderedChildrenIdsLookup);if(o===a){const r=[...s[o]];r.splice(t.index,1),r.splice(n.index,0,e),s[i.parentId??b$]=r}else{const r=[...s[o]];r.splice(t.index,1),s[o]=r;const i=[...s[a]??[]];i.splice(n.index,0,e),s[a]=i}const c=l({},r.itemChildrenIndexesLookup);c[o]=x$(s[o]),a!==o&&(c[a]=x$(s[a]));const u=l({},r.itemMetaLookup);function d(e){const t=s[e].length>0;u[e].expandable!==t&&(u[e]=l({},u[e],{expandable:t}))}o!==b$&&o!==a&&d(o),a!==b$&&a!==o&&d(a);const p=null==n.parentId?0:u[a].depth+1;u[e]=l({},i,{parentId:n.parentId,depth:p});const h=(e,t)=>{u[e]=l({},u[e],{depth:t}),s[e]?.forEach(e=>h(e,t+1))};return s[e]?.forEach(e=>h(e,p+1)),{itemOrderedChildrenIdsLookup:s,itemChildrenIndexesLookup:c,itemMetaLookup:u}})({itemToMoveId:e,newPosition:i,oldPosition:r,prevState:this.store.state})));const o=this.store.parameters.onItemPositionChange;o?.({itemId:e,newPosition:i,oldPosition:r})};setDragTargetItem=({itemId:e,validActions:t,targetHeight:n,cursorY:r,cursorX:i,contentElement:o})=>{const a=this.store.state.currentReorder;if(null==a||oF(this.store,e,a.draggedItemId))return;const s=(({itemChildrenIndentation:e,validActions:t,targetHeight:n,targetDepth:r,cursorX:i,cursorY:o,contentElement:a})=>{let s;const l=((e,t)=>{if("number"==typeof e)return e;const n=/^(\d.+)(px)$/.exec(e);if(n)return parseFloat(n[1]);const r=document.createElement("div");r.style.width=e,r.style.position="absolute",t.appendChild(r);const i=r.offsetWidth;return t.removeChild(r),i})(e,a);return s=t["move-to-parent"]&&i3/4*n?"reorder-below":"make-child":t["reorder-above"]&&o<.5*n?"reorder-above":t["reorder-below"]&&o>=.5*n?"reorder-below":null,s})({itemChildrenIndentation:this.store.state.itemChildrenIndentation,validActions:t,targetHeight:n,targetDepth:this.store.state.itemMetaLookup[e].depth,cursorY:r,cursorX:i,contentElement:o}),c=null==s?null:t[s];a.targetItemId===e&&a.action===s&&a.newPosition?.parentId===c?.parentId&&a.newPosition?.index===c?.index||this.store.set("currentReorder",l({},a,{targetItemId:e,newPosition:c,action:s}))}}const uF=()=>!0,dF=()=>!1,pF=e=>({lazyLoadedItems:e.dataSource?Q_:null,currentReorder:null,isItemReorderable:e.itemsReordering?e.isItemReorderable??uF:dF}),hF={getInitialState:(e,t)=>l({},qz.rawMapper.getInitialState(e,t),pF(t)),updateStateFromParameters:(e,t,n)=>l({},qz.rawMapper.updateStateFromParameters(e,t,n),pF(t)),shouldIgnoreItemsStateUpdate:e=>!!e.dataSource};class mF extends qz{itemsReordering=(()=>new cF(this))();constructor(e){super(e,"RichTreeViewPro",hF),this.lazyLoading=new eF(this)}buildPublicAPI(){return l({},super.buildPublicAPI(),this.lazyLoading.buildPublicAPI())}}const fF=Lh,gF=bm("ul",{name:"MuiRichTreeViewPro",slot:"Root"})({padding:0,margin:0,listStyle:"none",outline:0,position:"relative"}),yF="MTc3MTU0NTYwMDAwMA==",vF=e.forwardRef(function(t,n){const r=fF({props:t,name:"MuiRichTreeViewPro"});z_("x-tree-view-pro",yF);const{slots:i,slotProps:o,apiRef:a,parameters:s,forwardedProps:c}=function(t){const{apiRef:n,slots:r,slotProps:i,disabledItemsFocusable:o,items:a,isItemDisabled:s,isItemSelectionDisabled:l,getItemLabel:c,getItemChildren:u,getItemId:d,onItemClick:p,itemChildrenIndentation:h,id:m,expandedItems:f,defaultExpandedItems:g,onExpandedItemsChange:y,onItemExpansionToggle:v,expansionTrigger:b,disableSelection:x,selectedItems:I,defaultSelectedItems:w,multiSelect:k,checkboxSelection:S,selectionPropagation:M,onSelectedItemsChange:C,onItemSelectionToggle:P,onItemFocus:E,onItemLabelChange:T,isItemEditable:A,dataSource:O,dataSourceCache:j,itemsReordering:L,isItemReorderable:R,canMoveItemToNewPosition:D,onItemPositionChange:$}=t,z=tt(t,q_);return{apiRef:n,slots:r,slotProps:i,parameters:e.useMemo(()=>({disabledItemsFocusable:o,items:a,isItemDisabled:s,isItemSelectionDisabled:l,getItemLabel:c,getItemChildren:u,getItemId:d,onItemClick:p,itemChildrenIndentation:h,id:m,expandedItems:f,defaultExpandedItems:g,onExpandedItemsChange:y,onItemExpansionToggle:v,expansionTrigger:b,disableSelection:x,selectedItems:I,defaultSelectedItems:w,multiSelect:k,checkboxSelection:S,selectionPropagation:M,onSelectedItemsChange:C,onItemSelectionToggle:P,onItemFocus:E,onItemLabelChange:T,isItemEditable:A,dataSource:O,dataSourceCache:j,itemsReordering:L,isItemReorderable:R,canMoveItemToNewPosition:D,onItemPositionChange:$}),[o,a,s,l,c,u,d,p,h,m,f,g,y,v,b,x,I,w,k,S,M,C,P,E,T,A,O,j,L,R,D,$]),forwardedProps:z}}(r),u=Mz(mF,s),d=e.useRef(null),p=Iz(u,c,sD(n,d)),h=(t=>{const{classes:n}=t;return e.useMemo(()=>function(e,t,n){const r={};for(const i in e){const o=e[i];let a="",s=!0;for(let e=0;e{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}(c,s?.ref,t.additionalProps?.ref);return function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}}(n,{...l,ref:u},i)}({elementType:m,externalSlotProps:o?.root,className:h.root,getSlotProps:p,ownerState:r});return(0,O.jsx)(VD,{store:u,classes:h,slots:i,slotProps:o,apiRef:a,rootRef:d,children:(0,O.jsx)($$.Provider,{value:S$.itemDepth,children:(0,O.jsxs)(m,l({},f,{children:[(0,O.jsx)(xz,{slots:i,slotProps:o}),(0,O.jsx)(H_,{packageName:"x-tree-view-pro",releaseInfo:yF})]}))})})}),bF=e.createContext(null);function xF(){return e.useContext(bF)}const IF="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__",wF=function(t){const{children:n,theme:r}=t,i=xF(),o=e.useMemo(()=>{const e=null===i?{...r}:function(e,t){return"function"==typeof t?t(e):{...e,...t}}(i,r);return null!=e&&(e[IF]=null!==i),e},[r,i]);return(0,O.jsx)(bF.Provider,{value:o,children:n})};function kF(e){const{styles:t,defaultTheme:n={}}=e,r="function"==typeof t?e=>{return t(null==(r=e)||0===Object.keys(r).length?n:e);var r}:t;return(0,O.jsx)(Ty,{styles:r})}function SF(e){const t=sm(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles=`@layer global{${t.styles}}`),t):e}const MF=function({styles:e,themeId:t,defaultTheme:n={}}){const r=Zd(n),i=t&&r[t]||r;let o="function"==typeof e?e(i):e;return i.modularCssLayers&&(o=Array.isArray(o)?o.map(e=>SF("function"==typeof e?e(i):e)):SF(o)),(0,O.jsx)(kF,{styles:o})},CF={};function PF(t,n,r,i=!1){return e.useMemo(()=>{const e=t&&n[t]||n;if("function"==typeof r){const o=r(e),a=t?{...n,[t]:o}:o;return i?()=>a:a}return t?{...n,[t]:r}:{...n,...r}},[t,n,r,i])}const EF=function(e){const{children:t,theme:n,themeId:r}=e,i=qd(CF),o=xF()||CF,a=PF(r,i,n),s=PF(r,o,n,!0),l="rtl"===(r?a[r]:a).direction,c=function(e){const t=qd(),n=Rg()||"",{modularCssLayers:r}=e;let i="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return i=r&&null===t?"string"==typeof r?r.replace(/mui(?!\.)/g,i):`@layer ${i};`:"",qm(()=>{const e=document.querySelector("head");if(!e)return;const t=e.firstChild;if(i){if(t&&t.hasAttribute?.("data-mui-layer-order")&&t.getAttribute("data-mui-layer-order")===n)return;const r=document.createElement("style");r.setAttribute("data-mui-layer-order",n),r.textContent=i,e.prepend(r)}else e.querySelector(`style[data-mui-layer-order="${n}"]`)?.remove()},[i,n]),i?(0,O.jsx)(MF,{styles:i}):null}(a);return(0,O.jsx)(wF,{theme:s,children:(0,O.jsx)(Ud.Provider,{value:a,children:(0,O.jsx)(Xh,{value:l,children:(0,O.jsxs)(Sm,{value:r?a[r].components:a.components,children:[c,t]})})})})};function TF({theme:e,...t}){const n=jh in e?e[jh]:void 0;return(0,O.jsx)(EF,{...t,themeId:n?jh:void 0,theme:n||e})}const AF="mode",OF="color-scheme",jF="data-color-scheme";function LF(){}const RF=({key:e,storageWindow:t})=>(t||"undefined"==typeof window||(t=window),{get(n){if("undefined"==typeof window)return;if(!t)return n;let r;try{r=t.localStorage.getItem(e)}catch{}return r||n},set:n=>{if(t)try{t.localStorage.setItem(e,n)}catch{}},subscribe:n=>{if(!t)return LF;const r=t=>{const r=t.newValue;t.key===e&&n(r)};return t.addEventListener("storage",r),()=>{t.removeEventListener("storage",r)}}});function DF(){}function $F(e){if("undefined"!=typeof window&&"function"==typeof window.matchMedia&&"system"===e)return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function zF(e,t){return"light"===e.mode||"system"===e.mode&&"light"===e.systemMode?t("light"):"dark"===e.mode||"system"===e.mode&&"dark"===e.systemMode?t("dark"):void 0}const NF="mui-color-scheme",_F="light",FF="dark",HF="mui-mode",{CssVarsProvider:BF,useColorScheme:VF,getInitColorSchemeScript:UF}=function(t){const{themeId:n,theme:r={},modeStorageKey:i=AF,colorSchemeStorageKey:o=OF,disableTransitionOnChange:a=!1,defaultColorScheme:s,resolveTheme:l}=t,c={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},u=e.createContext(void 0),d={},p={},h="string"==typeof s?s:s.light,m="string"==typeof s?s:s.dark;return{CssVarsProvider:function(t){const{children:c,theme:h,modeStorageKey:m=i,colorSchemeStorageKey:f=o,disableTransitionOnChange:g=a,storageManager:y,storageWindow:v=("undefined"==typeof window?void 0:window),documentNode:b=("undefined"==typeof document?void 0:document),colorSchemeNode:x=("undefined"==typeof document?void 0:document.documentElement),disableNestedContext:I=!1,disableStyleSheetGeneration:w=!1,defaultMode:k="system",noSsr:S}=t,M=e.useRef(!1),C=xF(),P=e.useContext(u),E=!!P&&!I,T=e.useMemo(()=>h||("function"==typeof r?r():r),[h]),A=T[n],j=A||T,{colorSchemes:L=d,components:R=p,cssVarPrefix:D}=j,$=Object.keys(L).filter(e=>!!L[e]).join(","),z=e.useMemo(()=>$.split(","),[$]),N="string"==typeof s?s:s.light,_="string"==typeof s?s:s.dark,F=L[N]&&L[_]?k:L[j.defaultColorScheme]?.palette?.mode||j.palette?.mode,{mode:H,setMode:B,systemMode:V,lightColorScheme:U,darkColorScheme:Y,colorScheme:W,setColorScheme:G}=function(t){const{defaultMode:n="light",defaultLightColorScheme:r,defaultDarkColorScheme:i,supportedColorSchemes:o=[],modeStorageKey:a=AF,colorSchemeStorageKey:s=OF,storageWindow:l=("undefined"==typeof window?void 0:window),storageManager:c=RF,noSsr:u=!1}=t,d=o.join(","),p=o.length>1,h=e.useMemo(()=>c?.({key:a,storageWindow:l}),[c,a,l]),m=e.useMemo(()=>c?.({key:`${s}-light`,storageWindow:l}),[c,s,l]),f=e.useMemo(()=>c?.({key:`${s}-dark`,storageWindow:l}),[c,s,l]),[g,y]=e.useState(()=>{const e=h?.get(n)||n,t=m?.get(r)||r,o=f?.get(i)||i;return{mode:e,systemMode:$F(e),lightColorScheme:t,darkColorScheme:o}}),[v,b]=e.useState(u||!p);e.useEffect(()=>{b(!0)},[]);const x=function(e){return zF(e,t=>"light"===t?e.lightColorScheme:"dark"===t?e.darkColorScheme:void 0)}(g),I=e.useCallback(e=>{y(t=>{if(e===t.mode)return t;const r=e??n;return h?.set(r),{...t,mode:r,systemMode:$F(r)}})},[h,n]),w=e.useCallback(e=>{e?"string"==typeof e?e&&!d.includes(e)?console.error(`\`${e}\` does not exist in \`theme.colorSchemes\`.`):y(t=>{const n={...t};return zF(t,t=>{"light"===t&&(m?.set(e),n.lightColorScheme=e),"dark"===t&&(f?.set(e),n.darkColorScheme=e)}),n}):y(t=>{const n={...t},o=null===e.light?r:e.light,a=null===e.dark?i:e.dark;return o&&(d.includes(o)?(n.lightColorScheme=o,m?.set(o)):console.error(`\`${o}\` does not exist in \`theme.colorSchemes\`.`)),a&&(d.includes(a)?(n.darkColorScheme=a,f?.set(a)):console.error(`\`${a}\` does not exist in \`theme.colorSchemes\`.`)),n}):y(e=>(m?.set(r),f?.set(i),{...e,lightColorScheme:r,darkColorScheme:i}))},[d,m,f,r,i]),k=e.useCallback(e=>{"system"===g.mode&&y(t=>{const n=e?.matches?"dark":"light";return t.systemMode===n?t:{...t,systemMode:n}})},[g.mode]),S=e.useRef(k);return S.current=k,e.useEffect(()=>{if("function"!=typeof window.matchMedia||!p)return;const e=(...e)=>S.current(...e),t=window.matchMedia("(prefers-color-scheme: dark)");return t.addListener(e),e(t),()=>{t.removeListener(e)}},[p]),e.useEffect(()=>{if(p){const e=h?.subscribe(e=>{e&&!["light","dark","system"].includes(e)||I(e||n)})||DF,t=m?.subscribe(e=>{e&&!d.match(e)||w({light:e})})||DF,r=f?.subscribe(e=>{e&&!d.match(e)||w({dark:e})})||DF;return()=>{e(),t(),r()}}},[w,I,d,n,l,p,h,m,f]),{...g,mode:v?g.mode:void 0,systemMode:v?g.systemMode:void 0,colorScheme:v?x:void 0,setMode:I,setColorScheme:w}}({supportedColorSchemes:z,defaultLightColorScheme:N,defaultDarkColorScheme:_,modeStorageKey:m,colorSchemeStorageKey:f,defaultMode:F,storageManager:y,storageWindow:v,noSsr:S});let K=H,q=W;E&&(K=P.mode,q=P.colorScheme);const X=e.useMemo(()=>{const e=q||j.defaultColorScheme,t=j.generateThemeVars?.()||j.vars,n={...j,components:R,colorSchemes:L,cssVarPrefix:D,vars:t};if("function"==typeof n.generateSpacing&&(n.spacing=n.generateSpacing()),e){const t=L[e];t&&"object"==typeof t&&Object.keys(t).forEach(e=>{t[e]&&"object"==typeof t[e]?n[e]={...n[e],...t[e]}:n[e]=t[e]})}return l?l(n):n},[j,q,R,L,D]),Z=j.colorSchemeSelector;qm(()=>{if(q&&x&&Z&&"media"!==Z){const e=Z;let t=Z;if("class"===e&&(t=".%s"),"data"===e&&(t="[data-%s]"),e?.startsWith("data-")&&!e.includes("%s")&&(t=`[${e}="%s"]`),t.startsWith("."))x.classList.remove(...z.map(e=>t.substring(1).replace("%s",e))),x.classList.add(t.substring(1).replace("%s",q));else{const e=t.replace("%s",q).match(/\[([^\]]+)\]/);if(e){const[t,n]=e[1].split("=");n||z.forEach(e=>{x.removeAttribute(t.replace(q,e))}),x.setAttribute(t,n?n.replace(/"|'/g,""):"")}else x.setAttribute(t,q)}}},[q,Z,x,z]),e.useEffect(()=>{let e;if(g&&M.current&&b){const t=b.createElement("style");t.appendChild(b.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),b.head.appendChild(t),window.getComputedStyle(b.body),e=setTimeout(()=>{b.head.removeChild(t)},1)}return()=>{clearTimeout(e)}},[q,g,b]),e.useEffect(()=>(M.current=!0,()=>{M.current=!1}),[]);const J=e.useMemo(()=>({allColorSchemes:z,colorScheme:q,darkColorScheme:Y,lightColorScheme:U,mode:K,setColorScheme:G,setMode:B,systemMode:V}),[z,q,Y,U,K,G,B,V,X.colorSchemeSelector]);let Q=!0;(w||!1===j.cssVariables||E&&C?.cssVarPrefix===D)&&(Q=!1);const ee=(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(EF,{themeId:A?n:void 0,theme:X,children:c}),Q&&(0,O.jsx)(kF,{styles:X.generateStyleSheets?.()||[]})]});return E?ee:(0,O.jsx)(u.Provider,{value:J,children:ee})},useColorScheme:()=>e.useContext(u)||c,getInitColorSchemeScript:e=>function(e){const{defaultMode:t="system",defaultLightColorScheme:n="light",defaultDarkColorScheme:r="dark",modeStorageKey:i=AF,colorSchemeStorageKey:o=OF,attribute:a=jF,colorSchemeNode:s="document.documentElement",nonce:l}=e||{};let c="",u=a;if("class"===a&&(u=".%s"),"data"===a&&(u="[data-%s]"),u.startsWith(".")){const e=u.substring(1);c+=`${s}.classList.remove('${e}'.replace('%s', light), '${e}'.replace('%s', dark));\n ${s}.classList.add('${e}'.replace('%s', colorScheme));`}const d=u.match(/\[([^\]]+)\]/);if(d){const[e,t]=d[1].split("=");t||(c+=`${s}.removeAttribute('${e}'.replace('%s', light));\n ${s}.removeAttribute('${e}'.replace('%s', dark));`),c+=`\n ${s}.setAttribute('${e}'.replace('%s', colorScheme), ${t?`${t}.replace('%s', colorScheme)`:'""'});`}else c+=`${s}.setAttribute('${u}', colorScheme);`;return(0,O.jsx)("script",{suppressHydrationWarning:!0,nonce:"undefined"==typeof window?l:"",dangerouslySetInnerHTML:{__html:`(function() {\ntry {\n let colorScheme = '';\n const mode = localStorage.getItem('${i}') || '${t}';\n const dark = localStorage.getItem('${o}-dark') || '${r}';\n const light = localStorage.getItem('${o}-light') || '${n}';\n if (mode === 'system') {\n // handle system mode\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n if (mql.matches) {\n colorScheme = dark\n } else {\n colorScheme = light\n }\n }\n if (mode === 'light') {\n colorScheme = light;\n }\n if (mode === 'dark') {\n colorScheme = dark;\n }\n if (colorScheme) {\n ${c}\n }\n} catch(e){}})();`}},"mui-color-scheme-init")}({colorSchemeStorageKey:o,defaultLightColorScheme:h,defaultDarkColorScheme:m,modeStorageKey:i,...e})}}({themeId:jh,theme:()=>Ah({cssVariables:!0}),colorSchemeStorageKey:NF,modeStorageKey:HF,defaultColorScheme:{light:_F,dark:FF},resolveTheme:e=>{const t={...e,typography:oh(e.palette,e.typography)};return t.unstable_sx=function(e){return xu({sx:e,theme:this})},t}}),YF=BF;function WF({theme:t,...n}){const r=e.useMemo(()=>{if("function"==typeof t)return t;const e=jh in t?t[jh]:t;return"colorSchemes"in e?null:"vars"in e?t:{...t,vars:null}},[t]);return r?(0,O.jsx)(TF,{theme:r,...n}):(0,O.jsx)(YF,{theme:t,...n})}const GF={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"};function KF(e,t,n,r,i){return 1===n?Math.min(e+t,i):Math.max(e-t,r)}function qF(e,t){return e-t}function XF(e,t){const{index:n}=e.reduce((e,n,r)=>{const i=Math.abs(t-n);return null===e||ie===t){return e.length===t.length&&e.every((e,r)=>n(e,t[r]))}(e,t)}const nH={horizontal:{offset:e=>({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},rH=e=>e;let iH;function oH(){return void 0===iH&&(iH="undefined"==typeof CSS||"function"!=typeof CSS.supports||CSS.supports("touch-action","none")),iH}function aH(t){const{"aria-labelledby":n,defaultValue:r,disabled:i=!1,disableSwap:o=!1,isRtl:a=!1,marks:s=!1,max:l=100,min:c=0,name:u,onChange:d,onChangeCommitted:p,orientation:h="horizontal",rootRef:m,scale:f=rH,step:g=1,shiftStep:y=10,tabIndex:v,value:b}=t,x=e.useRef(void 0),[I,w]=e.useState(-1),[k,S]=e.useState(-1),[M,C]=e.useState(!1),P=e.useRef(0),E=e.useRef(null),[T,A]=$g({controlled:b,default:r??c,name:"Slider"}),O=d&&((e,t,n)=>{const r=e.nativeEvent||e,i=new r.constructor(r.type,r);Object.defineProperty(i,"target",{writable:!0,value:{value:t,name:u}}),E.current=t,d(i,t,n)}),j=Array.isArray(T);let L=j?T.slice().sort(qF):[T];L=L.map(e=>null==e?c:Jd(e,c,l));const R=!0===s&&null!==g?[...Array(Math.floor((l-c)/g)+1)].map((e,t)=>({value:c+g*t})):s||[],D=R.map(e=>e.value),[$,z]=e.useState(-1),N=e.useRef(null),_=Bm(m,N),F=e=>t=>{const n=Number(t.currentTarget.getAttribute("data-index"));Zh(t.target)&&z(n),S(n),e?.onFocus?.(t)},H=e=>t=>{Zh(t.target)||z(-1),S(-1),e?.onBlur?.(t)},B=(e,t)=>{const n=Number(e.currentTarget.getAttribute("data-index")),r=L[n],i=D.indexOf(r);let a=t;if(R&&null==g){const e=D[D.length-1];a=a>=e?e:a<=D[0]?D[0]:at=>{if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","PageUp","PageDown","Home","End"].includes(t.key)){t.preventDefault();const e=Number(t.currentTarget.getAttribute("data-index")),n=L[e];let r=null;if(null!=g){const e=t.shiftKey?y:g;switch(t.key){case"ArrowUp":r=KF(n,e,1,c,l);break;case"ArrowRight":r=KF(n,e,a?-1:1,c,l);break;case"ArrowDown":r=KF(n,e,-1,c,l);break;case"ArrowLeft":r=KF(n,e,a?1:-1,c,l);break;case"PageUp":r=KF(n,y,1,c,l);break;case"PageDown":r=KF(n,y,-1,c,l);break;case"Home":r=c;break;case"End":r=l}}else if(R){const e=D[D.length-1],i=D.indexOf(n),o=[a?"ArrowLeft":"ArrowRight","ArrowUp","PageUp","End"];[a?"ArrowRight":"ArrowLeft","ArrowDown","PageDown","Home"].includes(t.key)?r=0===i?D[0]:D[i-1]:o.includes(t.key)&&(r=i===D.length-1?e:D[i+1])}null!=r&&B(t,r)}e?.onKeyDown?.(t)};qm(()=>{i&&N.current.contains(document.activeElement)&&document.activeElement?.blur()},[i]),i&&-1!==I&&w(-1),i&&-1!==$&&z(-1);const U=e.useRef(void 0);let Y=h;a&&"horizontal"===h&&(Y+="-reverse");const W=({finger:e,move:t=!1})=>{const{current:n}=N,{width:r,height:i,bottom:a,left:s}=n.getBoundingClientRect();let u,d;if(u=Y.startsWith("vertical")?(a-e.y)/i:(e.x-s)/r,Y.includes("-reverse")&&(u=1-u),d=function(e,t,n){return(n-t)*e+t}(u,c,l),g)d=function(e,t,n){const r=Math.round((e-n)/t)*t+n;return Number(r.toFixed(function(e){if(Math.abs(e)<1){const t=e.toExponential().split("e-"),n=t[0].split(".")[1];return(n?n.length:0)+parseInt(t[1],10)}const t=e.toString().split(".")[1];return t?t.length:0}(t)))}(d,g,c);else{const e=XF(D,d);d=D[e]}d=Jd(d,c,l);let p=0;if(j){p=t?U.current:XF(L,d),o&&(d=Jd(d,L[p-1]||-1/0,L[p+1]||1/0));const e=d;d=QF({values:L,newValue:d,index:p}),o&&t||(p=d.indexOf(e),U.current=p)}return{newValue:d,activeIndex:p}},G=Ag(e=>{const t=ZF(e,x);if(!t)return;if(P.current+=1,"mousemove"===e.type&&0===e.buttons)return void K(e);const{newValue:n,activeIndex:r}=W({finger:t,move:!0});eH({sliderRef:N,activeIndex:r,setActive:w}),A(n),!M&&P.current>2&&C(!0),O&&!tH(n,T)&&O(e,n,r)}),K=Ag(e=>{const t=ZF(e,x);if(C(!1),!t)return;const{newValue:n}=W({finger:t,move:!0});w(-1),"touchend"===e.type&&S(-1),p&&p(e,E.current??n),x.current=void 0,X()}),q=Ag(e=>{if(i)return;oH()||e.preventDefault();const t=e.changedTouches[0];null!=t&&(x.current=t.identifier);const n=ZF(e,x);if(!1!==n){const{newValue:t,activeIndex:r}=W({finger:n});eH({sliderRef:N,activeIndex:r,setActive:w}),A(t),O&&!tH(t,T)&&O(e,t,r)}P.current=0;const r=Xm(N.current);r.addEventListener("touchmove",G,{passive:!0}),r.addEventListener("touchend",K,{passive:!0})}),X=e.useCallback(()=>{const e=Xm(N.current);e.removeEventListener("mousemove",G),e.removeEventListener("mouseup",K),e.removeEventListener("touchmove",G),e.removeEventListener("touchend",K)},[K,G]);e.useEffect(()=>{const{current:e}=N;return e.addEventListener("touchstart",q,{passive:oH()}),()=>{e.removeEventListener("touchstart",q),X()}},[X,q]),e.useEffect(()=>{i&&X()},[i,X]);const Z=JF(j?L[0]:c,c,l),J=JF(L[L.length-1],c,l)-Z,Q=e=>t=>{e.onMouseLeave?.(t),S(-1)};let ee;return"vertical"===h&&(ee=a?"vertical-rl":"vertical-lr"),{active:I,axis:Y,axisProps:nH,dragging:M,focusedThumbIndex:$,getHiddenInputProps:(e={})=>{const r=dg(e),o={onChange:(s=r||{},e=>{s.onChange?.(e),B(e,e.target.valueAsNumber)}),onFocus:F(r||{}),onBlur:H(r||{}),onKeyDown:V(r||{})};var s;const d={...r,...o};return{tabIndex:v,"aria-labelledby":n,"aria-orientation":h,"aria-valuemax":f(l),"aria-valuemin":f(c),name:u,type:"range",min:t.min,max:t.max,step:null===t.step&&t.marks?"any":t.step??void 0,disabled:i,...e,...d,style:{...GF,direction:a?"rtl":"ltr",width:"100%",height:"100%",writingMode:ee}}},getRootProps:(e={})=>{const t=dg(e),n={onMouseDown:(r=t||{},e=>{if(r.onMouseDown?.(e),i)return;if(e.defaultPrevented)return;if(0!==e.button)return;e.preventDefault();const t=ZF(e,x);if(!1!==t){const{newValue:n,activeIndex:r}=W({finger:t});eH({sliderRef:N,activeIndex:r,setActive:w}),A(n),O&&!tH(n,T)&&O(e,n,r)}P.current=0;const n=Xm(N.current);n.addEventListener("mousemove",G,{passive:!0}),n.addEventListener("mouseup",K)})};var r;const o={...t,...n};return{...e,ref:_,...o}},getThumbProps:(e={})=>{const t=dg(e),n={onMouseOver:(r=t||{},e=>{r.onMouseOver?.(e);const t=Number(e.currentTarget.getAttribute("data-index"));S(t)}),onMouseLeave:Q(t||{})};var r;return{...e,...t,...n}},marks:R,open:k,range:j,rootRef:_,trackLeap:J,trackOffset:Z,values:L,getThumbStyle:e=>({pointerEvents:-1!==I&&I!==e?"none":void 0})}}const sH=function(e){return"string"==typeof e};function lH(e){return Ig("MuiSlider",e)}const cH=wg("MuiSlider",["root","active","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","disabled","dragging","focusVisible","mark","markActive","marked","markLabel","markLabelActive","rail","sizeSmall","thumb","thumbColorPrimary","thumbColorSecondary","thumbColorError","thumbColorSuccess","thumbColorInfo","thumbColorWarning","track","trackInverted","trackFalse","thumbSizeSmall","valueLabel","valueLabelOpen","valueLabelCircle","valueLabelLabel","vertical"]);function uH(e){return e}const dH=bm("span",{name:"MuiSlider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[`color${Cm(n.color)}`],"medium"!==n.size&&t[`size${Cm(n.size)}`],n.marked&&t.marked,"vertical"===n.orientation&&t.vertical,"inverted"===n.track&&t.trackInverted,!1===n.track&&t.trackFalse]}})(wm(({theme:e})=>({borderRadius:12,boxSizing:"content-box",display:"inline-block",position:"relative",cursor:"pointer",touchAction:"none",WebkitTapHighlightColor:"transparent","@media print":{colorAdjust:"exact"},[`&.${cH.disabled}`]:{pointerEvents:"none",cursor:"default",color:(e.vars||e).palette.grey[400]},[`&.${cH.dragging}`]:{[`& .${cH.thumb}, & .${cH.track}`]:{transition:"none"}},variants:[...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),{props:{orientation:"horizontal"},style:{height:4,width:"100%",padding:"13px 0","@media (pointer: coarse)":{padding:"20px 0"}}},{props:{orientation:"horizontal",size:"small"},style:{height:2}},{props:{orientation:"horizontal",marked:!0},style:{marginBottom:20}},{props:{orientation:"vertical"},style:{height:"100%",width:4,padding:"0 13px","@media (pointer: coarse)":{padding:"0 20px"}}},{props:{orientation:"vertical",size:"small"},style:{width:2}},{props:{orientation:"vertical",marked:!0},style:{marginRight:44}}]}))),pH=bm("span",{name:"MuiSlider",slot:"Rail",overridesResolver:(e,t)=>t.rail})({display:"block",position:"absolute",borderRadius:"inherit",backgroundColor:"currentColor",opacity:.38,variants:[{props:{orientation:"horizontal"},style:{width:"100%",height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{height:"100%",width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:"inverted"},style:{opacity:1}}]}),hH=bm("span",{name:"MuiSlider",slot:"Track",overridesResolver:(e,t)=>t.track})(wm(({theme:e})=>({display:"block",position:"absolute",borderRadius:"inherit",border:"1px solid currentColor",backgroundColor:"currentColor",transition:e.transitions.create(["left","width","bottom","height"],{duration:e.transitions.duration.shortest}),variants:[{props:{size:"small"},style:{border:"none"}},{props:{orientation:"horizontal"},style:{height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:!1},style:{display:"none"}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t,track:"inverted"},style:{...e.vars?{backgroundColor:e.vars.palette.Slider[`${t}Track`],borderColor:e.vars.palette.Slider[`${t}Track`]}:{backgroundColor:cp(e.palette[t].main,.62),borderColor:cp(e.palette[t].main,.62),...e.applyStyles("dark",{backgroundColor:sp(e.palette[t].main,.5)}),...e.applyStyles("dark",{borderColor:sp(e.palette[t].main,.5)})}}}))]}))),mH=bm("span",{name:"MuiSlider",slot:"Thumb",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.thumb,t[`thumbColor${Cm(n.color)}`],"medium"!==n.size&&t[`thumbSize${Cm(n.size)}`]]}})(wm(({theme:e})=>({position:"absolute",width:20,height:20,boxSizing:"border-box",borderRadius:"50%",outline:0,backgroundColor:"currentColor",display:"flex",alignItems:"center",justifyContent:"center",transition:e.transitions.create(["box-shadow","left","bottom"],{duration:e.transitions.duration.shortest}),"&::before":{position:"absolute",content:'""',borderRadius:"inherit",width:"100%",height:"100%",boxShadow:(e.vars||e).shadows[2]},"&::after":{position:"absolute",content:'""',borderRadius:"50%",width:42,height:42,top:"50%",left:"50%",transform:"translate(-50%, -50%)"},[`&.${cH.disabled}`]:{"&:hover":{boxShadow:"none"}},variants:[{props:{size:"small"},style:{width:12,height:12,"&::before":{boxShadow:"none"}}},{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-50%, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 50%)"}},...Object.entries(e.palette).filter(vy()).map(([t])=>({props:{color:t},style:{[`&:hover, &.${cH.focusVisible}`]:{...e.vars?{boxShadow:`0px 0px 0px 8px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 8px ${op(e.palette[t].main,.16)}`},"@media (hover: none)":{boxShadow:"none"}},[`&.${cH.active}`]:{...e.vars?{boxShadow:`0px 0px 0px 14px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 14px ${op(e.palette[t].main,.16)}`}}}}))]}))),fH=bm(function(t){const{children:n,className:r,value:i}=t,o=(e=>{const{open:t}=e;return{offset:Hh(t&&cH.valueLabelOpen),circle:cH.valueLabelCircle,label:cH.valueLabelLabel}})(t);return n?e.cloneElement(n,{className:Hh(n.props.className)},(0,O.jsxs)(e.Fragment,{children:[n.props.children,(0,O.jsx)("span",{className:Hh(o.offset,r),"aria-hidden":!0,children:(0,O.jsx)("span",{className:o.circle,children:(0,O.jsx)("span",{className:o.label,children:i})})})]})):null},{name:"MuiSlider",slot:"ValueLabel",overridesResolver:(e,t)=>t.valueLabel})(wm(({theme:e})=>({zIndex:1,whiteSpace:"nowrap",...e.typography.body2,fontWeight:500,transition:e.transitions.create(["transform"],{duration:e.transitions.duration.shortest}),position:"absolute",backgroundColor:(e.vars||e).palette.grey[600],borderRadius:2,color:(e.vars||e).palette.common.white,display:"flex",alignItems:"center",justifyContent:"center",padding:"0.25rem 0.75rem",variants:[{props:{orientation:"horizontal"},style:{transform:"translateY(-100%) scale(0)",top:"-10px",transformOrigin:"bottom center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, 50%) rotate(45deg)",backgroundColor:"inherit",bottom:0,left:"50%"},[`&.${cH.valueLabelOpen}`]:{transform:"translateY(-100%) scale(1)"}}},{props:{orientation:"vertical"},style:{transform:"translateY(-50%) scale(0)",right:"30px",top:"50%",transformOrigin:"right center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, -50%) rotate(45deg)",backgroundColor:"inherit",right:-8,top:"50%"},[`&.${cH.valueLabelOpen}`]:{transform:"translateY(-50%) scale(1)"}}},{props:{size:"small"},style:{fontSize:e.typography.pxToRem(12),padding:"0.25rem 0.5rem"}},{props:{orientation:"vertical",size:"small"},style:{right:"20px"}}]}))),gH=bm("span",{name:"MuiSlider",slot:"Mark",shouldForwardProp:e=>gm(e)&&"markActive"!==e,overridesResolver:(e,t)=>{const{markActive:n}=e;return[t.mark,n&&t.markActive]}})(wm(({theme:e})=>({position:"absolute",width:2,height:2,borderRadius:1,backgroundColor:"currentColor",variants:[{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-1px, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 1px)"}},{props:{markActive:!0},style:{backgroundColor:(e.vars||e).palette.background.paper,opacity:.8}}]}))),yH=bm("span",{name:"MuiSlider",slot:"MarkLabel",shouldForwardProp:e=>gm(e)&&"markLabelActive"!==e,overridesResolver:(e,t)=>t.markLabel})(wm(({theme:e})=>({...e.typography.body2,color:(e.vars||e).palette.text.secondary,position:"absolute",whiteSpace:"nowrap",variants:[{props:{orientation:"horizontal"},style:{top:30,transform:"translateX(-50%)","@media (pointer: coarse)":{top:40}}},{props:{orientation:"vertical"},style:{left:36,transform:"translateY(50%)","@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(e.vars||e).palette.text.primary}}]}))),vH=({children:e})=>e,bH=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiSlider"}),i=qh(),{"aria-label":o,"aria-valuetext":a,"aria-labelledby":s,component:l="span",components:c={},componentsProps:u={},color:d="primary",classes:p,className:h,disableSwap:m=!1,disabled:f=!1,getAriaLabel:g,getAriaValueText:y,marks:v=!1,max:b=100,min:x=0,name:I,onChange:w,onChangeCommitted:k,orientation:S="horizontal",shiftStep:M=10,size:C="medium",step:P=1,scale:E=uH,slotProps:T,slots:A,tabIndex:j,track:L="normal",value:R,valueLabelDisplay:D="off",valueLabelFormat:$=uH,...z}=r,N={...r,isRtl:i,max:b,min:x,classes:p,disabled:f,disableSwap:m,orientation:S,marks:v,color:d,size:C,step:P,shiftStep:M,scale:E,track:L,valueLabelDisplay:D,valueLabelFormat:$},{axisProps:_,getRootProps:F,getHiddenInputProps:H,getThumbProps:B,open:V,active:U,axis:Y,focusedThumbIndex:W,range:G,dragging:K,marks:q,values:X,trackOffset:Z,trackLeap:J,getThumbStyle:Q}=aH({...N,rootRef:n});N.marked=q.length>0&&q.some(e=>e.label),N.dragging=K,N.focusedThumbIndex=W;const ee=(e=>{const{disabled:t,dragging:n,marked:r,orientation:i,track:o,classes:a,color:s,size:l}=e;return Gh({root:["root",t&&"disabled",n&&"dragging",r&&"marked","vertical"===i&&"vertical","inverted"===o&&"trackInverted",!1===o&&"trackFalse",s&&`color${Cm(s)}`,l&&`size${Cm(l)}`],rail:["rail"],track:["track"],mark:["mark"],markActive:["markActive"],markLabel:["markLabel"],markLabelActive:["markLabelActive"],valueLabel:["valueLabel"],thumb:["thumb",t&&"disabled",l&&`thumbSize${Cm(l)}`,s&&`thumbColor${Cm(s)}`],active:["active"],disabled:["disabled"],focusVisible:["focusVisible"]},lH,a)})(N),te=A?.root??c.Root??dH,ne=A?.rail??c.Rail??pH,re=A?.track??c.Track??hH,ie=A?.thumb??c.Thumb??mH,oe=A?.valueLabel??c.ValueLabel??fH,ae=A?.mark??c.Mark??gH,se=A?.markLabel??c.MarkLabel??yH,le=A?.input??c.Input??"input",ce=T?.root??u.root,ue=T?.rail??u.rail,de=T?.track??u.track,pe=T?.thumb??u.thumb,he=T?.valueLabel??u.valueLabel,me=T?.mark??u.mark,fe=T?.markLabel??u.markLabel,ge=T?.input??u.input,ye=fg({elementType:te,getSlotProps:F,externalSlotProps:ce,externalForwardedProps:z,additionalProps:{...(Me=te,(!Me||!sH(Me))&&{as:l})},ownerState:{...N,...ce?.ownerState},className:[ee.root,h]}),ve=fg({elementType:ne,externalSlotProps:ue,ownerState:N,className:ee.rail}),be=fg({elementType:re,externalSlotProps:de,additionalProps:{style:{..._[Y].offset(Z),..._[Y].leap(J)}},ownerState:{...N,...de?.ownerState},className:ee.track}),xe=fg({elementType:ie,getSlotProps:B,externalSlotProps:pe,ownerState:{...N,...pe?.ownerState},className:ee.thumb}),Ie=fg({elementType:oe,externalSlotProps:he,ownerState:{...N,...he?.ownerState},className:ee.valueLabel}),we=fg({elementType:ae,externalSlotProps:me,ownerState:N,className:ee.mark}),ke=fg({elementType:se,externalSlotProps:fe,ownerState:N,className:ee.markLabel}),Se=fg({elementType:le,getSlotProps:H,externalSlotProps:ge,ownerState:N});var Me;return(0,O.jsxs)(te,{...ye,children:[(0,O.jsx)(ne,{...ve}),(0,O.jsx)(re,{...be}),q.filter(e=>e.value>=x&&e.value<=b).map((t,n)=>{const r=JF(t.value,x,b),i=_[Y].offset(r);let o;return o=!1===L?X.includes(t.value):"normal"===L&&(G?t.value>=X[0]&&t.value<=X[X.length-1]:t.value<=X[0])||"inverted"===L&&(G?t.value<=X[0]||t.value>=X[X.length-1]:t.value>=X[0]),(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(ae,{"data-index":n,...we,...!sH(ae)&&{markActive:o},style:{...i,...we.style},className:Hh(we.className,o&&ee.markActive)}),null!=t.label?(0,O.jsx)(se,{"aria-hidden":!0,"data-index":n,...ke,...!sH(se)&&{markLabelActive:o},style:{...i,...ke.style},className:Hh(ee.markLabel,ke.className,o&&ee.markLabelActive),children:t.label}):null]},n)}),X.map((e,t)=>{const n=JF(e,x,b),r=_[Y].offset(n),i="off"===D?vH:oe;return(0,O.jsx)(i,{...!sH(i)&&{valueLabelFormat:$,valueLabelDisplay:D,value:"function"==typeof $?$(E(e),t):$,index:t,open:V===t||U===t||"on"===D,disabled:f},...Ie,children:(0,O.jsx)(ie,{"data-index":t,...xe,className:Hh(ee.thumb,xe.className,U===t&&ee.active,W===t&&ee.focusVisible),style:{...r,...Q(t),...xe.style},children:(0,O.jsx)(le,{"data-index":t,"aria-label":g?g(t):o,"aria-valuenow":E(e),"aria-labelledby":s,"aria-valuetext":y?y(E(e),t):a,value:X[t],...Se})})},t)})]})}),xH=bH,IH={entering:{opacity:1},entered:{opacity:1}},wH=e.forwardRef(function(t,n){const r=xm(),i={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{addEndListener:o,appear:a=!0,children:s,easing:l,in:c,onEnter:u,onEntered:d,onEntering:p,onExit:h,onExited:m,onExiting:f,style:g,timeout:y=i,TransitionComponent:v=_m,...b}=t,x=e.useRef(null),I=Vm(x,Jh(s),n),w=e=>t=>{if(e){const n=x.current;void 0===t?e(n):e(n,t)}},k=w(p),S=w((e,t)=>{Fm(e);const n=Hm({style:g,timeout:y,easing:l},{mode:"enter"});e.style.webkitTransition=r.transitions.create("opacity",n),e.style.transition=r.transitions.create("opacity",n),u&&u(e,t)}),M=w(d),C=w(f),P=w(e=>{const t=Hm({style:g,timeout:y,easing:l},{mode:"exit"});e.style.webkitTransition=r.transitions.create("opacity",t),e.style.transition=r.transitions.create("opacity",t),h&&h(e)}),E=w(m);return(0,O.jsx)(v,{appear:a,in:c,nodeRef:x,onEnter:S,onEntered:M,onEntering:k,onExit:P,onExited:E,onExiting:C,addEndListener:e=>{o&&o(x.current,e)},timeout:y,...b,children:(t,{ownerState:n,...r})=>e.cloneElement(s,{style:{opacity:0,visibility:"exited"!==t||c?void 0:"hidden",...IH[t],...g,...s.props.style},ref:I,...r})})}),kH=wH;function SH(e){return Ig("MuiBackdrop",e)}wg("MuiBackdrop",["root","invisible"]);const MH=bm("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.invisible&&t.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:!0},style:{backgroundColor:"transparent"}}]}),CH=e.forwardRef(function(e,t){const n=Mm({props:e,name:"MuiBackdrop"}),{children:r,className:i,component:o="div",invisible:a=!1,open:s,components:l={},componentsProps:c={},slotProps:u={},slots:d={},TransitionComponent:p,transitionDuration:h,...m}=n,f={...n,component:o,invisible:a},g=(e=>{const{classes:t,invisible:n}=e;return Gh({root:["root",n&&"invisible"]},SH,t)})(f),y={slots:{transition:p,root:l.Root,...d},slotProps:{...c,...u}},[v,b]=Ng("root",{elementType:MH,externalForwardedProps:y,className:Hh(g.root,i),ownerState:f}),[x,I]=Ng("transition",{elementType:kH,externalForwardedProps:y,ownerState:f});return(0,O.jsx)(x,{in:s,timeout:h,...m,...I,children:(0,O.jsx)(v,{"aria-hidden":!0,...b,classes:g,ref:t,children:r})})}),PH=CH;function EH(...e){return e.reduce((e,t)=>null==t?e:function(...n){e.apply(this,n),t.apply(this,n)},()=>{})}function TH(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function AH(e){return parseInt(oy(e).getComputedStyle(e).paddingRight,10)||0}function OH(e,t,n,r,i){const o=[t,n,...r];[].forEach.call(e.children,e=>{const t=!o.includes(e),n=!function(e){const t=["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].includes(e.tagName),n="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||n}(e);t&&n&&TH(e,i)})}function jH(e,t){let n=-1;return e.some((e,r)=>!!t(e)&&(n=r,!0)),n}const LH=()=>{},RH=new class{constructor(){this.modals=[],this.containers=[]}add(e,t){let n=this.modals.indexOf(e);if(-1!==n)return n;n=this.modals.length,this.modals.push(e),e.modalRef&&TH(e.modalRef,!1);const r=function(e){const t=[];return[].forEach.call(e.children,e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)}),t}(t);OH(t,e.mount,e.modalRef,r,!0);const i=jH(this.containers,e=>e.container===t);return-1!==i?(this.containers[i].modals.push(e),n):(this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:r}),n)}mount(e,t){const n=jH(this.containers,t=>t.modals.includes(e)),r=this.containers[n];r.restore||(r.restore=function(e,t){const n=[],r=e.container;if(!t.disableScrollLock){if(function(e){const t=Xm(e);return t.body===e?oy(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(r)){const e=ny(oy(r));n.push({value:r.style.paddingRight,property:"padding-right",el:r}),r.style.paddingRight=`${AH(r)+e}px`;const t=Xm(r).querySelectorAll(".mui-fixed");[].forEach.call(t,t=>{n.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight=`${AH(t)+e}px`})}let e;if(r.parentNode instanceof DocumentFragment)e=Xm(r).body;else{const t=r.parentElement,n=oy(r);e="HTML"===t?.nodeName&&"scroll"===n.getComputedStyle(t).overflowY?t:r}n.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{n.forEach(({value:e,el:t,property:n})=>{e?t.style.setProperty(n,e):t.style.removeProperty(n)})}}(r,t))}remove(e,t=!0){const n=this.modals.indexOf(e);if(-1===n)return n;const r=jH(this.containers,t=>t.modals.includes(e)),i=this.containers[r];if(i.modals.splice(i.modals.indexOf(e),1),this.modals.splice(n,1),0===i.modals.length)i.restore&&i.restore(),e.modalRef&&TH(e.modalRef,t),OH(i.container,e.mount,e.modalRef,i.hiddenSiblings,!1),this.containers.splice(r,1);else{const e=i.modals[i.modals.length-1];e.modalRef&&TH(e.modalRef,!1)}return n}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}};function DH(e){return Ig("MuiModal",e)}wg("MuiModal",["root","hidden","backdrop"]);const $H=bm("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.open&&n.exited&&t.hidden]}})(wm(({theme:e})=>({position:"fixed",zIndex:(e.vars||e).zIndex.modal,right:0,bottom:0,top:0,left:0,variants:[{props:({ownerState:e})=>!e.open&&e.exited,style:{visibility:"hidden"}}]}))),zH=bm(PH,{name:"MuiModal",slot:"Backdrop",overridesResolver:(e,t)=>t.backdrop})({zIndex:-1}),NH=e.forwardRef(function(t,n){const r=Mm({name:"MuiModal",props:t}),{BackdropComponent:i=zH,BackdropProps:o,classes:a,className:s,closeAfterTransition:l=!1,children:c,container:u,component:d,components:p={},componentsProps:h={},disableAutoFocus:m=!1,disableEnforceFocus:f=!1,disableEscapeKeyDown:g=!1,disablePortal:y=!1,disableRestoreFocus:v=!1,disableScrollLock:b=!1,hideBackdrop:x=!1,keepMounted:I=!1,onBackdropClick:w,onClose:k,onTransitionEnter:S,onTransitionExited:M,open:C,slotProps:P={},slots:E={},theme:T,...A}=r,j={...r,closeAfterTransition:l,disableAutoFocus:m,disableEnforceFocus:f,disableEscapeKeyDown:g,disablePortal:y,disableRestoreFocus:v,disableScrollLock:b,hideBackdrop:x,keepMounted:I},{getRootProps:L,getBackdropProps:R,getTransitionProps:D,portalRef:$,isTopModal:z,exited:N,hasTransition:_}=function(t){const{container:n,disableEscapeKeyDown:r=!1,disableScrollLock:i=!1,closeAfterTransition:o=!1,onTransitionEnter:a,onTransitionExited:s,children:l,onClose:c,open:u,rootRef:d}=t,p=e.useRef({}),h=e.useRef(null),m=e.useRef(null),f=Bm(m,d),[g,y]=e.useState(!u),v=function(e){return!!e&&e.props.hasOwnProperty("in")}(l);let b=!0;"false"!==t["aria-hidden"]&&!1!==t["aria-hidden"]||(b=!1);const x=()=>(p.current.modalRef=m.current,p.current.mount=h.current,p.current),I=()=>{RH.mount(x(),{disableScrollLock:i}),m.current&&(m.current.scrollTop=0)},w=Ag(()=>{const e=function(e){return"function"==typeof e?e():e}(n)||Xm(h.current).body;RH.add(x(),e),m.current&&I()}),k=()=>RH.isTopModal(x()),S=Ag(e=>{h.current=e,e&&(u&&k()?I():m.current&&TH(m.current,b))}),M=e.useCallback(()=>{RH.remove(x(),b)},[b]);e.useEffect(()=>()=>{M()},[M]),e.useEffect(()=>{u?w():v&&o||M()},[u,M,v,o,w]);const C=e=>t=>{e.onKeyDown?.(t),"Escape"===t.key&&229!==t.which&&k()&&(r||(t.stopPropagation(),c&&c(t,"escapeKeyDown")))},P=e=>t=>{e.onClick?.(t),t.target===t.currentTarget&&c&&c(t,"backdropClick")};return{getRootProps:(e={})=>{const n=dg(t);delete n.onTransitionEnter,delete n.onTransitionExited;const r={...n,...e};return{role:"presentation",...r,onKeyDown:C(r),ref:f}},getBackdropProps:(e={})=>{const t=e;return{"aria-hidden":!0,...t,onClick:P(t),open:u}},getTransitionProps:()=>({onEnter:EH(()=>{y(!1),a&&a()},l?.props.onEnter??LH),onExited:EH(()=>{y(!0),s&&s(),o&&M()},l?.props.onExited??LH)}),rootRef:f,portalRef:S,isTopModal:k,exited:g,hasTransition:v}}({...j,rootRef:n}),F={...j,exited:N},H=(e=>{const{open:t,exited:n,classes:r}=e;return Gh({root:["root",!t&&n&&"hidden"],backdrop:["backdrop"]},DH,r)})(F),B={};if(void 0===c.props.tabIndex&&(B.tabIndex="-1"),_){const{onEnter:e,onExited:t}=D();B.onEnter=e,B.onExited=t}const V={slots:{root:p.Root,backdrop:p.Backdrop,...E},slotProps:{...h,...P}},[U,Y]=Ng("root",{ref:n,elementType:$H,externalForwardedProps:{...V,...A,component:d},getSlotProps:L,ownerState:F,className:Hh(s,H?.root,!F.open&&F.exited&&H?.hidden)}),[W,G]=Ng("backdrop",{ref:o?.ref,elementType:i,externalForwardedProps:V,shouldForwardComponentProp:!0,additionalProps:o,getSlotProps:e=>R({...e,onClick:t=>{w&&w(t),e?.onClick&&e.onClick(t)}}),className:Hh(o?.className,H?.backdrop),ownerState:F});return I||C||_&&!N?(0,O.jsx)(yg,{ref:$,container:u,disablePortal:y,children:(0,O.jsxs)(U,{...Y,children:[!x&&i?(0,O.jsx)(W,{...G}):null,(0,O.jsx)(Yv,{disableEnforceFocus:f,disableAutoFocus:m,disableRestoreFocus:v,isEnabled:z,open:C,children:e.cloneElement(c,B)})]})}):null}),_H=NH;function FH(e){return Ig("MuiPopover",e)}function HH(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.height/2:"bottom"===t&&(n=e.height),n}function BH(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.width/2:"right"===t&&(n=e.width),n}function VH(e){return[e.horizontal,e.vertical].map(e=>"number"==typeof e?`${e}px`:e).join(" ")}function UH(e){return"function"==typeof e?e():e}wg("MuiPopover",["root","paper"]);const YH=bm(_H,{name:"MuiPopover",slot:"Root",overridesResolver:(e,t)=>t.root})({}),WH=bm(Zv,{name:"MuiPopover",slot:"Paper",overridesResolver:(e,t)=>t.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),GH=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiPopover"}),{action:i,anchorEl:o,anchorOrigin:a={vertical:"top",horizontal:"left"},anchorPosition:s,anchorReference:l="anchorEl",children:c,className:u,container:d,elevation:p=8,marginThreshold:h=16,open:m,PaperProps:f={},slots:g={},slotProps:y={},transformOrigin:v={vertical:"top",horizontal:"left"},TransitionComponent:b,transitionDuration:x="auto",TransitionProps:I={},disableScrollLock:w=!1,...k}=r,S=e.useRef(),M={...r,anchorOrigin:a,anchorReference:l,elevation:p,marginThreshold:h,transformOrigin:v,TransitionComponent:b,transitionDuration:x,TransitionProps:I},C=(e=>{const{classes:t}=e;return Gh({root:["root"],paper:["paper"]},FH,t)})(M),P=e.useCallback(()=>{if("anchorPosition"===l)return s;const e=UH(o),t=(e&&1===e.nodeType?e:Xg(S.current).body).getBoundingClientRect();return{top:t.top+HH(t,a.vertical),left:t.left+BH(t,a.horizontal)}},[o,a.horizontal,a.vertical,s,l]),E=e.useCallback(e=>({vertical:HH(e,v.vertical),horizontal:BH(e,v.horizontal)}),[v.horizontal,v.vertical]),T=e.useCallback(e=>{const t={width:e.offsetWidth,height:e.offsetHeight},n=E(t);if("none"===l)return{top:null,left:null,transformOrigin:VH(n)};const r=P();let i=r.top-n.vertical,a=r.left-n.horizontal;const s=i+t.height,c=a+t.width,u=ay(UH(o)),d=u.innerHeight-h,p=u.innerWidth-h;if(null!==h&&id){const e=s-d;i-=e,n.vertical+=e}if(null!==h&&ap){const e=c-p;a-=e,n.horizontal+=e}return{top:`${Math.round(i)}px`,left:`${Math.round(a)}px`,transformOrigin:VH(n)}},[o,l,P,E,h]),[A,j]=e.useState(m),L=e.useCallback(()=>{const e=S.current;if(!e)return;const t=T(e);null!==t.top&&e.style.setProperty("top",t.top),null!==t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,j(!0)},[T]);e.useEffect(()=>(w&&window.addEventListener("scroll",L),()=>window.removeEventListener("scroll",L)),[o,w,L]),e.useEffect(()=>{m&&L()}),e.useImperativeHandle(i,()=>m?{updatePosition:()=>{L()}}:null,[m,L]),e.useEffect(()=>{if(!m)return;const e=function(e,t=166){let n;function r(...r){clearTimeout(n),n=setTimeout(()=>{e.apply(this,r)},t)}return r.clear=()=>{clearTimeout(n)},r}(()=>{L()}),t=ay(UH(o));return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}},[o,m,L]);let R=x;const D={slots:{transition:b,...g},slotProps:{transition:I,paper:f,...y}},[$,z]=Ng("transition",{elementType:Km,externalForwardedProps:D,ownerState:M,getSlotProps:e=>({...e,onEntering:(t,n)=>{e.onEntering?.(t,n),L()},onExited:t=>{e.onExited?.(t),j(!1)}}),additionalProps:{appear:!0,in:m}});"auto"!==x||$.muiSupportAuto||(R=void 0);const N=d||(o?Xg(UH(o)).body:void 0),[_,{slots:F,slotProps:H,...B}]=Ng("root",{ref:n,elementType:YH,externalForwardedProps:{...D,...k},shouldForwardComponentProp:!0,additionalProps:{slots:{backdrop:g.backdrop},slotProps:{backdrop:c$("function"==typeof y.backdrop?y.backdrop(M):y.backdrop,{invisible:!0})},container:N,open:m},ownerState:M,className:Hh(C.root,u)}),[V,U]=Ng("paper",{ref:S,className:C.paper,elementType:WH,externalForwardedProps:D,shouldForwardComponentProp:!0,additionalProps:{elevation:p,style:A?void 0:{opacity:0}},ownerState:M});return(0,O.jsx)(_,{...B,...!sH(_)&&{slots:F,slotProps:H,disableScrollLock:w},children:(0,O.jsx)($,{...z,timeout:R,children:(0,O.jsx)(V,{...U,children:c})})})}),KH=GH;function qH(e){return Ig("MuiMenu",e)}wg("MuiMenu",["root","paper","list"]);const XH={vertical:"top",horizontal:"right"},ZH={vertical:"top",horizontal:"left"},JH=bm(KH,{shouldForwardProp:e=>ym(e)||"classes"===e,name:"MuiMenu",slot:"Root",overridesResolver:(e,t)=>t.root})({}),QH=bm(WH,{name:"MuiMenu",slot:"Paper",overridesResolver:(e,t)=>t.paper})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),eB=bm(dy,{name:"MuiMenu",slot:"List",overridesResolver:(e,t)=>t.list})({outline:0}),tB=e.forwardRef(function(t,n){const r=Mm({props:t,name:"MuiMenu"}),{autoFocus:i=!0,children:o,className:a,disableAutoFocusItem:s=!1,MenuListProps:l={},onClose:c,open:u,PaperProps:d={},PopoverClasses:p,transitionDuration:h="auto",TransitionProps:{onEntering:m,...f}={},variant:g="selectedMenu",slots:y={},slotProps:v={},...b}=r,x=qh(),I={...r,autoFocus:i,disableAutoFocusItem:s,MenuListProps:l,onEntering:m,PaperProps:d,transitionDuration:h,TransitionProps:f,variant:g},w=(e=>{const{classes:t}=e;return Gh({root:["root"],paper:["paper"],list:["list"]},qH,t)})(I),k=i&&!s&&u,S=e.useRef(null);let M=-1;e.Children.map(o,(t,n)=>{e.isValidElement(t)&&(t.props.disabled||("selectedMenu"===g&&t.props.selected||-1===M)&&(M=n))});const C={slots:y,slotProps:{list:l,transition:f,paper:d,...v}},P=fg({elementType:y.root,externalSlotProps:v.root,ownerState:I,className:[w.root,a]}),[E,T]=Ng("paper",{className:w.paper,elementType:QH,externalForwardedProps:C,shouldForwardComponentProp:!0,ownerState:I}),[A,j]=Ng("list",{className:Hh(w.list,l.className),elementType:eB,shouldForwardComponentProp:!0,externalForwardedProps:C,getSlotProps:e=>({...e,onKeyDown:t=>{(e=>{"Tab"===e.key&&(e.preventDefault(),c&&c(e,"tabKeyDown"))})(t),e.onKeyDown?.(t)}}),ownerState:I}),L="function"==typeof C.slotProps.transition?C.slotProps.transition(I):C.slotProps.transition;return(0,O.jsx)(JH,{onClose:c,anchorOrigin:{vertical:"bottom",horizontal:x?"right":"left"},transformOrigin:x?XH:ZH,slots:{root:y.root,paper:E,backdrop:y.backdrop,...y.transition&&{transition:y.transition}},slotProps:{root:P,paper:T,backdrop:"function"==typeof v.backdrop?v.backdrop(I):v.backdrop,transition:{...L,onEntering:(...e)=>{((e,t)=>{S.current&&S.current.adjustStyleForScrollbar(e,{direction:x?"rtl":"ltr"}),m&&m(e,t)})(...e),L?.onEntering?.(...e)}}},open:u,ref:n,transitionDuration:h,ownerState:I,...b,classes:p,children:(0,O.jsx)(A,{actions:S,autoFocus:i&&(-1===M||s),autoFocusItem:k,variant:g,...j,children:o})})});function nB(e){return nB="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nB(e)}var rB=["itemId","children","className","editable","ownerState"];function iB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function oB(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function cB(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return s}}(e,t)||uB(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function uB(e,t){if(e){if("string"==typeof e)return dB(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?dB(e,t):void 0}}function dB(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0){var e=new Set(L);return function(t){return e.has(me(t))}}return!1},[j,L,me]),be=(0,e.useMemo)(function(){if(K&&0!==K.length){var e=new Set(K);return function(t){return e.has(t)}}},[K]),xe=(0,e.useRef)(te||{});xe.current=te||xe.current||{};var Ie=(0,e.useCallback)(function(e,t,n){var r=oB(oB({},xe.current),{},aB({},e,t));xe.current=r,de&&(de({sliderValues:r}),n&&de({sliderChange:{itemId:e,value:t,event_timestamp:Date.now()}}))},[de]),we=(0,e.useCallback)(function(e,t){de&&de({kebabAction:{itemId:e,action:t,event_timestamp:Date.now()}})},[de]),ke=(0,e.useMemo)(function(){return ee&&0!==ee.length?new Set(ee):null},[ee]),Se=(0,e.useMemo)(function(){return function(e){if(e&&"string"==typeof e){var t=e.match(gB);if(t){var n=t[1],r=null!=t[3]?t[3]:"6";return"var(--mantine-color-".concat(n,"-").concat(r,")")}return e}}(le)},[le]),Me=(0,e.useMemo)(function(){return{controlsItemSet:ke,sliderValues:te||{},sliderMin:re,sliderMax:oe,sliderStep:se,sliderColor:Se,onSliderChange:Ie,kebabMenuItems:ce||[],kebabMenuItemsById:ue||null,onKebabAction:we}},[ke,te,re,oe,se,Se,ce,ue,Ie,we]),Ce=(0,e.useMemo)(function(){var e={};return H&&(e.collapseIcon=n_(H)),B&&(e.expandIcon=n_(B)),V&&(e.endIcon=n_(V)),Q&&(e.item=wB),Object.keys(e).length>0?e:void 0},[H,B,V,Q]),Pe=(0,e.useCallback)(function(e,t){de&&de({selectedItems:t})},[de]),Ee=(0,e.useCallback)(function(e,t){if(de&&de({expandedItems:t}),X&&de&&t){var n,r=h||"id",i=y||"children",o=function(e,t){if(!e)return null;var n,a=lB(e);try{for(a.s();!(n=a.n()).done;){var s=n.value;if(s[r]===t)return s;var l=o(s[i],t);if(l)return l}}catch(e){a.e(e)}finally{a.f()}return null},a=lB(t);try{for(a.s();!(n=a.n()).done;){var s=n.value,l=o(he,s);if(l&&!l[i]){de({lazyLoadRequest:{itemId:s,event_timestamp:Date.now()}});break}}}catch(e){a.e(e)}finally{a.f()}}},[de,X,he,h,y]),Te=(0,e.useCallback)(function(e,t){de&&de({clickedItem:{itemId:t,event_timestamp:Date.now()}})},[de]),Ae=(0,e.useCallback)(function(e,t){de&&de({focusedItem:{itemId:t,event_timestamp:Date.now()}})},[de]),Oe=(0,e.useCallback)(function(e,t){de&&de({editedItemLabel:{itemId:e,newLabel:t,event_timestamp:Date.now()}})},[de]),je=(0,e.useRef)(c||[]);(0,e.useEffect)(function(){je.current=c||[]},[c]);var Le=(0,e.useCallback)(function(e){var t=function(e,t,n,r){if(!e||!t||!t.itemId)return e;var i=n||"id",o=r||"children",a=JSON.parse(JSON.stringify(e)),s=null,l=function(e,n){if(null==n){var r=e.findIndex(function(e){return e[i]===t.itemId});return r>=0&&(s=e.splice(r,1)[0]),null!=s}var a,c=lB(e);try{for(c.s();!(a=c.n()).done;){var u=a.value;if(u[i]===n){var d=u[o]||[],p=d.findIndex(function(e){return e[i]===t.itemId});return p>=0&&(s=d.splice(p,1)[0]),null!=s}if(u[o]&&l(u[o],n))return!0}}catch(e){c.e(e)}finally{c.f()}return!1},c=function(e,t,n){if(null==t)return e.splice(n,0,s),!0;var r,a=lB(e);try{for(a.s();!(r=a.n()).done;){var l=r.value;if(l[i]===t)return l[o]||(l[o]=[]),l[o].splice(n,0,s),!0;if(l[o]&&c(l[o],t,n))return!0}}catch(e){a.e(e)}finally{a.f()}return!1};return l(a,t.oldPosition?t.oldPosition.parentId:null),s&&c(a,t.newPosition?t.newPosition.parentId:null,t.newPosition?t.newPosition.index:0),a}(je.current,e,h,y);je.current=t,de&&de({itemPositionChanged:{itemId:e.itemId,oldPosition:e.oldPosition,newPosition:e.newPosition,event_timestamp:Date.now()},orderedItems:t})},[de,h,y]),Re=(0,e.useMemo)(function(){var e={};return _&&(e.height="number"==typeof _?"".concat(_,"px"):_),e},[_]);return n().createElement(WF,{theme:pe},n().createElement("div",{id:a,style:Re},n().createElement(yB.Provider,{value:Me},n().createElement(vF,{items:he||[],getItemId:me,getItemLabel:fe,getItemChildren:ge,selectedItems:v,defaultSelectedItems:b,multiSelect:I,checkboxSelection:k,disableSelection:M,selectionPropagation:C,expandedItems:P,defaultExpandedItems:E,expansionTrigger:A,isItemEditable:ve,isItemDisabled:ye,disabledItemsFocusable:$,itemChildrenIndentation:N,sx:F,slots:Ce,itemsReordering:G,isItemReorderable:be,onItemPositionChange:Le,onSelectedItemsChange:Pe,onExpandedItemsChange:Ee,onItemClick:Te,onItemFocus:Ae,onItemLabelChange:Oe,"aria-label":U,"aria-labelledby":Y}))))};kB.propTypes={id:i().string,licenseKey:i().string,items:i().arrayOf(i().object),getItemId:i().string,getItemLabel:i().string,getItemChildren:i().string,selectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),defaultSelectedItems:i().oneOfType([i().string,i().arrayOf(i().string)]),multiSelect:i().bool,checkboxSelection:i().bool,disableSelection:i().bool,selectionPropagation:i().exact({parents:i().bool,descendants:i().bool}),expandedItems:i().arrayOf(i().string),defaultExpandedItems:i().arrayOf(i().string),expansionTrigger:i().oneOf(["content","iconContainer"]),isItemEditable:i().bool,editableItems:i().arrayOf(i().string),disabledItems:i().arrayOf(i().string),disabledItemsFocusable:i().bool,itemChildrenIndentation:i().oneOfType([i().number,i().string]),height:i().oneOfType([i().number,i().string]),sx:i().object,collapseIcon:i().string,expandIcon:i().string,endIcon:i().string,ariaLabel:i().string,ariaLabelledBy:i().string,itemsReordering:i().bool,reorderableItems:i().arrayOf(i().string),itemPositionChanged:i().object,orderedItems:i().arrayOf(i().object),lazyLoading:i().bool,lazyLoadedChildren:i().object,lazyLoadRequest:i().exact({itemId:i().string,event_timestamp:i().number}),showItemControls:i().bool,controlsItems:i().arrayOf(i().string),sliderValues:i().object,sliderMin:i().number,sliderMax:i().number,sliderStep:i().number,sliderColor:i().string,kebabMenuItems:i().arrayOf(i().shape({label:i().string,value:i().string,icon:i().string,divider:i().bool,children:i().array})),kebabMenuItemsById:i().objectOf(i().array),sliderChange:i().exact({itemId:i().string,value:i().number,event_timestamp:i().number}),kebabAction:i().exact({itemId:i().string,action:i().string,event_timestamp:i().number}),clickedItem:i().exact({itemId:i().string,event_timestamp:i().number}),focusedItem:i().exact({itemId:i().string,event_timestamp:i().number}),editedItemLabel:i().exact({itemId:i().string,newLabel:i().string,event_timestamp:i().number}),setProps:i().func};const SB=kB;var MB=a(4353),CB=a.n(MB);const PB=["localeText"],EB=e.createContext(null),TB=function(t){const{localeText:n}=t,r=tt(t,PB),{adapter:i,localeText:o}=e.useContext(EB)??{utils:void 0,adapter:void 0,localeText:void 0},a=Lh({props:r,name:"MuiLocalizationProvider"}),{children:s,dateAdapter:c,dateFormats:u,dateLibInstance:d,adapterLocale:p,localeText:h}=a,m=e.useMemo(()=>l({},h,o,n),[h,o,n]),f=e.useMemo(()=>{if(!c)return i||null;const e=new c({locale:p,formats:u,instance:d});if(!e.isMUIAdapter)throw new Error(["MUI X: The date adapter should be imported from `@mui/x-date-pickers` or `@mui/x-date-pickers-pro`, not from `@date-io`","For example, `import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'` instead of `import AdapterDayjs from '@date-io/dayjs'`","More information on the installation documentation: https://mui.com/x/react-date-pickers/quickstart/#installation"].join("\n"));return e},[c,p,u,d,i]),g=e.useMemo(()=>f?{minDate:f.date("1900-01-01T00:00:00.000"),maxDate:f.date("2099-12-31T00:00:00.000")}:null,[f]),y=e.useMemo(()=>({utils:f,adapter:f,defaultDates:g,localeText:m}),[g,f,m]);return(0,O.jsx)(EB.Provider,{value:y,children:s})};var AB=a(8134),OB=a(445),jB=a(5750),LB=a(7872),RB=a(7375);MB.extend(jB),MB.extend(AB),MB.extend(LB),MB.extend(RB);const DB={YY:"year",YYYY:{sectionType:"year",contentType:"digit",maxLength:4},M:{sectionType:"month",contentType:"digit",maxLength:2},MM:"month",MMM:{sectionType:"month",contentType:"letter"},MMMM:{sectionType:"month",contentType:"letter"},D:{sectionType:"day",contentType:"digit",maxLength:2},DD:"day",Do:{sectionType:"day",contentType:"digit-with-letter"},d:{sectionType:"weekDay",contentType:"digit",maxLength:2},dd:{sectionType:"weekDay",contentType:"letter"},ddd:{sectionType:"weekDay",contentType:"letter"},dddd:{sectionType:"weekDay",contentType:"letter"},A:"meridiem",a:"meridiem",H:{sectionType:"hours",contentType:"digit",maxLength:2},HH:"hours",h:{sectionType:"hours",contentType:"digit",maxLength:2},hh:"hours",m:{sectionType:"minutes",contentType:"digit",maxLength:2},mm:"minutes",s:{sectionType:"seconds",contentType:"digit",maxLength:2},ss:"seconds"},$B={year:"YYYY",month:"MMMM",monthShort:"MMM",dayOfMonth:"D",dayOfMonthFull:"Do",weekday:"dddd",weekdayShort:"dd",hours24h:"HH",hours12h:"hh",meridiem:"A",minutes:"mm",seconds:"ss",fullDate:"ll",keyboardDate:"L",shortDate:"MMM D",normalDate:"D MMMM",normalDateWithWeekday:"ddd, MMM D",fullTime12h:"hh:mm A",fullTime24h:"HH:mm",keyboardDateTime12h:"L hh:mm A",keyboardDateTime24h:"L HH:mm"},zB=["Missing UTC plugin","To be able to use UTC or timezones, you have to enable the `utc` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc"].join("\n"),NB=["Missing timezone plugin","To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone"].join("\n");class _B{isMUIAdapter=!0;isTimezoneCompatible=!0;lib="dayjs";escapedCharacters={start:"[",end:"]"};formatTokenMap=(()=>DB)();constructor({locale:e,formats:t}={}){this.locale=e,this.formats=l({},$B,t),MB.extend(OB)}setLocaleToValue=e=>{const t=this.getCurrentLocaleCode();return t===e.locale()?e:e.locale(t)};hasUTCPlugin=()=>void 0!==MB.utc;hasTimezonePlugin=()=>void 0!==MB.tz;isSame=(e,t,n)=>{const r=this.setTimezone(t,this.getTimezone(e));return e.format(n)===r.format(n)};cleanTimezone=e=>{switch(e){case"default":return;case"system":return MB.tz.guess();default:return e}};createSystemDate=e=>{let t;if(this.hasUTCPlugin()&&this.hasTimezonePlugin()){const n=MB.tz.guess();t="UTC"===n?MB(e):MB.tz(e,n)}else t=MB(e);return this.setLocaleToValue(t)};createUTCDate=e=>{if(!this.hasUTCPlugin())throw new Error(zB);return this.setLocaleToValue(MB.utc(e))};createTZDate=(e,t)=>{if(!this.hasUTCPlugin())throw new Error(zB);if(!this.hasTimezonePlugin())throw new Error(NB);const n=void 0!==e&&!e.endsWith("Z");return this.setLocaleToValue(MB(e).tz(this.cleanTimezone(t),n))};getLocaleFormats=()=>{const e=MB.Ls;let t=e[this.locale||"en"];return void 0===t&&(t=e.en),t.formats};adjustOffset=e=>{if(!this.hasTimezonePlugin())return e;const t=this.getTimezone(e);if("UTC"!==t){const n=e.tz(this.cleanTimezone(t),!0);if(n.$offset===(e.$offset??0))return e;e.$offset=n.$offset}return e};date=(e,t="default")=>null===e?null:"UTC"===t?this.createUTCDate(e):"system"===t||"default"===t&&!this.hasTimezonePlugin()?this.createSystemDate(e):this.createTZDate(e,t);getInvalidDate=()=>MB(new Date("Invalid date"));getTimezone=e=>{if(this.hasTimezonePlugin()){const t=e.$x?.$timezone;if(t)return t}return this.hasUTCPlugin()&&e.isUTC()?"UTC":"system"};setTimezone=(e,t)=>{if(this.getTimezone(e)===t)return e;if("UTC"===t){if(!this.hasUTCPlugin())throw new Error(zB);return e.utc()}if("system"===t)return e.local();if(!this.hasTimezonePlugin()){if("default"===t)return e;throw new Error(NB)}return this.setLocaleToValue(MB.tz(e,this.cleanTimezone(t)))};toJsDate=e=>e.toDate();parse=(e,t)=>""===e?null:MB(e,t,this.locale,!0);getCurrentLocaleCode=()=>this.locale||"en";is12HourCycleInCurrentLocale=()=>/A|a/.test(this.getLocaleFormats().LT||"");expandFormat=e=>{const t=this.getLocaleFormats();return e.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(e,n,r)=>{const i=r&&r.toUpperCase();return n||t[r]||t[i].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(e,t,n)=>t||n.slice(1))})};isValid=e=>null!=e&&e.isValid();format=(e,t)=>this.formatByString(e,this.formats[t]);formatByString=(e,t)=>this.setLocaleToValue(e).format(t);formatNumber=e=>e;isEqual=(e,t)=>null===e&&null===t||null!==e&&null!==t&&e.toDate().getTime()===t.toDate().getTime();isSameYear=(e,t)=>this.isSame(e,t,"YYYY");isSameMonth=(e,t)=>this.isSame(e,t,"YYYY-MM");isSameDay=(e,t)=>this.isSame(e,t,"YYYY-MM-DD");isSameHour=(e,t)=>e.isSame(t,"hour");isAfter=(e,t)=>e>t;isAfterYear=(e,t)=>this.hasUTCPlugin()?!this.isSameYear(e,t)&&e.utc()>t.utc():e.isAfter(t,"year");isAfterDay=(e,t)=>this.hasUTCPlugin()?!this.isSameDay(e,t)&&e.utc()>t.utc():e.isAfter(t,"day");isBefore=(e,t)=>ethis.hasUTCPlugin()?!this.isSameYear(e,t)&&e.utc()this.hasUTCPlugin()?!this.isSameDay(e,t)&&e.utc()e>=t&&e<=n;startOfYear=e=>this.adjustOffset(e.startOf("year"));startOfMonth=e=>this.adjustOffset(e.startOf("month"));startOfWeek=e=>this.adjustOffset(this.setLocaleToValue(e).startOf("week"));startOfDay=e=>this.adjustOffset(e.startOf("day"));endOfYear=e=>this.adjustOffset(e.endOf("year"));endOfMonth=e=>this.adjustOffset(e.endOf("month"));endOfWeek=e=>this.adjustOffset(this.setLocaleToValue(e).endOf("week"));endOfDay=e=>this.adjustOffset(e.endOf("day"));addYears=(e,t)=>this.adjustOffset(e.add(t,"year"));addMonths=(e,t)=>this.adjustOffset(e.add(t,"month"));addWeeks=(e,t)=>this.adjustOffset(e.add(t,"week"));addDays=(e,t)=>this.adjustOffset(e.add(t,"day"));addHours=(e,t)=>this.adjustOffset(e.add(t,"hour"));addMinutes=(e,t)=>this.adjustOffset(e.add(t,"minute"));addSeconds=(e,t)=>this.adjustOffset(e.add(t,"second"));getYear=e=>e.year();getMonth=e=>e.month();getDate=e=>e.date();getHours=e=>e.hour();getMinutes=e=>e.minute();getSeconds=e=>e.second();getMilliseconds=e=>e.millisecond();setYear=(e,t)=>this.adjustOffset(e.set("year",t));setMonth=(e,t)=>this.adjustOffset(e.set("month",t));setDate=(e,t)=>this.adjustOffset(e.set("date",t));setHours=(e,t)=>this.adjustOffset(e.set("hour",t));setMinutes=(e,t)=>this.adjustOffset(e.set("minute",t));setSeconds=(e,t)=>this.adjustOffset(e.set("second",t));setMilliseconds=(e,t)=>this.adjustOffset(e.set("millisecond",t));getDaysInMonth=e=>e.daysInMonth();getWeekArray=e=>{const t=this.startOfWeek(this.startOfMonth(e)),n=this.endOfWeek(this.endOfMonth(e));let r=0,i=t;const o=[];for(;ie.week();getDayOfWeek(e){return e.day()+1}getYearRange=([e,t])=>{const n=this.startOfYear(e),r=this.endOfYear(t),i=[];let o=n;for(;this.isBefore(o,r);)i.push(o),o=this.addYears(o,1);return i}}function FB(e,t,n=void 0){const r={};for(const i in e){const o=e[i];let a="",s=!0;for(let e=0;e"year"===e?"year view is open, switch to calendar view":"calendar view is open, switch to year view",start:"Start",end:"End",startDate:"Start date",startTime:"Start time",endDate:"End date",endTime:"End time",cancelButtonLabel:"Cancel",clearButtonLabel:"Clear",okButtonLabel:"OK",todayButtonLabel:"Today",nextStepButtonLabel:"Next",datePickerToolbarTitle:"Select date",dateTimePickerToolbarTitle:"Select date & time",timePickerToolbarTitle:"Select time",dateRangePickerToolbarTitle:"Select date range",timeRangePickerToolbarTitle:"Select time range",clockLabelText:(e,t)=>`Select ${e}. ${t?`Selected time is ${t}`:"No time selected"}`,hoursClockNumberText:e=>`${e} hours`,minutesClockNumberText:e=>`${e} minutes`,secondsClockNumberText:e=>`${e} seconds`,selectViewText:e=>`Select ${e}`,calendarWeekNumberHeaderLabel:"Week number",calendarWeekNumberHeaderText:"#",calendarWeekNumberAriaLabelText:e=>`Week ${e}`,calendarWeekNumberText:e=>`${e}`,openDatePickerDialogue:e=>e?`Choose date, selected date is ${e}`:"Choose date",openTimePickerDialogue:e=>e?`Choose time, selected time is ${e}`:"Choose time",openRangePickerDialogue:e=>e?`Choose range, selected range is ${e}`:"Choose range",fieldClearLabel:"Clear",timeTableLabel:"pick time",dateTableLabel:"pick date",fieldYearPlaceholder:e=>"Y".repeat(e.digitAmount),fieldMonthPlaceholder:e=>"letter"===e.contentType?"MMMM":"MM",fieldDayPlaceholder:()=>"DD",fieldWeekDayPlaceholder:e=>"letter"===e.contentType?"EEEE":"EE",fieldHoursPlaceholder:()=>"hh",fieldMinutesPlaceholder:()=>"mm",fieldSecondsPlaceholder:()=>"ss",fieldMeridiemPlaceholder:()=>"aa",year:"Year",month:"Month",day:"Day",weekDay:"Week day",hours:"Hours",minutes:"Minutes",seconds:"Seconds",meridiem:"Meridiem",empty:"Empty"},UB=VB;l({},VB);const YB=()=>{const t=e.useContext(EB);if(null===t)throw new Error(["MUI X: Can not find the date and time pickers localization context.","It looks like you forgot to wrap your component in LocalizationProvider.","This can also happen if you are bundling multiple versions of the `@mui/x-date-pickers` package"].join("\n"));if(null===t.adapter)throw new Error(["MUI X: Can not find the date and time pickers adapter from its localization context.","It looks like you forgot to pass a `dateAdapter` to your LocalizationProvider."].join("\n"));const n=e.useMemo(()=>l({},UB,t.localeText),[t.localeText]);return e.useMemo(()=>l({},t,{localeText:n}),[t,n])},WB=()=>YB().adapter,GB=()=>YB().localeText,KB=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},qB=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=Hh(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},a={...n,...i,...r};return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n}({...i,...r}),s=KB(r),l=KB(i),c=t(a),u=Hh(c?.className,n?.className,o,i?.className,r?.className),d={...c?.style,...n?.style,...i?.style,...r?.style},p={...c,...n,...l,...s};return u.length>0&&(p.className=u),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:c.ref}},XB=function(t){const{elementType:n,externalSlotProps:r,ownerState:i,skipResolvingSlotProps:o=!1,...a}=t,s=o?{}:function(e,t,n){return"function"==typeof e?e(t,n):e}(r,i),{props:l,internalRef:c}=qB({...a,externalSlotProps:s}),u=function(...t){const n=e.useRef(void 0),r=e.useCallback(e=>{const n=t.map(t=>{if(null==t)return null;if("function"==typeof t){const n=t,r=n(e);return"function"==typeof r?r:()=>{n(null)}}return t.current=e,()=>{t.current=null}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=r(e))},t)}(c,s?.ref,t.additionalProps?.ref);return function(e,t,n){return void 0===e||"string"==typeof e?t:{...t,ownerState:{...t.ownerState,...n}}}(n,{...l,ref:u},i)},ZB=(ob((0,O.jsx)("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown"),ob((0,O.jsx)("path",{d:"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"}),"ArrowLeft")),JB=ob((0,O.jsx)("path",{d:"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"}),"ArrowRight"),QB=(ob((0,O.jsx)("path",{d:"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z"}),"Calendar"),ob((0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("path",{d:"M11.99 2C6.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"}),(0,O.jsx)("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})]}),"Clock"),ob((0,O.jsx)("path",{d:"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z"}),"DateRange"),ob((0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)("path",{d:"M11.99 2C6.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"}),(0,O.jsx)("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})]}),"Time"),ob((0,O.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"}),"Clear"),e=>e),eV=(()=>{let e=QB;return{configure(t){e=t},generate:t=>e(t),reset(){e=QB}}})(),tV={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 nV(e,t,n="Mui"){const r=tV[t];return r?`${n}-${r}`:`${eV.generate(e)}-${t}`}function rV(e,t,n="Mui"){const r={};return t.forEach(t=>{r[t]=nV(e,t,n)}),r}function iV(e){return nV("MuiPickersArrowSwitcher",e)}rV("MuiPickersArrowSwitcher",["root","spacer","button","previousIconButton","nextIconButton","leftArrowIcon","rightArrowIcon"]);const oV=e.createContext({ownerState:{isPickerDisabled:!1,isPickerReadOnly:!1,isPickerValueEmpty:!1,isPickerOpen:!1,pickerVariant:"desktop",pickerOrientation:"portrait"},rootRefObject:{current:null},labelId:void 0,dismissViews:()=>{},hasUIView:!0,getCurrentViewMode:()=>"UI",triggerElement:null,viewContainerRole:null,defaultActionBarActions:[],onPopperExited:void 0}),aV=()=>e.useContext(oV),sV=["children","className","slots","slotProps","isNextDisabled","isNextHidden","onGoToNext","nextLabel","isPreviousDisabled","isPreviousHidden","onGoToPrevious","previousLabel","labelId","classes"],lV=["ownerState"],cV=["ownerState"],uV=bm("div",{name:"MuiPickersArrowSwitcher",slot:"Root"})({display:"flex"}),dV=bm("div",{name:"MuiPickersArrowSwitcher",slot:"Spacer"})(({theme:e})=>({width:e.spacing(3)})),pV=bm(sv,{name:"MuiPickersArrowSwitcher",slot:"Button"})({variants:[{props:{isButtonHidden:!0},style:{visibility:"hidden"}}]}),hV=e.forwardRef(function(e,t){const n=fS(),r=Lh({props:e,name:"MuiPickersArrowSwitcher"}),{children:i,className:o,slots:a,slotProps:s,isNextDisabled:c,isNextHidden:u,onGoToNext:d,nextLabel:p,isPreviousDisabled:h,isPreviousHidden:m,onGoToPrevious:f,previousLabel:g,labelId:y,classes:v}=r,b=tt(r,sV),{ownerState:x}=aV(),I=(e=>FB({root:["root"],spacer:["spacer"],button:["button"],previousIconButton:["previousIconButton"],nextIconButton:["nextIconButton"],leftArrowIcon:["leftArrowIcon"],rightArrowIcon:["rightArrowIcon"]},iV,e))(v),w={isDisabled:c,isHidden:u,goTo:d,label:p},k={isDisabled:h,isHidden:m,goTo:f,label:g},S=a?.previousIconButton??pV,M=XB({elementType:S,externalSlotProps:s?.previousIconButton,additionalProps:{size:"medium",title:k.label,"aria-label":k.label,disabled:k.isDisabled,edge:"end",onClick:k.goTo},ownerState:l({},x,{isButtonHidden:k.isHidden??!1}),className:Hh(I.button,I.previousIconButton)}),C=a?.nextIconButton??pV,P=XB({elementType:C,externalSlotProps:s?.nextIconButton,additionalProps:{size:"medium",title:w.label,"aria-label":w.label,disabled:w.isDisabled,edge:"start",onClick:w.goTo},ownerState:l({},x,{isButtonHidden:w.isHidden??!1}),className:Hh(I.button,I.nextIconButton)}),E=a?.leftArrowIcon??ZB,T=tt(XB({elementType:E,externalSlotProps:s?.leftArrowIcon,additionalProps:{fontSize:"inherit"},ownerState:x,className:I.leftArrowIcon}),lV),A=a?.rightArrowIcon??JB,j=tt(XB({elementType:A,externalSlotProps:s?.rightArrowIcon,additionalProps:{fontSize:"inherit"},ownerState:x,className:I.rightArrowIcon}),cV);return(0,O.jsxs)(uV,l({ref:t,className:Hh(I.root,o),ownerState:x},b,{children:[(0,O.jsx)(S,l({},M,{children:n?(0,O.jsx)(A,l({},j)):(0,O.jsx)(E,l({},T))})),i?(0,O.jsx)(Nv,{variant:"subtitle1",component:"span",id:y,children:i}):(0,O.jsx)(dV,{className:I.spacer,ownerState:x}),(0,O.jsx)(C,l({},P,{children:n?(0,O.jsx)(E,l({},T)):(0,O.jsx)(A,l({},j))}))]}))}),mV=(e,t,n)=>n&&(e>=12?"pm":"am")!==t?"am"===t?e-12:e+12:e,fV=(e,t)=>3600*t.getHours(e)+60*t.getMinutes(e)+t.getSeconds(e),gV=(e,t)=>(n,r)=>e?t.isAfter(n,r):fV(n,t)>fV(r,t),yV="undefined"!=typeof window?e.useLayoutEffect:e.useEffect,vV=function(t){const n=e.useRef(t);return yV(()=>{n.current=t}),e.useRef((...e)=>(0,n.current)(...e)).current};function bV(t){const{controlled:n,default:r,name:i,state:o="value"}=t,{current:a}=e.useRef(void 0!==n),[s,l]=e.useState(r);return[a?n:s,e.useCallback(e=>{a||l(e)},[])]}const xV={hasNextStep:!1,hasSeveralSteps:!1,goToNextStep:()=>{},areViewsInSameStep:()=>!0};const IV=bm("div",{slot:"internal",shouldForwardProp:void 0})({overflow:"hidden",width:320,maxHeight:336,display:"flex",flexDirection:"column",margin:"0 auto"});function wV(e){return nV("MuiTimeClock",e)}rV("MuiTimeClock",["root","arrowSwitcher"]);const kV=110,SV=110,MV=kV-kV,CV=0-SV,PV=(e,t,n)=>{const r=t-kV,i=n-SV;let o=(Math.atan2(MV,CV)-Math.atan2(r,i))*(180/Math.PI);o=Math.round(o/e)*e,o%=360;const a=r**2+i**2;return{value:Math.floor(o/e)||0,distance:Math.sqrt(a)}};function EV(e){return nV("MuiClockPointer",e)}rV("MuiClockPointer",["root","thumb"]);const TV=["className","classes","isBetweenTwoClockValues","isInner","type","viewValue"],AV=bm("div",{name:"MuiClockPointer",slot:"Root"})(({theme:e})=>({width:2,backgroundColor:(e.vars||e).palette.primary.main,position:"absolute",left:"calc(50% - 1px)",bottom:"50%",transformOrigin:"center bottom 0px",variants:[{props:{isClockPointerAnimated:!0},style:{transition:e.transitions.create(["transform","height"])}}]})),OV=bm("div",{name:"MuiClockPointer",slot:"Thumb"})(({theme:e})=>({width:4,height:4,backgroundColor:(e.vars||e).palette.primary.contrastText,borderRadius:"50%",position:"absolute",top:-21,left:"calc(50% - 18px)",border:`16px solid ${(e.vars||e).palette.primary.main}`,boxSizing:"content-box",variants:[{props:{isClockPointerBetweenTwoValues:!1},style:{backgroundColor:(e.vars||e).palette.primary.main}}]}));function jV(t){const n=Lh({props:t,name:"MuiClockPointer"}),{className:r,classes:i,isBetweenTwoClockValues:o,isInner:a,type:s,viewValue:c}=n,u=tt(n,TV),d=e.useRef(s);e.useEffect(()=>{d.current=s},[s]);const{ownerState:p}=aV(),h=l({},p,{isClockPointerAnimated:d.current!==s,isClockPointerBetweenTwoValues:o}),m=(e=>FB({root:["root"],thumb:["thumb"]},EV,e))(i);return(0,O.jsx)(AV,l({style:(()=>{let e=360/("hours"===s?12:60)*c;return"hours"===s&&c>12&&(e-=360),{height:Math.round(220*(a?.26:.4)),transform:`rotateZ(${e}deg)`}})(),className:Hh(m.root,r),ownerState:h},u,{children:(0,O.jsx)(OV,{ownerState:h,className:m.thumb})}))}function LV(e){return nV("MuiClock",e)}rV("MuiClock",["root","clock","wrapper","squareMask","pin","amButton","pmButton","meridiemText","selected"]);const RV=(e,t,n)=>{let r=t;return r=e.setHours(r,e.getHours(n)),r=e.setMinutes(r,e.getMinutes(n)),r=e.setSeconds(r,e.getSeconds(n)),r=e.setMilliseconds(r,e.getMilliseconds(n)),r},DV=(e,t,n)=>"date"===n?e.startOfDay(e.date(void 0,t)):e.date(void 0,t),$V=(e,t)=>{const n=e.setHours(e.date(),"am"===t?2:14);return e.format(n,"meridiem")},zV=bm("div",{name:"MuiClock",slot:"Root"})(({theme:e})=>({display:"flex",justifyContent:"center",alignItems:"center",margin:e.spacing(2)})),NV=bm("div",{name:"MuiClock",slot:"Clock"})({backgroundColor:"rgba(0,0,0,.07)",borderRadius:"50%",height:220,width:220,flexShrink:0,position:"relative",pointerEvents:"none"}),_V=bm("div",{name:"MuiClock",slot:"Wrapper"})({"&:focus":{outline:"none"}}),FV=bm("div",{name:"MuiClock",slot:"SquareMask"})({width:"100%",height:"100%",position:"absolute",pointerEvents:"auto",outline:0,touchAction:"none",userSelect:"none",variants:[{props:{isClockDisabled:!1},style:{"@media (pointer: fine)":{cursor:"pointer",borderRadius:"50%"},"&:active":{cursor:"move"}}}]}),HV=bm("div",{name:"MuiClock",slot:"Pin"})(({theme:e})=>({width:6,height:6,borderRadius:"50%",backgroundColor:(e.vars||e).palette.primary.main,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)"})),BV=(e,t)=>({zIndex:1,bottom:8,paddingLeft:4,paddingRight:4,width:36,variants:[{props:{clockMeridiemMode:t},style:{backgroundColor:(e.vars||e).palette.primary.main,color:(e.vars||e).palette.primary.contrastText,"&:hover":{backgroundColor:(e.vars||e).palette.primary.light}}}]}),VV=bm(sv,{name:"MuiClock",slot:"AmButton"})(({theme:e})=>l({},BV(e,"am"),{position:"absolute",left:8})),UV=bm(sv,{name:"MuiClock",slot:"PmButton"})(({theme:e})=>l({},BV(e,"pm"),{position:"absolute",right:8})),YV=bm(Nv,{name:"MuiClock",slot:"MeridiemText"})({overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"});function WV(t){const n=Lh({props:t,name:"MuiClock"}),{ampm:r,ampmInClock:i,autoFocus:o,children:a,value:s,handleMeridiemChange:c,isTimeDisabled:u,meridiemMode:d,minutesStep:p=1,onChange:h,selectedId:m,type:f,viewValue:g,viewRange:[y,v],disabled:b=!1,readOnly:x,className:I,classes:w}=n,k=WB(),S=GB(),{ownerState:M}=aV(),C=l({},M,{isClockDisabled:b,clockMeridiemMode:d}),P=e.useRef(!1),E=((e,t)=>FB({root:["root"],clock:["clock"],wrapper:["wrapper"],squareMask:["squareMask"],pin:["pin"],amButton:["amButton","am"===t.clockMeridiemMode&&"selected"],pmButton:["pmButton","pm"===t.clockMeridiemMode&&"selected"],meridiemText:["meridiemText"]},LV,e))(w,C),T=u(g,f),A=!r&&"hours"===f&&(g<1||g>12),j=(e,t)=>{b||x||u(e,f)||h(e,t)},L=(e,t)=>{let{offsetX:n,offsetY:i}=e;if(void 0===n){const t=e.target.getBoundingClientRect();n=e.changedTouches[0].clientX-t.left,i=e.changedTouches[0].clientY-t.top}const o="seconds"===f||"minutes"===f?((e,t,n=1)=>{const r=6*n;let{value:i}=PV(r,e,t);return i=i*n%60,i})(n,i,p):((e,t,n)=>{const{value:r,distance:i}=PV(30,e,t);let o=r||12;return n?o%=12:i<74&&(o+=12,o%=24),o})(n,i,Boolean(r));j(o,t)},R=e=>{P.current=!0,L(e,"shallow")},D="hours"!==f&&g%5!=0,$="minutes"===f?p:1,z=e.useRef(null);yV(()=>{o&&z.current.focus()},[o]);const N=e=>Math.max(y,Math.min(v,e)),_=e=>(e+(v+1))%(v+1);return(0,O.jsxs)(zV,{className:Hh(E.root,I),children:[(0,O.jsxs)(NV,{className:E.clock,children:[(0,O.jsx)(FV,{onTouchMove:R,onTouchStart:R,onTouchEnd:e=>{P.current&&(L(e,"finish"),P.current=!1),e.preventDefault()},onMouseUp:e=>{P.current&&(P.current=!1),L(e.nativeEvent,"finish")},onMouseMove:e=>{e.buttons>0&&L(e.nativeEvent,"shallow")},ownerState:C,className:E.squareMask}),!T&&(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(HV,{className:E.pin}),null!=s&&(0,O.jsx)(jV,{type:f,viewValue:g,isInner:A,isBetweenTwoClockValues:D})]}),(0,O.jsx)(_V,{"aria-activedescendant":m,"aria-label":S.clockLabelText(f,null==s?null:k.format(s,r?"fullTime12h":"fullTime24h")),ref:z,role:"listbox",onKeyDown:e=>{if(!P.current)switch(e.key){case"Home":j(y,"partial"),e.preventDefault();break;case"End":j(v,"partial"),e.preventDefault();break;case"ArrowUp":j(_(g+$),"partial"),e.preventDefault();break;case"ArrowDown":j(_(g-$),"partial"),e.preventDefault();break;case"PageUp":j(N(g+5),"partial"),e.preventDefault();break;case"PageDown":j(N(g-5),"partial"),e.preventDefault();break;case"Enter":case" ":j(g,"finish"),e.preventDefault()}},tabIndex:0,className:E.wrapper,children:a})]}),r&&i&&(0,O.jsxs)(e.Fragment,{children:[(0,O.jsx)(VV,{onClick:x?void 0:()=>c("am"),disabled:b||null===d,ownerState:C,className:E.amButton,title:$V(k,"am"),children:(0,O.jsx)(YV,{variant:"caption",className:E.meridiemText,children:$V(k,"am")})}),(0,O.jsx)(UV,{disabled:b||null===d,onClick:x?void 0:()=>c("pm"),ownerState:C,className:E.pmButton,title:$V(k,"pm"),children:(0,O.jsx)(YV,{variant:"caption",className:E.meridiemText,children:$V(k,"pm")})})]})]})}function GV(e){return nV("MuiClockNumber",e)}const KV=rV("MuiClockNumber",["root","selected","disabled"]),qV=["className","classes","disabled","index","inner","label","selected"],XV=bm("span",{name:"MuiClockNumber",slot:"Root",overridesResolver:(e,t)=>[t.root,{[`&.${KV.disabled}`]:t.disabled},{[`&.${KV.selected}`]:t.selected}]})(({theme:e})=>({height:36,width:36,position:"absolute",left:"calc((100% - 36px) / 2)",display:"inline-flex",justifyContent:"center",alignItems:"center",borderRadius:"50%",color:(e.vars||e).palette.text.primary,fontFamily:e.typography.fontFamily,"&:focused":{backgroundColor:(e.vars||e).palette.background.paper},[`&.${KV.selected}`]:{color:(e.vars||e).palette.primary.contrastText},[`&.${KV.disabled}`]:{pointerEvents:"none",color:(e.vars||e).palette.text.disabled},variants:[{props:{isClockNumberInInnerRing:!0},style:l({},e.typography.body2,{color:(e.vars||e).palette.text.secondary})}]}));function ZV(e){const t=Lh({props:e,name:"MuiClockNumber"}),{className:n,classes:r,disabled:i,index:o,inner:a,label:s,selected:c}=t,u=tt(t,qV),{ownerState:d}=aV(),p=l({},d,{isClockNumberInInnerRing:a,isClockNumberSelected:c,isClockNumberDisabled:i}),h=((e,t)=>FB({root:["root",t.isClockNumberSelected&&"selected",t.isClockNumberDisabled&&"disabled"]},GV,e))(r,p),m=o%12/12*Math.PI*2-Math.PI/2,f=91*(a?.65:1),g=Math.round(Math.cos(m)*f),y=Math.round(Math.sin(m)*f);return(0,O.jsx)(XV,l({className:Hh(h.root,n),"aria-disabled":!!i||void 0,"aria-selected":!!c||void 0,role:"option",style:{transform:`translate(${g}px, ${y+92}px`},ownerState:p},u,{children:s}))}const JV=({ampm:e,value:t,getClockNumberText:n,isDisabled:r,selectedId:i,adapter:o})=>{const a=t?o.getHours(t):null,s=[],l=e?12:23,c=t=>null!==a&&(e?12===t?12===a||0===a:a===t||a-12===t:a===t);for(let t=e?1:0;t<=l;t+=1){let a=t.toString();0===t&&(a="00");const l=!e&&(0===t||t>12);a=o.formatNumber(a);const u=c(t);s.push((0,O.jsx)(ZV,{id:u?i:void 0,index:t,inner:l,selected:u,disabled:r(t),label:a,"aria-label":n(a)},t))}return s},QV=({adapter:e,value:t,isDisabled:n,getClockNumberText:r,selectedId:i})=>{const o=e.formatNumber;return[[5,o("05")],[10,o("10")],[15,o("15")],[20,o("20")],[25,o("25")],[30,o("30")],[35,o("35")],[40,o("40")],[45,o("45")],[50,o("50")],[55,o("55")],[0,o("00")]].map(([e,o],a)=>{const s=e===t;return(0,O.jsx)(ZV,{label:o,id:s?i:void 0,index:a+1,inner:!1,disabled:n(e),selected:s,"aria-label":r(o)},e)})},eU=1,tU=2,nU=3,rU=5,iU=6,oU=7,aU=(e,t,n)=>{if(t===eU)return e.startOfYear(n);if(t===tU)return e.startOfMonth(n);if(t===nU)return e.startOfDay(n);let r=n;return t{let{value:t,referenceDate:n}=e,r=tt(e,sU);return r.adapter.isValid(t)?t:null!=n?n:(({props:e,adapter:t,granularity:n,timezone:r,getTodayDate:i})=>{let o=i?i():aU(t,n,DV(t,r));null!=e.minDate&&t.isAfterDay(e.minDate,o)&&(o=aU(t,n,e.minDate)),null!=e.maxDate&&t.isBeforeDay(e.maxDate,o)&&(o=aU(t,n,e.maxDate));const a=gV(e.disableIgnoringDatePartForTimeValidation??!1,t);return null!=e.minTime&&a(e.minTime,o)&&(o=aU(t,n,e.disableIgnoringDatePartForTimeValidation?e.minTime:RV(t,o,e.minTime))),null!=e.maxTime&&a(o,e.maxTime)&&(o=aU(t,n,e.disableIgnoringDatePartForTimeValidation?e.maxTime:RV(t,o,e.maxTime))),o})(r)},cleanValue:(e,t)=>e.isValid(t)?t:null,areValuesEqual:(e,t,n)=>!e.isValid(t)&&null!=t&&!e.isValid(n)&&null!=n||e.isEqual(t,n),isSameError:(e,t)=>e===t,hasError:e=>null!=e,defaultErrorState:null,getTimezone:(e,t)=>e.isValid(t)?e.getTimezone(t):null,setTimezone:(e,t,n)=>null==n?null:e.setTimezone(n,t)},cU=["ampm","ampmInClock","autoFocus","slots","slotProps","value","defaultValue","referenceDate","disableIgnoringDatePartForTimeValidation","maxTime","minTime","disableFuture","disablePast","minutesStep","shouldDisableTime","showViewSwitcher","onChange","view","views","openTo","onViewChange","focusedView","onFocusedViewChange","className","classes","disabled","readOnly","timezone"],uU=bm(IV,{name:"MuiTimeClock",slot:"Root"})({display:"flex",flexDirection:"column",position:"relative"}),dU=bm(hV,{name:"MuiTimeClock",slot:"ArrowSwitcher"})({position:"absolute",right:12,top:15}),pU=["hours","minutes"],hU=e.forwardRef(function(t,n){const r=WB(),i=Lh({props:t,name:"MuiTimeClock"}),{ampm:o=r.is12HourCycleInCurrentLocale(),ampmInClock:a=!1,autoFocus:s,slots:c,slotProps:u,value:d,defaultValue:p,referenceDate:h,disableIgnoringDatePartForTimeValidation:m=!1,maxTime:f,minTime:g,disableFuture:y,disablePast:v,minutesStep:b=1,shouldDisableTime:x,showViewSwitcher:I,onChange:w,view:k,views:S=pU,openTo:M,onViewChange:C,focusedView:P,onFocusedViewChange:E,className:T,classes:A,disabled:j,readOnly:L,timezone:R}=i,D=tt(i,cU),{value:$,handleValueChange:z,timezone:N}=(({name:t,timezone:n,value:r,defaultValue:i,referenceDate:o,onChange:a,valueManager:s})=>{const l=WB(),[c,u]=bV({name:t,state:"value",controlled:r,default:i??s.emptyValue}),d=e.useMemo(()=>s.getTimezone(l,c),[l,s,c]),p=vV(e=>null==d?e:s.setTimezone(l,d,e)),h=e.useMemo(()=>n||d||(o?l.getTimezone(Array.isArray(o)?o[0]:o):"default"),[n,d,o,l]);return{value:e.useMemo(()=>s.setTimezone(l,h,c),[s,l,h,c]),handleValueChange:vV((e,...t)=>{const n=p(e);u(n),a?.(n,...t)}),timezone:h}})({name:"TimeClock",timezone:R,value:d,defaultValue:p,referenceDate:h,onChange:w,valueManager:lU}),_=(({value:t,referenceDate:n,adapter:r,props:i,timezone:o})=>{const a=e.useMemo(()=>lU.getInitialReferenceValue({value:t,adapter:r,props:i,referenceDate:n,granularity:nU,timezone:o,getTodayDate:()=>DV(r,o,"date")}),[n,o]);return t??a})({value:$,referenceDate:h,adapter:r,props:i,timezone:N}),F=GB(),H=(t=>{const n=WB(),r=e.useRef(void 0);return void 0===r.current&&(r.current=n.date(void 0,t)),r.current})(N),B=function(t){if(void 0!==BB){const e=BB();return t??e}return function(t){const[n,r]=e.useState(t),i=t||n;return e.useEffect(()=>{null==n&&(HB+=1,r(`mui-${HB}`))},[n]),i}(t)}(),{ownerState:V}=aV(),{view:U,setView:Y,previousView:W,nextView:G,setValueAndGoToNextView:K}=function({onChange:t,onViewChange:n,openTo:r,view:i,views:o,autoFocus:a,focusedView:s,onFocusedViewChange:c,getStepNavigation:u}){const d=e.useRef(r),p=e.useRef(o),h=e.useRef(o.includes(r)?r:o[0]),[m,f]=bV({name:"useViews",state:"view",controlled:i,default:h.current}),g=e.useRef(a?m:null),[y,v]=bV({name:"useViews",state:"focusedView",controlled:s,default:g.current}),b=u?u({setView:f,view:m,defaultView:h.current,views:o}):xV;e.useEffect(()=>{(d.current&&d.current!==r||p.current&&p.current.some(e=>!o.includes(e)))&&(f(o.includes(r)?r:o[0]),p.current=o,d.current=r)},[r,f,m,o]);const x=o.indexOf(m),I=o[x-1]??null,w=o[x+1]??null,k=vV((e,t)=>{v(t?e:t=>e===t?null:t),c?.(e,t)}),S=vV(e=>{k(e,!0),e!==m&&(f(e),n&&n(e))}),M=vV(()=>{w&&S(w)}),C=vV((e,n,r)=>{const i="finish"===n,a=r?o.indexOf(r)o.isValid(t)?t:null,[o,t]),s=((e,t)=>e?t.getHours(e)>=12?"pm":"am":null)(a,o),l=e.useCallback(e=>{const t=null==a?null:((e,t,n,r)=>{const i=mV(r.getHours(e),t,n);return r.setHours(e,i)})(a,e,Boolean(n),o);r(t,i??"partial")},[n,a,r,i,o]);return{meridiemMode:s,handleMeridiemChange:l}}(_,o,K),Z=e.useCallback((e,t)=>{const n=gV(m,r),i="hours"===t||"minutes"===t&&S.includes("seconds"),a=({start:e,end:t})=>!(g&&n(g,t)||f&&n(e,f)||y&&n(e,H)||v&&n(H,i?t:e)),s=(e,n=1)=>{if(e%n!==0)return!1;if(x)switch(t){case"hours":return!x(r.setHours(_,e),"hours");case"minutes":return!x(r.setMinutes(_,e),"minutes");case"seconds":return!x(r.setSeconds(_,e),"seconds");default:return!1}return!0};switch(t){case"hours":{const t=mV(e,q,o),n=r.setHours(_,t);return r.getHours(n)!==t||(!a({start:r.setSeconds(r.setMinutes(n,0),0),end:r.setSeconds(r.setMinutes(n,59),59)})||!s(t))}case"minutes":{const t=r.setMinutes(_,e);return!a({start:r.setSeconds(t,0),end:r.setSeconds(t,59)})||!s(e,b)}case"seconds":{const t=r.setSeconds(_,e);return!a({start:t,end:t})||!s(e)}default:throw new Error("not supported")}},[o,_,m,f,q,g,b,x,r,y,v,H,S]),J=e.useMemo(()=>{switch(U){case"hours":{const e=(e,t)=>{const n=mV(e,q,o);K(r.setHours(_,n),t,"hours")},t=r.getHours(_);let n;return n=o?t>12?[12,23]:[0,11]:[0,23],{onChange:e,viewValue:t,children:JV({value:$,adapter:r,ampm:o,onChange:e,getClockNumberText:F.hoursClockNumberText,isDisabled:e=>j||Z(e,"hours"),selectedId:B}),viewRange:n}}case"minutes":{const e=r.getMinutes(_),t=(e,t)=>{K(r.setMinutes(_,e),t,"minutes")};return{viewValue:e,onChange:t,children:QV({adapter:r,value:e,onChange:t,getClockNumberText:F.minutesClockNumberText,isDisabled:e=>j||Z(e,"minutes"),selectedId:B}),viewRange:[0,59]}}case"seconds":{const e=r.getSeconds(_),t=(e,t)=>{K(r.setSeconds(_,e),t,"seconds")};return{viewValue:e,onChange:t,children:QV({adapter:r,value:e,onChange:t,getClockNumberText:F.secondsClockNumberText,isDisabled:e=>j||Z(e,"seconds"),selectedId:B}),viewRange:[0,59]}}default:throw new Error("You must provide the type for ClockView")}},[U,r,$,o,F.hoursClockNumberText,F.minutesClockNumberText,F.secondsClockNumberText,q,K,_,Z,B,j]),Q=(e=>FB({root:["root"],arrowSwitcher:["arrowSwitcher"]},wV,e))(A);return(0,O.jsxs)(uU,l({ref:n,className:Hh(Q.root,T),ownerState:V},D,{children:[(0,O.jsx)(WV,l({autoFocus:s??!!P,ampmInClock:a&&S.includes("hours"),value:$,type:U,ampm:o,minutesStep:b,isTimeDisabled:Z,meridiemMode:q,handleMeridiemChange:X,selectedId:B,disabled:j,readOnly:L},J)),I&&(0,O.jsx)(dU,{className:Q.arrowSwitcher,slots:c,slotProps:u,onGoToPrevious:()=>Y(W),isPreviousDisabled:!W,previousLabel:F.openPreviousView,onGoToNext:()=>Y(G),isNextDisabled:!G,nextLabel:F.openNextView,ownerState:V})]}))});function mU(){return mU=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"dash_mui_charts:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"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:!0,ref:!0,__self:!0,__source:!0};\nfunction 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}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","module.exports = window[\"React\"];","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';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?\nSymbol.for(\"react.suspense_list\"):60120,r=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;\nfunction 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 r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.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===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1) { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".dash_mui_charts.min.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var getCurrentScript = function() {\n var script = document.currentScript;\n if (!script) {\n /* Shim for IE11 and below */\n /* Do not take into account async scripts and inline scripts */\n\n var doc_scripts = document.getElementsByTagName('script');\n var scripts = [];\n\n for (var i = 0; i < doc_scripts.length; i++) {\n scripts.push(doc_scripts[i]);\n }\n\n scripts = scripts.filter(function(s) { return !s.async && !s.text && !s.textContent; });\n script = scripts.slice(-1)[0];\n }\n\n return script;\n};\n\nvar isLocalScript = function(script) {\n return /\\/_dash-component-suites\\//.test(script.src);\n};\n\nObject.defineProperty(__webpack_require__, 'p', {\n get: (function () {\n var script = getCurrentScript();\n\n var url = script.src.split('/').slice(0, -1).join('/') + '/';\n\n return function() {\n return url;\n };\n })()\n});\n\nif (typeof jsonpScriptSrc !== 'undefined') {\n var __jsonpScriptSrc__ = jsonpScriptSrc;\n jsonpScriptSrc = function(chunkId) {\n var script = getCurrentScript();\n var isLocal = isLocalScript(script);\n\n var src = __jsonpScriptSrc__(chunkId);\n\n if(!isLocal) {\n return src;\n }\n\n var srcFragments = src.split('/');\n var fileFragments = srcFragments.slice(-1)[0].split('.');\n\n fileFragments.splice(1, 0, \"v1_3_0m1780687251\");\n srcFragments.splice(-1, 1, fileFragments.join('.'))\n\n return srcFragments.join('/');\n };\n}\n","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t57: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdash_mui_charts\"] = self[\"webpackChunkdash_mui_charts\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"PropTypes\"];","/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nexport default typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();","import { ponyfillGlobal } from '@mui/utils';\n\n/**\n * @ignore - do not document.\n */\n\n// Store the license information in a global, so it can be shared\n// when module duplication occurs. The duplication of the modules can happen\n// if using multiple version of MUI X at the same time of the bundler\n// decide to duplicate to improve the size of the chunks.\n// eslint-disable-next-line no-underscore-dangle\nponyfillGlobal.__MUI_LICENSE_INFO__ = ponyfillGlobal.__MUI_LICENSE_INFO__ || {\n key: undefined\n};\nexport class LicenseInfo {\n static getLicenseInfo() {\n // eslint-disable-next-line no-underscore-dangle\n return ponyfillGlobal.__MUI_LICENSE_INFO__;\n }\n static getLicenseKey() {\n return LicenseInfo.getLicenseInfo().key;\n }\n static setLicenseKey(key) {\n const licenseInfo = LicenseInfo.getLicenseInfo();\n licenseInfo.key = key;\n }\n}","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","const is = Object.is;\n\n/**\n * Fast shallow compare for objects.\n * @returns true if objects are equal.\n */\nexport function fastObjectShallowCompare(a, b) {\n if (a === b) {\n return true;\n }\n if (!(a instanceof Object) || !(b instanceof Object)) {\n return false;\n }\n let aLength = 0;\n let bLength = 0;\n\n /* eslint-disable guard-for-in */\n for (const key in a) {\n aLength += 1;\n if (!is(a[key], b[key])) {\n return false;\n }\n if (!(key in b)) {\n return false;\n }\n }\n\n /* eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unused-vars */\n for (const _ in b) {\n bLength += 1;\n }\n return aLength === bLength;\n}","/**\n * @mui/x-telemetry v8.20.0\n *\n * @license SEE LICENSE IN LICENSE\n * This source code is licensed under the SEE LICENSE IN LICENSE license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport muiXTelemetryEvents from \"./runtime/events.js\";\nimport sendMuiXTelemetryEventOriginal from \"./runtime/sender.js\";\nimport muiXTelemetrySettingsOriginal from \"./runtime/settings.js\";\nconst noop = () => {};\n\n// To cut unused imports in production as early as possible\nconst sendMuiXTelemetryEvent = process.env.NODE_ENV === 'production' ? noop : sendMuiXTelemetryEventOriginal;\n\n// To cut unused imports in production as early as possible\nconst muiXTelemetrySettings = process.env.NODE_ENV === 'production' ? {\n enableDebug: noop,\n enableTelemetry: noop,\n disableTelemetry: noop\n} : muiXTelemetrySettingsOriginal;\nexport { muiXTelemetryEvents, sendMuiXTelemetryEvent, muiXTelemetrySettings };","const noop = () => null;\nconst muiXTelemetryEvents = {\n licenseVerification: process.env.NODE_ENV === 'production' ? noop : (context, payload) => ({\n eventName: 'licenseVerification',\n payload,\n context\n })\n};\nexport default muiXTelemetryEvents;","/* eslint-disable */\nconst _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nfunction utf8Encode(str) {\n for (let n = 0; n < str.length; n++) {\n const c = str.charCodeAt(n);\n if (c >= 128) {\n throw new Error('ASCII only support');\n }\n }\n return str;\n}\nexport const base64Decode = input => {\n let output = '';\n let chr1, chr2, chr3;\n let enc1, enc2, enc3, enc4;\n let i = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n while (i < input.length) {\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n output = output + String.fromCharCode(chr1);\n if (enc3 != 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 != 64) {\n output = output + String.fromCharCode(chr3);\n }\n }\n return output;\n};\nexport const base64Encode = input => {\n let output = '';\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0;\n input = utf8Encode(input);\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);\n }\n return output;\n};","/* eslint-disable */\n// See \"precomputation\" in notes\nconst k = [];\nlet i = 0;\nfor (; i < 64;) {\n k[i] = 0 | Math.sin(++i % Math.PI) * 4294967296;\n // k[i] = 0 | (Math.abs(Math.sin(++i)) * 4294967296);\n}\nexport function md5(s) {\n const words = [];\n let b,\n c,\n d,\n j = unescape(encodeURI(s)) + '\\x80',\n a = j.length;\n const h = [b = 0x67452301, c = 0xefcdab89, ~b, ~c];\n s = --a / 4 + 2 | 15;\n\n // See \"Length bits\" in notes\n words[--s] = a * 8;\n for (; ~a;) {\n // a !== -1\n words[a >> 2] |= j.charCodeAt(a) << 8 * a--;\n }\n for (i = j = 0; i < s; i += 16) {\n a = h;\n for (; j < 64; a = [d = a[3], b + ((d = a[0] + [b & c | ~b & d, d & b | ~d & c, b ^ c ^ d, c ^ (b | ~d)][a = j >> 4] + k[j] + ~~words[i | [j, 5 * j + 1, 3 * j + 5, 7 * j][a] & 15]) << (a = [7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21][4 * a + j++ % 4]) | d >>> -a), b, c]) {\n b = a[1] | 0;\n c = a[2];\n }\n\n // See \"Integer safety\" in notes\n for (j = 4; j;) h[--j] += a[j];\n\n // j === 0\n }\n for (s = ''; j < 32;) {\n s += (h[j >> 3] >> (1 ^ j++) * 4 & 15).toString(16);\n // s += ((h[j >> 3] >> (4 ^ 4 * j++)) & 15).toString(16);\n }\n return s;\n}","// eslint-disable-next-line @typescript-eslint/naming-convention\nexport let LICENSE_STATUS = /*#__PURE__*/function (LICENSE_STATUS) {\n LICENSE_STATUS[\"NotFound\"] = \"NotFound\";\n LICENSE_STATUS[\"Invalid\"] = \"Invalid\";\n LICENSE_STATUS[\"ExpiredAnnual\"] = \"ExpiredAnnual\";\n LICENSE_STATUS[\"ExpiredAnnualGrace\"] = \"ExpiredAnnualGrace\";\n LICENSE_STATUS[\"ExpiredVersion\"] = \"ExpiredVersion\";\n LICENSE_STATUS[\"Valid\"] = \"Valid\";\n LICENSE_STATUS[\"OutOfScope\"] = \"OutOfScope\";\n LICENSE_STATUS[\"NotAvailableInInitialProPlan\"] = \"NotAvailableInInitialProPlan\";\n return LICENSE_STATUS;\n}({});","export const PLAN_SCOPES = ['pro', 'premium'];\nexport const PLAN_VERSIONS = ['initial', 'Q3-2024'];","export const LICENSE_MODELS = [\n/**\n * A license is outdated if the current version of the software was released after the expiry date of the license.\n * But the license can be used indefinitely with an older version of the software.\n */\n'perpetual',\n/**\n * On development, a license is outdated if the expiry date has been reached\n * On production, a license is outdated if the current version of the software was released after the expiry date of the license (see \"perpetual\")\n */\n'annual',\n/**\n * Legacy. The previous name for 'annual'.\n * Can be removed once old license keys generated with 'subscription' are no longer supported.\n * To support for a while. We need more years of backward support and we sell multi year licenses.\n */\n'subscription'];","import { base64Decode, base64Encode } from \"../encoding/base64.js\";\nimport { md5 } from \"../encoding/md5.js\";\nimport { LICENSE_STATUS } from \"../utils/licenseStatus.js\";\nimport { PLAN_SCOPES } from \"../utils/plan.js\";\nimport { LICENSE_MODELS } from \"../utils/licenseModel.js\";\nconst getDefaultReleaseDate = () => {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return today;\n};\nexport function generateReleaseInfo(releaseDate = getDefaultReleaseDate()) {\n return base64Encode(releaseDate.getTime().toString());\n}\nfunction isPlanScopeSufficient(packageName, planScope) {\n let acceptedScopes;\n if (packageName.includes('-pro')) {\n acceptedScopes = ['pro', 'premium'];\n } else if (packageName.includes('-premium')) {\n acceptedScopes = ['premium'];\n } else {\n acceptedScopes = [];\n }\n return acceptedScopes.includes(planScope);\n}\nconst expiryReg = /^.*EXPIRY=([0-9]+),.*$/;\nconst orderReg = /^.*ORDER:([0-9]+),.*$/;\nconst PRO_PACKAGES_AVAILABLE_IN_INITIAL_PRO_PLAN = ['x-data-grid-pro', 'x-date-pickers-pro'];\n\n/**\n * Format: ORDER:${orderNumber},EXPIRY=${expiryTimestamp},KEYVERSION=1\n */\nfunction decodeLicenseVersion1(license) {\n let expiryTimestamp;\n let orderId;\n try {\n expiryTimestamp = parseInt(license.match(expiryReg)[1], 10);\n if (!expiryTimestamp || Number.isNaN(expiryTimestamp)) {\n expiryTimestamp = null;\n }\n orderId = parseInt(license.match(orderReg)[1], 10);\n if (!orderId || Number.isNaN(orderId)) {\n orderId = null;\n }\n } catch (err) {\n expiryTimestamp = null;\n orderId = null;\n }\n return {\n version: 1,\n licenseModel: 'perpetual',\n planScope: 'pro',\n planVersion: 'initial',\n expiryTimestamp,\n expiryDate: expiryTimestamp ? new Date(expiryTimestamp) : null,\n orderId\n };\n}\n\n/**\n * Format: O=${orderNumber},E=${expiryTimestamp},S=${planScope},LM=${licenseModel},PV=${planVersion},KV=2`;\n */\nfunction decodeLicenseVersion2(license) {\n const licenseInfo = {\n version: 2,\n licenseModel: null,\n planScope: null,\n planVersion: 'initial',\n expiryTimestamp: null,\n expiryDate: null,\n orderId: null\n };\n license.split(',').map(token => token.split('=')).filter(el => el.length === 2).forEach(([key, value]) => {\n if (key === 'S') {\n licenseInfo.planScope = value;\n }\n if (key === 'LM') {\n licenseInfo.licenseModel = value;\n }\n if (key === 'E') {\n const expiryTimestamp = parseInt(value, 10);\n if (expiryTimestamp && !Number.isNaN(expiryTimestamp)) {\n licenseInfo.expiryTimestamp = expiryTimestamp;\n licenseInfo.expiryDate = new Date(expiryTimestamp);\n }\n }\n if (key === 'PV') {\n licenseInfo.planVersion = value;\n }\n if (key === 'O') {\n const orderNum = parseInt(value, 10);\n if (orderNum && !Number.isNaN(orderNum)) {\n licenseInfo.orderId = orderNum;\n }\n }\n });\n return licenseInfo;\n}\n\n/**\n * Decode the license based on its key version and return a version-agnostic `MuiLicense` object.\n */\nfunction decodeLicense(encodedLicense) {\n const license = base64Decode(encodedLicense);\n if (license.includes('KEYVERSION=1')) {\n return decodeLicenseVersion1(license);\n }\n if (license.includes('KV=2')) {\n return decodeLicenseVersion2(license);\n }\n return null;\n}\nexport function verifyLicense({\n releaseInfo,\n licenseKey,\n packageName\n}) {\n // Gets replaced at build time\n // @ts-ignore\n if (false) {\n return {\n status: LICENSE_STATUS.Valid\n };\n }\n if (!releaseInfo) {\n throw new Error('MUI X: The release information is missing. Not able to validate license.');\n }\n if (!licenseKey) {\n return {\n status: LICENSE_STATUS.NotFound\n };\n }\n const hash = licenseKey.substr(0, 32);\n const encoded = licenseKey.substr(32);\n if (hash !== md5(encoded)) {\n return {\n status: LICENSE_STATUS.Invalid\n };\n }\n const license = decodeLicense(encoded);\n if (license == null) {\n console.error('MUI X: Error checking license. Key version not found!');\n return {\n status: LICENSE_STATUS.Invalid\n };\n }\n if (license.licenseModel == null || !LICENSE_MODELS.includes(license.licenseModel)) {\n console.error('MUI X: Error checking license. License model not found or invalid!');\n return {\n status: LICENSE_STATUS.Invalid\n };\n }\n if (license.expiryTimestamp == null) {\n console.error('MUI X: Error checking license. Expiry timestamp not found or invalid!');\n return {\n status: LICENSE_STATUS.Invalid\n };\n }\n if (license.licenseModel === 'perpetual' || process.env.NODE_ENV === 'production') {\n const pkgTimestamp = parseInt(base64Decode(releaseInfo), 10);\n if (Number.isNaN(pkgTimestamp)) {\n throw new Error('MUI X: The release information is invalid. Not able to validate license.');\n }\n if (license.expiryTimestamp < pkgTimestamp) {\n return {\n status: LICENSE_STATUS.ExpiredVersion\n };\n }\n } else if (license.licenseModel === 'subscription' || license.licenseModel === 'annual') {\n if (new Date().getTime() > license.expiryTimestamp) {\n if (\n // 30 days grace\n new Date().getTime() < license.expiryTimestamp + 1000 * 3600 * 24 * 30 || process.env.NODE_ENV !== 'development') {\n return {\n status: LICENSE_STATUS.ExpiredAnnualGrace,\n meta: {\n expiryTimestamp: license.expiryTimestamp,\n licenseKey\n }\n };\n }\n return {\n status: LICENSE_STATUS.ExpiredAnnual,\n meta: {\n expiryTimestamp: license.expiryTimestamp,\n licenseKey\n }\n };\n }\n }\n if (license.planScope == null || !PLAN_SCOPES.includes(license.planScope)) {\n console.error('MUI X: Error checking license. planScope not found or invalid!');\n return {\n status: LICENSE_STATUS.Invalid\n };\n }\n if (!isPlanScopeSufficient(packageName, license.planScope)) {\n return {\n status: LICENSE_STATUS.OutOfScope\n };\n }\n\n // 'charts-pro' or 'tree-view-pro' can only be used with a newer Pro license\n if (license.planVersion === 'initial' && license.planScope === 'pro' && !PRO_PACKAGES_AVAILABLE_IN_INITIAL_PRO_PLAN.includes(packageName)) {\n return {\n status: LICENSE_STATUS.NotAvailableInInitialProPlan\n };\n }\n return {\n status: LICENSE_STATUS.Valid\n };\n}","/**\n * @ignore - do not document.\n */\n\n// Store the license information in a global, so it can be shared\n// when module duplication occurs. The duplication of the modules can happen\n// if using multiple version of MUI X at the same time of the bundler\n// decide to duplicate to improve the size of the chunks.\n// eslint-disable-next-line no-underscore-dangle\nglobalThis.__MUI_LICENSE_INFO__ = globalThis.__MUI_LICENSE_INFO__ || {\n key: undefined\n};\nexport class LicenseInfo {\n static getLicenseInfo() {\n // eslint-disable-next-line no-underscore-dangle\n return globalThis.__MUI_LICENSE_INFO__;\n }\n static getLicenseKey() {\n return LicenseInfo.getLicenseInfo().key;\n }\n static setLicenseKey(key) {\n const licenseInfo = LicenseInfo.getLicenseInfo();\n licenseInfo.key = key;\n }\n}","/**\n * Workaround for the codesadbox preview error.\n *\n * Once these issues are resolved\n * https://github.com/mui/mui-x/issues/15765\n * https://github.com/codesandbox/codesandbox-client/issues/8673\n *\n * `showError` can simply use `console.error` again.\n */\nconst isCodeSandbox = typeof window !== 'undefined' && window.location.hostname.endsWith('.csb.app');\nfunction showError(message) {\n // eslint-disable-next-line no-console\n const logger = isCodeSandbox ? console.log : console.error;\n logger(['*************************************************************', '', ...message, '', '*************************************************************'].join('\\n'));\n}\nexport function showInvalidLicenseKeyError() {\n showError(['MUI X: Invalid license key.', '', \"Your MUI X license key format isn't valid. It could be because the license key is missing a character or has a typo.\", '', 'To solve the issue, you need to double check that `setLicenseKey()` is called with the right argument', 'Please check the license key installation https://mui.com/r/x-license-key-installation.']);\n}\nexport function showLicenseKeyPlanMismatchError({\n packageName\n}) {\n const rootPackageName = packageName.replace(/-(premium|pro)$/, '');\n showError(['MUI X: License key plan mismatch.', '', 'Your use of MUI X is not compatible with the plan of your license key. The feature you are trying to use is not included in the plan of your license key. This happens if you try to use Data Grid Premium with a license key for the Pro plan.', '', 'To solve the issue, you can upgrade your plan from Pro to Premium at https://mui.com/r/x-get-license?scope=premium.', `Or if you didn't intend to use Premium features, you can replace the import of \\`${rootPackageName}-premium\\` with \\`${rootPackageName}-pro\\`.`]);\n}\nexport function showNotAvailableInInitialProPlanError() {\n showError(['MUI X: Component not included in your license.', '', 'The component you are trying to use is not included in the Pro Plan you purchased.', '', 'Your license is from an old version of the Pro Plan that is only compatible with the `@mui/x-data-grid-pro` and `@mui/x-date-pickers-pro` commercial packages.', '', 'To start using another Pro package, please consider reaching to our sales team to upgrade your license or visit https://mui.com/r/x-get-license to get a new license key.']);\n}\nexport function showMissingLicenseKeyError({\n plan,\n packageName\n}) {\n showError(['MUI X: Missing license key.', '', `The license key is missing. You might not be allowed to use \\`${packageName}\\` which is part of MUI X ${plan}.`, '', 'To solve the issue, you can check the free trial conditions: https://mui.com/r/x-license-trial.', 'If you are eligible no actions are required. If you are not eligible to the free trial, you need to purchase a license https://mui.com/r/x-get-license or stop using the software immediately.']);\n}\nexport function showExpiredPackageVersionError({\n packageName\n}) {\n showError(['MUI X: Expired package version.', '', `You have installed a version of \\`${packageName}\\` that is outside of the maintenance plan of your license key. By default, commercial licenses provide access to new versions released during the first year after the purchase.`, '', 'To solve the issue, you can renew your license https://mui.com/r/x-get-license or install an older version of the npm package that is compatible with your license key.']);\n}\nexport function showExpiredAnnualGraceLicenseKeyError({\n plan,\n licenseKey,\n expiryTimestamp\n}) {\n showError(['MUI X: Expired license key.', '', `Your annual license key to use MUI X ${plan} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${plan} component (more details in https://mui.com/r/x-license-annual).`, '', 'To solve the problem you can either:', '', '- Renew your license https://mui.com/r/x-get-license and use the new key', `- Stop making changes to code depending directly or indirectly on MUI X ${plan}'s APIs`, '', 'Note that your license is perpetual in production environments with any version released before your license term ends.', '', `- License key expiry timestamp: ${new Date(expiryTimestamp)}`, `- Installed license key: ${licenseKey}`, '']);\n}\nexport function showExpiredAnnualLicenseKeyError({\n plan,\n licenseKey,\n expiryTimestamp\n}) {\n throw new Error(['MUI X: Expired license key.', '', `Your annual license key to use MUI X ${plan} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${plan} component (more details in https://mui.com/r/x-license-annual).`, '', 'To solve the problem you can either:', '', '- Renew your license https://mui.com/r/x-get-license and use the new key', `- Stop making changes to code depending directly or indirectly on MUI X ${plan}'s APIs`, '', 'Note that your license is perpetual in production environments with any version released before your license term ends.', '', `- License key expiry timestamp: ${new Date(expiryTimestamp)}`, `- Installed license key: ${licenseKey}`, ''].join('\\n'));\n}","'use client';\n\nimport * as React from 'react';\nconst MuiLicenseInfoContext = /*#__PURE__*/React.createContext({\n key: undefined\n});\nif (process.env.NODE_ENV !== \"production\") MuiLicenseInfoContext.displayName = \"MuiLicenseInfoContext\";\nexport default MuiLicenseInfoContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { sendMuiXTelemetryEvent, muiXTelemetryEvents } from '@mui/x-telemetry';\nimport { verifyLicense } from \"../verifyLicense/verifyLicense.js\";\nimport { LicenseInfo } from \"../utils/licenseInfo.js\";\nimport { showExpiredAnnualGraceLicenseKeyError, showExpiredAnnualLicenseKeyError, showInvalidLicenseKeyError, showMissingLicenseKeyError, showLicenseKeyPlanMismatchError, showExpiredPackageVersionError, showNotAvailableInInitialProPlanError } from \"../utils/licenseErrorMessageUtils.js\";\nimport { LICENSE_STATUS } from \"../utils/licenseStatus.js\";\nimport MuiLicenseInfoContext from \"../Unstable_LicenseInfoProvider/MuiLicenseInfoContext.js\";\nexport const sharedLicenseStatuses = {};\n\n/**\n * Clears the license status cache for all packages.\n * This should not be used in production code, but can be useful for testing purposes.\n */\nexport function clearLicenseStatusCache() {\n for (const packageName in sharedLicenseStatuses) {\n if (Object.prototype.hasOwnProperty.call(sharedLicenseStatuses, packageName)) {\n delete sharedLicenseStatuses[packageName];\n }\n }\n}\nexport function useLicenseVerifier(packageName, releaseInfo) {\n const {\n key: contextKey\n } = React.useContext(MuiLicenseInfoContext);\n return React.useMemo(() => {\n const licenseKey = contextKey ?? LicenseInfo.getLicenseKey();\n\n // Cache the response to not trigger the error twice.\n if (sharedLicenseStatuses[packageName] && sharedLicenseStatuses[packageName].key === licenseKey) {\n return sharedLicenseStatuses[packageName].licenseVerifier;\n }\n const plan = packageName.includes('premium') ? 'Premium' : 'Pro';\n const licenseStatus = verifyLicense({\n releaseInfo,\n licenseKey,\n packageName\n });\n const fullPackageName = `@mui/${packageName}`;\n sendMuiXTelemetryEvent(muiXTelemetryEvents.licenseVerification({\n licenseKey\n }, {\n packageName,\n packageReleaseInfo: releaseInfo,\n licenseStatus: licenseStatus?.status\n }));\n if (licenseStatus.status === LICENSE_STATUS.Valid) {\n // Skip\n } else if (licenseStatus.status === LICENSE_STATUS.Invalid) {\n showInvalidLicenseKeyError();\n } else if (licenseStatus.status === LICENSE_STATUS.NotAvailableInInitialProPlan) {\n showNotAvailableInInitialProPlanError();\n } else if (licenseStatus.status === LICENSE_STATUS.OutOfScope) {\n showLicenseKeyPlanMismatchError({\n packageName: fullPackageName\n });\n } else if (licenseStatus.status === LICENSE_STATUS.NotFound) {\n showMissingLicenseKeyError({\n plan,\n packageName: fullPackageName\n });\n } else if (licenseStatus.status === LICENSE_STATUS.ExpiredAnnualGrace) {\n showExpiredAnnualGraceLicenseKeyError(_extends({\n plan\n }, licenseStatus.meta));\n } else if (licenseStatus.status === LICENSE_STATUS.ExpiredAnnual) {\n showExpiredAnnualLicenseKeyError(_extends({\n plan\n }, licenseStatus.meta));\n } else if (licenseStatus.status === LICENSE_STATUS.ExpiredVersion) {\n showExpiredPackageVersionError({\n packageName: fullPackageName\n });\n } else if (process.env.NODE_ENV !== 'production') {\n throw new Error('missing status handler');\n }\n sharedLicenseStatuses[packageName] = {\n key: licenseKey,\n licenseVerifier: licenseStatus\n };\n return licenseStatus;\n }, [packageName, releaseInfo, contextKey]);\n}","import { fastMemo } from '@mui/x-internals/fastMemo';\nimport { useLicenseVerifier } from \"../useLicenseVerifier/index.js\";\nimport { LICENSE_STATUS } from \"../utils/licenseStatus.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getLicenseErrorMessage(licenseStatus) {\n switch (licenseStatus) {\n case LICENSE_STATUS.ExpiredAnnualGrace:\n case LICENSE_STATUS.ExpiredAnnual:\n return 'MUI X Expired license key';\n case LICENSE_STATUS.ExpiredVersion:\n return 'MUI X Expired package version';\n case LICENSE_STATUS.Invalid:\n return 'MUI X Invalid license key';\n case LICENSE_STATUS.OutOfScope:\n return 'MUI X License key plan mismatch';\n case LICENSE_STATUS.NotAvailableInInitialProPlan:\n return 'MUI X Product not covered by plan';\n case LICENSE_STATUS.NotFound:\n return 'MUI X Missing license key';\n default:\n throw new Error('Unhandled MUI X license status.');\n }\n}\nfunction Watermark(props) {\n const {\n packageName,\n releaseInfo\n } = props;\n const licenseStatus = useLicenseVerifier(packageName, releaseInfo);\n if (licenseStatus.status === LICENSE_STATUS.Valid) {\n return null;\n }\n return /*#__PURE__*/_jsx(\"div\", {\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n color: '#8282829e',\n zIndex: 100000,\n width: '100%',\n textAlign: 'center',\n bottom: '50%',\n right: 0,\n letterSpacing: 5,\n fontSize: 24\n },\n children: getLicenseErrorMessage(licenseStatus.status)\n });\n}\nconst MemoizedWatermark = fastMemo(Watermark);\nexport { MemoizedWatermark as Watermark };","import * as React from 'react';\nimport { fastObjectShallowCompare } from \"../fastObjectShallowCompare/index.js\";\nexport function fastMemo(component) {\n return /*#__PURE__*/React.memo(component, fastObjectShallowCompare);\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// See https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379 for why\nconst safeReact = {\n ...React\n};\nconst maybeReactUseId = safeReact.useId;\n\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n // React.useId() is only available from React 17.0.0.\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride ?? reactId;\n }\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","import * as React from 'react';\nexport default parseInt(React.version, 10);","import * as React from 'react';\n/* We need to import the shim because React 17 does not support the `useSyncExternalStore` API.\n * More info: https://github.com/mui/mui-x/issues/18303#issuecomment-2958392341 */\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport reactMajor from \"../reactMajor/index.js\";\n/* Some tests fail in R18 with the raw useSyncExternalStore. It may be possible to make it work\n * but for now we only enable it for R19+. */\nconst canUseRawUseSyncExternalStore = reactMajor >= 19;\nconst useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreR19 : useStoreLegacy;\nexport function useStore(store, selector, a1, a2, a3) {\n return useStoreImplementation(store, selector, a1, a2, a3);\n}\nfunction useStoreR19(store, selector, a1, a2, a3) {\n const getSelection = React.useCallback(() => selector(store.getSnapshot(), a1, a2, a3), [store, selector, a1, a2, a3]);\n return useSyncExternalStore(store.subscribe, getSelection, getSelection);\n}\nfunction useStoreLegacy(store, selector, a1, a2, a3) {\n return useSyncExternalStoreWithSelector(store.subscribe, store.getSnapshot, store.getSnapshot, state => selector(state, a1, a2, a3));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useStore } from \"./useStore.js\";\n/* eslint-disable no-cond-assign */\n\nexport class Store {\n // HACK: `any` fixes adding listeners that accept partial state.\n\n // Internal state to handle recursive `setState()` calls\n\n static create(state) {\n return new Store(state);\n }\n constructor(state) {\n this.state = state;\n this.listeners = new Set();\n this.updateTick = 0;\n }\n subscribe = fn => {\n this.listeners.add(fn);\n return () => {\n this.listeners.delete(fn);\n };\n };\n\n /**\n * Returns the current state snapshot. Meant for usage with `useSyncExternalStore`.\n * If you want to access the state, use the `state` property instead.\n */\n getSnapshot = () => {\n return this.state;\n };\n setState(newState) {\n this.state = newState;\n this.updateTick += 1;\n const currentTick = this.updateTick;\n const it = this.listeners.values();\n let result;\n while (result = it.next(), !result.done) {\n if (currentTick !== this.updateTick) {\n // If the tick has changed, a recursive `setState` call has been made,\n // and it has already notified all listeners.\n return;\n }\n const listener = result.value;\n listener(newState);\n }\n }\n update(changes) {\n for (const key in changes) {\n if (!Object.is(this.state[key], changes[key])) {\n this.setState(_extends({}, this.state, changes));\n return;\n }\n }\n }\n set(key, value) {\n if (!Object.is(this.state[key], value)) {\n this.setState(_extends({}, this.state, {\n [key]: value\n }));\n }\n }\n use = (() => (selector, a1, a2, a3) => {\n return useStore(this, selector, a1, a2, a3);\n })();\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport const useChartAnimation = ({\n params,\n store\n}) => {\n React.useEffect(() => {\n store.set('animation', _extends({}, store.state.animation, {\n skip: params.skipAnimation\n }));\n }, [store, params.skipAnimation]);\n const disableAnimation = React.useCallback(() => {\n let disableCalled = false;\n store.set('animation', _extends({}, store.state.animation, {\n skipAnimationRequests: store.state.animation.skipAnimationRequests + 1\n }));\n return () => {\n if (disableCalled) {\n return;\n }\n disableCalled = true;\n store.set('animation', _extends({}, store.state.animation, {\n skipAnimationRequests: store.state.animation.skipAnimationRequests - 1\n }));\n };\n }, [store]);\n useEnhancedEffect(() => {\n // Skip animation test/jsdom\n const isAnimationDisabledEnvironment = typeof window === 'undefined' || !window?.matchMedia;\n if (isAnimationDisabledEnvironment) {\n return undefined;\n }\n let disableAnimationCleanup;\n const handleMediaChange = event => {\n if (event.matches) {\n disableAnimationCleanup = disableAnimation();\n } else {\n disableAnimationCleanup?.();\n }\n };\n const mql = window.matchMedia('(prefers-reduced-motion)');\n handleMediaChange(mql);\n mql.addEventListener('change', handleMediaChange);\n return () => {\n mql.removeEventListener('change', handleMediaChange);\n };\n }, [disableAnimation, store]);\n return {\n instance: {\n disableAnimation\n }\n };\n};\nuseChartAnimation.params = {\n skipAnimation: true\n};\nuseChartAnimation.getDefaultizedParams = ({\n params\n}) => _extends({}, params, {\n skipAnimation: params.skipAnimation ?? false\n});\nuseChartAnimation.getInitialState = ({\n skipAnimation\n}) => {\n const isAnimationDisabledEnvironment = typeof window === 'undefined' || !window?.matchMedia;\n\n // We use the value of `isAnimationDisabledEnvironment` as the initial value of `skipAnimation` to avoid\n // re-rendering the component on environments where matchMedia is not supported, hence skipAnimation will always be true.\n const disableAnimations = process.env.NODE_ENV === 'test' ? isAnimationDisabledEnvironment : false;\n return {\n animation: {\n skip: skipAnimation,\n // By initializing the skipAnimationRequests to 1, we ensure that the animation is always skipped\n skipAnimationRequests: disableAnimations ? 1 : 0\n }\n };\n};","'use client';\n\nimport * as React from 'react';\n\n/**\n * Run an effect only after the first render.\n *\n * @param effect The effect to run after the first render\n * @param deps The dependencies for the effect\n */\nexport function useEffectAfterFirstRender(effect, deps) {\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return undefined;\n }\n return effect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}","export const DEFAULT_X_AXIS_KEY = 'DEFAULT_X_AXIS_KEY';\nexport const DEFAULT_Y_AXIS_KEY = 'DEFAULT_Y_AXIS_KEY';\nexport const DEFAULT_ROTATION_AXIS_KEY = 'DEFAULT_ROTATION_AXIS_KEY';\nexport const DEFAULT_RADIUS_AXIS_KEY = 'DEFAULT_RADIUS_AXIS_KEY';\nexport const DEFAULT_MARGINS = {\n top: 20,\n bottom: 20,\n left: 20,\n right: 20\n};\nexport const DEFAULT_AXIS_SIZE_WIDTH = 45;\nexport const DEFAULT_AXIS_SIZE_HEIGHT = 25;\n\n// How many pixels to add to the default axis size if that axis has a label\nexport const AXIS_LABEL_DEFAULT_HEIGHT = 20;","// src/devModeChecks/identityFunctionCheck.ts\nvar runIdentityFunctionCheck = (resultFunc, inputSelectorsResults, outputSelectorResult) => {\n if (inputSelectorsResults.length === 1 && inputSelectorsResults[0] === outputSelectorResult) {\n let isInputSameAsOutput = false;\n try {\n const emptyObject = {};\n if (resultFunc(emptyObject) === emptyObject)\n isInputSameAsOutput = true;\n } catch {\n }\n if (isInputSameAsOutput) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"The result function returned its own inputs without modification. e.g\\n`createSelector([state => state.todos], todos => todos)`\\nThis could lead to inefficient memoization and unnecessary re-renders.\\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.\",\n { stack }\n );\n }\n }\n};\n\n// src/devModeChecks/inputStabilityCheck.ts\nvar runInputStabilityCheck = (inputSelectorResultsObject, options, inputSelectorArgs) => {\n const { memoize, memoizeOptions } = options;\n const { inputSelectorResults, inputSelectorResultsCopy } = inputSelectorResultsObject;\n const createAnEmptyObject = memoize(() => ({}), ...memoizeOptions);\n const areInputSelectorResultsEqual = createAnEmptyObject.apply(null, inputSelectorResults) === createAnEmptyObject.apply(null, inputSelectorResultsCopy);\n if (!areInputSelectorResultsEqual) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"An input selector returned a different result when passed same arguments.\\nThis means your output selector will likely run more frequently than intended.\\nAvoid returning a new reference inside your input selector, e.g.\\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`\",\n {\n arguments: inputSelectorArgs,\n firstInputs: inputSelectorResults,\n secondInputs: inputSelectorResultsCopy,\n stack\n }\n );\n }\n};\n\n// src/devModeChecks/setGlobalDevModeChecks.ts\nvar globalDevModeChecks = {\n inputStabilityCheck: \"once\",\n identityFunctionCheck: \"once\"\n};\nvar setGlobalDevModeChecks = (devModeChecks) => {\n Object.assign(globalDevModeChecks, devModeChecks);\n};\n\n// src/utils.ts\nvar NOT_FOUND = /* @__PURE__ */ Symbol(\"NOT_FOUND\");\nfunction assertIsFunction(func, errorMessage = `expected a function, instead received ${typeof func}`) {\n if (typeof func !== \"function\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsObject(object, errorMessage = `expected an object, instead received ${typeof object}`) {\n if (typeof object !== \"object\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsArrayOfFunctions(array, errorMessage = `expected all items to be functions, instead received the following types: `) {\n if (!array.every((item) => typeof item === \"function\")) {\n const itemTypes = array.map(\n (item) => typeof item === \"function\" ? `function ${item.name || \"unnamed\"}()` : typeof item\n ).join(\", \");\n throw new TypeError(`${errorMessage}[${itemTypes}]`);\n }\n}\nvar ensureIsArray = (item) => {\n return Array.isArray(item) ? item : [item];\n};\nfunction getDependencies(createSelectorArgs) {\n const dependencies = Array.isArray(createSelectorArgs[0]) ? createSelectorArgs[0] : createSelectorArgs;\n assertIsArrayOfFunctions(\n dependencies,\n `createSelector expects all input-selectors to be functions, but received the following types: `\n );\n return dependencies;\n}\nfunction collectInputSelectorResults(dependencies, inputSelectorArgs) {\n const inputSelectorResults = [];\n const { length } = dependencies;\n for (let i = 0; i < length; i++) {\n inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs));\n }\n return inputSelectorResults;\n}\nvar getDevModeChecksExecutionInfo = (firstRun, devModeChecks) => {\n const { identityFunctionCheck, inputStabilityCheck } = {\n ...globalDevModeChecks,\n ...devModeChecks\n };\n return {\n identityFunctionCheck: {\n shouldRun: identityFunctionCheck === \"always\" || identityFunctionCheck === \"once\" && firstRun,\n run: runIdentityFunctionCheck\n },\n inputStabilityCheck: {\n shouldRun: inputStabilityCheck === \"always\" || inputStabilityCheck === \"once\" && firstRun,\n run: runInputStabilityCheck\n }\n };\n};\n\n// src/autotrackMemoize/autotracking.ts\nvar $REVISION = 0;\nvar CURRENT_TRACKER = null;\nvar Cell = class {\n revision = $REVISION;\n _value;\n _lastValue;\n _isEqual = tripleEq;\n constructor(initialValue, isEqual = tripleEq) {\n this._value = this._lastValue = initialValue;\n this._isEqual = isEqual;\n }\n // Whenever a storage value is read, it'll add itself to the current tracker if\n // one exists, entangling its state with that cache.\n get value() {\n CURRENT_TRACKER?.add(this);\n return this._value;\n }\n // Whenever a storage value is updated, we bump the global revision clock,\n // assign the revision for this storage to the new value, _and_ we schedule a\n // rerender. This is important, and it's what makes autotracking _pull_\n // based. We don't actively tell the caches which depend on the storage that\n // anything has happened. Instead, we recompute the caches when needed.\n set value(newValue) {\n if (this.value === newValue)\n return;\n this._value = newValue;\n this.revision = ++$REVISION;\n }\n};\nfunction tripleEq(a, b) {\n return a === b;\n}\nvar TrackingCache = class {\n _cachedValue;\n _cachedRevision = -1;\n _deps = [];\n hits = 0;\n fn;\n constructor(fn) {\n this.fn = fn;\n }\n clear() {\n this._cachedValue = void 0;\n this._cachedRevision = -1;\n this._deps = [];\n this.hits = 0;\n }\n get value() {\n if (this.revision > this._cachedRevision) {\n const { fn } = this;\n const currentTracker = /* @__PURE__ */ new Set();\n const prevTracker = CURRENT_TRACKER;\n CURRENT_TRACKER = currentTracker;\n this._cachedValue = fn();\n CURRENT_TRACKER = prevTracker;\n this.hits++;\n this._deps = Array.from(currentTracker);\n this._cachedRevision = this.revision;\n }\n CURRENT_TRACKER?.add(this);\n return this._cachedValue;\n }\n get revision() {\n return Math.max(...this._deps.map((d) => d.revision), 0);\n }\n};\nfunction getValue(cell) {\n if (!(cell instanceof Cell)) {\n console.warn(\"Not a valid cell! \", cell);\n }\n return cell.value;\n}\nfunction setValue(storage, value) {\n if (!(storage instanceof Cell)) {\n throw new TypeError(\n \"setValue must be passed a tracked store created with `createStorage`.\"\n );\n }\n storage.value = storage._lastValue = value;\n}\nfunction createCell(initialValue, isEqual = tripleEq) {\n return new Cell(initialValue, isEqual);\n}\nfunction createCache(fn) {\n assertIsFunction(\n fn,\n \"the first parameter to `createCache` must be a function\"\n );\n return new TrackingCache(fn);\n}\n\n// src/autotrackMemoize/tracking.ts\nvar neverEq = (a, b) => false;\nfunction createTag() {\n return createCell(null, neverEq);\n}\nfunction dirtyTag(tag, value) {\n setValue(tag, value);\n}\nvar consumeCollection = (node) => {\n let tag = node.collectionTag;\n if (tag === null) {\n tag = node.collectionTag = createTag();\n }\n getValue(tag);\n};\nvar dirtyCollection = (node) => {\n const tag = node.collectionTag;\n if (tag !== null) {\n dirtyTag(tag, null);\n }\n};\n\n// src/autotrackMemoize/proxy.ts\nvar REDUX_PROXY_LABEL = Symbol();\nvar nextId = 0;\nvar proto = Object.getPrototypeOf({});\nvar ObjectTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy(this, objectProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar objectProxyHandler = {\n get(node, key) {\n function calculateResult() {\n const { value } = node;\n const childValue = Reflect.get(value, key);\n if (typeof key === \"symbol\") {\n return childValue;\n }\n if (key in proto) {\n return childValue;\n }\n if (typeof childValue === \"object\" && childValue !== null) {\n let childNode = node.children[key];\n if (childNode === void 0) {\n childNode = node.children[key] = createNode(childValue);\n }\n if (childNode.tag) {\n getValue(childNode.tag);\n }\n return childNode.proxy;\n } else {\n let tag = node.tags[key];\n if (tag === void 0) {\n tag = node.tags[key] = createTag();\n tag.value = childValue;\n }\n getValue(tag);\n return childValue;\n }\n }\n const res = calculateResult();\n return res;\n },\n ownKeys(node) {\n consumeCollection(node);\n return Reflect.ownKeys(node.value);\n },\n getOwnPropertyDescriptor(node, prop) {\n return Reflect.getOwnPropertyDescriptor(node.value, prop);\n },\n has(node, prop) {\n return Reflect.has(node.value, prop);\n }\n};\nvar ArrayTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy([this], arrayProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar arrayProxyHandler = {\n get([node], key) {\n if (key === \"length\") {\n consumeCollection(node);\n }\n return objectProxyHandler.get(node, key);\n },\n ownKeys([node]) {\n return objectProxyHandler.ownKeys(node);\n },\n getOwnPropertyDescriptor([node], prop) {\n return objectProxyHandler.getOwnPropertyDescriptor(node, prop);\n },\n has([node], prop) {\n return objectProxyHandler.has(node, prop);\n }\n};\nfunction createNode(value) {\n if (Array.isArray(value)) {\n return new ArrayTreeNode(value);\n }\n return new ObjectTreeNode(value);\n}\nfunction updateNode(node, newValue) {\n const { value, tags, children } = node;\n node.value = newValue;\n if (Array.isArray(value) && Array.isArray(newValue) && value.length !== newValue.length) {\n dirtyCollection(node);\n } else {\n if (value !== newValue) {\n let oldKeysSize = 0;\n let newKeysSize = 0;\n let anyKeysAdded = false;\n for (const _key in value) {\n oldKeysSize++;\n }\n for (const key in newValue) {\n newKeysSize++;\n if (!(key in value)) {\n anyKeysAdded = true;\n break;\n }\n }\n const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize;\n if (isDifferent) {\n dirtyCollection(node);\n }\n }\n }\n for (const key in tags) {\n const childValue = value[key];\n const newChildValue = newValue[key];\n if (childValue !== newChildValue) {\n dirtyCollection(node);\n dirtyTag(tags[key], newChildValue);\n }\n if (typeof newChildValue === \"object\" && newChildValue !== null) {\n delete tags[key];\n }\n }\n for (const key in children) {\n const childNode = children[key];\n const newChildValue = newValue[key];\n const childValue = childNode.value;\n if (childValue === newChildValue) {\n continue;\n } else if (typeof newChildValue === \"object\" && newChildValue !== null) {\n updateNode(childNode, newChildValue);\n } else {\n deleteNode(childNode);\n delete children[key];\n }\n }\n}\nfunction deleteNode(node) {\n if (node.tag) {\n dirtyTag(node.tag, null);\n }\n dirtyCollection(node);\n for (const key in node.tags) {\n dirtyTag(node.tags[key], null);\n }\n for (const key in node.children) {\n deleteNode(node.children[key]);\n }\n}\n\n// src/lruMemoize.ts\nfunction createSingletonCache(equals) {\n let entry;\n return {\n get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n return NOT_FOUND;\n },\n put(key, value) {\n entry = { key, value };\n },\n getEntries() {\n return entry ? [entry] : [];\n },\n clear() {\n entry = void 0;\n }\n };\n}\nfunction createLruCache(maxSize, equals) {\n let entries = [];\n function get(key) {\n const cacheIndex = entries.findIndex((entry) => equals(key, entry.key));\n if (cacheIndex > -1) {\n const entry = entries[cacheIndex];\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n return entry.value;\n }\n return NOT_FOUND;\n }\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n entries.unshift({ key, value });\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n function getEntries() {\n return entries;\n }\n function clear() {\n entries = [];\n }\n return { get, put, getEntries, clear };\n}\nvar referenceEqualityCheck = (a, b) => a === b;\nfunction createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n const { length } = prev;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n return true;\n };\n}\nfunction lruMemoize(func, equalityCheckOrOptions) {\n const providedOptions = typeof equalityCheckOrOptions === \"object\" ? equalityCheckOrOptions : { equalityCheck: equalityCheckOrOptions };\n const {\n equalityCheck = referenceEqualityCheck,\n maxSize = 1,\n resultEqualityCheck\n } = providedOptions;\n const comparator = createCacheKeyComparator(equalityCheck);\n let resultsCount = 0;\n const cache = maxSize <= 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);\n function memoized() {\n let value = cache.get(arguments);\n if (value === NOT_FOUND) {\n value = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const entries = cache.getEntries();\n const matchingEntry = entries.find(\n (entry) => resultEqualityCheck(entry.value, value)\n );\n if (matchingEntry) {\n value = matchingEntry.value;\n resultsCount !== 0 && resultsCount--;\n }\n }\n cache.put(arguments, value);\n }\n return value;\n }\n memoized.clearCache = () => {\n cache.clear();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/autotrackMemoize/autotrackMemoize.ts\nfunction autotrackMemoize(func) {\n const node = createNode(\n []\n );\n let lastArgs = null;\n const shallowEqual = createCacheKeyComparator(referenceEqualityCheck);\n const cache = createCache(() => {\n const res = func.apply(null, node.proxy);\n return res;\n });\n function memoized() {\n if (!shallowEqual(lastArgs, arguments)) {\n updateNode(node, arguments);\n lastArgs = arguments;\n }\n return cache.value;\n }\n memoized.clearCache = () => {\n return cache.clear();\n };\n return memoized;\n}\n\n// src/weakMapMemoize.ts\nvar StrongRef = class {\n constructor(value) {\n this.value = value;\n }\n deref() {\n return this.value;\n }\n};\nvar Ref = typeof WeakRef !== \"undefined\" ? WeakRef : StrongRef;\nvar UNTERMINATED = 0;\nvar TERMINATED = 1;\nfunction createCacheNode() {\n return {\n s: UNTERMINATED,\n v: void 0,\n o: null,\n p: null\n };\n}\nfunction weakMapMemoize(func, options = {}) {\n let fnNode = createCacheNode();\n const { resultEqualityCheck } = options;\n let lastResult;\n let resultsCount = 0;\n function memoized() {\n let cacheNode = fnNode;\n const { length } = arguments;\n for (let i = 0, l = length; i < l; i++) {\n const arg = arguments[i];\n if (typeof arg === \"function\" || typeof arg === \"object\" && arg !== null) {\n let objectCache = cacheNode.o;\n if (objectCache === null) {\n cacheNode.o = objectCache = /* @__PURE__ */ new WeakMap();\n }\n const objectNode = objectCache.get(arg);\n if (objectNode === void 0) {\n cacheNode = createCacheNode();\n objectCache.set(arg, cacheNode);\n } else {\n cacheNode = objectNode;\n }\n } else {\n let primitiveCache = cacheNode.p;\n if (primitiveCache === null) {\n cacheNode.p = primitiveCache = /* @__PURE__ */ new Map();\n }\n const primitiveNode = primitiveCache.get(arg);\n if (primitiveNode === void 0) {\n cacheNode = createCacheNode();\n primitiveCache.set(arg, cacheNode);\n } else {\n cacheNode = primitiveNode;\n }\n }\n }\n const terminatedNode = cacheNode;\n let result;\n if (cacheNode.s === TERMINATED) {\n result = cacheNode.v;\n } else {\n result = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const lastResultValue = lastResult?.deref?.() ?? lastResult;\n if (lastResultValue != null && resultEqualityCheck(lastResultValue, result)) {\n result = lastResultValue;\n resultsCount !== 0 && resultsCount--;\n }\n const needsWeakRef = typeof result === \"object\" && result !== null || typeof result === \"function\";\n lastResult = needsWeakRef ? new Ref(result) : result;\n }\n }\n terminatedNode.s = TERMINATED;\n terminatedNode.v = result;\n return result;\n }\n memoized.clearCache = () => {\n fnNode = createCacheNode();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/createSelectorCreator.ts\nfunction createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {\n const createSelectorCreatorOptions = typeof memoizeOrOptions === \"function\" ? {\n memoize: memoizeOrOptions,\n memoizeOptions: memoizeOptionsFromArgs\n } : memoizeOrOptions;\n const createSelector2 = (...createSelectorArgs) => {\n let recomputations = 0;\n let dependencyRecomputations = 0;\n let lastResult;\n let directlyPassedOptions = {};\n let resultFunc = createSelectorArgs.pop();\n if (typeof resultFunc === \"object\") {\n directlyPassedOptions = resultFunc;\n resultFunc = createSelectorArgs.pop();\n }\n assertIsFunction(\n resultFunc,\n `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\n );\n const combinedOptions = {\n ...createSelectorCreatorOptions,\n ...directlyPassedOptions\n };\n const {\n memoize,\n memoizeOptions = [],\n argsMemoize = weakMapMemoize,\n argsMemoizeOptions = [],\n devModeChecks = {}\n } = combinedOptions;\n const finalMemoizeOptions = ensureIsArray(memoizeOptions);\n const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions);\n const dependencies = getDependencies(createSelectorArgs);\n const memoizedResultFunc = memoize(function recomputationWrapper() {\n recomputations++;\n return resultFunc.apply(\n null,\n arguments\n );\n }, ...finalMemoizeOptions);\n let firstRun = true;\n const selector = argsMemoize(function dependenciesChecker() {\n dependencyRecomputations++;\n const inputSelectorResults = collectInputSelectorResults(\n dependencies,\n arguments\n );\n lastResult = memoizedResultFunc.apply(null, inputSelectorResults);\n if (process.env.NODE_ENV !== \"production\") {\n const { identityFunctionCheck, inputStabilityCheck } = getDevModeChecksExecutionInfo(firstRun, devModeChecks);\n if (identityFunctionCheck.shouldRun) {\n identityFunctionCheck.run(\n resultFunc,\n inputSelectorResults,\n lastResult\n );\n }\n if (inputStabilityCheck.shouldRun) {\n const inputSelectorResultsCopy = collectInputSelectorResults(\n dependencies,\n arguments\n );\n inputStabilityCheck.run(\n { inputSelectorResults, inputSelectorResultsCopy },\n { memoize, memoizeOptions: finalMemoizeOptions },\n arguments\n );\n }\n if (firstRun)\n firstRun = false;\n }\n return lastResult;\n }, ...finalArgsMemoizeOptions);\n return Object.assign(selector, {\n resultFunc,\n memoizedResultFunc,\n dependencies,\n dependencyRecomputations: () => dependencyRecomputations,\n resetDependencyRecomputations: () => {\n dependencyRecomputations = 0;\n },\n lastResult: () => lastResult,\n recomputations: () => recomputations,\n resetRecomputations: () => {\n recomputations = 0;\n },\n memoize,\n argsMemoize\n });\n };\n Object.assign(createSelector2, {\n withTypes: () => createSelector2\n });\n return createSelector2;\n}\nvar createSelector = /* @__PURE__ */ createSelectorCreator(weakMapMemoize);\n\n// src/createStructuredSelector.ts\nvar createStructuredSelector = Object.assign(\n (inputSelectorsObject, selectorCreator = createSelector) => {\n assertIsObject(\n inputSelectorsObject,\n `createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof inputSelectorsObject}`\n );\n const inputSelectorKeys = Object.keys(inputSelectorsObject);\n const dependencies = inputSelectorKeys.map(\n (key) => inputSelectorsObject[key]\n );\n const structuredSelector = selectorCreator(\n dependencies,\n (...inputSelectorResults) => {\n return inputSelectorResults.reduce((composition, value, index) => {\n composition[inputSelectorKeys[index]] = value;\n return composition;\n }, {});\n }\n );\n return structuredSelector;\n },\n { withTypes: () => createStructuredSelector }\n);\nexport {\n createSelector,\n createSelectorCreator,\n createStructuredSelector,\n lruMemoize,\n referenceEqualityCheck,\n setGlobalDevModeChecks,\n autotrackMemoize as unstable_autotrackMemoize,\n weakMapMemoize\n};\n//# sourceMappingURL=reselect.mjs.map","import { lruMemoize, createSelectorCreator } from 'reselect';\n/* eslint-disable no-underscore-dangle */ // __cacheKey__\n\nconst reselectCreateSelector = createSelectorCreator({\n memoize: lruMemoize,\n memoizeOptions: {\n maxSize: 1,\n equalityCheck: Object.is\n }\n});\n/* eslint-disable id-denylist */\nexport const createSelector = (a, b, c, d, e, f, g, h, ...other) => {\n if (other.length > 0) {\n throw new Error('Unsupported number of selectors');\n }\n let selector;\n if (a && b && c && d && e && f && g && h) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n const vc = c(state, a1, a2, a3);\n const vd = d(state, a1, a2, a3);\n const ve = e(state, a1, a2, a3);\n const vf = f(state, a1, a2, a3);\n const vg = g(state, a1, a2, a3);\n return h(va, vb, vc, vd, ve, vf, vg, a1, a2, a3);\n };\n } else if (a && b && c && d && e && f && g) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n const vc = c(state, a1, a2, a3);\n const vd = d(state, a1, a2, a3);\n const ve = e(state, a1, a2, a3);\n const vf = f(state, a1, a2, a3);\n return g(va, vb, vc, vd, ve, vf, a1, a2, a3);\n };\n } else if (a && b && c && d && e && f) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n const vc = c(state, a1, a2, a3);\n const vd = d(state, a1, a2, a3);\n const ve = e(state, a1, a2, a3);\n return f(va, vb, vc, vd, ve, a1, a2, a3);\n };\n } else if (a && b && c && d && e) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n const vc = c(state, a1, a2, a3);\n const vd = d(state, a1, a2, a3);\n return e(va, vb, vc, vd, a1, a2, a3);\n };\n } else if (a && b && c && d) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n const vc = c(state, a1, a2, a3);\n return d(va, vb, vc, a1, a2, a3);\n };\n } else if (a && b && c) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n return c(va, vb, a1, a2, a3);\n };\n } else if (a && b) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n return b(va, a1, a2, a3);\n };\n } else if (a) {\n selector = a;\n } else {\n throw new Error('Missing arguments');\n }\n return selector;\n};\n/* eslint-enable id-denylist */\n\nexport const createSelectorMemoizedWithOptions = options => (...inputs) => {\n const cache = new WeakMap();\n let nextCacheId = 1;\n const combiner = inputs[inputs.length - 1];\n const nSelectors = inputs.length - 1 || 1;\n // (s1, s2, ..., sN, a1, a2, a3) => { ... }\n const argsLength = Math.max(combiner.length - nSelectors, 0);\n if (argsLength > 3) {\n throw new Error('Unsupported number of arguments');\n }\n\n // prettier-ignore\n const selector = (state, a1, a2, a3) => {\n let cacheKey = state.__cacheKey__;\n if (!cacheKey) {\n cacheKey = {\n id: nextCacheId\n };\n state.__cacheKey__ = cacheKey;\n nextCacheId += 1;\n }\n let fn = cache.get(cacheKey);\n if (!fn) {\n const selectors = inputs.length === 1 ? [x => x, combiner] : inputs;\n let reselectArgs = inputs;\n const selectorArgs = [undefined, undefined, undefined];\n switch (argsLength) {\n case 0:\n break;\n case 1:\n {\n reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], combiner];\n break;\n }\n case 2:\n {\n reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], () => selectorArgs[1], combiner];\n break;\n }\n case 3:\n {\n reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], () => selectorArgs[1], () => selectorArgs[2], combiner];\n break;\n }\n default:\n throw new Error('Unsupported number of arguments');\n }\n if (options) {\n reselectArgs = [...reselectArgs, options];\n }\n fn = reselectCreateSelector(...reselectArgs);\n fn.selectorArgs = selectorArgs;\n cache.set(cacheKey, fn);\n }\n\n /* eslint-disable no-fallthrough */\n\n switch (argsLength) {\n case 3:\n fn.selectorArgs[2] = a3;\n case 2:\n fn.selectorArgs[1] = a2;\n case 1:\n fn.selectorArgs[0] = a1;\n case 0:\n default:\n }\n switch (argsLength) {\n case 0:\n return fn(state);\n case 1:\n return fn(state, a1);\n case 2:\n return fn(state, a1, a2);\n case 3:\n return fn(state, a1, a2, a3);\n default:\n throw new Error('unreachable');\n }\n };\n return selector;\n};\nexport const createSelectorMemoized = createSelectorMemoizedWithOptions();","export const selectorChartCartesianAxisState = state => state.cartesianAxis;\nexport const selectorChartRawXAxis = state => state.cartesianAxis?.x;\nexport const selectorChartRawYAxis = state => state.cartesianAxis?.y;","import { createSelector, createSelectorMemoized } from '@mui/x-internals/store';\nimport { selectorChartRawXAxis, selectorChartRawYAxis } from \"./useChartCartesianAxisLayout.selectors.js\";\nexport const selectorChartLeftAxisSize = createSelector(selectorChartRawYAxis, function selectorChartLeftAxisSize(yAxis) {\n return (yAxis ?? []).reduce((acc, axis) => axis.position === 'left' ? acc + (axis.width || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0);\n});\nexport const selectorChartRightAxisSize = createSelector(selectorChartRawYAxis, function selectorChartRightAxisSize(yAxis) {\n return (yAxis ?? []).reduce((acc, axis) => axis.position === 'right' ? acc + (axis.width || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0);\n});\nexport const selectorChartTopAxisSize = createSelector(selectorChartRawXAxis, function selectorChartTopAxisSize(xAxis) {\n return (xAxis ?? []).reduce((acc, axis) => axis.position === 'top' ? acc + (axis.height || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0);\n});\nexport const selectorChartBottomAxisSize = createSelector(selectorChartRawXAxis, function selectorChartBottomAxisSize(xAxis) {\n return (xAxis ?? []).reduce((acc, axis) => axis.position === 'bottom' ? acc + (axis.height || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0);\n});\nexport const selectorChartAxisSizes = createSelectorMemoized(selectorChartLeftAxisSize, selectorChartRightAxisSize, selectorChartTopAxisSize, selectorChartBottomAxisSize, function selectorChartAxisSizes(left, right, top, bottom) {\n return {\n left,\n right,\n top,\n bottom\n };\n});","import { createSelector, createSelectorMemoized } from '@mui/x-internals/store';\nimport { selectorChartAxisSizes } from \"../../featurePlugins/useChartCartesianAxis/useChartAxisSize.selectors.js\";\nexport const selectorChartDimensionsState = state => state.dimensions;\nexport const selectorChartMargin = state => state.dimensions.margin;\nexport const selectorChartDrawingArea = createSelectorMemoized(selectorChartDimensionsState, selectorChartMargin, selectorChartAxisSizes, function selectorChartDrawingArea({\n width,\n height\n}, {\n top: marginTop,\n right: marginRight,\n bottom: marginBottom,\n left: marginLeft\n}, {\n left: axisSizeLeft,\n right: axisSizeRight,\n top: axisSizeTop,\n bottom: axisSizeBottom\n}) {\n return {\n width: width - marginLeft - marginRight - axisSizeLeft - axisSizeRight,\n left: marginLeft + axisSizeLeft,\n right: marginRight + axisSizeRight,\n height: height - marginTop - marginBottom - axisSizeTop - axisSizeBottom,\n top: marginTop + axisSizeTop,\n bottom: marginBottom + axisSizeBottom\n };\n});\nexport const selectorChartSvgWidth = createSelector(selectorChartDimensionsState, dimensionsState => dimensionsState.width);\nexport const selectorChartSvgHeight = createSelector(selectorChartDimensionsState, dimensionsState => dimensionsState.height);\nexport const selectorChartPropsWidth = createSelector(selectorChartDimensionsState, dimensionsState => dimensionsState.propsWidth);\nexport const selectorChartPropsHeight = createSelector(selectorChartDimensionsState, dimensionsState => dimensionsState.propsHeight);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function defaultizeMargin(input, defaultMargin) {\n if (typeof input === 'number') {\n return {\n top: input,\n bottom: input,\n left: input,\n right: input\n };\n }\n if (defaultMargin) {\n return _extends({}, defaultMargin, input);\n }\n return input;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useEffectAfterFirstRender } from '@mui/x-internals/useEffectAfterFirstRender';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport ownerWindow from '@mui/utils/ownerWindow';\nimport { DEFAULT_MARGINS } from \"../../../../constants/index.js\";\nimport { selectorChartDrawingArea } from \"./useChartDimensions.selectors.js\";\nimport { defaultizeMargin } from \"../../../defaultizeMargin.js\";\nconst MAX_COMPUTE_RUN = 10;\nexport const useChartDimensions = ({\n params,\n store,\n svgRef\n}) => {\n const hasInSize = params.width !== undefined && params.height !== undefined;\n const stateRef = React.useRef({\n displayError: false,\n initialCompute: true,\n computeRun: 0\n });\n // States only used for the initialization of the size.\n const [innerWidth, setInnerWidth] = React.useState(0);\n const [innerHeight, setInnerHeight] = React.useState(0);\n const computeSize = React.useCallback(() => {\n const mainEl = svgRef?.current;\n if (!mainEl) {\n return {};\n }\n const win = ownerWindow(mainEl);\n const computedStyle = win.getComputedStyle(mainEl);\n const newHeight = Math.floor(parseFloat(computedStyle.height)) || 0;\n const newWidth = Math.floor(parseFloat(computedStyle.width)) || 0;\n if (store.state.dimensions.width !== newWidth || store.state.dimensions.height !== newHeight) {\n store.set('dimensions', {\n margin: {\n top: params.margin.top,\n right: params.margin.right,\n bottom: params.margin.bottom,\n left: params.margin.left\n },\n width: params.width ?? newWidth,\n height: params.height ?? newHeight,\n propsWidth: params.width,\n propsHeight: params.height\n });\n }\n return {\n height: newHeight,\n width: newWidth\n };\n }, [store, svgRef, params.height, params.width,\n // Margin is an object, so we need to include all the properties to prevent infinite loops.\n params.margin.left, params.margin.right, params.margin.top, params.margin.bottom]);\n useEffectAfterFirstRender(() => {\n const width = params.width ?? store.state.dimensions.width;\n const height = params.height ?? store.state.dimensions.height;\n store.set('dimensions', {\n margin: {\n top: params.margin.top,\n right: params.margin.right,\n bottom: params.margin.bottom,\n left: params.margin.left\n },\n width,\n height,\n propsHeight: params.height,\n propsWidth: params.width\n });\n }, [store, params.height, params.width,\n // Margin is an object, so we need to include all the properties to prevent infinite loops.\n params.margin.left, params.margin.right, params.margin.top, params.margin.bottom]);\n React.useEffect(() => {\n // Ensure the error detection occurs after the first rendering.\n stateRef.current.displayError = true;\n }, []);\n\n // This effect is used to compute the size of the container on the initial render.\n // It is not bound to the raf loop to avoid an unwanted \"resize\" event.\n // https://github.com/mui/mui-x/issues/13477#issuecomment-2336634785\n useEnhancedEffect(() => {\n // computeRun is used to avoid infinite loops.\n if (hasInSize || !stateRef.current.initialCompute || stateRef.current.computeRun > MAX_COMPUTE_RUN) {\n return;\n }\n const computedSize = computeSize();\n if (computedSize.width !== innerWidth || computedSize.height !== innerHeight) {\n stateRef.current.computeRun += 1;\n if (computedSize.width !== undefined) {\n setInnerWidth(computedSize.width);\n }\n if (computedSize.height !== undefined) {\n setInnerHeight(computedSize.height);\n }\n } else if (stateRef.current.initialCompute) {\n stateRef.current.initialCompute = false;\n }\n }, [innerHeight, innerWidth, computeSize, hasInSize]);\n useEnhancedEffect(() => {\n if (hasInSize) {\n return () => {};\n }\n computeSize();\n const elementToObserve = svgRef.current;\n if (typeof ResizeObserver === 'undefined') {\n return () => {};\n }\n let animationFrame;\n const observer = new ResizeObserver(() => {\n // See https://github.com/mui/mui-x/issues/8733\n animationFrame = requestAnimationFrame(() => {\n computeSize();\n });\n });\n if (elementToObserve) {\n observer.observe(elementToObserve);\n }\n return () => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame);\n }\n if (elementToObserve) {\n observer.unobserve(elementToObserve);\n }\n };\n }, [computeSize, hasInSize, svgRef]);\n if (process.env.NODE_ENV !== 'production') {\n if (stateRef.current.displayError && params.width === undefined && innerWidth === 0) {\n console.error(`MUI X Charts: ChartContainer does not have \\`width\\` prop, and its container has no \\`width\\` defined.`);\n stateRef.current.displayError = false;\n }\n if (stateRef.current.displayError && params.height === undefined && innerHeight === 0) {\n console.error(`MUI X Charts: ChartContainer does not have \\`height\\` prop, and its container has no \\`height\\` defined.`);\n stateRef.current.displayError = false;\n }\n }\n const drawingArea = store.use(selectorChartDrawingArea);\n const isXInside = React.useCallback(x => x >= drawingArea.left - 1 && x <= drawingArea.left + drawingArea.width, [drawingArea.left, drawingArea.width]);\n const isYInside = React.useCallback(y => y >= drawingArea.top - 1 && y <= drawingArea.top + drawingArea.height, [drawingArea.height, drawingArea.top]);\n const isPointInside = React.useCallback((x, y, targetElement) => {\n // For element allowed to overflow, wrapping them in make them fully part of the drawing area.\n if (targetElement && 'closest' in targetElement && targetElement.closest('[data-drawing-container]')) {\n return true;\n }\n return isXInside(x) && isYInside(y);\n }, [isXInside, isYInside]);\n return {\n instance: {\n isPointInside,\n isXInside,\n isYInside\n }\n };\n};\nuseChartDimensions.params = {\n width: true,\n height: true,\n margin: true\n};\nuseChartDimensions.getDefaultizedParams = ({\n params\n}) => _extends({}, params, {\n margin: defaultizeMargin(params.margin, DEFAULT_MARGINS)\n});\nuseChartDimensions.getInitialState = ({\n width,\n height,\n margin\n}) => {\n return {\n dimensions: {\n margin,\n width: width ?? 0,\n height: height ?? 0,\n propsWidth: width,\n propsHeight: height\n }\n };\n};","import ownerDocument from \"../ownerDocument/index.js\";\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","'use client';\n\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport const useChartExperimentalFeatures = ({\n params,\n store\n}) => {\n useEnhancedEffect(() => {\n store.set('experimentalFeatures', params.experimentalFeatures);\n }, [store, params.experimentalFeatures]);\n return {};\n};\nuseChartExperimentalFeatures.params = {\n experimentalFeatures: true\n};\nuseChartExperimentalFeatures.getInitialState = ({\n experimentalFeatures\n}) => {\n return {\n experimentalFeatures\n };\n};","let globalChartDefaultId = 0;\nexport const createChartDefaultId = () => {\n globalChartDefaultId += 1;\n return `mui-chart-${globalChartDefaultId}`;\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { createChartDefaultId } from \"./useChartId.utils.js\";\nexport const useChartId = ({\n params,\n store\n}) => {\n React.useEffect(() => {\n if (params.id === undefined || params.id === store.state.id.providedChartId && store.state.id.chartId !== undefined) {\n return;\n }\n store.set('id', _extends({}, store.state.id, {\n chartId: params.id ?? createChartDefaultId()\n }));\n }, [store, params.id]);\n return {};\n};\nuseChartId.params = {\n id: true\n};\nuseChartId.getInitialState = ({\n id\n}) => ({\n id: {\n chartId: id,\n providedChartId: id\n }\n});","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from \"../useEnhancedEffect/index.js\";\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","export const rainbowSurgePaletteLight = ['#4254FB', '#FFB422', '#FA4F58', '#0DBEFF', '#22BF75', '#FA83B4', '#FF7511'];\nexport const rainbowSurgePaletteDark = ['#495AFB', '#FFC758', '#F35865', '#30C8FF', '#44CE8D', '#F286B3', '#FF8C39'];\nexport const rainbowSurgePalette = mode => mode === 'dark' ? rainbowSurgePaletteDark : rainbowSurgePaletteLight;","/**\n * This method groups series by type and adds defaultized values such as the ids and colors.\n * It does NOT apply the series processors - that happens in a selector.\n * @param series The array of series provided by the developer\n * @param colors The color palette used to defaultize series colors\n * @returns An object structuring all the series by type with default values.\n */\nexport const defaultizeSeries = ({\n series,\n colors,\n seriesConfig\n}) => {\n // Group series by type\n const seriesGroups = {};\n series.forEach((seriesData, seriesIndex) => {\n const seriesWithDefaultValues = seriesConfig[seriesData.type].getSeriesWithDefaultValues(seriesData, seriesIndex, colors);\n const id = seriesWithDefaultValues.id;\n if (seriesGroups[seriesData.type] === undefined) {\n seriesGroups[seriesData.type] = {\n series: {},\n seriesOrder: []\n };\n }\n if (seriesGroups[seriesData.type]?.series[id] !== undefined) {\n throw new Error(`MUI X Charts: series' id \"${id}\" is not unique.`);\n }\n seriesGroups[seriesData.type].series[id] = seriesWithDefaultValues;\n seriesGroups[seriesData.type].seriesOrder.push(id);\n });\n return seriesGroups;\n};\n\n/**\n * Applies series processors to the defaultized series groups.\n * This should be called in a selector to compute processed series on-demand.\n * @param defaultizedSeries The defaultized series groups\n * @param seriesConfig The series configuration\n * @param dataset The optional dataset\n * @returns Processed series with all transformations applied\n */\nexport const applySeriesProcessors = (defaultizedSeries, seriesConfig, dataset) => {\n const processedSeries = {};\n\n // Apply formatter on a type group\n Object.keys(seriesConfig).forEach(type => {\n const group = defaultizedSeries[type];\n if (group !== undefined) {\n processedSeries[type] = seriesConfig[type]?.seriesProcessor?.(group, dataset) ?? group;\n }\n });\n return processedSeries;\n};\n\n/**\n * Applies series processors with drawing area to series if defined.\n * @param processedSeries The processed series groups\n * @param seriesConfig The series configuration\n * @param drawingArea The drawing area\n * @returns Processed series with all transformations applied\n */\nexport const applySeriesLayout = (processedSeries, seriesConfig, drawingArea) => {\n let processingDetected = false;\n const seriesLayout = {};\n\n // Apply processors on series type per group\n Object.keys(processedSeries).forEach(type => {\n const processor = seriesConfig[type]?.seriesLayout;\n const thisSeries = processedSeries[type];\n if (processor !== undefined && thisSeries !== undefined) {\n const newValue = processor(thisSeries, drawingArea);\n if (newValue && newValue !== processedSeries[type]) {\n processingDetected = true;\n seriesLayout[type] = newValue;\n }\n }\n });\n if (!processingDetected) {\n return {};\n }\n return seriesLayout;\n};","/**\n * Serializes a series item identifier into a unique string using the appropriate serializer\n * from the provided series configuration.\n *\n * @param {ChartSeriesConfig} seriesConfig - The configuration object for chart series.\n * @param {SeriesItemIdentifier} identifier - The series item identifier to serialize.\n * @returns {string} A unique string representation of the identifier.\n * @throws Will throw an error if no serializer is found for the given series type.\n */\nexport const serializeIdentifier = (seriesConfig, identifier) => {\n const serializer = seriesConfig[identifier.type]?.identifierSerializer;\n if (!serializer) {\n throw new Error(`MUI X Charts: No identifier serializer found for series type \"${identifier.type}\".`);\n }\n // @ts-expect-error identifierSerializer expects the full object,\n // but this function accepts a partial one in order be able to serialize all identifiers.\n return serializer(identifier);\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useEffectAfterFirstRender } from '@mui/x-internals/useEffectAfterFirstRender';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { rainbowSurgePalette } from \"../../../../colorPalettes/index.js\";\nimport { defaultizeSeries } from \"./processSeries.js\";\nimport { serializeIdentifier as serializeIdentifierFn } from \"./serializeIdentifier.js\";\nexport const useChartSeries = ({\n params,\n store,\n seriesConfig\n}) => {\n const {\n series,\n dataset,\n theme,\n colors\n } = params;\n\n // The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartSeries`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n useEffectAfterFirstRender(() => {\n store.set('series', _extends({}, store.state.series, {\n defaultizedSeries: defaultizeSeries({\n series,\n colors: typeof colors === 'function' ? colors(theme) : colors,\n seriesConfig\n }),\n dataset\n }));\n }, [colors, dataset, series, theme, seriesConfig, store]);\n const serializeIdentifier = useEventCallback(identifier => serializeIdentifierFn(seriesConfig, identifier));\n return {\n instance: {\n serializeIdentifier\n }\n };\n};\nuseChartSeries.params = {\n dataset: true,\n series: true,\n colors: true,\n theme: true\n};\nconst EMPTY_ARRAY = [];\nuseChartSeries.getDefaultizedParams = ({\n params\n}) => _extends({}, params, {\n series: params.series?.length ? params.series : EMPTY_ARRAY,\n colors: params.colors ?? rainbowSurgePalette,\n theme: params.theme ?? 'light'\n});\nuseChartSeries.getInitialState = ({\n series = [],\n colors,\n theme,\n dataset\n}, _, seriesConfig) => {\n return {\n series: {\n seriesConfig,\n defaultizedSeries: defaultizeSeries({\n series,\n colors: typeof colors === 'function' ? colors(theme) : colors,\n seriesConfig\n }),\n dataset\n }\n };\n};","/**\n * ActiveGesturesRegistry - Centralized registry for tracking which gestures are active on elements\n *\n * This singleton class keeps track of all gesture instances that are currently in their active state,\n * allowing both the system and applications to query which gestures are active on specific elements.\n */\n\n/**\n * Type for entries in the active gestures registry\n */\n\n/**\n * Registry that maintains a record of all currently active gestures across elements\n */\nexport class ActiveGesturesRegistry {\n /** Map of elements to their active gestures */\n activeGestures = (() => new Map())();\n\n /**\n * Register a gesture as active on an element\n *\n * @param element - The DOM element on which the gesture is active\n * @param gesture - The gesture instance that is active\n */\n registerActiveGesture(element, gesture) {\n if (!this.activeGestures.has(element)) {\n this.activeGestures.set(element, new Set());\n }\n const elementGestures = this.activeGestures.get(element);\n const entry = {\n gesture,\n element\n };\n elementGestures.add(entry);\n }\n\n /**\n * Remove a gesture from the active registry\n *\n * @param element - The DOM element on which the gesture was active\n * @param gesture - The gesture instance to deactivate\n */\n unregisterActiveGesture(element, gesture) {\n const elementGestures = this.activeGestures.get(element);\n if (!elementGestures) {\n return;\n }\n\n // Find and remove the specific gesture entry\n elementGestures.forEach(entry => {\n if (entry.gesture === gesture) {\n elementGestures.delete(entry);\n }\n });\n\n // Remove the element from the map if it no longer has any active gestures\n if (elementGestures.size === 0) {\n this.activeGestures.delete(element);\n }\n }\n\n /**\n * Get all active gestures for a specific element\n *\n * @param element - The DOM element to query\n * @returns Array of active gesture names\n */\n getActiveGestures(element) {\n const elementGestures = this.activeGestures.get(element);\n if (!elementGestures) {\n return {};\n }\n return Array.from(elementGestures).reduce((acc, entry) => {\n acc[entry.gesture.name] = true;\n return acc;\n }, {});\n }\n\n /**\n * Check if a specific gesture is active on an element\n *\n * @param element - The DOM element to check\n * @param gesture - The gesture instance to check\n * @returns True if the gesture is active on the element, false otherwise\n */\n isGestureActive(element, gesture) {\n const elementGestures = this.activeGestures.get(element);\n if (!elementGestures) {\n return false;\n }\n return Array.from(elementGestures).some(entry => entry.gesture === gesture);\n }\n\n /**\n * Clear all active gestures from the registry\n */\n destroy() {\n this.activeGestures.clear();\n }\n\n /**\n * Clear all active gestures for a specific element\n *\n * @param element - The DOM element to clear\n */\n unregisterElement(element) {\n this.activeGestures.delete(element);\n }\n}","/**\n * KeyboardManager - Manager for keyboard events in the gesture recognition system\n *\n * This class tracks keyboard state:\n * 1. Capturing and tracking all pressed keys\n * 2. Providing methods to check if specific keys are pressed\n */\n\n/**\n * Type definition for keyboard keys\n */\n\n/**\n * Class responsible for tracking keyboard state\n */\nexport class KeyboardManager {\n pressedKeys = (() => new Set())();\n\n /**\n * Create a new KeyboardManager instance\n */\n constructor() {\n this.initialize();\n }\n\n /**\n * Initialize the keyboard event listeners\n */\n initialize() {\n if (typeof window === 'undefined') {\n return;\n }\n\n // Add keyboard event listeners\n window.addEventListener('keydown', this.handleKeyDown);\n window.addEventListener('keyup', this.handleKeyUp);\n // Reset keys when window loses focus\n window.addEventListener('blur', this.clearKeys);\n }\n\n /**\n * Handle keydown events\n */\n handleKeyDown = event => {\n this.pressedKeys.add(event.key);\n };\n\n /**\n * Handle keyup events\n */\n handleKeyUp = event => {\n this.pressedKeys.delete(event.key);\n };\n\n /**\n * Clear all pressed keys\n */\n clearKeys = () => {\n this.pressedKeys.clear();\n };\n\n /**\n * Check if a set of keys are all currently pressed\n * @param keys The keys to check\n * @returns True if all specified keys are pressed, false otherwise\n */\n areKeysPressed(keys) {\n if (!keys || keys.length === 0) {\n return true; // No keys required means the condition is satisfied\n }\n return keys.every(key => {\n if (key === 'ControlOrMeta') {\n // May be \"deprecated\" on types, but it is still the best option for cross-platform detection\n // https://stackoverflow.com/a/71785253/24269134\n return navigator.platform.includes('Mac') ? this.pressedKeys.has('Meta') : this.pressedKeys.has('Control');\n }\n return this.pressedKeys.has(key);\n });\n }\n\n /**\n * Cleanup method to remove event listeners\n */\n destroy() {\n if (typeof window !== 'undefined') {\n window.removeEventListener('keydown', this.handleKeyDown);\n window.removeEventListener('keyup', this.handleKeyUp);\n window.removeEventListener('blur', this.clearKeys);\n }\n this.clearKeys();\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PointerManager - Centralized manager for pointer events in the gesture recognition system\n *\n * This singleton class abstracts the complexity of working with pointer events by:\n * 1. Capturing and tracking all active pointers (touch, mouse, pen)\n * 2. Normalizing pointer data into a consistent format\n * 3. Managing pointer capture for proper tracking across elements\n * 4. Distributing events to registered gesture recognizers\n */\n\n/**\n * Normalized representation of a pointer, containing all relevant information\n * from the original PointerEvent plus additional tracking data.\n *\n * This data structure encapsulates everything gesture recognizers need to know\n * about a pointer's current state.\n */\n\n/**\n * Configuration options for initializing the PointerManager.\n */\n\n/**\n * Manager for handling pointer events across the application.\n *\n * PointerManager serves as the foundational layer for gesture recognition,\n * providing a centralized system for tracking active pointers and distributing\n * pointer events to gesture recognizers.\n *\n * It normalizes browser pointer events into a consistent format and simplifies\n * multi-touch handling by managing pointer capture and tracking multiple\n * simultaneous pointers.\n */\nexport class PointerManager {\n /** Root element where pointer events are captured */\n\n /** CSS touch-action property value applied to the root element */\n\n /** Whether to use passive event listeners */\n\n /** Whether to prevent interrupt events like blur or contextmenu */\n preventEventInterruption = true;\n\n /** Map of all currently active pointers by their pointerId */\n pointers = (() => new Map())();\n\n /** Set of registered gesture handlers that receive pointer events */\n gestureHandlers = (() => new Set())();\n constructor(options) {\n this.root =\n // User provided root element\n options.root ??\n // Fallback to document root or body, this fixes shadow DOM scenarios\n document.getRootNode({\n composed: true\n }) ??\n // Fallback to document body, for some testing environments\n document.body;\n this.touchAction = options.touchAction || 'auto';\n this.passive = options.passive ?? false;\n this.preventEventInterruption = options.preventEventInterruption ?? true;\n this.setupEventListeners();\n }\n\n /**\n * Register a handler function to receive pointer events.\n *\n * The handler will be called whenever pointer events occur within the root element.\n * It receives the current map of all active pointers and the original event.\n *\n * @param {Function} handler - Function to receive pointer events and current pointer state\n * @returns {Function} An unregister function that removes this handler when called\n */\n registerGestureHandler(handler) {\n this.gestureHandlers.add(handler);\n\n // Return unregister function\n return () => {\n this.gestureHandlers.delete(handler);\n };\n }\n\n /**\n * Get a copy of the current active pointers map.\n *\n * Returns a new Map containing all currently active pointers.\n * Modifying the returned map will not affect the internal pointers state.\n *\n * @returns A new Map containing all active pointers\n */\n getPointers() {\n return new Map(this.pointers);\n }\n\n /**\n * Set up event listeners for pointer events on the root element.\n *\n * This method attaches all necessary event listeners and configures\n * the CSS touch-action property on the root element.\n */\n setupEventListeners() {\n // Set touch-action CSS property\n if (this.touchAction !== 'auto') {\n this.root.style.touchAction = this.touchAction;\n }\n\n // Add event listeners\n this.root.addEventListener('pointerdown', this.handlePointerEvent, {\n passive: this.passive\n });\n this.root.addEventListener('pointermove', this.handlePointerEvent, {\n passive: this.passive\n });\n this.root.addEventListener('pointerup', this.handlePointerEvent, {\n passive: this.passive\n });\n this.root.addEventListener('pointercancel', this.handlePointerEvent, {\n passive: this.passive\n });\n // @ts-expect-error, forceCancel is not a standard event, but used for custom handling\n this.root.addEventListener('forceCancel', this.handlePointerEvent, {\n passive: this.passive\n });\n\n // Add blur and contextmenu event listeners to interrupt all gestures\n this.root.addEventListener('blur', this.handleInterruptEvents);\n this.root.addEventListener('contextmenu', this.handleInterruptEvents);\n }\n\n /**\n * Handle events that should interrupt all gestures.\n * This clears all active pointers and notifies handlers with a pointercancel-like event.\n *\n * @param event - The event that triggered the interruption (blur or contextmenu)\n */\n handleInterruptEvents = event => {\n if (this.preventEventInterruption && 'pointerType' in event && event.pointerType === 'touch') {\n event.preventDefault();\n return;\n }\n\n // Create a synthetic pointer cancel event\n const cancelEvent = new PointerEvent('forceCancel', {\n bubbles: false,\n cancelable: false\n });\n const firstPointer = this.pointers.values().next().value;\n if (this.pointers.size > 0 && firstPointer) {\n // If there are active pointers, use the first one as a template for coordinates\n\n // Update the synthetic event with the pointer's coordinates\n Object.defineProperties(cancelEvent, {\n clientX: {\n value: firstPointer.clientX\n },\n clientY: {\n value: firstPointer.clientY\n },\n pointerId: {\n value: firstPointer.pointerId\n },\n pointerType: {\n value: firstPointer.pointerType\n }\n });\n\n // Force update of all pointers to have type 'forceCancel'\n for (const [pointerId, pointer] of this.pointers.entries()) {\n const updatedPointer = _extends({}, pointer, {\n type: 'forceCancel'\n });\n this.pointers.set(pointerId, updatedPointer);\n }\n }\n\n // Notify all handlers about the interruption\n this.notifyHandlers(cancelEvent);\n\n // Clear all pointers\n this.pointers.clear();\n };\n\n /**\n * Event handler for all pointer events.\n *\n * This method:\n * 1. Updates the internal pointers map based on the event type\n * 2. Manages pointer capture for tracking pointers outside the root element\n * 3. Notifies all registered handlers with the current state\n *\n * @param event - The original pointer event from the browser\n */\n handlePointerEvent = event => {\n const {\n type,\n pointerId\n } = event;\n\n // Create or update pointer data\n if (type === 'pointerdown' || type === 'pointermove') {\n this.pointers.set(pointerId, this.createPointerData(event));\n }\n // Remove pointer data on up or cancel\n else if (type === 'pointerup' || type === 'pointercancel' || type === 'forceCancel') {\n // Update one last time before removing\n this.pointers.set(pointerId, this.createPointerData(event));\n\n // Notify handlers with current state\n this.notifyHandlers(event);\n\n // Then remove the pointer\n this.pointers.delete(pointerId);\n return;\n }\n this.notifyHandlers(event);\n };\n\n /**\n * Notify all registered gesture handlers about a pointer event.\n *\n * Each handler receives the current map of active pointers and the original event.\n *\n * @param event - The original pointer event that triggered this notification\n */\n notifyHandlers(event) {\n this.gestureHandlers.forEach(handler => handler(this.pointers, event));\n }\n\n /**\n * Create a normalized PointerData object from a browser PointerEvent.\n *\n * This method extracts all relevant information from the original event\n * and formats it in a consistent way for gesture recognizers to use.\n *\n * @param event - The original browser pointer event\n * @returns A new PointerData object representing this pointer\n */\n createPointerData(event) {\n return {\n pointerId: event.pointerId,\n clientX: event.clientX,\n clientY: event.clientY,\n pageX: event.pageX,\n pageY: event.pageY,\n target: event.target,\n timeStamp: event.timeStamp,\n type: event.type,\n isPrimary: event.isPrimary,\n pressure: event.pressure,\n width: event.width,\n height: event.height,\n pointerType: event.pointerType,\n srcEvent: event\n };\n }\n\n /**\n * Clean up all event listeners and reset the PointerManager state.\n *\n * This method should be called when the PointerManager is no longer needed\n * to prevent memory leaks. It removes all event listeners, clears the\n * internal state, and resets the singleton instance.\n */\n destroy() {\n this.root.removeEventListener('pointerdown', this.handlePointerEvent);\n this.root.removeEventListener('pointermove', this.handlePointerEvent);\n this.root.removeEventListener('pointerup', this.handlePointerEvent);\n this.root.removeEventListener('pointercancel', this.handlePointerEvent);\n // @ts-expect-error, forceCancel is not a standard event, but used for custom handling\n this.root.removeEventListener('forceCancel', this.handlePointerEvent);\n this.root.removeEventListener('blur', this.handleInterruptEvents);\n this.root.removeEventListener('contextmenu', this.handleInterruptEvents);\n this.pointers.clear();\n this.gestureHandlers.clear();\n }\n}","import { ActiveGesturesRegistry } from \"./ActiveGesturesRegistry.js\";\nimport { KeyboardManager } from \"./KeyboardManager.js\";\nimport { PointerManager } from \"./PointerManager.js\";\n\n/**\n * Configuration options for initializing the GestureManager\n */\n\n/**\n * The primary class responsible for setting up and managing gestures across multiple elements.\n *\n * GestureManager maintains a collection of gesture templates that can be instantiated for\n * specific DOM elements. It handles lifecycle management, event dispatching, and cleanup.\n *\n * @example\n * ```typescript\n * // Basic setup with default gestures\n * const manager = new GestureManager({\n * root: document.body,\n * touchAction: 'none',\n * gestures: [\n * new PanGesture({ name: 'pan' }),\n * ],\n * });\n *\n * // Register pan gestures on an element\n * const element = manager.registerElement('pan', document.querySelector('.draggable'));\n *\n * // Add event listeners with proper typing\n * element.addEventListener('panStart', (event) => {\n * console.log('Pan started');\n * });\n *\n * element.addEventListener('pan', (event) => {\n * console.log(`Pan delta: ${event.deltaX}, ${event.deltaY}`);\n * });\n *\n * // Custom gesture types\n * interface MyGestureEvents {\n * custom: { x: number, y: number }\n * }\n * const customManager = new GestureManager({\n * root: document.body\n * gestures: [\n * new CustomGesture({ name: 'custom' }),\n * ],\n * });\n * ```\n */\nexport class GestureManager {\n /** Repository of gesture templates that can be cloned for specific elements */\n gestureTemplates = (() => new Map())();\n\n /** Maps DOM elements to their active gesture instances */\n elementGestureMap = (() => new Map())();\n activeGesturesRegistry = (() => new ActiveGesturesRegistry())();\n keyboardManager = (() => new KeyboardManager())();\n\n /**\n * Create a new GestureManager instance to coordinate gesture recognition\n *\n * @param options - Configuration options for the gesture manager\n */\n constructor(options) {\n // Initialize the PointerManager\n this.pointerManager = new PointerManager({\n root: options.root,\n touchAction: options.touchAction,\n passive: options.passive\n });\n\n // Add initial gestures as templates if provided\n if (options.gestures && options.gestures.length > 0) {\n options.gestures.forEach(gesture => {\n this.addGestureTemplate(gesture);\n });\n }\n }\n\n /**\n * Add a gesture template to the manager's template registry.\n * Templates serve as prototypes that can be cloned for individual elements.\n *\n * @param gesture - The gesture instance to use as a template\n */\n addGestureTemplate(gesture) {\n if (this.gestureTemplates.has(gesture.name)) {\n console.warn(`Gesture template with name \"${gesture.name}\" already exists. It will be overwritten.`);\n }\n this.gestureTemplates.set(gesture.name, gesture);\n }\n\n /**\n * Updates the options for a specific gesture on a given element and emits a change event.\n *\n * @param gestureName - Name of the gesture whose options should be updated\n * @param element - The DOM element where the gesture is attached\n * @param options - New options to apply to the gesture\n * @returns True if the options were successfully updated, false if the gesture wasn't found\n *\n * @example\n * ```typescript\n * // Update pan gesture sensitivity on the fly\n * manager.setGestureOptions('pan', element, { threshold: 5 });\n * ```\n */\n setGestureOptions(gestureName, element, options) {\n const elementGestures = this.elementGestureMap.get(element);\n if (!elementGestures || !elementGestures.has(gestureName)) {\n console.error(`Gesture \"${gestureName}\" not found on the provided element.`);\n return;\n }\n const event = new CustomEvent(`${gestureName}ChangeOptions`, {\n detail: options,\n bubbles: false,\n cancelable: false,\n composed: false\n });\n element.dispatchEvent(event);\n }\n\n /**\n * Updates the state for a specific gesture on a given element and emits a change event.\n *\n * @param gestureName - Name of the gesture whose state should be updated\n * @param element - The DOM element where the gesture is attached\n * @param state - New state to apply to the gesture\n * @returns True if the state was successfully updated, false if the gesture wasn't found\n *\n * @example\n * ```typescript\n * // Update total delta for a turnWheel gesture\n * manager.setGestureState('turnWheel', element, { totalDeltaX: 10 });\n * ```\n */\n setGestureState(gestureName, element, state) {\n const elementGestures = this.elementGestureMap.get(element);\n if (!elementGestures || !elementGestures.has(gestureName)) {\n console.error(`Gesture \"${gestureName}\" not found on the provided element.`);\n return;\n }\n const event = new CustomEvent(`${gestureName}ChangeState`, {\n detail: state,\n bubbles: false,\n cancelable: false,\n composed: false\n });\n element.dispatchEvent(event);\n }\n\n /**\n * Register an element to recognize one or more gestures.\n *\n * This method clones the specified gesture template(s) and creates\n * gesture recognizer instance(s) specifically for the provided element.\n * The element is returned with enhanced TypeScript typing for gesture events.\n *\n * @param gestureNames - Name(s) of the gesture(s) to register (must match template names)\n * @param element - The DOM element to attach the gesture(s) to\n * @param options - Optional map of gesture-specific options to override when registering\n * @returns The same element with properly typed event listeners\n *\n * @example\n * ```typescript\n * // Register multiple gestures\n * const element = manager.registerElement(['pan', 'pinch'], myDiv);\n *\n * // Register a single gesture\n * const draggable = manager.registerElement('pan', dragHandle);\n *\n * // Register with customized options for each gesture\n * const customElement = manager.registerElement(\n * ['pan', 'pinch', 'rotate'],\n * myElement,\n * {\n * pan: { threshold: 20, direction: ['left', 'right'] },\n * pinch: { threshold: 0.1 }\n * }\n * );\n * ```\n */\n registerElement(gestureNames, element, options) {\n // Handle array of gesture names\n if (!Array.isArray(gestureNames)) {\n gestureNames = [gestureNames];\n }\n gestureNames.forEach(name => {\n const gestureOptions = options?.[name];\n this.registerSingleGesture(name, element, gestureOptions);\n });\n return element;\n }\n\n /**\n * Internal method to register a single gesture on an element.\n *\n * @param gestureName - Name of the gesture to register\n * @param element - DOM element to attach the gesture to\n * @param options - Optional options to override the gesture template configuration\n * @returns True if the registration was successful, false otherwise\n */\n registerSingleGesture(gestureName, element, options) {\n // Find the gesture template\n const gestureTemplate = this.gestureTemplates.get(gestureName);\n if (!gestureTemplate) {\n console.error(`Gesture template \"${gestureName}\" not found.`);\n return false;\n }\n\n // Create element's gesture map if it doesn't exist\n if (!this.elementGestureMap.has(element)) {\n this.elementGestureMap.set(element, new Map());\n }\n\n // Check if this element already has this gesture registered\n const elementGestures = this.elementGestureMap.get(element);\n if (elementGestures.has(gestureName)) {\n console.warn(`Element already has gesture \"${gestureName}\" registered. It will be replaced.`);\n // Unregister the existing gesture first\n this.unregisterElement(gestureName, element);\n }\n\n // Clone the gesture template and create a new instance with optional overrides\n // This allows each element to have its own state, event listeners, and configuration\n const gestureInstance = gestureTemplate.clone(options);\n gestureInstance.init(element, this.pointerManager, this.activeGesturesRegistry, this.keyboardManager);\n\n // Store the gesture in the element's gesture map\n elementGestures.set(gestureName, gestureInstance);\n return true;\n }\n\n /**\n * Unregister a specific gesture from an element.\n * This removes the gesture recognizer and stops event emission for that gesture.\n *\n * @param gestureName - Name of the gesture to unregister\n * @param element - The DOM element to remove the gesture from\n * @returns True if the gesture was found and removed, false otherwise\n */\n unregisterElement(gestureName, element) {\n const elementGestures = this.elementGestureMap.get(element);\n if (!elementGestures || !elementGestures.has(gestureName)) {\n return false;\n }\n\n // Destroy the gesture instance\n const gesture = elementGestures.get(gestureName);\n gesture.destroy();\n\n // Remove from the map\n elementGestures.delete(gestureName);\n this.activeGesturesRegistry.unregisterElement(element);\n\n // Remove the element from the map if it no longer has any gestures\n if (elementGestures.size === 0) {\n this.elementGestureMap.delete(element);\n }\n return true;\n }\n\n /**\n * Unregister all gestures from an element.\n * Completely removes the element from the gesture system.\n *\n * @param element - The DOM element to remove all gestures from\n */\n unregisterAllGestures(element) {\n const elementGestures = this.elementGestureMap.get(element);\n if (elementGestures) {\n // Unregister all gestures for this element\n for (const [, gesture] of elementGestures) {\n gesture.destroy();\n this.activeGesturesRegistry.unregisterElement(element);\n }\n\n // Clear the map\n this.elementGestureMap.delete(element);\n }\n }\n\n /**\n * Clean up all gestures and event listeners.\n * Call this method when the GestureManager is no longer needed to prevent memory leaks.\n */\n destroy() {\n // Unregister all element gestures\n for (const [element] of this.elementGestureMap) {\n this.unregisterAllGestures(element);\n }\n\n // Clear all templates\n this.gestureTemplates.clear();\n this.elementGestureMap.clear();\n this.activeGesturesRegistry.destroy();\n this.keyboardManager.destroy();\n this.pointerManager.destroy();\n }\n}","export const eventList = {\n abort: true,\n animationcancel: true,\n animationend: true,\n animationiteration: true,\n animationstart: true,\n auxclick: true,\n beforeinput: true,\n beforetoggle: true,\n blur: true,\n cancel: true,\n canplay: true,\n canplaythrough: true,\n change: true,\n click: true,\n close: true,\n compositionend: true,\n compositionstart: true,\n compositionupdate: true,\n contextlost: true,\n contextmenu: true,\n contextrestored: true,\n copy: true,\n cuechange: true,\n cut: true,\n dblclick: true,\n drag: true,\n dragend: true,\n dragenter: true,\n dragleave: true,\n dragover: true,\n dragstart: true,\n drop: true,\n durationchange: true,\n emptied: true,\n ended: true,\n error: true,\n focus: true,\n focusin: true,\n focusout: true,\n formdata: true,\n gotpointercapture: true,\n input: true,\n invalid: true,\n keydown: true,\n keypress: true,\n keyup: true,\n load: true,\n loadeddata: true,\n loadedmetadata: true,\n loadstart: true,\n lostpointercapture: true,\n mousedown: true,\n mouseenter: true,\n mouseleave: true,\n mousemove: true,\n mouseout: true,\n mouseover: true,\n mouseup: true,\n paste: true,\n pause: true,\n play: true,\n playing: true,\n pointercancel: true,\n pointerdown: true,\n pointerenter: true,\n pointerleave: true,\n pointermove: true,\n pointerout: true,\n pointerover: true,\n pointerup: true,\n progress: true,\n ratechange: true,\n reset: true,\n resize: true,\n scroll: true,\n scrollend: true,\n securitypolicyviolation: true,\n seeked: true,\n seeking: true,\n select: true,\n selectionchange: true,\n selectstart: true,\n slotchange: true,\n stalled: true,\n submit: true,\n suspend: true,\n timeupdate: true,\n toggle: true,\n touchcancel: true,\n touchend: true,\n touchmove: true,\n touchstart: true,\n transitioncancel: true,\n transitionend: true,\n transitionrun: true,\n transitionstart: true,\n volumechange: true,\n waiting: true,\n webkitanimationend: true,\n webkitanimationiteration: true,\n webkitanimationstart: true,\n webkittransitionend: true,\n wheel: true,\n beforematch: true,\n pointerrawupdate: true\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Base Gesture module that provides common functionality for all gesture implementations\n */\n\nimport { eventList } from \"./utils/eventList.js\";\n\n/**\n * The possible phases of a gesture during its lifecycle.\n *\n * - 'start': The gesture has been recognized and is beginning\n * - 'ongoing': The gesture is in progress (e.g., a finger is moving)\n * - 'end': The gesture has completed successfully\n * - 'cancel': The gesture was interrupted or terminated abnormally\n */\n\n/**\n * Core data structure passed to gesture event handlers.\n * Contains all relevant information about a gesture event.\n */\n\n/**\n * Defines the types of pointers that can trigger a gesture.\n */\n\n/**\n * Base configuration options that can be overridden per pointer mode.\n */\n\n/**\n * Configuration options for creating a gesture instance.\n */\n\n// eslint-disable-next-line no-underscore-dangle, @typescript-eslint/naming-convention\n\n/**\n * Type for the state of a gesture recognizer.\n */\n\n/**\n * Base abstract class for all gestures. This class provides the fundamental structure\n * and functionality for handling gestures, including registering and unregistering\n * gesture handlers, creating emitters, and managing gesture state.\n *\n * Gesture is designed as an extensible base for implementing specific gesture recognizers.\n * Concrete gesture implementations should extend this class or one of its subclasses.\n *\n * To implement:\n * - Non-pointer gestures (like wheel events): extend this Gesture class directly\n * - Pointer-based gestures: extend the PointerGesture class instead\n *\n * @example\n * ```ts\n * import { Gesture } from './Gesture';\n *\n * class CustomGesture extends Gesture {\n * constructor(options) {\n * super(options);\n * }\n *\n * clone(overrides) {\n * return new CustomGesture({\n * name: this.name,\n * // ... other options\n * ...overrides,\n * });\n * }\n * }\n * ```\n */\nexport class Gesture {\n /** Unique name identifying this gesture type */\n\n /** Whether to prevent default browser action for gesture events */\n\n /** Whether to stop propagation of gesture events */\n\n /**\n * List of gesture names that should prevent this gesture from activating when they are active.\n */\n\n /**\n * Array of keyboard keys that must be pressed for the gesture to be recognized.\n */\n\n /**\n * KeyboardManager instance for tracking key presses\n */\n\n /**\n * List of pointer types that can trigger this gesture.\n * If undefined, all pointer types are allowed.\n */\n\n /**\n * Pointer mode-specific configuration overrides.\n */\n\n /**\n * User-mutable data object for sharing state between gesture events\n * This object is included in all events emitted by this gesture\n */\n customData = {};\n\n /** Reference to the singleton PointerManager instance */\n\n /** Reference to the singleton ActiveGesturesRegistry instance */\n\n /** The DOM element this gesture is attached to */\n\n /** Stores the active gesture state */\n\n /** @internal For types. If false enables phases (xStart, x, xEnd) */\n\n /** @internal For types. The event type this gesture is associated with */\n\n /** @internal For types. The options type for this gesture */\n\n /** @internal For types. The options that can be changed at runtime */\n\n /** @internal For types. The state that can be changed at runtime */\n\n /**\n * Create a new gesture instance with the specified options\n *\n * @param options - Configuration options for this gesture\n */\n constructor(options) {\n if (!options || !options.name) {\n throw new Error('Gesture must be initialized with a valid name.');\n }\n if (options.name in eventList) {\n throw new Error(`Gesture can't be created with a native event name. Tried to use \"${options.name}\". Please use a custom name instead.`);\n }\n this.name = options.name;\n this.preventDefault = options.preventDefault ?? false;\n this.stopPropagation = options.stopPropagation ?? false;\n this.preventIf = options.preventIf ?? [];\n this.requiredKeys = options.requiredKeys ?? [];\n this.pointerMode = options.pointerMode ?? [];\n this.pointerOptions = options.pointerOptions ?? {};\n }\n\n /**\n * Initialize the gesture by acquiring the pointer manager and gestures registry\n * Must be called before the gesture can be used\n */\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n this.element = element;\n this.pointerManager = pointerManager;\n this.gesturesRegistry = gestureRegistry;\n this.keyboardManager = keyboardManager;\n const changeOptionsEventName = `${this.name}ChangeOptions`;\n this.element.addEventListener(changeOptionsEventName, this.handleOptionsChange);\n const changeStateEventName = `${this.name}ChangeState`;\n this.element.addEventListener(changeStateEventName, this.handleStateChange);\n }\n\n /**\n * Handle option change events\n * @param event Custom event with new options in the detail property\n */\n handleOptionsChange = event => {\n if (event && event.detail) {\n this.updateOptions(event.detail);\n }\n };\n\n /**\n * Update the gesture options with new values\n * @param options Object containing properties to update\n */\n updateOptions(options) {\n // Update common options\n this.preventDefault = options.preventDefault ?? this.preventDefault;\n this.stopPropagation = options.stopPropagation ?? this.stopPropagation;\n this.preventIf = options.preventIf ?? this.preventIf;\n this.requiredKeys = options.requiredKeys ?? this.requiredKeys;\n this.pointerMode = options.pointerMode ?? this.pointerMode;\n this.pointerOptions = options.pointerOptions ?? this.pointerOptions;\n }\n\n /**\n * Get the default configuration for the pointer specific options.\n * Change this function in child classes to provide different defaults.\n */\n getBaseConfig() {\n return {\n requiredKeys: this.requiredKeys\n };\n }\n\n /**\n * Get the effective configuration for a specific pointer mode.\n * This merges the base configuration with pointer mode-specific overrides.\n *\n * @param pointerType - The pointer type to get configuration for\n * @returns The effective configuration object\n */\n getEffectiveConfig(pointerType, baseConfig) {\n if (pointerType !== 'mouse' && pointerType !== 'touch' && pointerType !== 'pen') {\n // Unknown pointer type, return base config\n return baseConfig;\n }\n\n // Apply pointer mode-specific overrides\n const pointerModeOverrides = this.pointerOptions[pointerType];\n if (pointerModeOverrides) {\n return _extends({}, baseConfig, pointerModeOverrides);\n }\n return baseConfig;\n }\n\n /**\n * Handle state change events\n * @param event Custom event with new state values in the detail property\n */\n handleStateChange = event => {\n if (event && event.detail) {\n this.updateState(event.detail);\n }\n };\n\n /**\n * Update the gesture state with new values\n * @param stateChanges Object containing state properties to update\n */\n updateState(stateChanges) {\n // This is a base implementation - concrete gesture classes should override\n // to handle specific state updates based on their state structure\n Object.assign(this.state, stateChanges);\n }\n\n /**\n * Create a deep clone of this gesture for a new element\n *\n * @param overrides - Optional configuration options that override the defaults\n * @returns A new instance of this gesture with the same configuration and any overrides applied\n */\n\n /**\n * Check if the event's target is or is contained within any of our registered elements\n *\n * @param event - The browser event to check\n * @returns The matching element or null if no match is found\n */\n getTargetElement(event) {\n if (this.isActive || this.element === event.target || 'contains' in this.element && this.element.contains(event.target) || 'getRootNode' in this.element && this.element.getRootNode() instanceof ShadowRoot && event.composedPath().includes(this.element)) {\n return this.element;\n }\n return null;\n }\n\n /** Whether the gesture is currently active */\n set isActive(isActive) {\n if (isActive) {\n this.gesturesRegistry.registerActiveGesture(this.element, this);\n } else {\n this.gesturesRegistry.unregisterActiveGesture(this.element, this);\n }\n }\n\n /** Whether the gesture is currently active */\n get isActive() {\n return this.gesturesRegistry.isGestureActive(this.element, this) ?? false;\n }\n\n /**\n * Checks if this gesture should be prevented from activating.\n *\n * @param element - The DOM element to check against\n * @param pointerType - The type of pointer triggering the gesture\n * @returns true if the gesture should be prevented, false otherwise\n */\n shouldPreventGesture(element, pointerType) {\n // Get effective configuration for this pointer type\n const effectiveConfig = this.getEffectiveConfig(pointerType, this.getBaseConfig());\n\n // First check if required keyboard keys are pressed\n if (!this.keyboardManager.areKeysPressed(effectiveConfig.requiredKeys)) {\n return true; // Prevent the gesture if required keys are not pressed\n }\n if (this.preventIf.length === 0) {\n return false; // No prevention rules, allow the gesture\n }\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Check if any of the gestures that would prevent this one are active\n return this.preventIf.some(gestureName => activeGestures[gestureName]);\n }\n\n /**\n * Checks if the given pointer type is allowed for this gesture based on the pointerMode setting.\n *\n * @param pointerType - The type of pointer to check.\n * @returns true if the pointer type is allowed, false otherwise.\n */\n isPointerTypeAllowed(pointerType) {\n // If no pointer mode is specified, all pointer types are allowed\n if (!this.pointerMode || this.pointerMode.length === 0) {\n return true;\n }\n\n // Check if the pointer type is in the allowed types list\n return this.pointerMode.includes(pointerType);\n }\n\n /**\n * Clean up the gesture and unregister any listeners\n * Call this method when the gesture is no longer needed to prevent memory leaks\n */\n destroy() {\n const changeOptionsEventName = `${this.name}ChangeOptions`;\n this.element.removeEventListener(changeOptionsEventName, this.handleOptionsChange);\n const changeStateEventName = `${this.name}ChangeState`;\n this.element.removeEventListener(changeStateEventName, this.handleStateChange);\n }\n\n /**\n * Reset the gesture state to its initial values\n */\n}","import { Gesture } from \"./Gesture.js\";\n\n/**\n * Base configuration options that can be overridden per pointer mode.\n */\n\n/**\n * Configuration options for pointer-based gestures, extending the base GestureOptions.\n *\n * These options provide fine-grained control over how pointer events are interpreted\n * and when the gesture should be recognized.\n */\n\n/**\n * Base class for all pointer-based gestures.\n *\n * This class extends the base Gesture class with specialized functionality for\n * handling pointer events via the PointerManager. It provides common logic for\n * determining when a gesture should activate, tracking pointer movements, and\n * managing pointer thresholds.\n *\n * All pointer-based gesture implementations should extend this class rather than\n * the base Gesture class.\n *\n * @example\n * ```ts\n * import { PointerGesture } from './PointerGesture';\n *\n * class CustomGesture extends PointerGesture {\n * constructor(options) {\n * super(options);\n * }\n *\n * clone(overrides) {\n * return new CustomGesture({\n * name: this.name,\n * // ... other options\n * ...overrides,\n * });\n * }\n *\n * handlePointerEvent = (pointers, event) => {\n * // Handle pointer events here\n * }\n * }\n * ```\n */\nexport class PointerGesture extends Gesture {\n /** Function to unregister from the PointerManager when destroying this gesture */\n unregisterHandler = null;\n\n /** The original target element when the gesture began, used to prevent limbo state if target is removed */\n originalTarget = null;\n\n /**\n * Minimum number of simultaneous pointers required to activate the gesture.\n * The gesture will not start until at least this many pointers are active.\n */\n\n /**\n * Maximum number of simultaneous pointers allowed for this gesture.\n * If more than this many pointers are detected, the gesture may be canceled.\n */\n\n constructor(options) {\n super(options);\n this.minPointers = options.minPointers ?? 1;\n this.maxPointers = options.maxPointers ?? Infinity;\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.unregisterHandler = this.pointerManager.registerGestureHandler(this.handlePointerEvent);\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.minPointers = options.minPointers ?? this.minPointers;\n this.maxPointers = options.maxPointers ?? this.maxPointers;\n }\n getBaseConfig() {\n return {\n requiredKeys: this.requiredKeys,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers\n };\n }\n isWithinPointerCount(pointers, pointerMode) {\n const config = this.getEffectiveConfig(pointerMode, this.getBaseConfig());\n return pointers.length >= config.minPointers && pointers.length <= config.maxPointers;\n }\n\n /**\n * Handler for pointer events from the PointerManager.\n * Concrete gesture implementations must override this method to provide\n * gesture-specific logic for recognizing and tracking the gesture.\n *\n * @param pointers - Map of active pointers by pointer ID\n * @param event - The original pointer event from the browser\n */\n\n /**\n * Calculate the target element for the gesture based on the active pointers.\n *\n * It takes into account the original target element.\n *\n * @param pointers - Map of active pointers by pointer ID\n * @param calculatedTarget - The target element calculated from getTargetElement\n * @returns A list of relevant pointers for this gesture\n */\n getRelevantPointers(pointers, calculatedTarget) {\n return pointers.filter(pointer => this.isPointerTypeAllowed(pointer.pointerType) && (calculatedTarget === pointer.target || pointer.target === this.originalTarget || calculatedTarget === this.originalTarget || 'contains' in calculatedTarget && calculatedTarget.contains(pointer.target)) || 'getRootNode' in calculatedTarget && calculatedTarget.getRootNode() instanceof ShadowRoot && pointer.srcEvent.composedPath().includes(calculatedTarget));\n }\n destroy() {\n if (this.unregisterHandler) {\n this.unregisterHandler();\n this.unregisterHandler = null;\n }\n super.destroy();\n }\n}","/**\n * Calculate the centroid (average position) of multiple pointers\n */\nexport function calculateCentroid(pointers) {\n if (pointers.length === 0) {\n return {\n x: 0,\n y: 0\n };\n }\n const sum = pointers.reduce((acc, pointer) => {\n acc.x += pointer.clientX;\n acc.y += pointer.clientY;\n return acc;\n }, {\n x: 0,\n y: 0\n });\n return {\n x: sum.x / pointers.length,\n y: sum.y / pointers.length\n };\n}","const MAIN_THRESHOLD = 0.00001;\nconst ANGLE_THRESHOLD = 0.00001;\nconst SECONDARY_THRESHOLD = 0.15;\n\n/**\n * Get the direction of movement based on the current and previous positions\n */\nexport function getDirection(previous, current) {\n const deltaX = current.x - previous.x;\n const deltaY = current.y - previous.y;\n const direction = {\n vertical: null,\n horizontal: null,\n mainAxis: null\n };\n const isDiagonal = isDiagonalMovement(current, previous);\n const mainMovement = Math.abs(deltaX) > Math.abs(deltaY) ? 'horizontal' : 'vertical';\n\n // eslint-disable-next-line no-nested-ternary\n const horizontalThreshold = isDiagonal ? MAIN_THRESHOLD : mainMovement === 'horizontal' ? MAIN_THRESHOLD : SECONDARY_THRESHOLD;\n // eslint-disable-next-line no-nested-ternary\n const verticalThreshold = isDiagonal ? MAIN_THRESHOLD : mainMovement === 'horizontal' ? SECONDARY_THRESHOLD : MAIN_THRESHOLD;\n\n // Set horizontal direction if there's a significant movement horizontally\n if (Math.abs(deltaX) > horizontalThreshold) {\n // Small threshold to avoid noise\n direction.horizontal = deltaX > 0 ? 'right' : 'left';\n }\n\n // Set vertical direction if there's a significant movement vertically\n if (Math.abs(deltaY) > verticalThreshold) {\n // Small threshold to avoid noise\n direction.vertical = deltaY > 0 ? 'down' : 'up';\n }\n direction.mainAxis = isDiagonal ? 'diagonal' : mainMovement;\n return direction;\n}\nfunction isDiagonalMovement(previous, current) {\n const deltaX = current.x - previous.x;\n const deltaY = current.y - previous.y;\n\n // Calculate the angle of movement\n const angle = Math.atan2(deltaY, deltaX) * 180 / Math.PI;\n\n // Check if the angle is within the diagonal range\n return angle >= -45 + ANGLE_THRESHOLD && angle <= -22.5 + ANGLE_THRESHOLD || angle >= 22.5 + ANGLE_THRESHOLD && angle <= 45 + ANGLE_THRESHOLD || angle >= 135 + ANGLE_THRESHOLD && angle <= 157.5 + ANGLE_THRESHOLD || angle >= -157.5 + ANGLE_THRESHOLD && angle <= -135 + ANGLE_THRESHOLD;\n}","/**\n * Creates the event name for a specific gesture and phase\n */\nexport function createEventName(gesture, phase) {\n return `${gesture}${phase === 'ongoing' ? '' : phase.charAt(0).toUpperCase() + phase.slice(1)}`;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PanGesture - Detects panning (dragging) movements\n *\n * This gesture tracks pointer dragging movements across elements, firing events when:\n * - The drag movement begins and passes the threshold distance (start)\n * - The drag movement continues (ongoing)\n * - The drag movement ends (end)\n *\n * The gesture can be configured to recognize movement only in specific directions.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName, getDirection, isDirectionAllowed } from \"../utils/index.js\";\n\n/**\n * Configuration options for PanGesture\n * Extends PointerGestureOptions with direction constraints\n */\n\n/**\n * Event data specific to pan gesture events\n * Contains information about movement distance, direction, and velocity\n */\n\n/**\n * Type definition for the CustomEvent created by PanGesture\n */\n\n/**\n * State tracking for the PanGesture\n */\n\n/**\n * PanGesture class for handling panning/dragging interactions\n *\n * This gesture detects when users drag across elements with one or more pointers,\n * and dispatches directional movement events with delta and velocity information.\n */\nexport class PanGesture extends PointerGesture {\n state = (() => ({\n startPointers: new Map(),\n startCentroid: null,\n lastCentroid: null,\n movementThresholdReached: false,\n totalDeltaX: 0,\n totalDeltaY: 0,\n activeDeltaX: 0,\n activeDeltaY: 0,\n lastDirection: {\n vertical: null,\n horizontal: null,\n mainAxis: null\n },\n lastDeltas: null\n }))();\n\n /**\n * Movement threshold in pixels that must be exceeded before the gesture activates.\n * Higher values reduce false positive gesture detection for small movements.\n */\n\n /**\n * Allowed directions for the pan gesture\n * Default allows all directions\n */\n\n constructor(options) {\n super(options);\n this.direction = options.direction || ['up', 'down', 'left', 'right'];\n this.threshold = options.threshold || 0;\n }\n clone(overrides) {\n return new PanGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n threshold: this.threshold,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n direction: [...this.direction],\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n destroy() {\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.direction = options.direction || this.direction;\n this.threshold = options.threshold ?? this.threshold;\n }\n resetState() {\n this.isActive = false;\n this.state = _extends({}, this.state, {\n startPointers: new Map(),\n startCentroid: null,\n lastCentroid: null,\n lastDeltas: null,\n activeDeltaX: 0,\n activeDeltaY: 0,\n movementThresholdReached: false,\n lastDirection: {\n vertical: null,\n horizontal: null,\n mainAxis: null\n }\n });\n }\n\n /**\n * Handle pointer events for the pan gesture\n */\n handlePointerEvent = (pointers, event) => {\n const pointersArray = Array.from(pointers.values());\n\n // Check for our forceCancel event to handle interrupted gestures (from contextmenu, blur)\n if (event.type === 'forceCancel') {\n // Reset all active pan gestures when we get a force reset event\n this.cancel(event.target, pointersArray, event);\n return;\n }\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(targetElement, event.pointerType)) {\n // If the gesture was active but now should be prevented, cancel it gracefully\n this.cancel(targetElement, pointersArray, event);\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n if (!this.isWithinPointerCount(relevantPointers, event.pointerType)) {\n // Cancel or end the gesture if it was active\n this.cancel(targetElement, relevantPointers, event);\n return;\n }\n switch (event.type) {\n case 'pointerdown':\n if (!this.isActive && !this.state.startCentroid) {\n // Store initial pointers\n relevantPointers.forEach(pointer => {\n this.state.startPointers.set(pointer.pointerId, pointer);\n });\n\n // Store the original target element\n this.originalTarget = targetElement;\n\n // Calculate and store the starting centroid\n this.state.startCentroid = calculateCentroid(relevantPointers);\n this.state.lastCentroid = _extends({}, this.state.startCentroid);\n } else if (this.state.startCentroid && this.state.lastCentroid) {\n // A new pointer was added during an active gesture\n // Adjust the start centroid to prevent jumping\n const oldCentroid = this.state.lastCentroid;\n const newCentroid = calculateCentroid(relevantPointers);\n\n // Calculate the offset that the new pointer would cause\n const offsetX = newCentroid.x - oldCentroid.x;\n const offsetY = newCentroid.y - oldCentroid.y;\n\n // Adjust start centroid to compensate for the new pointer\n this.state.startCentroid = {\n x: this.state.startCentroid.x + offsetX,\n y: this.state.startCentroid.y + offsetY\n };\n this.state.lastCentroid = newCentroid;\n\n // Add the new pointer to tracked pointers\n relevantPointers.forEach(pointer => {\n if (!this.state.startPointers.has(pointer.pointerId)) {\n this.state.startPointers.set(pointer.pointerId, pointer);\n }\n });\n }\n break;\n case 'pointermove':\n if (this.state.startCentroid && this.isWithinPointerCount(pointersArray, event.pointerType)) {\n // Calculate current centroid\n const currentCentroid = calculateCentroid(relevantPointers);\n\n // Calculate delta from start\n const distanceDeltaX = currentCentroid.x - this.state.startCentroid.x;\n const distanceDeltaY = currentCentroid.y - this.state.startCentroid.y;\n\n // Calculate movement distance\n const distance = Math.sqrt(distanceDeltaX * distanceDeltaX + distanceDeltaY * distanceDeltaY);\n\n // Determine movement direction\n const moveDirection = getDirection(this.state.lastCentroid ?? this.state.startCentroid, currentCentroid);\n\n // Calculate change in position since last move\n const lastDeltaX = this.state.lastCentroid ? currentCentroid.x - this.state.lastCentroid.x : 0;\n const lastDeltaY = this.state.lastCentroid ? currentCentroid.y - this.state.lastCentroid.y : 0;\n\n // Check if movement passes the threshold and is in an allowed direction\n if (!this.state.movementThresholdReached && distance >= this.threshold && isDirectionAllowed(moveDirection, this.direction)) {\n this.state.movementThresholdReached = true;\n this.isActive = true;\n\n // Update total accumulated delta\n this.state.lastDeltas = {\n x: lastDeltaX,\n y: lastDeltaY\n };\n this.state.totalDeltaX += lastDeltaX;\n this.state.totalDeltaY += lastDeltaY;\n this.state.activeDeltaX += lastDeltaX;\n this.state.activeDeltaY += lastDeltaY;\n\n // Emit start event\n this.emitPanEvent(targetElement, 'start', relevantPointers, event, currentCentroid);\n this.emitPanEvent(targetElement, 'ongoing', relevantPointers, event, currentCentroid);\n }\n // If we've already crossed the threshold, continue tracking\n else if (this.state.movementThresholdReached && this.isActive) {\n // Update total accumulated delta\n this.state.lastDeltas = {\n x: lastDeltaX,\n y: lastDeltaY\n };\n this.state.totalDeltaX += lastDeltaX;\n this.state.totalDeltaY += lastDeltaY;\n this.state.activeDeltaX += lastDeltaX;\n this.state.activeDeltaY += lastDeltaY;\n\n // Emit ongoing event\n this.emitPanEvent(targetElement, 'ongoing', relevantPointers, event, currentCentroid);\n }\n\n // Update last centroid\n this.state.lastCentroid = currentCentroid;\n this.state.lastDirection = moveDirection;\n }\n break;\n case 'pointerup':\n case 'pointercancel':\n case 'forceCancel':\n // If the gesture was active (threshold was reached), emit end event\n if (this.isActive && this.state.movementThresholdReached) {\n const remainingPointers = relevantPointers.filter(p => p.type !== 'pointerup' && p.type !== 'pointercancel');\n\n // If we no longer meet the pointer count requirements, end the gesture\n if (!this.isWithinPointerCount(remainingPointers, event.pointerType)) {\n // End the gesture\n const currentCentroid = this.state.lastCentroid || this.state.startCentroid;\n if (event.type === 'pointercancel') {\n this.emitPanEvent(targetElement, 'cancel', relevantPointers, event, currentCentroid);\n }\n this.emitPanEvent(targetElement, 'end', relevantPointers, event, currentCentroid);\n this.resetState();\n } else if (remainingPointers.length >= 1 && this.state.lastCentroid) {\n // If we still have enough pointers, adjust the centroid\n // to prevent jumping when a finger is lifted\n const newCentroid = calculateCentroid(remainingPointers);\n\n // Calculate the offset that removing the pointer would cause\n const offsetX = newCentroid.x - this.state.lastCentroid.x;\n const offsetY = newCentroid.y - this.state.lastCentroid.y;\n\n // Adjust start centroid to compensate\n this.state.startCentroid = {\n x: this.state.startCentroid.x + offsetX,\n y: this.state.startCentroid.y + offsetY\n };\n this.state.lastCentroid = newCentroid;\n\n // Remove the pointer from tracked pointers\n const removedPointerId = relevantPointers.find(p => p.type === 'pointerup' || p.type === 'pointercancel')?.pointerId;\n if (removedPointerId !== undefined) {\n this.state.startPointers.delete(removedPointerId);\n }\n }\n } else {\n this.resetState();\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * Emit pan-specific events with additional data\n */\n emitPanEvent(element, phase, pointers, event, currentCentroid) {\n if (!this.state.startCentroid) {\n return;\n }\n const deltaX = this.state.lastDeltas?.x ?? 0;\n const deltaY = this.state.lastDeltas?.y ?? 0;\n\n // Calculate velocity - time difference in seconds\n const firstPointer = this.state.startPointers.values().next().value;\n const timeElapsed = firstPointer ? (event.timeStamp - firstPointer.timeStamp) / 1000 : 0;\n const velocityX = timeElapsed > 0 ? deltaX / timeElapsed : 0;\n const velocityY = timeElapsed > 0 ? deltaY / timeElapsed : 0;\n const velocity = Math.sqrt(velocityX * velocityX + velocityY * velocityY);\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n initialCentroid: this.state.startCentroid,\n centroid: currentCentroid,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n deltaX,\n deltaY,\n direction: this.state.lastDirection,\n velocityX,\n velocityY,\n velocity,\n totalDeltaX: this.state.totalDeltaX,\n totalDeltaY: this.state.totalDeltaY,\n activeDeltaX: this.state.activeDeltaX,\n activeDeltaY: this.state.activeDeltaY,\n activeGestures,\n customData: this.customData\n };\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n\n // Apply preventDefault/stopPropagation if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n /**\n * Cancel the current gesture\n */\n cancel(element, pointers, event) {\n if (this.isActive) {\n const el = element ?? this.element;\n this.emitPanEvent(el, 'cancel', pointers, event, this.state.lastCentroid);\n this.emitPanEvent(el, 'end', pointers, event, this.state.lastCentroid);\n }\n this.resetState();\n }\n}","/**\n * Check if a direction matches one of the allowed directions\n */\nexport function isDirectionAllowed(direction, allowedDirections) {\n if (!direction.vertical && !direction.horizontal) {\n return false;\n }\n if (allowedDirections.length === 0) {\n return true;\n }\n\n // Check if the vertical direction is allowed (if it exists)\n const verticalAllowed = direction.vertical === null || allowedDirections.includes(direction.vertical);\n\n // Check if the horizontal direction is allowed (if it exists)\n const horizontalAllowed = direction.horizontal === null || allowedDirections.includes(direction.horizontal);\n\n // Both directions must be allowed\n return verticalAllowed && horizontalAllowed;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * MoveGesture - Detects when a pointer enters, moves within, and leaves an element\n *\n * This gesture tracks pointer movements over an element, firing events when:\n * - A pointer enters the element (start)\n * - A pointer moves within the element (ongoing)\n * - A pointer leaves the element (end)\n *\n * Unlike other gestures which often require specific actions to trigger,\n * the move gesture fires automatically when pointers interact with the target element.\n *\n * This gesture only works with mouse pointers, not touch or pen.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for the MoveGesture\n * Extends the base PointerGestureOptions\n */\n\n/**\n * Event data specific to move gesture events\n * Includes the source pointer event and standard gesture data\n */\n\n/**\n * Type definition for the CustomEvent created by MoveGesture\n */\n\n/**\n * State tracking for the MoveGesture\n */\n\n/**\n * MoveGesture class for handling pointer movement over elements\n *\n * This gesture detects when pointers enter, move within, or leave target elements,\n * and dispatches corresponding custom events.\n *\n * This gesture only works with hovering mouse pointers, not touch.\n */\nexport class MoveGesture extends PointerGesture {\n state = {\n lastPosition: null\n };\n\n /**\n * Movement threshold in pixels that must be exceeded before the gesture activates.\n * Higher values reduce false positive gesture detection for small movements.\n */\n\n constructor(options) {\n super(options);\n this.threshold = options.threshold || 0;\n }\n clone(overrides) {\n return new MoveGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n threshold: this.threshold,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n\n // Add event listeners for entering and leaving elements\n // These are different from pointer events handled by PointerManager\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener('pointerenter', this.handleElementEnter);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener('pointerleave', this.handleElementLeave);\n }\n destroy() {\n // Remove event listeners using the same function references\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener('pointerenter', this.handleElementEnter);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener('pointerleave', this.handleElementLeave);\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n // Call parent method to handle common options\n super.updateOptions(options);\n }\n resetState() {\n this.isActive = false;\n this.state = {\n lastPosition: null\n };\n }\n\n /**\n * Handle pointer enter events for a specific element\n * @param event The original pointer event\n */\n handleElementEnter = event => {\n if (event.pointerType !== 'mouse' && event.pointerType !== 'pen') {\n return;\n }\n\n // Get pointers from the PointerManager\n const pointers = this.pointerManager.getPointers() || new Map();\n const pointersArray = Array.from(pointers.values());\n\n // Only activate if we're within pointer count constraints\n if (this.isWithinPointerCount(pointersArray, event.pointerType)) {\n this.isActive = true;\n const currentPosition = {\n x: event.clientX,\n y: event.clientY\n };\n this.state.lastPosition = currentPosition;\n\n // Emit start event\n this.emitMoveEvent(this.element, 'start', pointersArray, event);\n this.emitMoveEvent(this.element, 'ongoing', pointersArray, event);\n }\n };\n\n /**\n * Handle pointer leave events for a specific element\n * @param event The original pointer event\n */\n handleElementLeave = event => {\n if (event.pointerType !== 'mouse' && event.pointerType !== 'pen') {\n return;\n }\n if (!this.isActive) {\n return;\n }\n\n // Get pointers from the PointerManager\n const pointers = this.pointerManager.getPointers() || new Map();\n const pointersArray = Array.from(pointers.values());\n\n // Emit end event and reset state\n this.emitMoveEvent(this.element, 'end', pointersArray, event);\n this.resetState();\n };\n\n /**\n * Handle pointer events for the move gesture (only handles move events now)\n * @param pointers Map of active pointers\n * @param event The original pointer event\n */\n handlePointerEvent = (pointers, event) => {\n if (event.type !== 'pointermove' || event.pointerType !== 'mouse' && event.pointerType !== 'pen') {\n return;\n }\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n const pointersArray = Array.from(pointers.values());\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n if (!this.isWithinPointerCount(pointersArray, event.pointerType)) {\n return;\n }\n if (this.shouldPreventGesture(targetElement, event.pointerType)) {\n if (!this.isActive) {\n return;\n }\n this.resetState();\n this.emitMoveEvent(targetElement, 'end', pointersArray, event);\n return;\n }\n\n // Update position\n const currentPosition = {\n x: event.clientX,\n y: event.clientY\n };\n this.state.lastPosition = currentPosition;\n if (!this.isActive) {\n this.isActive = true;\n this.emitMoveEvent(targetElement, 'start', pointersArray, event);\n }\n // Emit ongoing event\n this.emitMoveEvent(targetElement, 'ongoing', pointersArray, event);\n };\n\n /**\n * Emit move-specific events\n * @param element The DOM element the event is related to\n * @param phase The current phase of the gesture (start, ongoing, end)\n * @param pointers Array of active pointers\n * @param event The original pointer event\n */\n emitMoveEvent(element, phase, pointers, event) {\n const currentPosition = this.state.lastPosition || calculateCentroid(pointers);\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n centroid: currentPosition,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n activeGestures,\n customData: this.customData\n };\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * TapGesture - Detects tap (quick touch without movement) gestures\n *\n * This gesture tracks simple tap interactions on elements, firing a single event when:\n * - A complete tap is detected (pointerup after brief touch without excessive movement)\n * - The tap is canceled (event.g., moved too far or held too long)\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for TapGesture\n * Extends PointerGestureOptions with tap-specific settings\n */\n\n/**\n * Event data specific to tap gesture events\n * Contains information about the tap location and counts\n */\n\n/**\n * Type definition for the CustomEvent created by TapGesture\n */\n\n/**\n * State tracking for the TapGesture\n */\n\n/**\n * TapGesture class for handling tap interactions\n *\n * This gesture detects when users tap on elements without significant movement,\n * and can recognize single taps, double taps, or other multi-tap sequences.\n */\nexport class TapGesture extends PointerGesture {\n state = {\n startCentroid: null,\n currentTapCount: 0,\n lastTapTime: 0,\n lastPosition: null\n };\n\n /**\n * Maximum distance a pointer can move for a gesture to still be considered a tap\n */\n\n /**\n * Number of consecutive taps to detect\n */\n\n constructor(options) {\n super(options);\n this.maxDistance = options.maxDistance ?? 10;\n this.taps = options.taps ?? 1;\n }\n clone(overrides) {\n return new TapGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n maxDistance: this.maxDistance,\n taps: this.taps,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n destroy() {\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.maxDistance = options.maxDistance ?? this.maxDistance;\n this.taps = options.taps ?? this.taps;\n }\n resetState() {\n this.isActive = false;\n this.state = {\n startCentroid: null,\n currentTapCount: 0,\n lastTapTime: 0,\n lastPosition: null\n };\n }\n\n /**\n * Handle pointer events for the tap gesture\n */\n handlePointerEvent = (pointers, event) => {\n const pointersArray = Array.from(pointers.values());\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n if (this.shouldPreventGesture(targetElement, event.pointerType) || !this.isWithinPointerCount(relevantPointers, event.pointerType)) {\n if (this.isActive) {\n // Cancel the gesture if it was active\n this.cancelTap(targetElement, relevantPointers, event);\n }\n return;\n }\n switch (event.type) {\n case 'pointerdown':\n if (!this.isActive) {\n // Calculate and store the starting centroid\n this.state.startCentroid = calculateCentroid(relevantPointers);\n this.state.lastPosition = _extends({}, this.state.startCentroid);\n this.isActive = true;\n\n // Store the original target element\n this.originalTarget = targetElement;\n }\n break;\n case 'pointermove':\n if (this.isActive && this.state.startCentroid) {\n // Calculate current position\n const currentPosition = calculateCentroid(relevantPointers);\n this.state.lastPosition = currentPosition;\n\n // Calculate distance from start position\n const deltaX = currentPosition.x - this.state.startCentroid.x;\n const deltaY = currentPosition.y - this.state.startCentroid.y;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n // If moved too far, cancel the tap gesture\n if (distance > this.maxDistance) {\n this.cancelTap(targetElement, relevantPointers, event);\n }\n }\n break;\n case 'pointerup':\n if (this.isActive) {\n // For valid tap: increment tap count\n this.state.currentTapCount += 1;\n\n // Make sure we have a valid position before firing the tap event\n const position = this.state.lastPosition || this.state.startCentroid;\n if (!position) {\n this.cancelTap(targetElement, relevantPointers, event);\n return;\n }\n\n // Check if we've reached the desired number of taps\n if (this.state.currentTapCount >= this.taps) {\n // The complete tap sequence has been detected - fire the tap event\n this.fireTapEvent(targetElement, relevantPointers, event, position);\n\n // Reset state after successful tap\n this.resetState();\n } else {\n // Store the time of this tap for multi-tap detection\n this.state.lastTapTime = event.timeStamp;\n\n // Reset active state but keep the tap count for multi-tap detection\n this.isActive = false;\n\n // For multi-tap detection: keep track of the last tap position\n // but clear the start centroid to prepare for next tap\n this.state.startCentroid = null;\n\n // Start a timeout to reset the tap count if the next tap doesn't come soon enough\n setTimeout(() => {\n if (this.state && this.state.currentTapCount > 0 && this.state.currentTapCount < this.taps) {\n this.state.currentTapCount = 0;\n }\n }, 300); // 300ms is a typical double-tap detection window\n }\n }\n break;\n case 'pointercancel':\n case 'forceCancel':\n // Cancel the gesture\n this.cancelTap(targetElement, relevantPointers, event);\n break;\n default:\n break;\n }\n };\n\n /**\n * Fire the main tap event when a valid tap is detected\n */\n fireTapEvent(element, pointers, event, position) {\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data for the tap event\n const customEventData = {\n gestureName: this.name,\n centroid: position,\n target: event.target,\n srcEvent: event,\n phase: 'end',\n // The tap is complete, so we use 'end' state for the event data\n pointers,\n timeStamp: event.timeStamp,\n x: position.x,\n y: position.y,\n tapCount: this.state.currentTapCount,\n activeGestures,\n customData: this.customData\n };\n\n // Dispatch a single 'tap' event (not 'tapStart', 'tapEnd', etc.)\n const domEvent = new CustomEvent(this.name, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n\n // Apply preventDefault/stopPropagation if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n /**\n * Cancel the current tap gesture\n */\n cancelTap(element, pointers, event) {\n if (this.state.startCentroid || this.state.lastPosition) {\n const position = this.state.lastPosition || this.state.startCentroid;\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data for the cancel event\n const customEventData = {\n gestureName: this.name,\n centroid: position,\n target: event.target,\n srcEvent: event,\n phase: 'cancel',\n pointers,\n timeStamp: event.timeStamp,\n x: position.x,\n y: position.y,\n tapCount: this.state.currentTapCount,\n activeGestures,\n customData: this.customData\n };\n\n // Dispatch a 'tapCancel' event\n const eventName = createEventName(this.name, 'cancel');\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n }\n this.resetState();\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PressGesture - Detects press and hold interactions\n *\n * This gesture tracks when users press and hold on an element for a specified duration, firing events when:\n * - The press begins and passes the holding threshold time (start, ongoing)\n * - The press ends (end)\n * - The press is canceled by movement beyond threshold (cancel)\n *\n * This gesture is commonly used for contextual menus, revealing additional options, or alternate actions.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for PressGesture\n * Extends PointerGestureOptions with press-specific options\n */\n\n/**\n * Event data specific to press gesture events\n * Contains information about the press location and duration\n */\n\n/**\n * Type definition for the CustomEvent created by PressGesture\n */\n\n/**\n * State tracking for the PressGesture\n */\n\n/**\n * PressGesture class for handling press/hold interactions\n *\n * This gesture detects when users press and hold on an element for a specified duration,\n * and dispatches press-related events when the user holds long enough.\n *\n * The `start` and `ongoing` events are dispatched at the same time once the press threshold is reached.\n * If the press is canceled (event.g., by moving too far), a `cancel` event is dispatched before the `end` event.\n */\nexport class PressGesture extends PointerGesture {\n state = {\n startCentroid: null,\n lastPosition: null,\n timerId: null,\n startTime: 0,\n pressThresholdReached: false\n };\n\n /**\n * Duration in milliseconds required to hold before the press gesture is recognized\n */\n\n /**\n * Maximum distance a pointer can move for a gesture to still be considered a press\n */\n\n constructor(options) {\n super(options);\n this.duration = options.duration ?? 500;\n this.maxDistance = options.maxDistance ?? 10;\n }\n clone(overrides) {\n return new PressGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n duration: this.duration,\n maxDistance: this.maxDistance,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n destroy() {\n this.clearPressTimer();\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.duration = options.duration ?? this.duration;\n this.maxDistance = options.maxDistance ?? this.maxDistance;\n }\n resetState() {\n this.clearPressTimer();\n this.isActive = false;\n this.state = _extends({}, this.state, {\n startCentroid: null,\n lastPosition: null,\n timerId: null,\n startTime: 0,\n pressThresholdReached: false\n });\n }\n\n /**\n * Clear the press timer if it's active\n */\n clearPressTimer() {\n if (this.state.timerId !== null) {\n clearTimeout(this.state.timerId);\n this.state.timerId = null;\n }\n }\n\n /**\n * Handle pointer events for the press gesture\n */\n handlePointerEvent = (pointers, event) => {\n const pointersArray = Array.from(pointers.values());\n\n // Check for our forceCancel event to handle interrupted gestures (from contextmenu, blur)\n if (event.type === 'forceCancel') {\n // Reset all active press gestures when we get a force reset event\n this.cancelPress(event.target, pointersArray, event);\n return;\n }\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(targetElement, event.pointerType)) {\n if (this.isActive) {\n // If the gesture was active but now should be prevented, cancel it gracefully\n this.cancelPress(targetElement, pointersArray, event);\n }\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n if (!this.isWithinPointerCount(relevantPointers, event.pointerType)) {\n if (this.isActive) {\n // Cancel or end the gesture if it was active\n this.cancelPress(targetElement, relevantPointers, event);\n }\n return;\n }\n switch (event.type) {\n case 'pointerdown':\n if (!this.isActive && !this.state.startCentroid) {\n // Calculate and store the starting centroid\n this.state.startCentroid = calculateCentroid(relevantPointers);\n this.state.lastPosition = _extends({}, this.state.startCentroid);\n this.state.startTime = event.timeStamp;\n this.isActive = true;\n\n // Store the original target element\n this.originalTarget = targetElement;\n\n // Start the timer for press recognition\n this.clearPressTimer(); // Clear any existing timer first\n this.state.timerId = setTimeout(() => {\n if (this.isActive && this.state.startCentroid) {\n this.state.pressThresholdReached = true;\n const lastPosition = this.state.lastPosition;\n\n // Emit press start event\n this.emitPressEvent(targetElement, 'start', relevantPointers, event, lastPosition);\n this.emitPressEvent(targetElement, 'ongoing', relevantPointers, event, lastPosition);\n }\n }, this.duration);\n }\n break;\n case 'pointermove':\n if (this.isActive && this.state.startCentroid) {\n // Calculate current position\n const currentPosition = calculateCentroid(relevantPointers);\n this.state.lastPosition = currentPosition;\n\n // Calculate distance from start position\n const deltaX = currentPosition.x - this.state.startCentroid.x;\n const deltaY = currentPosition.y - this.state.startCentroid.y;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n // If moved too far, cancel the press gesture\n if (distance > this.maxDistance) {\n this.cancelPress(targetElement, relevantPointers, event);\n }\n }\n break;\n case 'pointerup':\n if (this.isActive) {\n if (this.state.pressThresholdReached) {\n // Complete the press gesture if we've held long enough\n const position = this.state.lastPosition || this.state.startCentroid;\n this.emitPressEvent(targetElement, 'end', relevantPointers, event, position);\n }\n\n // Reset state\n this.resetState();\n }\n break;\n case 'pointercancel':\n case 'forceCancel':\n // Cancel the gesture\n this.cancelPress(targetElement, relevantPointers, event);\n break;\n default:\n break;\n }\n };\n\n /**\n * Emit press-specific events with additional data\n */\n emitPressEvent(element, phase, pointers, event, position) {\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Calculate current duration of the press\n const currentDuration = event.timeStamp - this.state.startTime;\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n centroid: position,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n x: position.x,\n y: position.y,\n duration: currentDuration,\n activeGestures,\n customData: this.customData\n };\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n\n // Apply preventDefault/stopPropagation if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n /**\n * Cancel the current press gesture\n */\n cancelPress(element, pointers, event) {\n if (this.isActive && this.state.pressThresholdReached) {\n const position = this.state.lastPosition || this.state.startCentroid;\n this.emitPressEvent(element ?? this.element, 'cancel', pointers, event, position);\n this.emitPressEvent(element ?? this.element, 'end', pointers, event, position);\n }\n this.resetState();\n }\n}","/**\n * Calculate the distance between two points\n */\nexport function getDistance(pointA, pointB) {\n const deltaX = pointB.x - pointA.x;\n const deltaY = pointB.y - pointA.y;\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n}","import { getDistance } from \"./getDistance.js\";\n\n/**\n * Calculate the average distance between all pairs of pointers\n */\nexport function calculateAverageDistance(pointers) {\n if (pointers.length < 2) {\n return 0;\n }\n let totalDistance = 0;\n let pairCount = 0;\n\n // Calculate distance between each pair of pointers\n for (let i = 0; i < pointers.length; i += 1) {\n for (let j = i + 1; j < pointers.length; j += 1) {\n totalDistance += getDistance({\n x: pointers[i].clientX,\n y: pointers[i].clientY\n }, {\n x: pointers[j].clientX,\n y: pointers[j].clientY\n });\n pairCount += 1;\n }\n }\n\n // Return average distance\n return pairCount > 0 ? totalDistance / pairCount : 0;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PinchGesture - Detects pinch (zoom) movements with two or more pointers\n *\n * This gesture tracks when multiple pointers move toward or away from each other, firing events when:\n * - Two or more pointers begin moving (start)\n * - The pointers continue changing distance (ongoing)\n * - One or more pointers are released or lifted (end)\n *\n * This gesture is commonly used to implement zoom functionality in touch interfaces.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateAverageDistance, calculateCentroid, createEventName, getPinchDirection } from \"../utils/index.js\";\n\n/**\n * Configuration options for the PinchGesture\n * Uses the same options as the base PointerGesture\n */\n\n/**\n * Event data specific to pinch gesture events\n * Contains information about scale, distance, and velocity\n */\n\n/**\n * Type definition for the CustomEvent created by PinchGesture\n */\n\n/**\n * State tracking for the PinchGesture\n */\n\n/**\n * PinchGesture class for handling pinch/zoom interactions\n *\n * This gesture detects when users move multiple pointers toward or away from each other,\n * and dispatches scale-related events with distance and velocity information.\n */\nexport class PinchGesture extends PointerGesture {\n state = {\n startDistance: 0,\n lastDistance: 0,\n lastScale: 1,\n lastTime: 0,\n velocity: 0,\n totalScale: 1,\n deltaScale: 0\n };\n\n /**\n * Movement threshold in pixels that must be exceeded before the gesture activates.\n * Higher values reduce false positive gesture detection for small movements.\n */\n\n constructor(options) {\n super(_extends({}, options, {\n minPointers: options.minPointers ?? 2\n }));\n this.threshold = options.threshold ?? 0;\n }\n clone(overrides) {\n return new PinchGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n threshold: this.threshold,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n destroy() {\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n }\n resetState() {\n this.isActive = false;\n this.state = _extends({}, this.state, {\n startDistance: 0,\n lastDistance: 0,\n lastScale: 1,\n lastTime: 0,\n velocity: 0,\n deltaScale: 0\n });\n }\n\n /**\n * Handle pointer events for the pinch gesture\n */\n handlePointerEvent = (pointers, event) => {\n const pointersArray = Array.from(pointers.values());\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(targetElement, event.pointerType)) {\n if (this.isActive) {\n // If the gesture was active but now should be prevented, end it gracefully\n this.emitPinchEvent(targetElement, 'cancel', pointersArray, event);\n this.resetState();\n }\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n switch (event.type) {\n case 'pointerdown':\n if (relevantPointers.length >= 2 && !this.isActive) {\n // Calculate and store the starting distance between pointers\n const initialDistance = calculateAverageDistance(relevantPointers);\n this.state.startDistance = initialDistance;\n this.state.lastDistance = initialDistance;\n this.state.lastTime = event.timeStamp;\n\n // Store the original target element\n this.originalTarget = targetElement;\n } else if (this.isActive && relevantPointers.length >= 2) {\n // A new pointer was added during an active gesture\n // Adjust the start distance to prevent jumping (similar to pointer removal logic)\n const newDistance = calculateAverageDistance(relevantPointers);\n // Adjust startDistance so that the current scale is preserved\n this.state.startDistance = newDistance / this.state.lastScale;\n this.state.lastDistance = newDistance;\n this.state.lastTime = event.timeStamp;\n }\n break;\n case 'pointermove':\n if (this.state.startDistance && this.isWithinPointerCount(relevantPointers, event.pointerType)) {\n // Calculate current distance between pointers\n const currentDistance = calculateAverageDistance(relevantPointers);\n\n // Calculate absolute distance change\n const distanceChange = Math.abs(currentDistance - this.state.lastDistance);\n\n // Only proceed if the distance between pointers has changed enough\n if (distanceChange !== 0 && distanceChange >= this.threshold) {\n // Calculate scale relative to starting distance\n const scale = this.state.startDistance ? currentDistance / this.state.startDistance : 1;\n\n // Calculate the relative scale change since last event\n const scaleChange = scale / this.state.lastScale;\n // Apply this change to the total accumulated scale\n this.state.totalScale *= scaleChange;\n // Calculate velocity (change in scale over time)\n const deltaTime = (event.timeStamp - this.state.lastTime) / 1000; // convert to seconds\n if (this.state.lastDistance) {\n const deltaDistance = currentDistance - this.state.lastDistance;\n const result = deltaDistance / deltaTime;\n this.state.velocity = Number.isNaN(result) ? 0 : result;\n }\n\n // Update state\n this.state.lastDistance = currentDistance;\n this.state.deltaScale = scale - this.state.lastScale;\n this.state.lastScale = scale;\n this.state.lastTime = event.timeStamp;\n if (!this.isActive) {\n // Mark gesture as active\n this.isActive = true;\n\n // Emit start event\n this.emitPinchEvent(targetElement, 'start', relevantPointers, event);\n this.emitPinchEvent(targetElement, 'ongoing', relevantPointers, event);\n } else {\n // Emit ongoing event\n this.emitPinchEvent(targetElement, 'ongoing', relevantPointers, event);\n }\n }\n }\n break;\n case 'pointerup':\n case 'pointercancel':\n case 'forceCancel':\n if (this.isActive) {\n const remainingPointers = relevantPointers.filter(p => p.type !== 'pointerup' && p.type !== 'pointercancel');\n\n // If we no longer meet the pointer count requirements, end the gesture\n if (!this.isWithinPointerCount(remainingPointers, event.pointerType)) {\n if (event.type === 'pointercancel') {\n this.emitPinchEvent(targetElement, 'cancel', relevantPointers, event);\n }\n this.emitPinchEvent(targetElement, 'end', relevantPointers, event);\n\n // Reset state\n this.resetState();\n } else if (remainingPointers.length >= 2) {\n // If we still have enough pointers, update the start distance\n // to prevent jumping when a finger is lifted\n const newDistance = calculateAverageDistance(remainingPointers);\n this.state.startDistance = newDistance / this.state.lastScale;\n this.state.lastDistance = newDistance;\n this.state.lastTime = event.timeStamp;\n }\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * Emit pinch-specific events with additional data\n */\n emitPinchEvent(element, phase, pointers, event) {\n // Calculate current centroid\n const centroid = calculateCentroid(pointers);\n\n // Create custom event data\n const distance = this.state.lastDistance;\n const scale = this.state.lastScale;\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n const customEventData = {\n gestureName: this.name,\n centroid,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n scale,\n deltaScale: this.state.deltaScale,\n totalScale: this.state.totalScale,\n distance,\n velocity: this.state.velocity,\n activeGestures,\n direction: getPinchDirection(this.state.velocity),\n customData: this.customData\n };\n\n // Handle default event behavior\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n }\n}","const DIRECTION_THRESHOLD = 0;\nexport const getPinchDirection = velocity => {\n if (velocity > DIRECTION_THRESHOLD) {\n return 1; // Zooming in\n }\n if (velocity < -DIRECTION_THRESHOLD) {\n return -1; // Zooming out\n }\n return 0; // No significant movement\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * TurnWheelGesture - Detects wheel events on an element\n *\n * This gesture tracks mouse wheel or touchpad scroll events on elements, firing events when:\n * - The user scrolls/wheels on the element (ongoing)\n *\n * Unlike other gestures which may have start/ongoing/end states,\n * wheel gestures are always considered \"ongoing\" since they are discrete events.\n */\n\nimport { Gesture } from \"../Gesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for the TurnWheelGesture\n * Uses the base gesture options with additional wheel-specific options\n */\n\n/**\n * Event data specific to wheel gesture events\n * Contains information about scroll delta amounts and mode\n */\n\n/**\n * Type definition for the CustomEvent created by TurnWheelGesture\n */\n\n/**\n * State tracking for the TurnWheelGesture\n */\n\n/**\n * TurnWheelGesture class for handling wheel/scroll interactions\n *\n * This gesture detects when users scroll or use the mouse wheel on elements,\n * and dispatches corresponding scroll events with delta information.\n * Unlike most gestures, it extends directly from Gesture rather than PointerGesture.\n */\nexport class TurnWheelGesture extends Gesture {\n state = {\n totalDeltaX: 0,\n totalDeltaY: 0,\n totalDeltaZ: 0\n };\n\n /**\n * Scaling factor for delta values\n * Values > 1 increase sensitivity, values < 1 decrease sensitivity\n */\n\n /**\n * Maximum value for totalDelta values\n * Limits how large the accumulated wheel deltas can be\n */\n\n /**\n * Minimum value for totalDelta values\n * Sets a lower bound for accumulated wheel deltas\n */\n\n /**\n * Initial value for totalDelta values\n * Sets the starting value for delta trackers\n */\n\n /**\n * Whether to invert the direction of delta changes\n * When true, reverses the sign of deltaX, deltaY, and deltaZ values\n */\n\n constructor(options) {\n super(options);\n this.sensitivity = options.sensitivity ?? 1;\n this.max = options.max ?? Number.MAX_SAFE_INTEGER;\n this.min = options.min ?? Number.MIN_SAFE_INTEGER;\n this.initialDelta = options.initialDelta ?? 0;\n this.invert = options.invert ?? false;\n this.state.totalDeltaX = this.initialDelta;\n this.state.totalDeltaY = this.initialDelta;\n this.state.totalDeltaZ = this.initialDelta;\n }\n clone(overrides) {\n return new TurnWheelGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n sensitivity: this.sensitivity,\n max: this.max,\n min: this.min,\n initialDelta: this.initialDelta,\n invert: this.invert,\n requiredKeys: [...this.requiredKeys],\n preventIf: [...this.preventIf]\n }, overrides));\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n\n // Add event listener directly to the element\n // @ts-expect-error, WheelEvent is correct.\n this.element.addEventListener('wheel', this.handleWheelEvent);\n }\n destroy() {\n // Remove the element-specific event listener\n // @ts-expect-error, WheelEvent is correct.\n this.element.removeEventListener('wheel', this.handleWheelEvent);\n this.resetState();\n super.destroy();\n }\n resetState() {\n this.isActive = false;\n this.state = {\n totalDeltaX: 0,\n totalDeltaY: 0,\n totalDeltaZ: 0\n };\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.sensitivity = options.sensitivity ?? this.sensitivity;\n this.max = options.max ?? this.max;\n this.min = options.min ?? this.min;\n this.initialDelta = options.initialDelta ?? this.initialDelta;\n this.invert = options.invert ?? this.invert;\n }\n\n /**\n * Handle wheel events for a specific element\n * @param element The element that received the wheel event\n * @param event The original wheel event\n */\n handleWheelEvent = event => {\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(this.element, 'mouse')) {\n return;\n }\n\n // Get pointers from the PointerManager to use for centroid calculation\n const pointers = this.pointerManager.getPointers() || new Map();\n const pointersArray = Array.from(pointers.values());\n\n // Update total deltas with scaled values\n this.state.totalDeltaX += event.deltaX * this.sensitivity * (this.invert ? -1 : 1);\n this.state.totalDeltaY += event.deltaY * this.sensitivity * (this.invert ? -1 : 1);\n this.state.totalDeltaZ += event.deltaZ * this.sensitivity * (this.invert ? -1 : 1);\n\n // Apply proper min/max clamping for each axis\n // Ensure values stay between min and max bounds\n ['totalDeltaX', 'totalDeltaY', 'totalDeltaZ'].forEach(axis => {\n // First clamp at the minimum bound\n if (this.state[axis] < this.min) {\n this.state[axis] = this.min;\n }\n\n // Then clamp at the maximum bound\n if (this.state[axis] > this.max) {\n this.state[axis] = this.max;\n }\n });\n\n // Emit the wheel event\n this.emitWheelEvent(pointersArray, event);\n };\n\n /**\n * Emit wheel-specific events\n * @param pointers The current pointers on the element\n * @param event The original wheel event\n */\n emitWheelEvent(pointers, event) {\n // Calculate centroid - either from existing pointers or from the wheel event position\n const centroid = pointers.length > 0 ? calculateCentroid(pointers) : {\n x: event.clientX,\n y: event.clientY\n };\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(this.element);\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n centroid,\n target: event.target,\n srcEvent: event,\n phase: 'ongoing',\n // Wheel events are always in \"ongoing\" state\n pointers,\n timeStamp: event.timeStamp,\n deltaX: event.deltaX * this.sensitivity * (this.invert ? -1 : 1),\n deltaY: event.deltaY * this.sensitivity * (this.invert ? -1 : 1),\n deltaZ: event.deltaZ * this.sensitivity * (this.invert ? -1 : 1),\n deltaMode: event.deltaMode,\n totalDeltaX: this.state.totalDeltaX,\n totalDeltaY: this.state.totalDeltaY,\n totalDeltaZ: this.state.totalDeltaZ,\n activeGestures,\n customData: this.customData\n };\n\n // Apply default event behavior if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n\n // Event names to trigger\n const eventName = createEventName(this.name, 'ongoing');\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n this.element.dispatchEvent(domEvent);\n }\n}","export const preventDefault = event => {\n if (event.cancelable) {\n event.preventDefault();\n }\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * TapAndDragGesture - Detects tap followed by drag gestures using composition\n *\n * This gesture uses internal TapGesture and PanGesture instances to:\n * 1. First, detect a tap (quick touch without movement)\n * 2. Then, track drag movements on the next pointer down\n *\n * The gesture fires events when:\n * - A tap is completed (tap phase)\n * - Drag movement begins and passes threshold (dragStart)\n * - Drag movement continues (drag)\n * - Drag movement ends (dragEnd)\n * - The gesture is canceled at any point\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { createEventName, preventDefault } from \"../utils/index.js\";\nimport { PanGesture } from \"./PanGesture.js\";\nimport { TapGesture } from \"./TapGesture.js\";\n\n/**\n * Configuration options for TapAndDragGesture\n * Extends PointerGestureOptions with tap and drag specific settings\n */\n\n/**\n * Event data specific to tap and drag gesture events\n * Contains information about the gesture state, position, and movement\n */\n\n/**\n * Type definition for the CustomEvent created by TapAndDragGesture\n */\n\n/**\n * Represents the current phase of the TapAndDrag gesture\n */\n\n/**\n * State tracking for the TapAndDragGesture\n */\n\n/**\n * TapAndDragGesture class for handling tap followed by drag interactions\n *\n * This gesture composes tap and drag logic patterns from TapGesture and PanGesture\n * into a single coordinated gesture that handles tap-then-drag interactions.\n */\nexport class TapAndDragGesture extends PointerGesture {\n state = {\n phase: 'waitingForTap',\n dragTimeoutId: null\n };\n\n /**\n * Maximum distance a pointer can move during tap for it to still be considered a tap\n * (Following TapGesture pattern)\n */\n\n /**\n * Maximum time between tap completion and drag start\n */\n\n /**\n * Movement threshold for drag activation\n */\n\n /**\n * Allowed directions for the drag gesture\n */\n\n constructor(options) {\n super(options);\n this.tapMaxDistance = options.tapMaxDistance ?? 10;\n this.dragTimeout = options.dragTimeout ?? 1000;\n this.dragThreshold = options.dragThreshold ?? 0;\n this.dragDirection = options.dragDirection || ['up', 'down', 'left', 'right'];\n this.tapGesture = new TapGesture({\n name: `${this.name}-tap`,\n maxDistance: this.tapMaxDistance,\n maxPointers: this.maxPointers,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n });\n this.panGesture = new PanGesture({\n name: `${this.name}-pan`,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n threshold: this.dragThreshold,\n direction: this.dragDirection,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n });\n }\n clone(overrides) {\n return new TapAndDragGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n tapMaxDistance: this.tapMaxDistance,\n dragTimeout: this.dragTimeout,\n dragThreshold: this.dragThreshold,\n dragDirection: [...this.dragDirection],\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.tapGesture.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.panGesture.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.element.addEventListener(this.tapGesture.name, this.tapHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}Start`, this.dragStartHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(this.panGesture.name, this.dragMoveHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}End`, this.dragEndHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}Cancel`, this.dragEndHandler);\n }\n destroy() {\n this.resetState();\n this.tapGesture.destroy();\n this.panGesture.destroy();\n this.element.removeEventListener(this.tapGesture.name, this.tapHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}Start`, this.dragStartHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(this.panGesture.name, this.dragMoveHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}End`, this.dragEndHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}Cancel`, this.dragEndHandler);\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.tapMaxDistance = options.tapMaxDistance ?? this.tapMaxDistance;\n this.dragTimeout = options.dragTimeout ?? this.dragTimeout;\n this.dragThreshold = options.dragThreshold ?? this.dragThreshold;\n this.dragDirection = options.dragDirection || this.dragDirection;\n this.element.dispatchEvent(new CustomEvent(`${this.panGesture.name}ChangeOptions`, {\n detail: {\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n threshold: this.dragThreshold,\n direction: this.dragDirection,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n }\n }));\n this.element.dispatchEvent(new CustomEvent(`${this.tapGesture.name}ChangeOptions`, {\n detail: {\n maxDistance: this.tapMaxDistance,\n maxPointers: this.maxPointers,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n }\n }));\n }\n resetState() {\n if (this.state.dragTimeoutId !== null) {\n clearTimeout(this.state.dragTimeoutId);\n }\n this.restoreTouchAction();\n this.isActive = false;\n this.state = {\n phase: 'waitingForTap',\n dragTimeoutId: null\n };\n }\n\n /**\n * This can be empty because the TapAndDragGesture relies on TapGesture and PanGesture to handle pointer events\n * The internal gestures will manage their own state and events, while this class coordinates between them\n */\n handlePointerEvent() {}\n tapHandler = () => {\n if (this.state.phase !== 'waitingForTap') {\n return;\n }\n this.state.phase = 'tapDetected';\n this.setTouchAction();\n\n // Start timeout to wait for drag start\n this.state.dragTimeoutId = setTimeout(() => {\n // Timeout expired, reset gesture\n this.resetState();\n }, this.dragTimeout);\n };\n dragStartHandler = event => {\n if (this.state.phase !== 'tapDetected') {\n return;\n }\n\n // Clear the drag timeout as drag has started\n if (this.state.dragTimeoutId !== null) {\n clearTimeout(this.state.dragTimeoutId);\n this.state.dragTimeoutId = null;\n }\n this.restoreTouchAction();\n this.state.phase = 'dragging';\n this.isActive = true;\n\n // Fire start event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n dragMoveHandler = event => {\n if (this.state.phase !== 'dragging') {\n return;\n }\n\n // Fire move event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n dragEndHandler = event => {\n if (this.state.phase !== 'dragging') {\n return;\n }\n this.resetState();\n\n // Fire end event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n setTouchAction() {\n this.element.addEventListener('touchstart', preventDefault, {\n passive: false\n });\n }\n restoreTouchAction() {\n this.element.removeEventListener('touchstart', preventDefault);\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PressAndDragGesture - Detects press followed by drag gestures using composition\n *\n * This gesture uses internal PressGesture and PanGesture instances to:\n * 1. First, detect a press (hold for specified duration without movement)\n * 2. Then, track drag movements from the press position\n *\n * The gesture fires events when:\n * - A press is completed (press phase)\n * - Drag movement begins and passes threshold (dragStart)\n * - Drag movement continues (drag)\n * - Drag movement ends (dragEnd)\n * - The gesture is canceled at any point\n *\n * This is ideal for panning operations where you want to hold first, then drag.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { createEventName, preventDefault } from \"../utils/index.js\";\nimport { PanGesture } from \"./PanGesture.js\";\nimport { PressGesture } from \"./PressGesture.js\";\n\n/**\n * Configuration options for PressAndDragGesture\n * Extends PointerGestureOptions with press and drag specific settings\n */\n\n/**\n * Event data specific to press and drag gesture events\n * Contains information about the gesture state, position, and movement\n */\n\n/**\n * Type definition for the CustomEvent created by PressAndDragGesture\n */\n\n/**\n * Represents the current phase of the PressAndDrag gesture\n */\n\n/**\n * State tracking for the PressAndDragGesture\n */\n\n/**\n * PressAndDragGesture class for handling press followed by drag interactions\n *\n * This gesture composes press and drag logic patterns from PressGesture and PanGesture\n * into a single coordinated gesture that handles press-then-drag interactions.\n */\nexport class PressAndDragGesture extends PointerGesture {\n state = {\n phase: 'waitingForPress',\n dragTimeoutId: null\n };\n\n /**\n * Duration required for press recognition\n */\n\n /**\n * Maximum distance a pointer can move during press for it to still be considered a press\n */\n\n /**\n * Maximum time between press completion and drag start\n */\n\n /**\n * Movement threshold for drag activation\n */\n\n /**\n * Allowed directions for the drag gesture\n */\n\n constructor(options) {\n super(options);\n this.pressDuration = options.pressDuration ?? 500;\n this.pressMaxDistance = options.pressMaxDistance ?? 10;\n this.dragTimeout = options.dragTimeout ?? 1000;\n this.dragThreshold = options.dragThreshold ?? 0;\n this.dragDirection = options.dragDirection || ['up', 'down', 'left', 'right'];\n this.pressGesture = new PressGesture({\n name: `${this.name}-press`,\n duration: this.pressDuration,\n maxDistance: this.pressMaxDistance,\n maxPointers: this.maxPointers,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n });\n this.panGesture = new PanGesture({\n name: `${this.name}-pan`,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n threshold: this.dragThreshold,\n direction: this.dragDirection,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n });\n }\n clone(overrides) {\n return new PressAndDragGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n pressDuration: this.pressDuration,\n pressMaxDistance: this.pressMaxDistance,\n dragTimeout: this.dragTimeout,\n dragThreshold: this.dragThreshold,\n dragDirection: [...this.dragDirection],\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.pressGesture.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.panGesture.init(element, pointerManager, gestureRegistry, keyboardManager);\n\n // Listen to press gesture events\n this.element.addEventListener(this.pressGesture.name, this.pressHandler);\n\n // Listen to pan gesture events for dragging\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}Start`, this.dragStartHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(this.panGesture.name, this.dragMoveHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}End`, this.dragEndHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}Cancel`, this.dragEndHandler);\n }\n destroy() {\n this.resetState();\n this.pressGesture.destroy();\n this.panGesture.destroy();\n this.element.removeEventListener(this.pressGesture.name, this.pressHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}Start`, this.dragStartHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(this.panGesture.name, this.dragMoveHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}End`, this.dragEndHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}Cancel`, this.dragEndHandler);\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.pressDuration = options.pressDuration ?? this.pressDuration;\n this.pressMaxDistance = options.pressMaxDistance ?? this.pressMaxDistance;\n this.dragTimeout = options.dragTimeout ?? this.dragTimeout;\n this.dragThreshold = options.dragThreshold ?? this.dragThreshold;\n this.dragDirection = options.dragDirection || this.dragDirection;\n\n // Update internal gesture options\n this.element.dispatchEvent(new CustomEvent(`${this.panGesture.name}ChangeOptions`, {\n detail: {\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n threshold: this.dragThreshold,\n direction: this.dragDirection,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n }\n }));\n this.element.dispatchEvent(new CustomEvent(`${this.pressGesture.name}ChangeOptions`, {\n detail: {\n duration: this.pressDuration,\n maxDistance: this.pressMaxDistance,\n maxPointers: this.maxPointers,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n }\n }));\n }\n resetState() {\n if (this.state.dragTimeoutId !== null) {\n clearTimeout(this.state.dragTimeoutId);\n }\n this.restoreTouchAction();\n this.isActive = false;\n this.state = {\n phase: 'waitingForPress',\n dragTimeoutId: null\n };\n }\n\n /**\n * This can be empty because the PressAndDragGesture relies on PressGesture and PanGesture to handle pointer events\n * The internal gestures will manage their own state and events, while this class coordinates between them\n */\n handlePointerEvent() {}\n pressHandler = () => {\n if (this.state.phase !== 'waitingForPress') {\n return;\n }\n this.state.phase = 'pressDetected';\n this.setTouchAction();\n\n // Start timeout to wait for drag start\n this.state.dragTimeoutId = setTimeout(() => {\n // Timeout expired, reset gesture\n this.resetState();\n }, this.dragTimeout);\n };\n dragStartHandler = event => {\n if (this.state.phase !== 'pressDetected') {\n return;\n }\n\n // Clear the drag timeout as drag has started\n if (this.state.dragTimeoutId !== null) {\n clearTimeout(this.state.dragTimeoutId);\n this.state.dragTimeoutId = null;\n }\n\n // Restore touch action since we're now dragging\n this.restoreTouchAction();\n this.state.phase = 'dragging';\n this.isActive = true;\n\n // Fire start event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n dragMoveHandler = event => {\n if (this.state.phase !== 'dragging') {\n return;\n }\n\n // Fire move event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n dragEndHandler = event => {\n if (this.state.phase !== 'dragging') {\n return;\n }\n this.resetState();\n\n // Fire end event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n setTouchAction() {\n this.element.addEventListener('touchstart', preventDefault, {\n passive: false\n });\n this.element.addEventListener('touchmove', preventDefault, {\n passive: false\n });\n this.element.addEventListener('touchend', preventDefault, {\n passive: false\n });\n }\n restoreTouchAction() {\n this.element.removeEventListener('touchstart', preventDefault);\n this.element.removeEventListener('touchmove', preventDefault);\n this.element.removeEventListener('touchend', preventDefault);\n }\n}","'use client';\n\nimport * as React from 'react';\nimport { GestureManager, MoveGesture, PanGesture, PinchGesture, PressAndDragGesture, PressGesture, TapAndDragGesture, TapGesture, TurnWheelGesture } from '@mui/x-internal-gestures/core';\nconst preventDefault = event => event.preventDefault();\nexport const useChartInteractionListener = ({\n svgRef\n}) => {\n const gestureManagerRef = React.useRef(null);\n React.useEffect(() => {\n const svg = svgRef.current;\n if (!gestureManagerRef.current) {\n gestureManagerRef.current = new GestureManager({\n gestures: [\n // We separate the zoom gestures from the gestures that are not zoom related\n // This allows us to configure the zoom gestures based on the zoom configuration.\n new PanGesture({\n name: 'pan',\n threshold: 0,\n maxPointers: 1\n }), new MoveGesture({\n name: 'move',\n preventIf: ['pan', 'zoomPinch', 'zoomPan']\n }), new TapGesture({\n name: 'tap',\n preventIf: ['pan', 'zoomPinch', 'zoomPan']\n }), new PressGesture({\n name: 'quickPress',\n duration: 50\n }), new PanGesture({\n name: 'brush',\n threshold: 0,\n maxPointers: 1\n }),\n // Zoom gestures\n new PanGesture({\n name: 'zoomPan',\n threshold: 0,\n preventIf: ['zoomTapAndDrag', 'zoomPressAndDrag']\n }), new PinchGesture({\n name: 'zoomPinch',\n threshold: 5\n }), new TurnWheelGesture({\n name: 'zoomTurnWheel',\n sensitivity: 0.01,\n initialDelta: 1\n }), new TurnWheelGesture({\n name: 'panTurnWheel',\n sensitivity: 0.5\n }), new TapAndDragGesture({\n name: 'zoomTapAndDrag',\n dragThreshold: 10\n }), new PressAndDragGesture({\n name: 'zoomPressAndDrag',\n dragThreshold: 10,\n preventIf: ['zoomPinch']\n }), new TapGesture({\n name: 'zoomDoubleTapReset',\n taps: 2\n })]\n });\n }\n\n // Assign gesture manager after initialization\n const gestureManager = gestureManagerRef.current;\n if (!svg || !gestureManager) {\n return undefined;\n }\n gestureManager.registerElement(['pan', 'move', 'zoomPinch', 'zoomPan', 'zoomTurnWheel', 'panTurnWheel', 'tap', 'quickPress', 'zoomTapAndDrag', 'zoomPressAndDrag', 'zoomDoubleTapReset', 'brush'], svg);\n return () => {\n // Cleanup gesture manager\n gestureManager.unregisterAllGestures(svg);\n };\n }, [svgRef, gestureManagerRef]);\n const addInteractionListener = React.useCallback((interaction, callback, options) => {\n // Forcefully cast the svgRef to any, it is annoying to fix the types.\n const svg = svgRef.current;\n svg?.addEventListener(interaction, callback, options);\n return {\n cleanup: () => svg?.removeEventListener(interaction, callback)\n };\n }, [svgRef]);\n const updateZoomInteractionListeners = React.useCallback((interaction, options) => {\n const svg = svgRef.current;\n const gestureManager = gestureManagerRef.current;\n if (!gestureManager || !svg) {\n return;\n }\n gestureManager.setGestureOptions(interaction, svg, options ?? {});\n }, [svgRef, gestureManagerRef]);\n React.useEffect(() => {\n const svg = svgRef.current;\n\n // Disable gesture on safari\n // https://use-gesture.netlify.app/docs/gestures/#about-the-pinch-gesture\n svg?.addEventListener('gesturestart', preventDefault);\n svg?.addEventListener('gesturechange', preventDefault);\n svg?.addEventListener('gestureend', preventDefault);\n return () => {\n svg?.removeEventListener('gesturestart', preventDefault);\n svg?.removeEventListener('gesturechange', preventDefault);\n svg?.removeEventListener('gestureend', preventDefault);\n };\n }, [svgRef]);\n return {\n instance: {\n addInteractionListener,\n updateZoomInteractionListeners\n }\n };\n};\nuseChartInteractionListener.params = {};\nuseChartInteractionListener.getInitialState = () => {\n return {};\n};","import { useChartAnimation } from \"./useChartAnimation/index.js\";\nimport { useChartDimensions } from \"./useChartDimensions/index.js\";\nimport { useChartExperimentalFeatures } from \"./useChartExperimentalFeature/index.js\";\nimport { useChartId } from \"./useChartId/index.js\";\nimport { useChartSeries } from \"./useChartSeries/index.js\";\nimport { useChartInteractionListener } from \"./useChartInteractionListener/index.js\";\n\n/**\n * Internal plugins that create the tools used by the other plugins.\n * These plugins are used by the Charts components.\n */\nexport const CHART_CORE_PLUGINS = [useChartId, useChartExperimentalFeatures, useChartDimensions, useChartSeries, useChartInteractionListener, useChartAnimation];","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"apiRef\"];\nexport const extractPluginParamsFromProps = _ref => {\n let {\n plugins\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref.props, _excluded);\n const paramsLookup = {};\n plugins.forEach(plugin => {\n Object.assign(paramsLookup, plugin.params);\n });\n const pluginParams = {};\n Object.keys(props).forEach(propName => {\n const prop = props[propName];\n if (paramsLookup[propName]) {\n pluginParams[propName] = prop;\n }\n });\n const defaultizedPluginParams = plugins.reduce((acc, plugin) => {\n if (plugin.getDefaultizedParams) {\n return plugin.getDefaultizedParams({\n params: acc\n });\n }\n return acc;\n }, pluginParams);\n return defaultizedPluginParams;\n};","import * as React from 'react';\nimport useId from '@mui/utils/useId';\nimport { Store } from '@mui/x-internals/store';\nimport { CHART_CORE_PLUGINS } from \"../plugins/corePlugins/index.js\";\nimport { extractPluginParamsFromProps } from \"./extractPluginParamsFromProps.js\";\nlet globalId = 0;\n\n/**\n * This is the main hook that setups the plugin system for the chart.\n *\n * It manages the data used to create the charts.\n *\n * @param inPlugins All the plugins that will be used in the chart.\n * @param props The props passed to the chart.\n * @param seriesConfig The set of helpers used for series-specific computation.\n */\nexport function useCharts(inPlugins, props, seriesConfig) {\n const chartId = useId();\n const plugins = React.useMemo(() => [...CHART_CORE_PLUGINS, ...inPlugins], [inPlugins]);\n const pluginParams = extractPluginParamsFromProps({\n plugins,\n props\n });\n pluginParams.id = pluginParams.id ?? chartId;\n const instanceRef = React.useRef({});\n const instance = instanceRef.current;\n const publicAPI = useChartApiInitialization(props.apiRef);\n const innerChartRootRef = React.useRef(null);\n const innerSvgRef = React.useRef(null);\n const storeRef = React.useRef(null);\n if (storeRef.current == null) {\n // eslint-disable-next-line react-compiler/react-compiler\n globalId += 1;\n const initialState = {\n cacheKey: {\n id: globalId\n }\n };\n plugins.forEach(plugin => {\n if (plugin.getInitialState) {\n Object.assign(initialState, plugin.getInitialState(pluginParams, initialState, seriesConfig));\n }\n });\n storeRef.current = new Store(initialState);\n }\n const runPlugin = plugin => {\n const pluginResponse = plugin({\n instance,\n params: pluginParams,\n plugins: plugins,\n store: storeRef.current,\n svgRef: innerSvgRef,\n chartRootRef: innerChartRootRef,\n seriesConfig\n });\n if (pluginResponse.publicAPI) {\n Object.assign(publicAPI.current, pluginResponse.publicAPI);\n }\n if (pluginResponse.instance) {\n Object.assign(instance, pluginResponse.instance);\n }\n };\n plugins.forEach(runPlugin);\n const contextValue = React.useMemo(() => ({\n store: storeRef.current,\n publicAPI: publicAPI.current,\n instance,\n svgRef: innerSvgRef,\n chartRootRef: innerChartRootRef\n }), [instance, publicAPI]);\n return {\n contextValue\n };\n}\nfunction initializeInputApiRef(inputApiRef) {\n if (inputApiRef.current == null) {\n inputApiRef.current = {};\n }\n return inputApiRef;\n}\nexport function useChartApiInitialization(inputApiRef) {\n const fallbackPublicApiRef = React.useRef({});\n if (inputApiRef) {\n return initializeInputApiRef(inputApiRef);\n }\n return fallbackPublicApiRef;\n}","'use client';\n\nimport * as React from 'react';\n/**\n * @ignore - internal component.\n */\nexport const ChartContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") ChartContext.displayName = \"ChartContext\";","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- no need to put `fn` in the dependency array\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","import useLazyRef from '@mui/utils/useLazyRef';\nimport useOnMount from '@mui/utils/useOnMount';\nconst noop = () => {};\n\n/**\n * An Effect implementation for the Store. This should be used for side-effects only. To\n * compute and store derived state, use `createSelectorMemoized` instead.\n */\nexport function useStoreEffect(store, selector, effect) {\n const instance = useLazyRef(initialize, {\n store,\n selector\n }).current;\n instance.effect = effect;\n useOnMount(instance.onMount);\n}\n\n// `useLazyRef` typings are incorrect, `params` should not be optional\nfunction initialize(params) {\n const {\n store,\n selector\n } = params;\n let previousState = selector(store.state);\n const instance = {\n effect: noop,\n dispose: null,\n // We want a single subscription done right away and cleared on unmount only,\n // but React triggers `useOnMount` multiple times in dev, so we need to manage\n // the subscription anyway.\n subscribe: () => {\n instance.dispose ??= store.subscribe(state => {\n const nextState = selector(state);\n if (!Object.is(previousState, nextState)) {\n const prev = previousState;\n previousState = nextState;\n instance.effect(prev, nextState);\n }\n });\n },\n onMount: () => {\n instance.subscribe();\n return () => {\n instance.dispose?.();\n instance.dispose = null;\n };\n }\n };\n instance.subscribe();\n return instance;\n}","'use client';\n\nimport * as React from 'react';\nimport { warnOnce } from \"../warning/index.js\";\n\n/**\n * Make sure a controlled prop is used correctly.\n * Logs errors if the prop either:\n *\n * - switch between controlled and uncontrolled\n * - modify it's default value\n * @param parameters\n */\nfunction useAssertModelConsistencyOutsideOfProduction(parameters) {\n const {\n componentName,\n propName,\n controlled,\n defaultValue,\n warningPrefix = 'MUI X'\n } = parameters;\n const [{\n initialDefaultValue,\n isControlled\n }] = React.useState({\n initialDefaultValue: defaultValue,\n isControlled: controlled !== undefined\n });\n if (isControlled !== (controlled !== undefined)) {\n warnOnce([`${warningPrefix}: A component is changing the ${isControlled ? '' : 'un'}controlled ${propName} state of ${componentName} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${propName} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'], 'error');\n }\n if (JSON.stringify(initialDefaultValue) !== JSON.stringify(defaultValue)) {\n warnOnce([`${warningPrefix}: A component is changing the default ${propName} state of an uncontrolled ${componentName} after being initialized. ` + `To suppress this warning opt to use a controlled ${componentName}.`], 'error');\n }\n}\nexport const useAssertModelConsistency = process.env.NODE_ENV === 'production' ? () => {} : useAssertModelConsistencyOutsideOfProduction;","import { createSelectorMemoized, createSelector } from '@mui/x-internals/store';\nimport { applySeriesLayout, applySeriesProcessors } from \"./processSeries.js\";\nimport { selectorChartDrawingArea } from \"../useChartDimensions/useChartDimensions.selectors.js\";\nexport const selectorChartSeriesState = state => state.series;\nexport const selectorChartDefaultizedSeries = createSelector(selectorChartSeriesState, seriesState => seriesState.defaultizedSeries);\nexport const selectorChartSeriesConfig = createSelector(selectorChartSeriesState, seriesState => seriesState.seriesConfig);\n\n/**\n * Get the dataset from the series state.\n * @returns {DatasetType | undefined} The dataset.\n */\nexport const selectorChartDataset = createSelector(selectorChartSeriesState, seriesState => seriesState.dataset);\n\n/**\n * Get the processed series after applying series processors.\n * This selector computes the processed series on-demand from the defaultized series.\n * @returns {ProcessedSeries} The processed series.\n */\nexport const selectorChartSeriesProcessed = createSelectorMemoized(selectorChartDefaultizedSeries, selectorChartSeriesConfig, selectorChartDataset, function selectorChartSeriesProcessed(defaultizedSeries, seriesConfig, dataset) {\n return applySeriesProcessors(defaultizedSeries, seriesConfig, dataset);\n});\n\n/**\n * Get the processed series after applying series processors.\n * This selector computes the processed series on-demand from the defaultized series.\n * @returns {ProcessedSeries} The processed series.\n */\nexport const selectorChartSeriesLayout = createSelectorMemoized(selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartDrawingArea, function selectorChartSeriesLayout(processedSeries, seriesConfig, drawingArea) {\n return applySeriesLayout(processedSeries, seriesConfig, drawingArea);\n});","/** Margin in the opposite direction of the axis, i.e., horizontal if the axis is vertical and vice versa. */\nexport const ZOOM_SLIDER_MARGIN = 4;\n\n/** Size of the zoom slider preview. */\nexport const ZOOM_SLIDER_PREVIEW_SIZE = 40;\n\n/** Size reserved for the zoom slider. The actual size of the slider might be smaller. */\nexport const DEFAULT_ZOOM_SLIDER_SIZE = 20 + 2 * ZOOM_SLIDER_MARGIN;\nexport const DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE = 40 + 2 * ZOOM_SLIDER_MARGIN;\nexport const DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP = 'hover';\n\n/** Default margin for pie charts. */\nexport const DEFAULT_PIE_CHART_MARGIN = {\n top: 5,\n bottom: 5,\n left: 5,\n right: 5\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE, DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP, DEFAULT_ZOOM_SLIDER_SIZE } from \"../../../constants.js\";\nexport const defaultZoomOptions = {\n minStart: 0,\n maxEnd: 100,\n step: 5,\n minSpan: 10,\n maxSpan: 100,\n panning: true,\n filterMode: 'keep',\n reverse: false,\n slider: {\n enabled: false,\n preview: false,\n size: DEFAULT_ZOOM_SLIDER_SIZE,\n showTooltip: DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP\n }\n};\nexport const defaultizeZoom = (zoom, axisId, axisDirection, reverse) => {\n if (!zoom) {\n return undefined;\n }\n if (zoom === true) {\n return _extends({\n axisId,\n axisDirection\n }, defaultZoomOptions, {\n reverse: reverse ?? false\n });\n }\n return _extends({\n axisId,\n axisDirection\n }, defaultZoomOptions, {\n reverse: reverse ?? false\n }, zoom, {\n slider: _extends({}, defaultZoomOptions.slider, {\n size: zoom.slider?.preview ?? defaultZoomOptions.slider.preview ? DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE : DEFAULT_ZOOM_SLIDER_SIZE\n }, zoom.slider)\n });\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { defaultizeZoom } from \"./defaultizeZoom.js\";\nimport { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY, DEFAULT_AXIS_SIZE_HEIGHT, DEFAULT_AXIS_SIZE_WIDTH, AXIS_LABEL_DEFAULT_HEIGHT } from \"../../../../constants/index.js\";\nexport function defaultizeXAxis(inAxes, dataset) {\n const offsets = {\n top: 0,\n bottom: 0,\n none: 0\n };\n const inputAxes = inAxes && inAxes.length > 0 ? inAxes : [{\n id: DEFAULT_X_AXIS_KEY,\n scaleType: 'linear'\n }];\n const parsedAxes = inputAxes.map((axisConfig, index) => {\n const dataKey = axisConfig.dataKey;\n\n // The first x-axis is defaultized to the bottom\n const defaultPosition = index === 0 ? 'bottom' : 'none';\n const position = axisConfig.position ?? defaultPosition;\n const defaultHeight = DEFAULT_AXIS_SIZE_HEIGHT + (axisConfig.label ? AXIS_LABEL_DEFAULT_HEIGHT : 0);\n const id = axisConfig.id ?? `defaultized-x-axis-${index}`;\n const sharedConfig = _extends({\n offset: offsets[position]\n }, axisConfig, {\n id,\n position,\n height: axisConfig.height ?? defaultHeight,\n zoom: defaultizeZoom(axisConfig.zoom, id, 'x', axisConfig.reverse)\n });\n\n // Increment the offset for the next axis\n if (position !== 'none') {\n offsets[position] += sharedConfig.height;\n if (sharedConfig.zoom?.slider.enabled) {\n offsets[position] += sharedConfig.zoom.slider.size;\n }\n }\n\n // If `dataKey` is NOT provided\n if (dataKey === undefined || axisConfig.data !== undefined) {\n return sharedConfig;\n }\n if (dataset === undefined) {\n throw new Error(`MUI X Charts: x-axis uses \\`dataKey\\` but no \\`dataset\\` is provided.`);\n }\n\n // If `dataKey` is provided\n return _extends({}, sharedConfig, {\n data: dataset.map(d => d[dataKey])\n });\n });\n return parsedAxes;\n}\nexport function defaultizeYAxis(inAxes, dataset) {\n const offsets = {\n right: 0,\n left: 0,\n none: 0\n };\n const inputAxes = inAxes && inAxes.length > 0 ? inAxes : [{\n id: DEFAULT_Y_AXIS_KEY,\n scaleType: 'linear'\n }];\n const parsedAxes = inputAxes.map((axisConfig, index) => {\n const dataKey = axisConfig.dataKey;\n\n // The first y-axis is defaultized to the left\n const defaultPosition = index === 0 ? 'left' : 'none';\n const position = axisConfig.position ?? defaultPosition;\n const defaultWidth = DEFAULT_AXIS_SIZE_WIDTH + (axisConfig.label ? AXIS_LABEL_DEFAULT_HEIGHT : 0);\n const id = axisConfig.id ?? `defaultized-y-axis-${index}`;\n const sharedConfig = _extends({\n offset: offsets[position]\n }, axisConfig, {\n id,\n position,\n width: axisConfig.width ?? defaultWidth,\n zoom: defaultizeZoom(axisConfig.zoom, id, 'y', axisConfig.reverse)\n });\n\n // Increment the offset for the next axis\n if (position !== 'none') {\n offsets[position] += sharedConfig.width;\n if (sharedConfig.zoom?.slider.enabled) {\n offsets[position] += sharedConfig.zoom.slider.size;\n }\n }\n\n // If `dataKey` is NOT provided\n if (dataKey === undefined || axisConfig.data !== undefined) {\n return sharedConfig;\n }\n if (dataset === undefined) {\n throw new Error(`MUI X Charts: y-axis uses \\`dataKey\\` but no \\`dataset\\` is provided.`);\n }\n\n // If `dataKey` is provided\n return _extends({}, sharedConfig, {\n data: dataset.map(d => d[dataKey])\n });\n });\n return parsedAxes;\n}","/**\n * Creates a default formatter function for continuous scales (e.g., linear, sqrt, log).\n * @returns A formatter function for continuous values.\n */\nexport function createScalarFormatter(tickNumber, zoomScale) {\n return function defaultScalarValueFormatter(value, context) {\n if (context.location === 'tick') {\n const domain = context.scale.domain();\n const zeroSizeDomain = domain[0] === domain[1];\n if (zeroSizeDomain) {\n return context.scale.tickFormat(1)(value);\n }\n return context.scale.tickFormat(tickNumber)(value);\n }\n if (context.location === 'zoom-slider-tooltip') {\n return zoomScale.tickFormat(2)(value);\n }\n return `${value}`;\n };\n}","/**\n * Use this type instead of `AxisScaleConfig` when the values\n * shouldn't be provided by the user.\n */\n\n/**\n * Config that is shared between cartesian and polar axes.\n */\n\n/**\n * Use this type for advanced typing. For basic usage, use `XAxis`, `YAxis`, `RotationAxis` or `RadiusAxis`.\n */\n\nexport function isBandScaleConfig(scaleConfig) {\n return scaleConfig.scaleType === 'band';\n}\nexport function isPointScaleConfig(scaleConfig) {\n return scaleConfig.scaleType === 'point';\n}\nexport function isContinuousScaleConfig(scaleConfig) {\n return scaleConfig.scaleType !== 'point' && scaleConfig.scaleType !== 'band';\n}\nexport function isSymlogScaleConfig(scaleConfig) {\n return scaleConfig.scaleType === 'symlog';\n}\n\n/**\n * The data format returned by onAxisClick.\n */\n\n/**\n * Identifies a data point within an axis.\n */\n\n/**\n * The axis configuration with missing values filled with default values.\n */\n\n/**\n * The x-axis configuration with missing values filled with default values.\n */\n\n/**\n * The y-axis configuration with missing values filled with default values.\n */","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import { scaleOrdinal, scaleThreshold, scaleSequential } from '@mui/x-charts-vendor/d3-scale';\nexport function getSequentialColorScale(config) {\n if (config.type === 'piecewise') {\n return scaleThreshold(config.thresholds, config.colors);\n }\n return scaleSequential([config.min ?? 0, config.max ?? 100], config.color);\n}\nexport function getOrdinalColorScale(config) {\n if (config.values) {\n return scaleOrdinal(config.values, config.colors).unknown(config.unknownColor ?? null);\n }\n return scaleOrdinal(config.colors.map((_, index) => index), config.colors).unknown(config.unknownColor ?? null);\n}\nexport function getColorScale(config) {\n return config.type === 'ordinal' ? getOrdinalColorScale(config) : getSequentialColorScale(config);\n}","export function getTickNumber(params, domain, defaultTickNumber) {\n const {\n tickMaxStep,\n tickMinStep,\n tickNumber\n } = params;\n const maxTicks = tickMinStep === undefined ? 999 : Math.floor(Math.abs(domain[1] - domain[0]) / tickMinStep);\n const minTicks = tickMaxStep === undefined ? 2 : Math.ceil(Math.abs(domain[1] - domain[0]) / tickMaxStep);\n const defaultizedTickNumber = tickNumber ?? defaultTickNumber;\n return Math.min(maxTicks, Math.max(minTicks, defaultizedTickNumber));\n}\nexport function scaleTickNumberByRange(tickNumber, range) {\n const rangeGap = range[1] - range[0];\n\n /* If the range start and end are the same, `tickNumber` will become infinity, so we default to 1. */\n if (rangeGap === 0) {\n return 1;\n }\n return tickNumber / ((range[1] - range[0]) / 100);\n}\nexport function getDefaultTickNumber(dimension) {\n return Math.floor(Math.abs(dimension) / 50);\n}","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import { scaleSymlog as originalScaleSymlog, scaleLog, scaleLinear } from '@mui/x-charts-vendor/d3-scale';\n\n/**\n * Constructs a new continuous scale with the specified range, the constant 1, the default interpolator and clamping disabled.\n * The domain defaults to [0, 1].\n * If range is not specified, it defaults to [0, 1].\n *\n * The first generic corresponds to the data type of the range elements.\n * The second generic corresponds to the data type of the output elements generated by the scale.\n * The third generic corresponds to the data type of the unknown value.\n *\n * If range element and output element type differ, the interpolator factory used with the scale must match this behavior and\n * convert the interpolated range element to a corresponding output element.\n *\n * The range must be set in accordance with the range element type.\n *\n * The interpolator factory may be set using the interpolate(...) method of the scale.\n *\n * @param range Array of range values.\n */\n\n/**\n * Constructs a new continuous scale with the specified domain and range, the constant 1, the default interpolator and clamping disabled.\n *\n * The first generic corresponds to the data type of the range elements.\n * The second generic corresponds to the data type of the output elements generated by the scale.\n * The third generic corresponds to the data type of the unknown value.\n *\n * If range element and output element type differ, the interpolator factory used with the scale must match this behavior and\n * convert the interpolated range element to a corresponding output element.\n *\n * The range must be set in accordance with the range element type.\n *\n * The interpolator factory may be set using the interpolate(...) method of the scale.\n *\n * @param domain Array of numeric domain values.\n * @param range Array of range values.\n */\n\nexport function scaleSymlog(...args) {\n const scale = originalScaleSymlog(...args);\n const originalTicks = scale.ticks;\n const {\n negativeScale,\n linearScale,\n positiveScale\n } = generateScales(scale);\n\n // Workaround for https://github.com/d3/d3-scale/issues/162\n scale.ticks = count => {\n const ticks = originalTicks(count);\n const constant = scale.constant();\n let negativeLogTickCount = 0;\n let linearTickCount = 0;\n let positiveLogTickCount = 0;\n ticks.forEach(tick => {\n if (tick > -constant && tick < constant) {\n linearTickCount += 1;\n }\n if (tick <= -constant) {\n negativeLogTickCount += 1;\n }\n if (tick >= constant) {\n positiveLogTickCount += 1;\n }\n });\n const finalTicks = [];\n if (negativeLogTickCount > 0) {\n finalTicks.push(...negativeScale.ticks(negativeLogTickCount));\n }\n if (linearTickCount > 0) {\n const linearTicks = linearScale.ticks(linearTickCount);\n if (finalTicks.at(-1) === linearTicks[0]) {\n finalTicks.push(...linearTicks.slice(1));\n } else {\n finalTicks.push(...linearTicks);\n }\n }\n if (positiveLogTickCount > 0) {\n const positiveTicks = positiveScale.ticks(positiveLogTickCount);\n if (finalTicks.at(-1) === positiveTicks[0]) {\n finalTicks.push(...positiveTicks.slice(1));\n } else {\n finalTicks.push(...positiveTicks);\n }\n }\n return finalTicks;\n };\n scale.tickFormat = (count = 10, specifier) => {\n // Calculates the proportion of the domain that each scale occupies, and use that ratio to determine the number of ticks for each scale.\n const constant = scale.constant();\n const [start, end] = scale.domain();\n const extent = end - start;\n const negativeScaleDomain = negativeScale.domain();\n const negativeScaleExtent = negativeScaleDomain[1] - negativeScaleDomain[0];\n const negativeScaleRatio = extent === 0 ? 0 : negativeScaleExtent / extent;\n const negativeScaleTickCount = negativeScaleRatio * count;\n const linearScaleDomain = linearScale.domain();\n const linearScaleExtent = linearScaleDomain[1] - linearScaleDomain[0];\n const linearScaleRatio = extent === 0 ? 0 : linearScaleExtent / extent;\n const linearScaleTickCount = linearScaleRatio * count;\n const positiveScaleDomain = positiveScale.domain();\n const positiveScaleExtent = positiveScaleDomain[1] - positiveScaleDomain[0];\n const positiveScaleRatio = extent === 0 ? 0 : positiveScaleExtent / extent;\n const positiveScaleTickCount = positiveScaleRatio * count;\n const negativeTickFormat = negativeScale.tickFormat(negativeScaleTickCount, specifier);\n const linearTickFormat = linearScale.tickFormat(linearScaleTickCount, specifier);\n const positiveTickFormat = positiveScale.tickFormat(positiveScaleTickCount, specifier);\n return tick => {\n const tickFormat =\n // eslint-disable-next-line no-nested-ternary\n tick.valueOf() <= -constant ? negativeTickFormat : tick.valueOf() >= constant ? positiveTickFormat : linearTickFormat;\n return tickFormat(tick);\n };\n };\n\n /* Adaptation of https://github.com/d3/d3-scale/blob/d6904a4bde09e16005e0ad8ca3e25b10ce54fa0d/src/symlog.js#L30 */\n scale.copy = () => {\n return scaleSymlog(scale.domain(), scale.range()).constant(scale.constant());\n };\n return scale;\n}\nfunction generateScales(scale) {\n const constant = scale.constant();\n const domain = scale.domain();\n const negativeDomain = [domain[0], Math.min(domain[1], -constant)];\n const negativeLogScale = scaleLog(negativeDomain, scale.range());\n const linearDomain = [Math.max(domain[0], -constant), Math.min(domain[1], constant)];\n const linearScale = scaleLinear(linearDomain, scale.range());\n const positiveDomain = [Math.max(domain[0], constant), domain[1]];\n const positiveLogScale = scaleLog(positiveDomain, scale.range());\n return {\n negativeScale: negativeLogScale,\n linearScale,\n positiveScale: positiveLogScale\n };\n}","import { scaleLog, scalePow, scaleSqrt, scaleTime, scaleUtc, scaleLinear } from '@mui/x-charts-vendor/d3-scale';\nimport { scaleSymlog } from \"./scales/index.js\";\nexport function getScale(scaleType, domain, range) {\n switch (scaleType) {\n case 'log':\n return scaleLog(domain, range);\n case 'pow':\n return scalePow(domain, range);\n case 'sqrt':\n return scaleSqrt(domain, range);\n case 'time':\n return scaleTime(domain, range);\n case 'utc':\n return scaleUtc(domain, range);\n case 'symlog':\n return scaleSymlog(domain, range);\n default:\n return scaleLinear(domain, range);\n }\n}","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import { scaleTime } from '@mui/x-charts-vendor/d3-scale';\n/**\n * Checks if the provided data array contains Date objects.\n * @param data The data array to check.\n * @returns A type predicate indicating if the data is an array of Date objects.\n */\nexport const isDateData = data => data?.[0] instanceof Date;\n\n/**\n * Creates a formatter function for date values.\n * @param data The data array containing Date or NumberValue objects.\n * @param range The range for the time scale.\n * @param tickNumber (Optional) The number of ticks for formatting.\n * @returns A formatter function for date values.\n */\nexport function createDateFormatter(data, range, tickNumber) {\n const timeScale = scaleTime(data, range);\n return (v, {\n location\n }) => location === 'tick' ? timeScale.tickFormat(tickNumber)(v) : `${v.toLocaleString()}`;\n}","let cartesianInstance;\nlet polarInstance;\nclass CartesianSeriesTypes {\n types = (() => new Set())();\n constructor() {\n if (cartesianInstance) {\n throw new Error('You can only create one instance!');\n }\n cartesianInstance = this.types;\n }\n addType(value) {\n this.types.add(value);\n }\n getTypes() {\n return this.types;\n }\n}\nclass PolarSeriesTypes {\n types = (() => new Set())();\n constructor() {\n if (polarInstance) {\n throw new Error('You can only create one instance!');\n }\n polarInstance = this.types;\n }\n addType(value) {\n this.types.add(value);\n }\n getTypes() {\n return this.types;\n }\n}\nexport const cartesianSeriesTypes = new CartesianSeriesTypes();\ncartesianSeriesTypes.addType('bar');\ncartesianSeriesTypes.addType('line');\ncartesianSeriesTypes.addType('scatter');\nexport const polarSeriesTypes = new PolarSeriesTypes();\npolarSeriesTypes.addType('radar');","import { cartesianSeriesTypes } from \"./configInit.js\";\nexport function isCartesianSeriesType(seriesType) {\n return cartesianSeriesTypes.getTypes().has(seriesType);\n}\nexport function isCartesianSeries(series) {\n return isCartesianSeriesType(series.type);\n}","export function isOrdinalScale(scale) {\n return scale.bandwidth !== undefined;\n}\nexport function isBandScale(scale) {\n return isOrdinalScale(scale) && scale.paddingOuter !== undefined;\n}\nexport function isPointScale(scale) {\n return isOrdinalScale(scale) && !('paddingOuter' in scale);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createScalarFormatter } from \"../../../defaultValueFormatters.js\";\nimport { isBandScaleConfig, isPointScaleConfig } from \"../../../../models/axis.js\";\nimport { getColorScale, getOrdinalColorScale, getSequentialColorScale } from \"../../../colorScale.js\";\nimport { scaleTickNumberByRange } from \"../../../ticks.js\";\nimport { getScale } from \"../../../getScale.js\";\nimport { isDateData, createDateFormatter } from \"../../../dateHelpers.js\";\nimport { getAxisTriggerTooltip } from \"./getAxisTriggerTooltip.js\";\nimport { isBandScale, isOrdinalScale } from \"../../../scaleGuards.js\";\nfunction getRange(drawingArea, axisDirection,\n// | 'rotation' | 'radius',\nreverse) {\n const range = axisDirection === 'x' ? [drawingArea.left, drawingArea.left + drawingArea.width] : [drawingArea.top + drawingArea.height, drawingArea.top];\n return reverse ? [range[1], range[0]] : range;\n}\nfunction shouldIgnoreGapRatios(scale, categoryGapRatio) {\n const step = scale.step();\n const paddingPx = step * categoryGapRatio;\n\n /* If the padding is less than 0.1px, we consider it negligible and ignore it.\n * This prevents issues where very small gaps cause rendering artifacts or unexpected layouts.\n * A threshold of 0.1px is chosen as it's generally below the perceptible limit for most displays.\n */\n return paddingPx < 0.1;\n}\nconst DEFAULT_CATEGORY_GAP_RATIO = 0.2;\nconst DEFAULT_BAR_GAP_RATIO = 0.1;\nexport function computeAxisValue({\n scales,\n drawingArea,\n formattedSeries,\n axis: allAxis,\n seriesConfig,\n axisDirection,\n zoomMap,\n domains\n}) {\n if (allAxis === undefined) {\n return {\n axis: {},\n axisIds: []\n };\n }\n const axisIdsTriggeringTooltip = getAxisTriggerTooltip(axisDirection, seriesConfig, formattedSeries, allAxis[0].id);\n const completeAxis = {};\n allAxis.forEach(eachAxis => {\n const axis = eachAxis;\n const scale = scales[axis.id];\n const zoom = zoomMap?.get(axis.id);\n const zoomRange = zoom ? [zoom.start, zoom.end] : [0, 100];\n const range = getRange(drawingArea, axisDirection, axis.reverse ?? false);\n const rawTickNumber = domains[axis.id].tickNumber;\n const triggerTooltip = !axis.ignoreTooltip && axisIdsTriggeringTooltip.has(axis.id);\n const tickNumber = scaleTickNumberByRange(rawTickNumber, zoomRange);\n const data = axis.data ?? [];\n if (isOrdinalScale(scale)) {\n // Reverse range because ordinal scales are presented from top to bottom on y-axis\n const scaleRange = axisDirection === 'y' ? [range[1], range[0]] : range;\n if (isBandScale(scale) && isBandScaleConfig(axis)) {\n const desiredCategoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;\n const ignoreGapRatios = shouldIgnoreGapRatios(scale, desiredCategoryGapRatio);\n const categoryGapRatio = ignoreGapRatios ? 0 : desiredCategoryGapRatio;\n const barGapRatio = ignoreGapRatios ? 0 : axis.barGapRatio ?? DEFAULT_BAR_GAP_RATIO;\n completeAxis[axis.id] = _extends({\n offset: 0,\n height: 0,\n categoryGapRatio,\n barGapRatio,\n triggerTooltip\n }, axis, {\n data,\n /* Doing this here is technically wrong, but acceptable in practice.\n * In theory, this should be done in the normalized scale selector, but then we'd need that selector to depend\n * on the zoom range, which would void its goal (which is to be independent of zoom).\n * Since we only ignore gap ratios when they're practically invisible, the small errors caused by this\n * discrepancy will hopefully not be noticeable. */\n scale: ignoreGapRatios ? scale.copy().padding(0) : scale,\n tickNumber,\n colorScale: axis.colorMap && (axis.colorMap.type === 'ordinal' ? getOrdinalColorScale(_extends({\n values: axis.data\n }, axis.colorMap)) : getColorScale(axis.colorMap))\n });\n }\n if (isPointScaleConfig(axis)) {\n completeAxis[axis.id] = _extends({\n offset: 0,\n height: 0,\n triggerTooltip\n }, axis, {\n data,\n scale,\n tickNumber,\n colorScale: axis.colorMap && (axis.colorMap.type === 'ordinal' ? getOrdinalColorScale(_extends({\n values: axis.data\n }, axis.colorMap)) : getColorScale(axis.colorMap))\n });\n }\n if (isDateData(axis.data)) {\n const dateFormatter = createDateFormatter(axis.data, scaleRange, axis.tickNumber);\n completeAxis[axis.id].valueFormatter = axis.valueFormatter ?? dateFormatter;\n }\n return;\n }\n if (axis.scaleType === 'band' || axis.scaleType === 'point') {\n // Could be merged with the two previous \"if conditions\" but then TS does not get that `axis.scaleType` can't be `band` or `point`.\n return;\n }\n const continuousAxis = axis;\n const scaleType = continuousAxis.scaleType ?? 'linear';\n completeAxis[axis.id] = _extends({\n offset: 0,\n height: 0,\n triggerTooltip\n }, continuousAxis, {\n data,\n scaleType,\n scale,\n tickNumber,\n colorScale: continuousAxis.colorMap && getSequentialColorScale(continuousAxis.colorMap),\n valueFormatter: axis.valueFormatter ?? createScalarFormatter(tickNumber, getScale(scaleType, range.map(v => scale.invert(v)), range))\n });\n });\n return {\n axis: completeAxis,\n axisIds: allAxis.map(({\n id\n }) => id)\n };\n}","import { isCartesianSeriesType } from \"../../../isCartesian.js\";\nexport const getAxisTriggerTooltip = (axisDirection, seriesConfig, formattedSeries, defaultAxisId) => {\n const tooltipAxesIds = new Set();\n const chartTypes = Object.keys(seriesConfig).filter(isCartesianSeriesType);\n chartTypes.forEach(chartType => {\n const series = formattedSeries[chartType]?.series ?? {};\n const tooltipAxes = seriesConfig[chartType].axisTooltipGetter?.(series);\n if (tooltipAxes === undefined) {\n return;\n }\n tooltipAxes.forEach(({\n axisId,\n direction\n }) => {\n if (direction === axisDirection) {\n tooltipAxesIds.add(axisId ?? defaultAxisId);\n }\n });\n });\n return tooltipAxesIds;\n};","export function isDefined(value) {\n return value !== null && value !== undefined;\n}","import { isDefined } from \"../../../isDefined.js\";\nexport function createDiscreteScaleGetAxisFilter(axisData, zoomStart, zoomEnd, direction) {\n const maxIndex = axisData?.length ?? 0;\n const minVal = Math.floor(zoomStart * maxIndex / 100);\n const maxVal = Math.ceil(zoomEnd * maxIndex / 100);\n return function filterAxis(value, dataIndex) {\n const val = value[direction] ?? axisData?.[dataIndex];\n if (val == null) {\n // If the value does not exist because of missing data point, or out of range index, we just ignore.\n return true;\n }\n return dataIndex >= minVal && dataIndex < maxVal;\n };\n}\nexport function createContinuousScaleGetAxisFilter(domain, zoomStart, zoomEnd, direction, axisData) {\n const min = domain[0].valueOf();\n const max = domain[1].valueOf();\n const minVal = min + zoomStart * (max - min) / 100;\n const maxVal = min + zoomEnd * (max - min) / 100;\n return function filterAxis(value, dataIndex) {\n const val = value[direction] ?? axisData?.[dataIndex];\n if (val == null) {\n // If the value does not exist because of missing data point, or out of range index, we just ignore.\n return true;\n }\n return val >= minVal && val <= maxVal;\n };\n}\nexport const createGetAxisFilters = filters => ({\n currentAxisId,\n seriesXAxisId,\n seriesYAxisId,\n isDefaultAxis\n}) => {\n return (value, dataIndex) => {\n const axisId = currentAxisId === seriesXAxisId ? seriesYAxisId : seriesXAxisId;\n if (!axisId || isDefaultAxis) {\n return Object.values(filters ?? {})[0]?.(value, dataIndex) ?? true;\n }\n const data = [seriesYAxisId, seriesXAxisId].filter(id => id !== currentAxisId).map(id => filters[id ?? '']).filter(isDefined);\n return data.every(f => f(value, dataIndex));\n };\n};","import { defaultizeZoom } from \"./defaultizeZoom.js\";\nexport const createZoomLookup = axisDirection => (axes = []) => axes.reduce((acc, v) => {\n // @ts-ignore\n const {\n zoom,\n id: axisId,\n reverse\n } = v;\n const defaultizedZoom = defaultizeZoom(zoom, axisId, axisDirection, reverse);\n if (defaultizedZoom) {\n acc[axisId] = defaultizedZoom;\n }\n return acc;\n}, {});","import { createSelector } from '@mui/x-internals/store';\nexport const selectorChartExperimentalFeaturesState = state => state.experimentalFeatures;\nexport const selectorPreferStrictDomainInLineCharts = createSelector(selectorChartExperimentalFeaturesState, features => Boolean(features?.preferStrictDomainInLineCharts));","/* eslint-disable func-names */\n// Adapted from d3-scale v4.0.2\n// https://github.com/d3/d3-scale/blob/d6904a4bde09e16005e0ad8ca3e25b10ce54fa0d/src/band.js\nimport { InternMap, range as sequence } from '@mui/x-charts-vendor/d3-array';\nexport function keyof(value) {\n if (Array.isArray(value)) {\n return JSON.stringify(value);\n }\n if (typeof value === 'object' && value !== null) {\n return value.valueOf();\n }\n return value;\n}\n\n/**\n * Constructs a new band scale with the specified range, no padding, no rounding and center alignment.\n * The domain defaults to the empty domain.\n * If range is not specified, it defaults to the unit range [0, 1].\n *\n * The generic corresponds to the data type of domain elements.\n *\n * @param range A two-element array of numeric values.\n */\n\n/**\n * Constructs a new band scale with the specified domain and range, no padding, no rounding and center alignment.\n *\n * The generic corresponds to the data type of domain elements.\n *\n * @param domain Array of domain values.\n * @param range A two-element array of numeric values.\n */\n\nexport function scaleBand(...args) {\n // @ts-expect-error, InternMap accepts two arguments, but its types are set as Map, which doesn't.\n let index = new InternMap(undefined, keyof);\n let domain = [];\n let ordinalRange = [];\n let r0 = 0;\n let r1 = 1;\n let step;\n let bandwidth;\n let isRound = false;\n let paddingInner = 0;\n let paddingOuter = 0;\n let align = 0.5;\n const scale = d => {\n const i = index.get(d);\n if (i === undefined) {\n return undefined;\n }\n return ordinalRange[i % ordinalRange.length];\n };\n const rescale = () => {\n const n = domain.length;\n const reverse = r1 < r0;\n const start = reverse ? r1 : r0;\n const stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (isRound) {\n step = Math.floor(step);\n }\n const adjustedStart = start + (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n const finalStart = isRound ? Math.round(adjustedStart) : adjustedStart;\n const finalBandwidth = isRound ? Math.round(bandwidth) : bandwidth;\n bandwidth = finalBandwidth;\n const values = sequence(n).map(i => finalStart + step * i);\n ordinalRange = reverse ? values.reverse() : values;\n return scale;\n };\n scale.domain = function (_) {\n if (!arguments.length) {\n return domain.slice();\n }\n domain = [];\n // @ts-expect-error, InternMap accepts two arguments.\n index = new InternMap(undefined, keyof);\n for (const value of _) {\n if (index.has(value)) {\n continue;\n }\n index.set(value, domain.push(value) - 1);\n }\n return rescale();\n };\n scale.range = function (_) {\n if (!arguments.length) {\n return [r0, r1];\n }\n const [v0, v1] = _;\n r0 = +v0;\n r1 = +v1;\n return rescale();\n };\n scale.rangeRound = function (_) {\n const [v0, v1] = _;\n r0 = +v0;\n r1 = +v1;\n isRound = true;\n return rescale();\n };\n scale.bandwidth = function () {\n return bandwidth;\n };\n scale.step = function () {\n return step;\n };\n scale.round = function (_) {\n if (!arguments.length) {\n return isRound;\n }\n isRound = !!_;\n return rescale();\n };\n scale.padding = function (_) {\n if (!arguments.length) {\n return paddingInner;\n }\n paddingInner = Math.min(1, paddingOuter = +_);\n return rescale();\n };\n scale.paddingInner = function (_) {\n if (!arguments.length) {\n return paddingInner;\n }\n paddingInner = Math.min(1, _);\n return rescale();\n };\n scale.paddingOuter = function (_) {\n if (!arguments.length) {\n return paddingOuter;\n }\n paddingOuter = +_;\n return rescale();\n };\n scale.align = function (_) {\n if (!arguments.length) {\n return align;\n }\n align = Math.max(0, Math.min(1, _));\n return rescale();\n };\n scale.copy = () => {\n return scaleBand(domain, [r0, r1]).round(isRound).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n };\n\n // Initialize from arguments\n const [arg0, arg1] = args;\n if (args.length > 1) {\n scale.domain(arg0);\n scale.range(arg1);\n } else if (arg0) {\n scale.range(arg0);\n } else {\n rescale();\n }\n return scale;\n}","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import { scaleBand } from \"./scaleBand.js\";\n\n/**\n * Constructs a new point scale with the specified range, no padding, no rounding and center alignment.\n * The domain defaults to the empty domain.\n * If range is not specified, it defaults to the unit range [0, 1].\n *\n * The generic corresponds to the data type of domain elements.\n *\n * @param range A two-element array of numeric values.\n */\n\n/**\n * Constructs a new point scale with the specified domain and range, no padding, no rounding and center alignment.\n * The domain defaults to the empty domain.\n *\n * The generic corresponds to the data type of domain elements.\n *\n * @param domain Array of domain values.\n * @param range A two-element array of numeric values.\n */\n\nexport function scalePoint(...args) {\n // ScalePoint is essentially ScaleBand with paddingInner(1)\n const scale = scaleBand(...args).paddingInner(1);\n\n // Remove paddingInner method and make padding alias to paddingOuter\n const originalCopy = scale.copy;\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n scale.copy = () => {\n const copied = originalCopy();\n copied.padding = copied.paddingOuter;\n delete copied.paddingInner;\n delete copied.paddingOuter;\n copied.copy = scale.copy;\n return copied;\n };\n return scale;\n}","import { isBandScaleConfig, isPointScaleConfig, isSymlogScaleConfig } from \"../../../../models/axis.js\";\nimport { getScale } from \"../../../getScale.js\";\nimport { scaleBand, scalePoint } from \"../../../scales/index.js\";\nconst DEFAULT_CATEGORY_GAP_RATIO = 0.2;\nexport function getRange(drawingArea, axisDirection, axis) {\n const range = axisDirection === 'x' ? [drawingArea.left, drawingArea.left + drawingArea.width] : [drawingArea.top + drawingArea.height, drawingArea.top];\n return axis.reverse ? [range[1], range[0]] : range;\n}\nexport function getNormalizedAxisScale(axis, domain) {\n const range = [0, 1];\n if (isBandScaleConfig(axis)) {\n const categoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;\n return scaleBand(domain, range).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2);\n }\n if (isPointScaleConfig(axis)) {\n return scalePoint(domain, range);\n }\n const scaleType = axis.scaleType ?? 'linear';\n const scale = getScale(scaleType, domain, range);\n if (isSymlogScaleConfig(axis) && axis.constant != null) {\n scale.constant(axis.constant);\n }\n return scale;\n}","/**\n * Applies the zoom into the scale range.\n * It changes the screen coordinates that the scale covers.\n * Not the data that is displayed.\n *\n * @param scaleRange the original range in real screen coordinates.\n * @param zoomRange the zoom range in percentage.\n * @returns zoomed range in real screen coordinates.\n */\nexport const zoomScaleRange = (scaleRange, zoomRange) => {\n const rangeGap = scaleRange[1] - scaleRange[0];\n const zoomGap = zoomRange[1] - zoomRange[0];\n\n // If current zoom show the scale between p1 and p2 percents\n // The range should be extended by adding [0, p1] and [p2, 100] segments\n const min = scaleRange[0] - zoomRange[0] * rangeGap / zoomGap;\n const max = scaleRange[1] + (100 - zoomRange[1]) * rangeGap / zoomGap;\n return [min, max];\n};","import { isCartesianSeriesType } from \"../../../isCartesian.js\";\nconst axisExtremumCallback = (chartType, axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters) => {\n const getter = axisDirection === 'x' ? seriesConfig[chartType].xExtremumGetter : seriesConfig[chartType].yExtremumGetter;\n const series = formattedSeries[chartType]?.series ?? {};\n return getter?.({\n series,\n axis,\n axisIndex,\n isDefaultAxis: axisIndex === 0,\n getFilters\n }) ?? [Infinity, -Infinity];\n};\nexport function getAxisExtrema(axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters) {\n const cartesianChartTypes = Object.keys(seriesConfig).filter(isCartesianSeriesType);\n let extrema = [Infinity, -Infinity];\n for (const chartType of cartesianChartTypes) {\n const [min, max] = axisExtremumCallback(chartType, axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters);\n extrema = [Math.min(extrema[0], min), Math.max(extrema[1], max)];\n }\n if (Number.isNaN(extrema[0]) || Number.isNaN(extrema[1])) {\n return [Infinity, -Infinity];\n }\n return extrema;\n}","import { getScale } from \"../../../getScale.js\";\nimport { getAxisDomainLimit } from \"./getAxisDomainLimit.js\";\nimport { getTickNumber } from \"../../../ticks.js\";\nfunction niceDomain(scaleType, domain, tickNumber) {\n return getScale(scaleType ?? 'linear', domain, [0, 1]).nice(tickNumber).domain();\n}\n\n/**\n * Calculates the initial domain and tick number for a given axis.\n * The domain should still run through the zoom filterMode after this step.\n */\nexport function calculateInitialDomainAndTickNumber(axis, axisDirection, axisIndex, formattedSeries, [minData, maxData], defaultTickNumber, preferStrictDomainInLineCharts) {\n const domainLimit = getDomainLimit(axis, axisDirection, axisIndex, formattedSeries, preferStrictDomainInLineCharts);\n let axisExtrema = getActualAxisExtrema(axis, minData, maxData);\n if (typeof domainLimit === 'function') {\n const {\n min,\n max\n } = domainLimit(minData.valueOf(), maxData.valueOf());\n axisExtrema[0] = min;\n axisExtrema[1] = max;\n }\n const tickNumber = getTickNumber(axis, axisExtrema, defaultTickNumber);\n if (domainLimit === 'nice') {\n axisExtrema = niceDomain(axis.scaleType, axisExtrema, tickNumber);\n }\n axisExtrema = ['min' in axis ? axis.min ?? axisExtrema[0] : axisExtrema[0], 'max' in axis ? axis.max ?? axisExtrema[1] : axisExtrema[1]];\n return {\n domain: axisExtrema,\n tickNumber\n };\n}\n\n/**\n * Calculates the final domain for an axis.\n * After this step, the domain can be used to create the axis scale.\n */\nexport function calculateFinalDomain(axis, axisDirection, axisIndex, formattedSeries, [minData, maxData], tickNumber, preferStrictDomainInLineCharts) {\n const domainLimit = getDomainLimit(axis, axisDirection, axisIndex, formattedSeries, preferStrictDomainInLineCharts);\n let axisExtrema = getActualAxisExtrema(axis, minData, maxData);\n if (typeof domainLimit === 'function') {\n const {\n min,\n max\n } = domainLimit(minData.valueOf(), maxData.valueOf());\n axisExtrema[0] = min;\n axisExtrema[1] = max;\n }\n if (domainLimit === 'nice') {\n axisExtrema = niceDomain(axis.scaleType, axisExtrema, tickNumber);\n }\n return [axis.min ?? axisExtrema[0], axis.max ?? axisExtrema[1]];\n}\nfunction getDomainLimit(axis, axisDirection, axisIndex, formattedSeries, preferStrictDomainInLineCharts) {\n return preferStrictDomainInLineCharts ? getAxisDomainLimit(axis, axisDirection, axisIndex, formattedSeries) : axis.domainLimit ?? 'nice';\n}\n\n/**\n * Get the actual axis extrema considering the user defined min and max values.\n * @param axisExtrema User defined axis extrema.\n * @param minData Minimum value from the data.\n * @param maxData Maximum value from the data.\n */\nfunction getActualAxisExtrema(axisExtrema, minData, maxData) {\n let min = minData;\n let max = maxData;\n if ('max' in axisExtrema && axisExtrema.max != null && axisExtrema.max < minData) {\n min = axisExtrema.max;\n }\n if ('min' in axisExtrema && axisExtrema.min != null && axisExtrema.min > minData) {\n max = axisExtrema.min;\n }\n if (!('min' in axisExtrema) && !('max' in axisExtrema)) {\n return [min, max];\n }\n return [axisExtrema.min ?? min, axisExtrema.max ?? max];\n}","export const getAxisDomainLimit = (axis, axisDirection, axisIndex, formattedSeries) => {\n if (axis.domainLimit !== undefined) {\n return axis.domainLimit;\n }\n if (axisDirection === 'x') {\n for (const seriesId of formattedSeries.line?.seriesOrder ?? []) {\n const series = formattedSeries.line.series[seriesId];\n if (series.xAxisId === axis.id || series.xAxisId === undefined && axisIndex === 0) {\n return 'strict';\n }\n }\n }\n return 'nice';\n};","\n/** @template T */\nexport default class FlatQueue {\n\n constructor() {\n /** @type T[] */\n this.ids = [];\n\n /** @type number[] */\n this.values = [];\n\n /** Number of items in the queue. */\n this.length = 0;\n }\n\n /** Removes all items from the queue. */\n clear() {\n this.length = 0;\n }\n\n /**\n * Adds `item` to the queue with the specified `priority`.\n *\n * `priority` must be a number. Items are sorted and returned from low to high priority. Multiple items\n * with the same priority value can be added to the queue, but there is no guaranteed order between these items.\n *\n * @param {T} item\n * @param {number} priority\n */\n push(item, priority) {\n let pos = this.length++;\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const parentValue = this.values[parent];\n if (priority >= parentValue) break;\n this.ids[pos] = this.ids[parent];\n this.values[pos] = parentValue;\n pos = parent;\n }\n\n this.ids[pos] = item;\n this.values[pos] = priority;\n }\n\n /**\n * Removes and returns the item from the head of this queue, which is one of\n * the items with the lowest priority. If this queue is empty, returns `undefined`.\n */\n pop() {\n if (this.length === 0) return undefined;\n\n const ids = this.ids,\n values = this.values,\n top = ids[0],\n last = --this.length;\n\n if (last > 0) {\n const id = ids[last];\n const value = values[last];\n let pos = 0;\n const halfLen = last >> 1;\n\n while (pos < halfLen) {\n const left = (pos << 1) + 1;\n const right = left + 1;\n const child = left + (+(right < last) & +(values[right] < values[left]));\n if (values[child] >= value) break;\n ids[pos] = ids[child];\n values[pos] = values[child];\n pos = child;\n }\n\n ids[pos] = id;\n values[pos] = value;\n }\n\n return top;\n }\n\n /** Returns the item from the head of this queue without removing it. If this queue is empty, returns `undefined`. */\n peek() {\n return this.length > 0 ? this.ids[0] : undefined;\n }\n\n /**\n * Returns the priority value of the item at the head of this queue without\n * removing it. If this queue is empty, returns `undefined`.\n */\n peekValue() {\n return this.length > 0 ? this.values[0] : undefined;\n }\n\n /**\n * Shrinks the internal arrays to `this.length`.\n *\n * `pop()` and `clear()` calls don't free memory automatically to avoid unnecessary resize operations.\n * This also means that items that have been added to the queue can't be garbage collected until\n * a new item is pushed in their place, or this method is called.\n */\n shrink() {\n this.ids.length = this.values.length = this.length;\n }\n}\n","// @ts-nocheck\n/* eslint-disable */\nimport FlatQueue from '@mui/x-charts-vendor/flatqueue';\nconst ARRAY_TYPES = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];\nconst VERSION = 3; // serialized format version\n\nexport class Flatbush {\n /**\n * Recreate a Flatbush index from raw `ArrayBuffer` or `SharedArrayBuffer` data.\n * @param {ArrayBufferLike} data\n * @param {number} [byteOffset=0] byte offset to the start of the Flatbush buffer in the referenced ArrayBuffer.\n * @returns {Flatbush} index\n */\n static from(data, byteOffset = 0) {\n if (byteOffset % 8 !== 0) {\n throw new Error('byteOffset must be 8-byte aligned.');\n }\n\n // @ts-expect-error duck typing array buffers\n if (!data || data.byteLength === undefined || data.buffer) {\n throw new Error('Data must be an instance of ArrayBuffer or SharedArrayBuffer.');\n }\n const [magic, versionAndType] = new Uint8Array(data, byteOffset + 0, 2);\n if (magic !== 0xfb) {\n throw new Error('Data does not appear to be in a Flatbush format.');\n }\n const version = versionAndType >> 4;\n if (version !== VERSION) {\n throw new Error(`Got v${version} data when expected v${VERSION}.`);\n }\n const ArrayType = ARRAY_TYPES[versionAndType & 0x0f];\n if (!ArrayType) {\n throw new Error('Unrecognized array type.');\n }\n const [nodeSize] = new Uint16Array(data, byteOffset + 2, 1);\n const [numItems] = new Uint32Array(data, byteOffset + 4, 1);\n return new Flatbush(numItems, nodeSize, ArrayType, undefined, data, byteOffset);\n }\n\n /**\n * Create a Flatbush index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=16] Size of the tree node (16 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBufferConstructor | SharedArrayBufferConstructor} [ArrayBufferType=ArrayBuffer] The array buffer type used to store data (`ArrayBuffer` by default).\n * @param {ArrayBufferLike} [data] (Only used internally)\n * @param {number} [byteOffset=0] (Only used internally)\n */\n constructor(numItems, nodeSize = 16, ArrayType = Float64Array, ArrayBufferType = ArrayBuffer, data, byteOffset = 0) {\n if (numItems === undefined) {\n throw new Error('Missing required argument: numItems.');\n }\n if (isNaN(numItems) || numItems <= 0) {\n throw new Error(`Unexpected numItems value: ${numItems}.`);\n }\n this.numItems = +numItems;\n this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535);\n this.byteOffset = byteOffset;\n\n // calculate the total number of nodes in the R-tree to allocate space for\n // and the index of each tree level (used in search later)\n let n = numItems;\n let numNodes = n;\n this._levelBounds = [n * 4];\n do {\n n = Math.ceil(n / this.nodeSize);\n numNodes += n;\n this._levelBounds.push(numNodes * 4);\n } while (n !== 1);\n this.ArrayType = ArrayType;\n this.IndexArrayType = numNodes < 16384 ? Uint16Array : Uint32Array;\n const arrayTypeIndex = ARRAY_TYPES.indexOf(ArrayType);\n const nodesByteSize = numNodes * 4 * ArrayType.BYTES_PER_ELEMENT;\n if (arrayTypeIndex < 0) {\n throw new Error(`Unexpected typed array class: ${ArrayType}.`);\n }\n if (data) {\n this.data = data;\n this._boxes = new ArrayType(data, byteOffset + 8, numNodes * 4);\n this._indices = new this.IndexArrayType(data, byteOffset + 8 + nodesByteSize, numNodes);\n this._pos = numNodes * 4;\n this.minX = this._boxes[this._pos - 4];\n this.minY = this._boxes[this._pos - 3];\n this.maxX = this._boxes[this._pos - 2];\n this.maxY = this._boxes[this._pos - 1];\n } else {\n const data = this.data = new ArrayBufferType(8 + nodesByteSize + numNodes * this.IndexArrayType.BYTES_PER_ELEMENT);\n this._boxes = new ArrayType(data, 8, numNodes * 4);\n this._indices = new this.IndexArrayType(data, 8 + nodesByteSize, numNodes);\n this._pos = 0;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = -Infinity;\n this.maxY = -Infinity;\n new Uint8Array(data, 0, 2).set([0xfb, (VERSION << 4) + arrayTypeIndex]);\n new Uint16Array(data, 2, 1)[0] = nodeSize;\n new Uint32Array(data, 4, 1)[0] = numItems;\n }\n\n // a priority queue for k-nearest-neighbors queries\n /** @type FlatQueue */\n this._queue = new FlatQueue();\n }\n\n /**\n * Add a given rectangle to the index.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number} A zero-based, incremental number that represents the newly added rectangle.\n */\n add(minX, minY, maxX = minX, maxY = minY) {\n const index = this._pos >> 2;\n const boxes = this._boxes;\n this._indices[index] = index;\n boxes[this._pos++] = minX;\n boxes[this._pos++] = minY;\n boxes[this._pos++] = maxX;\n boxes[this._pos++] = maxY;\n if (minX < this.minX) {\n this.minX = minX;\n }\n if (minY < this.minY) {\n this.minY = minY;\n }\n if (maxX > this.maxX) {\n this.maxX = maxX;\n }\n if (maxY > this.maxY) {\n this.maxY = maxY;\n }\n return index;\n }\n\n /** Perform indexing of the added rectangles. */\n finish() {\n if (this._pos >> 2 !== this.numItems) {\n throw new Error(`Added ${this._pos >> 2} items when expected ${this.numItems}.`);\n }\n const boxes = this._boxes;\n if (this.numItems <= this.nodeSize) {\n // only one node, skip sorting and just fill the root box\n boxes[this._pos++] = this.minX;\n boxes[this._pos++] = this.minY;\n boxes[this._pos++] = this.maxX;\n boxes[this._pos++] = this.maxY;\n return;\n }\n const width = this.maxX - this.minX || 1;\n const height = this.maxY - this.minY || 1;\n const hilbertValues = new Uint32Array(this.numItems);\n const hilbertMax = (1 << 16) - 1;\n\n // map item centers into Hilbert coordinate space and calculate Hilbert values\n for (let i = 0, pos = 0; i < this.numItems; i++) {\n const minX = boxes[pos++];\n const minY = boxes[pos++];\n const maxX = boxes[pos++];\n const maxY = boxes[pos++];\n const x = Math.floor(hilbertMax * ((minX + maxX) / 2 - this.minX) / width);\n const y = Math.floor(hilbertMax * ((minY + maxY) / 2 - this.minY) / height);\n hilbertValues[i] = hilbert(x, y);\n }\n\n // sort items by their Hilbert value (for packing later)\n sort(hilbertValues, boxes, this._indices, 0, this.numItems - 1, this.nodeSize);\n\n // generate nodes at each tree level, bottom-up\n for (let i = 0, pos = 0; i < this._levelBounds.length - 1; i++) {\n const end = this._levelBounds[i];\n\n // generate a parent node for each block of consecutive nodes\n while (pos < end) {\n const nodeIndex = pos;\n\n // calculate bbox for the new node\n let nodeMinX = boxes[pos++];\n let nodeMinY = boxes[pos++];\n let nodeMaxX = boxes[pos++];\n let nodeMaxY = boxes[pos++];\n for (let j = 1; j < this.nodeSize && pos < end; j++) {\n nodeMinX = Math.min(nodeMinX, boxes[pos++]);\n nodeMinY = Math.min(nodeMinY, boxes[pos++]);\n nodeMaxX = Math.max(nodeMaxX, boxes[pos++]);\n nodeMaxY = Math.max(nodeMaxY, boxes[pos++]);\n }\n\n // add the new node to the tree data\n this._indices[this._pos >> 2] = nodeIndex;\n boxes[this._pos++] = nodeMinX;\n boxes[this._pos++] = nodeMinY;\n boxes[this._pos++] = nodeMaxX;\n boxes[this._pos++] = nodeMaxY;\n }\n }\n }\n\n /**\n * Search the index by a bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @param {(index: number) => boolean} [filterFn] An optional function for filtering the results.\n * @returns {number[]} An array containing the index, the x coordinate and the y coordinate of the points intersecting or touching the given bounding box.\n */\n search(minX, minY, maxX, maxY, filterFn) {\n if (this._pos !== this._boxes.length) {\n throw new Error('Data not yet indexed - call index.finish().');\n }\n\n /** @type number | undefined */\n let nodeIndex = this._boxes.length - 4;\n const queue = [];\n const results = [];\n while (nodeIndex !== undefined) {\n // find the end index of the node\n const end = Math.min(nodeIndex + this.nodeSize * 4, upperBound(nodeIndex, this._levelBounds));\n\n // search through child nodes\n for (let /** @type number */pos = nodeIndex; pos < end; pos += 4) {\n // check if node bbox intersects with query bbox\n if (maxX < this._boxes[pos]) {\n continue;\n } // maxX < nodeMinX\n if (maxY < this._boxes[pos + 1]) {\n continue;\n } // maxY < nodeMinY\n if (minX > this._boxes[pos + 2]) {\n continue;\n } // minX > nodeMaxX\n if (minY > this._boxes[pos + 3]) {\n continue;\n } // minY > nodeMaxY\n\n const index = this._indices[pos >> 2] | 0;\n if (nodeIndex >= this.numItems * 4) {\n queue.push(index); // node; add it to the search queue\n } else if (filterFn === undefined || filterFn(index)) {\n results.push(index);\n results.push(this._boxes[pos]); // leaf item\n results.push(this._boxes[pos + 1]);\n }\n }\n nodeIndex = queue.pop();\n }\n return results;\n }\n\n /**\n * Search items in order of distance from the given point.\n * @param x\n * @param y\n * @param [maxResults=Infinity]\n * @param maxDistSq\n * @param [filterFn] An optional function for filtering the results.\n * @param [sqDistFn] An optional function to calculate squared distance from the point to the item.\n * @returns {number[]} An array of indices of items found.\n */\n neighbors(x, y, maxResults = Infinity, maxDistSq = Infinity, filterFn, sqDistFn = sqDist) {\n if (this._pos !== this._boxes.length) {\n throw new Error('Data not yet indexed - call index.finish().');\n }\n\n /** @type number | undefined */\n let nodeIndex = this._boxes.length - 4;\n const q = this._queue;\n const results = [];\n\n /* eslint-disable no-labels */\n outer: while (nodeIndex !== undefined) {\n // find the end index of the node\n const end = Math.min(nodeIndex + this.nodeSize * 4, upperBound(nodeIndex, this._levelBounds));\n\n // add child nodes to the queue\n for (let pos = nodeIndex; pos < end; pos += 4) {\n const index = this._indices[pos >> 2] | 0;\n const minX = this._boxes[pos];\n const minY = this._boxes[pos + 1];\n const maxX = this._boxes[pos + 2];\n const maxY = this._boxes[pos + 3];\n const dx = x < minX ? minX - x : x > maxX ? x - maxX : 0;\n const dy = y < minY ? minY - y : y > maxY ? y - maxY : 0;\n const dist = sqDistFn(dx, dy);\n if (dist > maxDistSq) {\n continue;\n }\n if (nodeIndex >= this.numItems * 4) {\n q.push(index << 1, dist); // node (use even id)\n } else if (filterFn === undefined || filterFn(index)) {\n q.push((index << 1) + 1, dist); // leaf item (use odd id)\n }\n }\n\n // pop items from the queue\n // @ts-expect-error q.length check eliminates undefined values\n while (q.length && q.peek() & 1) {\n const dist = q.peekValue();\n\n // @ts-expect-error\n if (dist > maxDistSq) {\n break outer;\n }\n // @ts-expect-error\n results.push(q.pop() >> 1);\n if (results.length === maxResults) {\n break outer;\n }\n }\n\n // @ts-expect-error\n nodeIndex = q.length ? q.pop() >> 1 : undefined;\n }\n q.clear();\n return results;\n }\n}\nfunction sqDist(dx, dy) {\n return dx * dx + dy * dy;\n}\n\n/**\n * Binary search for the first value in the array bigger than the given.\n * @param {number} value\n * @param {number[]} arr\n */\nfunction upperBound(value, arr) {\n let i = 0;\n let j = arr.length - 1;\n while (i < j) {\n const m = i + j >> 1;\n if (arr[m] > value) {\n j = m;\n } else {\n i = m + 1;\n }\n }\n return arr[i];\n}\n\n/**\n * Custom quicksort that partially sorts bbox data alongside the hilbert values.\n * @param {Uint32Array} values\n * @param {InstanceType} boxes\n * @param {Uint16Array | Uint32Array} indices\n * @param {number} left\n * @param {number} right\n * @param {number} nodeSize\n */\nfunction sort(values, boxes, indices, left, right, nodeSize) {\n if (Math.floor(left / nodeSize) >= Math.floor(right / nodeSize)) {\n return;\n }\n\n // apply median of three method\n const start = values[left];\n const mid = values[left + right >> 1];\n const end = values[right];\n let pivot = end;\n const x = Math.max(start, mid);\n if (end > x) {\n pivot = x;\n } else if (x === start) {\n pivot = Math.max(mid, end);\n } else if (x === mid) {\n pivot = Math.max(start, end);\n }\n let i = left - 1;\n let j = right + 1;\n while (true) {\n do {\n i++;\n } while (values[i] < pivot);\n do {\n j--;\n } while (values[j] > pivot);\n if (i >= j) {\n break;\n }\n swap(values, boxes, indices, i, j);\n }\n sort(values, boxes, indices, left, j, nodeSize);\n sort(values, boxes, indices, j + 1, right, nodeSize);\n}\n\n/**\n * Swap two values and two corresponding boxes.\n * @param {Uint32Array} values\n * @param {InstanceType} boxes\n * @param {Uint16Array | Uint32Array} indices\n * @param {number} i\n * @param {number} j\n */\nfunction swap(values, boxes, indices, i, j) {\n const temp = values[i];\n values[i] = values[j];\n values[j] = temp;\n const k = 4 * i;\n const m = 4 * j;\n const a = boxes[k];\n const b = boxes[k + 1];\n const c = boxes[k + 2];\n const d = boxes[k + 3];\n boxes[k] = boxes[m];\n boxes[k + 1] = boxes[m + 1];\n boxes[k + 2] = boxes[m + 2];\n boxes[k + 3] = boxes[m + 3];\n boxes[m] = a;\n boxes[m + 1] = b;\n boxes[m + 2] = c;\n boxes[m + 3] = d;\n const e = indices[i];\n indices[i] = indices[j];\n indices[j] = e;\n}\n\n/**\n * Fast Hilbert curve algorithm by http://threadlocalmutex.com/\n * Ported from C++ https://github.com/rawrunprotected/hilbert_curves (public domain)\n * @param {number} x\n * @param {number} y\n */\nfunction hilbert(x, y) {\n let a = x ^ y;\n let b = 0xffff ^ a;\n let c = 0xffff ^ (x | y);\n let d = x & (y ^ 0xffff);\n let A = a | b >> 1;\n let B = a >> 1 ^ a;\n let C = c >> 1 ^ b & d >> 1 ^ c;\n let D = a & c >> 1 ^ d >> 1 ^ d;\n a = A;\n b = B;\n c = C;\n d = D;\n A = a & a >> 2 ^ b & b >> 2;\n B = a & b >> 2 ^ b & (a ^ b) >> 2;\n C ^= a & c >> 2 ^ b & d >> 2;\n D ^= b & c >> 2 ^ (a ^ b) & d >> 2;\n a = A;\n b = B;\n c = C;\n d = D;\n A = a & a >> 4 ^ b & b >> 4;\n B = a & b >> 4 ^ b & (a ^ b) >> 4;\n C ^= a & c >> 4 ^ b & d >> 4;\n D ^= b & c >> 4 ^ (a ^ b) & d >> 4;\n a = A;\n b = B;\n c = C;\n d = D;\n C ^= a & c >> 8 ^ b & d >> 8;\n D ^= b & c >> 8 ^ (a ^ b) & d >> 8;\n a = C ^ C >> 1;\n b = D ^ D >> 1;\n let i0 = x ^ y;\n let i1 = b | 0xffff ^ (i0 | a);\n i0 = (i0 | i0 << 8) & 0x00ff00ff;\n i0 = (i0 | i0 << 4) & 0x0f0f0f0f;\n i0 = (i0 | i0 << 2) & 0x33333333;\n i0 = (i0 | i0 << 1) & 0x55555555;\n i1 = (i1 | i1 << 8) & 0x00ff00ff;\n i1 = (i1 | i1 << 4) & 0x0f0f0f0f;\n i1 = (i1 | i1 << 2) & 0x33333333;\n i1 = (i1 | i1 << 1) & 0x55555555;\n return (i1 << 1 | i0) >>> 0;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createSelector, createSelectorMemoized } from '@mui/x-internals/store';\nimport { selectorChartDrawingArea } from \"../../corePlugins/useChartDimensions/index.js\";\nimport { selectorChartSeriesConfig, selectorChartSeriesProcessed } from \"../../corePlugins/useChartSeries/index.js\";\nimport { computeAxisValue } from \"./computeAxisValue.js\";\nimport { createContinuousScaleGetAxisFilter, createDiscreteScaleGetAxisFilter, createGetAxisFilters } from \"./createAxisFilterMapper.js\";\nimport { createZoomLookup } from \"./createZoomLookup.js\";\nimport { isBandScaleConfig, isPointScaleConfig } from \"../../../../models/axis.js\";\nimport { selectorChartRawXAxis, selectorChartRawYAxis } from \"./useChartCartesianAxisLayout.selectors.js\";\nimport { selectorPreferStrictDomainInLineCharts } from \"../../corePlugins/useChartExperimentalFeature/index.js\";\nimport { getDefaultTickNumber, getTickNumber } from \"../../../ticks.js\";\nimport { getNormalizedAxisScale, getRange } from \"./getAxisScale.js\";\nimport { isOrdinalScale } from \"../../../scaleGuards.js\";\nimport { zoomScaleRange } from \"./zoom.js\";\nimport { getAxisExtrema } from \"./getAxisExtrema.js\";\nimport { calculateFinalDomain, calculateInitialDomainAndTickNumber } from \"./domain.js\";\nimport { Flatbush } from \"../../../Flatbush.js\";\nexport const createZoomMap = zoom => {\n const zoomItemMap = new Map();\n zoom.forEach(zoomItem => {\n zoomItemMap.set(zoomItem.axisId, zoomItem);\n });\n return zoomItemMap;\n};\nconst selectorChartZoomState = state => state.zoom;\nexport const selectorChartHasZoom = createSelector(selectorChartRawXAxis, selectorChartRawYAxis, (xAxes, yAxes) => xAxes?.some(axis => Boolean(axis.zoom)) || yAxes?.some(axis => Boolean(axis.zoom)) || false);\n\n/**\n * Following selectors are not exported because they exist in the MIT chart only to ba able to reuse the Zoom state from the pro.\n */\n\nexport const selectorChartZoomIsInteracting = createSelector(selectorChartZoomState, zoom => zoom?.isInteracting);\nexport const selectorChartZoomMap = createSelectorMemoized(selectorChartZoomState, function selectorChartZoomMap(zoom) {\n return zoom?.zoomData && createZoomMap(zoom?.zoomData);\n});\nexport const selectorChartAxisZoomData = createSelector(selectorChartZoomMap, (zoomMap, axisId) => zoomMap?.get(axisId));\nexport const selectorChartZoomOptionsLookup = createSelectorMemoized(selectorChartRawXAxis, selectorChartRawYAxis, function selectorChartZoomOptionsLookup(xAxis, yAxis) {\n return _extends({}, createZoomLookup('x')(xAxis), createZoomLookup('y')(yAxis));\n});\nexport const selectorChartAxisZoomOptionsLookup = createSelector(selectorChartZoomOptionsLookup, (axisLookup, axisId) => axisLookup[axisId]);\nexport const selectorDefaultXAxisTickNumber = createSelector(selectorChartDrawingArea, function selectorDefaultXAxisTickNumber(drawingArea) {\n return getDefaultTickNumber(drawingArea.width);\n});\nexport const selectorDefaultYAxisTickNumber = createSelector(selectorChartDrawingArea, function selectorDefaultYAxisTickNumber(drawingArea) {\n return getDefaultTickNumber(drawingArea.height);\n});\nexport const selectorChartXAxisWithDomains = createSelectorMemoized(selectorChartRawXAxis, selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorPreferStrictDomainInLineCharts, selectorDefaultXAxisTickNumber, function selectorChartXAxisWithDomains(axes, formattedSeries, seriesConfig, preferStrictDomainInLineCharts, defaultTickNumber) {\n const axisDirection = 'x';\n const domains = {};\n axes?.forEach((eachAxis, axisIndex) => {\n const axis = eachAxis;\n if (isBandScaleConfig(axis) || isPointScaleConfig(axis)) {\n domains[axis.id] = {\n domain: axis.data\n };\n if (axis.ordinalTimeTicks !== undefined) {\n domains[axis.id].tickNumber = getTickNumber(axis, [axis.data?.find(d => d !== null), axis.data?.findLast(d => d !== null)], defaultTickNumber);\n }\n return;\n }\n const axisExtrema = getAxisExtrema(axis, axisDirection, seriesConfig, axisIndex, formattedSeries);\n domains[axis.id] = calculateInitialDomainAndTickNumber(axis, 'x', axisIndex, formattedSeries, axisExtrema, defaultTickNumber, preferStrictDomainInLineCharts);\n });\n return {\n axes,\n domains\n };\n});\nexport const selectorChartYAxisWithDomains = createSelectorMemoized(selectorChartRawYAxis, selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorPreferStrictDomainInLineCharts, selectorDefaultYAxisTickNumber, function selectorChartYAxisWithDomains(axes, formattedSeries, seriesConfig, preferStrictDomainInLineCharts, defaultTickNumber) {\n const axisDirection = 'y';\n const domains = {};\n axes?.forEach((eachAxis, axisIndex) => {\n const axis = eachAxis;\n if (isBandScaleConfig(axis) || isPointScaleConfig(axis)) {\n domains[axis.id] = {\n domain: axis.data\n };\n if (axis.ordinalTimeTicks !== undefined) {\n domains[axis.id].tickNumber = getTickNumber(axis, [axis.data?.find(d => d !== null), axis.data?.findLast(d => d !== null)], defaultTickNumber);\n }\n return;\n }\n const axisExtrema = getAxisExtrema(axis, axisDirection, seriesConfig, axisIndex, formattedSeries);\n domains[axis.id] = calculateInitialDomainAndTickNumber(axis, 'y', axisIndex, formattedSeries, axisExtrema, defaultTickNumber, preferStrictDomainInLineCharts);\n });\n return {\n axes,\n domains\n };\n});\nexport const selectorChartZoomAxisFilters = createSelectorMemoized(selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartXAxisWithDomains, selectorChartYAxisWithDomains, function selectorChartZoomAxisFilters(zoomMap, zoomOptions, {\n axes: xAxis,\n domains: xDomains\n}, {\n axes: yAxis,\n domains: yDomains\n}) {\n if (!zoomMap || !zoomOptions) {\n return undefined;\n }\n let hasFilter = false;\n const filters = {};\n const axes = [...(xAxis ?? []), ...(yAxis ?? [])];\n for (let i = 0; i < axes.length; i += 1) {\n const axis = axes[i];\n if (!zoomOptions[axis.id] || zoomOptions[axis.id].filterMode !== 'discard') {\n continue;\n }\n const zoom = zoomMap.get(axis.id);\n if (zoom === undefined || zoom.start <= 0 && zoom.end >= 100) {\n // No zoom, or zoom with all data visible\n continue;\n }\n const axisDirection = i < (xAxis?.length ?? 0) ? 'x' : 'y';\n if (axis.scaleType === 'band' || axis.scaleType === 'point') {\n filters[axis.id] = createDiscreteScaleGetAxisFilter(axis.data, zoom.start, zoom.end, axisDirection);\n } else {\n const {\n domain\n } = axisDirection === 'x' ? xDomains[axis.id] : yDomains[axis.id];\n filters[axis.id] = createContinuousScaleGetAxisFilter(\n // For continuous scales, the domain is always a two-value array.\n domain, zoom.start, zoom.end, axisDirection, axis.data);\n }\n hasFilter = true;\n }\n if (!hasFilter) {\n return undefined;\n }\n return createGetAxisFilters(filters);\n});\nexport const selectorChartFilteredXDomains = createSelectorMemoized(selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartZoomAxisFilters, selectorPreferStrictDomainInLineCharts, selectorChartXAxisWithDomains, function selectorChartFilteredXDomains(formattedSeries, seriesConfig, zoomMap, zoomOptions, getFilters, preferStrictDomainInLineCharts, {\n axes,\n domains\n}) {\n const filteredDomains = {};\n axes?.forEach((axis, axisIndex) => {\n const domain = domains[axis.id].domain;\n if (isBandScaleConfig(axis) || isPointScaleConfig(axis)) {\n filteredDomains[axis.id] = domain;\n return;\n }\n const zoom = zoomMap?.get(axis.id);\n const zoomOption = zoomOptions?.[axis.id];\n const filter = zoom === undefined && !zoomOption ? getFilters : undefined; // Do not apply filtering if zoom is already defined.\n\n if (!filter) {\n filteredDomains[axis.id] = domain;\n return;\n }\n const rawTickNumber = domains[axis.id].tickNumber;\n const axisExtrema = getAxisExtrema(axis, 'x', seriesConfig, axisIndex, formattedSeries, filter);\n filteredDomains[axis.id] = calculateFinalDomain(axis, 'x', axisIndex, formattedSeries, axisExtrema, rawTickNumber, preferStrictDomainInLineCharts);\n });\n return filteredDomains;\n});\nexport const selectorChartFilteredYDomains = createSelectorMemoized(selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartZoomAxisFilters, selectorPreferStrictDomainInLineCharts, selectorChartYAxisWithDomains, function selectorChartFilteredYDomains(formattedSeries, seriesConfig, zoomMap, zoomOptions, getFilters, preferStrictDomainInLineCharts, {\n axes,\n domains\n}) {\n const filteredDomains = {};\n axes?.forEach((axis, axisIndex) => {\n const domain = domains[axis.id].domain;\n if (isBandScaleConfig(axis) || isPointScaleConfig(axis)) {\n filteredDomains[axis.id] = domain;\n return;\n }\n const zoom = zoomMap?.get(axis.id);\n const zoomOption = zoomOptions?.[axis.id];\n const filter = zoom === undefined && !zoomOption ? getFilters : undefined; // Do not apply filtering if zoom is already defined.\n\n if (!filter) {\n filteredDomains[axis.id] = domain;\n return;\n }\n const rawTickNumber = domains[axis.id].tickNumber;\n const axisExtrema = getAxisExtrema(axis, 'y', seriesConfig, axisIndex, formattedSeries, filter);\n filteredDomains[axis.id] = calculateFinalDomain(axis, 'y', axisIndex, formattedSeries, axisExtrema, rawTickNumber, preferStrictDomainInLineCharts);\n });\n return filteredDomains;\n});\nexport const selectorChartNormalizedXScales = createSelectorMemoized(selectorChartRawXAxis, selectorChartFilteredXDomains, function selectorChartNormalizedXScales(axes, filteredDomains) {\n const scales = {};\n axes?.forEach(eachAxis => {\n const axis = eachAxis;\n const domain = filteredDomains[axis.id];\n scales[axis.id] = getNormalizedAxisScale(axis, domain);\n });\n return scales;\n});\nexport const selectorChartNormalizedYScales = createSelectorMemoized(selectorChartRawYAxis, selectorChartFilteredYDomains, function selectorChartNormalizedYScales(axes, filteredDomains) {\n const scales = {};\n axes?.forEach(eachAxis => {\n const axis = eachAxis;\n const domain = filteredDomains[axis.id];\n scales[axis.id] = getNormalizedAxisScale(axis, domain);\n });\n return scales;\n});\nexport const selectorChartXScales = createSelectorMemoized(selectorChartRawXAxis, selectorChartNormalizedXScales, selectorChartDrawingArea, selectorChartZoomMap, function selectorChartXScales(axes, normalizedScales, drawingArea, zoomMap) {\n const scales = {};\n axes?.forEach(eachAxis => {\n const axis = eachAxis;\n const zoom = zoomMap?.get(axis.id);\n const zoomRange = zoom ? [zoom.start, zoom.end] : [0, 100];\n const range = getRange(drawingArea, 'x', axis);\n const scale = normalizedScales[axis.id].copy();\n const zoomedRange = zoomScaleRange(range, zoomRange);\n scale.range(zoomedRange);\n scales[axis.id] = scale;\n });\n return scales;\n});\nexport const selectorChartYScales = createSelectorMemoized(selectorChartRawYAxis, selectorChartNormalizedYScales, selectorChartDrawingArea, selectorChartZoomMap, function selectorChartYScales(axes, normalizedScales, drawingArea, zoomMap) {\n const scales = {};\n axes?.forEach(eachAxis => {\n const axis = eachAxis;\n const zoom = zoomMap?.get(axis.id);\n const zoomRange = zoom ? [zoom.start, zoom.end] : [0, 100];\n const range = getRange(drawingArea, 'y', axis);\n const scale = normalizedScales[axis.id].copy();\n const scaleRange = isOrdinalScale(scale) ? range.reverse() : range;\n const zoomedRange = zoomScaleRange(scaleRange, zoomRange);\n scale.range(zoomedRange);\n scales[axis.id] = scale;\n });\n return scales;\n});\n\n/**\n * The only interesting selectors that merge axis data and zoom if provided.\n */\n\nexport const selectorChartXAxis = createSelectorMemoized(selectorChartDrawingArea, selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartZoomMap, selectorChartXAxisWithDomains, selectorChartXScales, function selectorChartXAxis(drawingArea, formattedSeries, seriesConfig, zoomMap, {\n axes,\n domains\n}, scales) {\n return computeAxisValue({\n scales,\n drawingArea,\n formattedSeries,\n axis: axes,\n seriesConfig,\n axisDirection: 'x',\n zoomMap,\n domains\n });\n});\nexport const selectorChartYAxis = createSelectorMemoized(selectorChartDrawingArea, selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartZoomMap, selectorChartYAxisWithDomains, selectorChartYScales, function selectorChartYAxis(drawingArea, formattedSeries, seriesConfig, zoomMap, {\n axes,\n domains\n}, scales) {\n return computeAxisValue({\n scales,\n drawingArea,\n formattedSeries,\n axis: axes,\n seriesConfig,\n axisDirection: 'y',\n zoomMap,\n domains\n });\n});\nexport const selectorChartAxis = createSelector(selectorChartXAxis, selectorChartYAxis, (xAxes, yAxes, axisId) => xAxes?.axis[axisId] ?? yAxes?.axis[axisId]);\nexport const selectorChartRawAxis = createSelector(selectorChartRawXAxis, selectorChartRawYAxis, (xAxes, yAxes, axisId) => {\n const axis = xAxes?.find(a => a.id === axisId) ?? yAxes?.find(a => a.id === axisId) ?? null;\n if (!axis) {\n return undefined;\n }\n return axis;\n});\nexport const selectorChartDefaultXAxisId = createSelector(selectorChartRawXAxis, xAxes => xAxes[0].id);\nexport const selectorChartDefaultYAxisId = createSelector(selectorChartRawYAxis, yAxes => yAxes[0].id);\nconst EMPTY_MAP = new Map();\nexport const selectorChartSeriesEmptyFlatbushMap = () => EMPTY_MAP;\nexport const selectorChartSeriesFlatbushMap = createSelectorMemoized(selectorChartSeriesProcessed, selectorChartNormalizedXScales, selectorChartNormalizedYScales, selectorChartDefaultXAxisId, selectorChartDefaultYAxisId, function selectChartSeriesFlatbushMap(allSeries, xAxesScaleMap, yAxesScaleMap, defaultXAxisId, defaultYAxisId) {\n // FIXME: Do we want to support non-scatter series here?\n const validSeries = allSeries.scatter;\n const flatbushMap = new Map();\n if (!validSeries) {\n return flatbushMap;\n }\n validSeries.seriesOrder.forEach(seriesId => {\n const {\n data,\n xAxisId = defaultXAxisId,\n yAxisId = defaultYAxisId\n } = validSeries.series[seriesId];\n const flatbush = new Flatbush(data.length);\n const originalXScale = xAxesScaleMap[xAxisId];\n const originalYScale = yAxesScaleMap[yAxisId];\n for (const datum of data) {\n // Add the points using a [0, 1] range so that we don't need to recreate the Flatbush structure when zooming.\n // This doesn't happen in practice, though, because currently the scales depend on the drawing area.\n flatbush.add(originalXScale(datum.x), originalYScale(datum.y));\n }\n flatbush.finish();\n flatbushMap.set(seriesId, flatbush);\n });\n return flatbushMap;\n});","import { isOrdinalScale } from \"../../../scaleGuards.js\";\nfunction getAsANumber(value) {\n return value instanceof Date ? value.getTime() : value;\n}\n\n/**\n * For a pointer coordinate, this function returns the dataIndex associated.\n * Returns `-1` if no dataIndex matches.\n */\nexport function getAxisIndex(axisConfig, pointerValue) {\n const {\n scale,\n data: axisData,\n reverse\n } = axisConfig;\n if (!isOrdinalScale(scale)) {\n const value = scale.invert(pointerValue);\n if (axisData === undefined) {\n return -1;\n }\n const valueAsNumber = getAsANumber(value);\n const closestIndex = axisData?.findIndex((pointValue, index) => {\n const v = getAsANumber(pointValue);\n if (v > valueAsNumber) {\n if (index === 0 || Math.abs(valueAsNumber - v) <= Math.abs(valueAsNumber - getAsANumber(axisData[index - 1]))) {\n return true;\n }\n }\n if (v <= valueAsNumber) {\n if (index === axisData.length - 1 || Math.abs(getAsANumber(value) - v) < Math.abs(getAsANumber(value) - getAsANumber(axisData[index + 1]))) {\n return true;\n }\n }\n return false;\n });\n return closestIndex;\n }\n const dataIndex = scale.bandwidth() === 0 ? Math.floor((pointerValue - Math.min(...scale.range()) + scale.step() / 2) / scale.step()) : Math.floor((pointerValue - Math.min(...scale.range())) / scale.step());\n if (dataIndex < 0 || dataIndex >= axisData.length) {\n return -1;\n }\n return reverse ? axisData.length - 1 - dataIndex : dataIndex;\n}\n\n/**\n * For a pointer coordinate, this function returns the value associated.\n * Returns `null` if the coordinate has no value associated.\n */\nexport function getAxisValue(scale, axisData, pointerValue, dataIndex) {\n if (!isOrdinalScale(scale)) {\n if (dataIndex === null) {\n const invertedValue = scale.invert(pointerValue);\n return Number.isNaN(invertedValue) ? null : invertedValue;\n }\n return axisData[dataIndex];\n }\n if (dataIndex === null || dataIndex < 0 || dataIndex >= axisData.length) {\n return null;\n }\n return axisData[dataIndex];\n}","/**\n * Transform mouse event position to coordinates inside the SVG.\n * @param svg The SVG element\n * @param event The mouseEvent to transform\n */\nexport function getSVGPoint(svg, event) {\n const pt = svg.createSVGPoint();\n pt.x = event.clientX;\n pt.y = event.clientY;\n return pt.matrixTransform(svg.getScreenCTM().inverse());\n}","import { createSelector } from '@mui/x-internals/store';\nconst selectInteraction = state => state.interaction;\nexport const selectorChartsInteractionIsInitialized = createSelector(selectInteraction, interaction => interaction !== undefined);\nexport const selectorChartsInteractionPointer = createSelector(selectInteraction, interaction => interaction?.pointer ?? null);\nexport const selectorChartsInteractionPointerX = createSelector(selectorChartsInteractionPointer, pointer => pointer && pointer.x);\nexport const selectorChartsInteractionPointerY = createSelector(selectorChartsInteractionPointer, pointer => pointer && pointer.y);\nexport const selectorChartsLastInteraction = createSelector(selectInteraction, interaction => interaction?.lastUpdate);","/**\n * Based on `fast-deep-equal`\n *\n * MIT License\n *\n * Copyright (c) 2017 Evgeny Poberezkin\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Check if two values are deeply equal.\n */\n\nexport function isDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (Array.isArray(a)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (!isDeepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) {\n return false;\n }\n const entriesA = Array.from(a.entries());\n for (let i = 0; i < entriesA.length; i += 1) {\n if (!b.has(entriesA[i][0])) {\n return false;\n }\n }\n for (let i = 0; i < entriesA.length; i += 1) {\n const entryA = entriesA[i];\n if (!isDeepEqual(entryA[1], b.get(entryA[0]))) {\n return false;\n }\n }\n return true;\n }\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) {\n return false;\n }\n const entries = Array.from(a.entries());\n for (let i = 0; i < entries.length; i += 1) {\n if (!b.has(entries[i][0])) {\n return false;\n }\n }\n return true;\n }\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf();\n }\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString();\n }\n const keys = Object.keys(a);\n const length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (let i = 0; i < length; i += 1) {\n const key = keys[i];\n if (!isDeepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n\n // true if both NaN, false otherwise\n // eslint-disable-next-line no-self-compare\n return a !== a && b !== b;\n}","import { isDeepEqual } from '@mui/x-internals/isDeepEqual';\nimport { createSelector, createSelectorMemoizedWithOptions } from '@mui/x-internals/store';\nimport { selectorChartsInteractionPointerX, selectorChartsInteractionPointerY } from \"../useChartInteraction/useChartInteraction.selectors.js\";\nimport { getAxisIndex, getAxisValue } from \"./getAxisValue.js\";\nimport { selectorChartXAxis, selectorChartYAxis } from \"./useChartCartesianAxisRendering.selectors.js\";\n\n/**\n * Get interaction indexes\n */\n\nfunction indexGetter(value, axes, ids = axes.axisIds[0]) {\n return Array.isArray(ids) ? ids.map(id => getAxisIndex(axes.axis[id], value)) : getAxisIndex(axes.axis[ids], value);\n}\nexport const selectChartsInteractionAxisIndex = (value, axes, id) => {\n if (value === null) {\n return null;\n }\n const index = indexGetter(value, axes, id);\n return index === -1 ? null : index;\n};\nexport const selectorChartsInteractionXAxisIndex = createSelector(selectorChartsInteractionPointerX, selectorChartXAxis, selectChartsInteractionAxisIndex);\nexport const selectorChartsInteractionYAxisIndex = createSelector(selectorChartsInteractionPointerY, selectorChartYAxis, selectChartsInteractionAxisIndex);\nexport const selectorChartAxisInteraction = createSelector(selectorChartsInteractionPointerX, selectorChartsInteractionPointerY, selectorChartXAxis, selectorChartYAxis, (x, y, xAxis, yAxis) => [...(x === null ? [] : xAxis.axisIds.map(axisId => ({\n axisId,\n dataIndex: indexGetter(x, xAxis, axisId)\n}))), ...(y === null ? [] : yAxis.axisIds.map(axisId => ({\n axisId,\n dataIndex: indexGetter(y, yAxis, axisId)\n})))].filter(item => item.dataIndex !== null && item.dataIndex >= 0));\n\n/**\n * Get interaction values\n */\n\nfunction valueGetter(value, axes, indexes, ids = axes.axisIds[0]) {\n return Array.isArray(ids) ? ids.map((id, axisIndex) => {\n const axis = axes.axis[id];\n return getAxisValue(axis.scale, axis.data, value, indexes[axisIndex]);\n }) : getAxisValue(axes.axis[ids].scale, axes.axis[ids].data, value, indexes);\n}\nexport const selectorChartsInteractionXAxisValue = createSelector(selectorChartsInteractionPointerX, selectorChartXAxis, selectorChartsInteractionXAxisIndex, (x, xAxes, xIndex, id) => {\n if (x === null || xAxes.axisIds.length === 0) {\n return null;\n }\n return valueGetter(x, xAxes, xIndex, id);\n});\nexport const selectorChartsInteractionYAxisValue = createSelector(selectorChartsInteractionPointerY, selectorChartYAxis, selectorChartsInteractionYAxisIndex, (y, yAxes, yIndex, id) => {\n if (y === null || yAxes.axisIds.length === 0) {\n return null;\n }\n return valueGetter(y, yAxes, yIndex, id);\n});\nconst EMPTY_ARRAY = [];\n\n/**\n * Get x-axis ids and corresponding data index that should be display in the tooltip.\n */\nexport const selectorChartsInteractionTooltipXAxes = createSelectorMemoizedWithOptions({\n memoizeOptions: {\n // Keep the same reference if array content is the same.\n // If possible, avoid this pattern by creating selectors that\n // uses string/number as arguments.\n resultEqualityCheck: isDeepEqual\n }\n})(selectorChartsInteractionPointerX, selectorChartXAxis, (value, axes) => {\n if (value === null) {\n return EMPTY_ARRAY;\n }\n return axes.axisIds.filter(id => axes.axis[id].triggerTooltip).map(axisId => ({\n axisId,\n dataIndex: getAxisIndex(axes.axis[axisId], value)\n })).filter(({\n dataIndex\n }) => dataIndex >= 0);\n});\n\n/**\n * Get y-axis ids and corresponding data index that should be display in the tooltip.\n */\nexport const selectorChartsInteractionTooltipYAxes = createSelectorMemoizedWithOptions({\n memoizeOptions: {\n // Keep the same reference if array content is the same.\n // If possible, avoid this pattern by creating selectors that\n // uses string/number as arguments.\n resultEqualityCheck: isDeepEqual\n }\n})(selectorChartsInteractionPointerY, selectorChartYAxis, (value, axes) => {\n if (value === null) {\n return EMPTY_ARRAY;\n }\n return axes.axisIds.filter(id => axes.axis[id].triggerTooltip).map(axisId => ({\n axisId,\n dataIndex: getAxisIndex(axes.axis[axisId], value)\n })).filter(({\n dataIndex\n }) => dataIndex >= 0);\n});\n\n/**\n * Return `true` if the axis tooltip has something to display.\n */\nexport const selectorChartsInteractionAxisTooltip = createSelector(selectorChartsInteractionTooltipXAxes, selectorChartsInteractionTooltipYAxes, (xTooltip, yTooltip) => xTooltip.length > 0 || yTooltip.length > 0);","export function checkHasInteractionPlugin(instance) {\n return instance.setPointerCoordinate !== undefined;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { useStoreEffect } from '@mui/x-internals/store';\nimport { useAssertModelConsistency } from '@mui/x-internals/useAssertModelConsistency';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { rainbowSurgePalette } from \"../../../../colorPalettes/index.js\";\nimport { selectorChartDrawingArea } from \"../../corePlugins/useChartDimensions/useChartDimensions.selectors.js\";\nimport { selectorChartSeriesProcessed } from \"../../corePlugins/useChartSeries/useChartSeries.selectors.js\";\nimport { defaultizeXAxis, defaultizeYAxis } from \"./defaultizeAxis.js\";\nimport { selectorChartXAxis, selectorChartYAxis } from \"./useChartCartesianAxisRendering.selectors.js\";\nimport { getAxisIndex } from \"./getAxisValue.js\";\nimport { getSVGPoint } from \"../../../getSVGPoint.js\";\nimport { selectorChartsInteractionIsInitialized } from \"../useChartInteraction/index.js\";\nimport { selectorChartAxisInteraction } from \"./useChartCartesianInteraction.selectors.js\";\nimport { checkHasInteractionPlugin } from \"../useChartInteraction/checkHasInteractionPlugin.js\";\nconst AXIS_CLICK_SERIES_TYPES = new Set(['bar', 'rangeBar', 'line']);\nexport const useChartCartesianAxis = ({\n params,\n store,\n seriesConfig,\n svgRef,\n instance\n}) => {\n const {\n xAxis,\n yAxis,\n dataset,\n onHighlightedAxisChange\n } = params;\n if (process.env.NODE_ENV !== 'production') {\n const ids = [...(xAxis ?? []), ...(yAxis ?? [])].filter(axis => axis.id).map(axis => axis.id);\n const duplicates = new Set(ids.filter((id, index) => ids.indexOf(id) !== index));\n if (duplicates.size > 0) {\n warnOnce([`MUI X Charts: The following axis ids are duplicated: ${Array.from(duplicates).join(', ')}.`, `Please make sure that each axis has a unique id.`].join('\\n'), 'error');\n }\n }\n const drawingArea = store.use(selectorChartDrawingArea);\n const processedSeries = store.use(selectorChartSeriesProcessed);\n const isInteractionEnabled = store.use(selectorChartsInteractionIsInitialized);\n const {\n axis: xAxisWithScale,\n axisIds: xAxisIds\n } = store.use(selectorChartXAxis);\n const {\n axis: yAxisWithScale,\n axisIds: yAxisIds\n } = store.use(selectorChartYAxis);\n useAssertModelConsistency({\n warningPrefix: 'MUI X Charts',\n componentName: 'Chart',\n propName: 'highlightedAxis',\n controlled: params.highlightedAxis,\n defaultValue: undefined\n });\n useEnhancedEffect(() => {\n if (params.highlightedAxis !== undefined) {\n store.set('controlledCartesianAxisHighlight', params.highlightedAxis);\n }\n }, [store, params.highlightedAxis]);\n\n // The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartCartesianAxis`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n store.set('cartesianAxis', {\n x: defaultizeXAxis(xAxis, dataset),\n y: defaultizeYAxis(yAxis, dataset)\n });\n }, [seriesConfig, drawingArea, xAxis, yAxis, dataset, store]);\n const usedXAxis = xAxisIds[0];\n const usedYAxis = yAxisIds[0];\n useStoreEffect(store, selectorChartAxisInteraction, (prevAxisInteraction, nextAxisInteraction) => {\n if (!onHighlightedAxisChange) {\n return;\n }\n if (Object.is(prevAxisInteraction, nextAxisInteraction)) {\n return;\n }\n if (prevAxisInteraction.length !== nextAxisInteraction.length) {\n onHighlightedAxisChange(nextAxisInteraction);\n return;\n }\n if (prevAxisInteraction?.some(({\n axisId,\n dataIndex\n }, itemIndex) => nextAxisInteraction[itemIndex].axisId !== axisId || nextAxisInteraction[itemIndex].dataIndex !== dataIndex)) {\n onHighlightedAxisChange(nextAxisInteraction);\n }\n });\n const hasInteractionPlugin = checkHasInteractionPlugin(instance);\n React.useEffect(() => {\n const element = svgRef.current;\n if (!isInteractionEnabled || !hasInteractionPlugin || !element || params.disableAxisListener) {\n return () => {};\n }\n\n // Clean the interaction when the mouse leaves the chart.\n const moveEndHandler = instance.addInteractionListener('moveEnd', event => {\n if (!event.detail.activeGestures.pan) {\n instance.cleanInteraction();\n }\n });\n const panEndHandler = instance.addInteractionListener('panEnd', event => {\n if (!event.detail.activeGestures.move) {\n instance.cleanInteraction();\n }\n });\n const pressEndHandler = instance.addInteractionListener('quickPressEnd', event => {\n if (!event.detail.activeGestures.move && !event.detail.activeGestures.pan) {\n instance.cleanInteraction();\n }\n });\n const gestureHandler = event => {\n const srvEvent = event.detail.srcEvent;\n const target = event.detail.target;\n const svgPoint = getSVGPoint(element, srvEvent);\n\n // Release the pointer capture if we are panning, as this would cause the tooltip to\n // be locked to the first \"section\" it touches.\n if (event.detail.srcEvent.buttons >= 1 && target?.hasPointerCapture(event.detail.srcEvent.pointerId) && !target?.closest('[data-charts-zoom-slider]')) {\n target?.releasePointerCapture(event.detail.srcEvent.pointerId);\n }\n if (!instance.isPointInside(svgPoint.x, svgPoint.y, target)) {\n instance.cleanInteraction?.();\n return;\n }\n instance.setPointerCoordinate(svgPoint);\n };\n const moveHandler = instance.addInteractionListener('move', gestureHandler);\n const panHandler = instance.addInteractionListener('pan', gestureHandler);\n const pressHandler = instance.addInteractionListener('quickPress', gestureHandler);\n return () => {\n moveHandler.cleanup();\n moveEndHandler.cleanup();\n panHandler.cleanup();\n panEndHandler.cleanup();\n pressHandler.cleanup();\n pressEndHandler.cleanup();\n };\n }, [svgRef, store, xAxisWithScale, usedXAxis, yAxisWithScale, usedYAxis, instance, params.disableAxisListener, isInteractionEnabled, hasInteractionPlugin]);\n React.useEffect(() => {\n const element = svgRef.current;\n const onAxisClick = params.onAxisClick;\n if (element === null || !onAxisClick) {\n return () => {};\n }\n const axisClickHandler = instance.addInteractionListener('tap', event => {\n let dataIndex = null;\n let isXAxis = false;\n const svgPoint = getSVGPoint(element, event.detail.srcEvent);\n const xIndex = getAxisIndex(xAxisWithScale[usedXAxis], svgPoint.x);\n isXAxis = xIndex !== -1;\n dataIndex = isXAxis ? xIndex : getAxisIndex(yAxisWithScale[usedYAxis], svgPoint.y);\n const USED_AXIS_ID = isXAxis ? xAxisIds[0] : yAxisIds[0];\n if (dataIndex == null || dataIndex === -1) {\n return;\n }\n\n // The .data exist because otherwise the dataIndex would be null or -1.\n const axisValue = (isXAxis ? xAxisWithScale : yAxisWithScale)[USED_AXIS_ID].data[dataIndex];\n const seriesValues = {};\n Object.keys(processedSeries).filter(seriesType => AXIS_CLICK_SERIES_TYPES.has(seriesType)).forEach(seriesType => {\n // @ts-ignore\n const seriesTypeConfig = processedSeries[seriesType];\n seriesTypeConfig?.seriesOrder.forEach(seriesId => {\n const seriesItem = seriesTypeConfig.series[seriesId];\n const providedXAxisId = seriesItem.xAxisId;\n const providedYAxisId = seriesItem.yAxisId;\n const axisKey = isXAxis ? providedXAxisId : providedYAxisId;\n if (axisKey === undefined || axisKey === USED_AXIS_ID) {\n // @ts-ignore This is safe because users need to opt in to use range bar series.\n // In that case, they should import the module augmentation from `x-charts-pro/moduleAugmentation/rangeBarOnClick`\n // Which adds the proper type to the series data.\n // TODO(v9): Remove this ts-ignore when we can make the breaking change to ChartsAxisData.\n seriesValues[seriesId] = seriesItem.data[dataIndex];\n }\n });\n });\n onAxisClick(event.detail.srcEvent, {\n dataIndex,\n axisValue,\n seriesValues\n });\n });\n return () => {\n axisClickHandler.cleanup();\n };\n }, [params.onAxisClick, processedSeries, svgRef, xAxisWithScale, xAxisIds, yAxisWithScale, yAxisIds, usedXAxis, usedYAxis, instance]);\n return {};\n};\nuseChartCartesianAxis.params = {\n xAxis: true,\n yAxis: true,\n dataset: true,\n onAxisClick: true,\n disableAxisListener: true,\n onHighlightedAxisChange: true,\n highlightedAxis: true\n};\nuseChartCartesianAxis.getDefaultizedParams = ({\n params\n}) => {\n return _extends({}, params, {\n colors: params.colors ?? rainbowSurgePalette,\n theme: params.theme ?? 'light',\n defaultizedXAxis: defaultizeXAxis(params.xAxis, params.dataset),\n defaultizedYAxis: defaultizeYAxis(params.yAxis, params.dataset)\n });\n};\nuseChartCartesianAxis.getInitialState = params => _extends({\n cartesianAxis: {\n x: params.defaultizedXAxis,\n y: params.defaultizedYAxis\n }\n}, params.highlightedAxis === undefined ? {} : {\n controlledCartesianAxisHighlight: params.highlightedAxis\n});","const is = Object.is;\n\n/**\n * Fast shallow compare for objects.\n * @returns true if objects are equal.\n */\nexport function fastObjectShallowCompare(a, b) {\n if (a === b) {\n return true;\n }\n if (!(a instanceof Object) || !(b instanceof Object)) {\n return false;\n }\n let aLength = 0;\n let bLength = 0;\n\n /* eslint-disable guard-for-in */\n for (const key in a) {\n aLength += 1;\n if (!is(a[key], b[key])) {\n return false;\n }\n if (!(key in b)) {\n return false;\n }\n }\n\n /* eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unused-vars */\n for (const _ in b) {\n bLength += 1;\n }\n return aLength === bLength;\n}","import useEventCallback from '@mui/utils/useEventCallback';\nimport { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';\nexport const useChartTooltip = ({\n store\n}) => {\n const removeTooltipItem = useEventCallback(function removeTooltipItem(itemToRemove) {\n const prevItem = store.state.tooltip.item;\n if (!itemToRemove) {\n // Remove without taking care of the current item\n if (prevItem !== null) {\n store.set('tooltip', {\n item: null\n });\n }\n return;\n }\n if (prevItem === null || !fastObjectShallowCompare(prevItem, itemToRemove)) {\n // The current item is already different from the one to remove. No need to clean it.\n return;\n }\n store.set('tooltip', {\n item: null\n });\n });\n const setTooltipItem = useEventCallback(function setTooltipItem(newItem) {\n if (!fastObjectShallowCompare(store.state.tooltip.item, newItem)) {\n store.set('tooltip', {\n item: newItem\n });\n }\n });\n return {\n instance: {\n setTooltipItem,\n removeTooltipItem\n }\n };\n};\nuseChartTooltip.getInitialState = () => ({\n tooltip: {\n item: null\n }\n});\nuseChartTooltip.params = {};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport const useChartInteraction = ({\n store\n}) => {\n const cleanInteraction = useEventCallback(function cleanInteraction() {\n store.update({\n interaction: _extends({}, store.state.interaction, {\n pointer: null\n })\n });\n });\n const setLastUpdateSource = useEventCallback(function setLastUpdateSource(interaction) {\n if (store.state.interaction.lastUpdate !== interaction) {\n store.set('interaction', _extends({}, store.state.interaction, {\n lastUpdate: interaction\n }));\n }\n });\n const setPointerCoordinate = useEventCallback(function setPointerCoordinate(coordinate) {\n store.set('interaction', _extends({}, store.state.interaction, {\n pointer: coordinate,\n lastUpdate: coordinate !== null ? 'pointer' : store.state.interaction.lastUpdate\n }));\n });\n return {\n instance: {\n cleanInteraction,\n setLastUpdateSource,\n setPointerCoordinate\n }\n };\n};\nuseChartInteraction.getInitialState = () => ({\n interaction: {\n item: null,\n pointer: null,\n lastUpdate: 'pointer'\n }\n});\nuseChartInteraction.params = {};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { getColorScale, getOrdinalColorScale } from \"../../../colorScale.js\";\nfunction addDefaultId(axisConfig, defaultId) {\n if (axisConfig.id !== undefined) {\n return axisConfig;\n }\n return _extends({\n id: defaultId\n }, axisConfig);\n}\nfunction processColorMap(axisConfig) {\n if (!axisConfig.colorMap) {\n return axisConfig;\n }\n return _extends({}, axisConfig, {\n colorScale: axisConfig.colorMap.type === 'ordinal' && axisConfig.data ? getOrdinalColorScale(_extends({\n values: axisConfig.data\n }, axisConfig.colorMap)) : getColorScale(axisConfig.colorMap.type === 'continuous' ? _extends({\n min: axisConfig.min,\n max: axisConfig.max\n }, axisConfig.colorMap) : axisConfig.colorMap)\n });\n}\nfunction getZAxisState(zAxis, dataset) {\n if (!zAxis || zAxis.length === 0) {\n return {\n axis: {},\n axisIds: []\n };\n }\n const zAxisLookup = {};\n const axisIds = [];\n zAxis.forEach((axisConfig, index) => {\n const dataKey = axisConfig.dataKey;\n const defaultizedId = axisConfig.id ?? `defaultized-z-axis-${index}`;\n if (dataKey === undefined || axisConfig.data !== undefined) {\n zAxisLookup[defaultizedId] = processColorMap(addDefaultId(axisConfig, defaultizedId));\n axisIds.push(defaultizedId);\n return;\n }\n if (dataset === undefined) {\n throw new Error('MUI X Charts: z-axis uses `dataKey` but no `dataset` is provided.');\n }\n zAxisLookup[defaultizedId] = processColorMap(addDefaultId(_extends({}, axisConfig, {\n data: dataset.map(d => d[dataKey])\n }), defaultizedId));\n axisIds.push(defaultizedId);\n });\n return {\n axis: zAxisLookup,\n axisIds\n };\n}\nexport const useChartZAxis = ({\n params,\n store\n}) => {\n const {\n zAxis,\n dataset\n } = params;\n\n // The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartZAxis`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n store.set('zAxis', getZAxisState(zAxis, dataset));\n }, [zAxis, dataset, store]);\n return {};\n};\nuseChartZAxis.params = {\n zAxis: true,\n dataset: true\n};\nuseChartZAxis.getInitialState = params => ({\n zAxis: getZAxisState(params.zAxis, params.dataset)\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { useAssertModelConsistency } from '@mui/x-internals/useAssertModelConsistency';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';\nexport const useChartHighlight = ({\n store,\n params\n}) => {\n useAssertModelConsistency({\n warningPrefix: 'MUI X Charts',\n componentName: 'Chart',\n propName: 'highlightedItem',\n controlled: params.highlightedItem,\n defaultValue: null\n });\n useEnhancedEffect(() => {\n if (store.state.highlight.item !== params.highlightedItem) {\n store.set('highlight', _extends({}, store.state.highlight, {\n item: params.highlightedItem\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n if (params.highlightedItem !== undefined && !store.state.highlight.isControlled) {\n warnOnce(['MUI X Charts: The `highlightedItem` switched between controlled and uncontrolled state.', 'To remove the highlight when using controlled state, you must provide `null` to the `highlightedItem` prop instead of `undefined`.'].join('\\n'));\n }\n }\n }, [store, params.highlightedItem]);\n const clearHighlight = useEventCallback(() => {\n params.onHighlightChange?.(null);\n const prevHighlight = store.state.highlight;\n if (prevHighlight.item === null || prevHighlight.isControlled) {\n return;\n }\n store.set('highlight', {\n item: null,\n lastUpdate: 'pointer',\n isControlled: false\n });\n });\n const setHighlight = useEventCallback(newItem => {\n const prevHighlight = store.state.highlight;\n if (fastObjectShallowCompare(prevHighlight.item, newItem)) {\n return;\n }\n params.onHighlightChange?.(newItem);\n if (prevHighlight.isControlled) {\n return;\n }\n store.set('highlight', {\n item: newItem,\n lastUpdate: 'pointer',\n isControlled: false\n });\n });\n return {\n instance: {\n clearHighlight,\n setHighlight\n }\n };\n};\nuseChartHighlight.getInitialState = params => ({\n highlight: {\n item: params.highlightedItem,\n lastUpdate: 'pointer',\n isControlled: params.highlightedItem !== undefined\n }\n});\nuseChartHighlight.params = {\n highlightedItem: true,\n onHighlightChange: true\n};","/**\n * Efficiently finds the minimum and maximum values in an array of numbers.\n * This functions helps preventing maximum call stack errors when dealing with large datasets.\n *\n * @param data The array of numbers to evaluate\n * @returns [min, max] as numbers\n */\nexport function findMinMax(data) {\n let min = Infinity;\n let max = -Infinity;\n for (const value of data ?? []) {\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n }\n return [min, max];\n}","import { findMinMax } from \"../../../internals/findMinMax.js\";\nconst createResult = (data, direction) => {\n if (direction === 'x') {\n return {\n x: data,\n y: null\n };\n }\n return {\n x: null,\n y: data\n };\n};\nconst getBaseExtremum = params => {\n const {\n axis,\n getFilters,\n isDefaultAxis\n } = params;\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis\n });\n const data = filter ? axis.data?.filter((_, i) => filter({\n x: null,\n y: null\n }, i)) : axis.data;\n return findMinMax(data ?? []);\n};\nconst getValueExtremum = direction => params => {\n const {\n series,\n axis,\n getFilters,\n isDefaultAxis\n } = params;\n return Object.keys(series).filter(seriesId => {\n const axisId = direction === 'x' ? series[seriesId].xAxisId : series[seriesId].yAxisId;\n return axisId === axis.id || isDefaultAxis && axisId === undefined;\n }).reduce((acc, seriesId) => {\n const {\n stackedData\n } = series[seriesId];\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n const [seriesMin, seriesMax] = stackedData?.reduce((seriesAcc, values, index) => {\n if (filter && (!filter(createResult(values[0], direction), index) || !filter(createResult(values[1], direction), index))) {\n return seriesAcc;\n }\n return [Math.min(...values, seriesAcc[0]), Math.max(...values, seriesAcc[1])];\n }, [Infinity, -Infinity]) ?? [Infinity, -Infinity];\n return [Math.min(seriesMin, acc[0]), Math.max(seriesMax, acc[1])];\n }, [Infinity, -Infinity]);\n};\nexport const getExtremumX = params => {\n // Notice that bar should be all horizontal or all vertical.\n // Don't think it's a problem for now\n const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');\n if (isHorizontal) {\n return getValueExtremum('x')(params);\n }\n return getBaseExtremum(params);\n};\nexport const getExtremumY = params => {\n const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');\n if (isHorizontal) {\n return getBaseExtremum(params);\n }\n return getValueExtremum('y')(params);\n};","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import { stackOrderNone as d3StackOrderNone, stackOrderReverse as d3StackOrderReverse, stackOrderAppearance as d3OrderAppearance, stackOrderAscending as d3OrderAscending, stackOrderDescending as d3OrderDescending, stackOrderInsideOut as d3OrderInsideOut, stackOffsetExpand as d3StackOffsetExpand, stackOffsetNone as d3StackOffsetNone, stackOffsetSilhouette as d3StackOffsetSilhouette, stackOffsetWiggle as d3StackOffsetWiggle } from '@mui/x-charts-vendor/d3-shape';\nimport { offsetDiverging } from \"./offset/index.js\";\nexport const StackOrder = {\n /**\n * Series order such that the earliest series (according to the maximum value) is at the bottom.\n * */\n appearance: d3OrderAppearance,\n /**\n * Series order such that the smallest series (according to the sum of values) is at the bottom.\n * */\n ascending: d3OrderAscending,\n /**\n * Series order such that the largest series (according to the sum of values) is at the bottom.\n */\n descending: d3OrderDescending,\n /**\n * Series order such that the earliest series (according to the maximum value) are on the inside and the later series are on the outside. This order is recommended for streamgraphs in conjunction with the wiggle offset. See Stacked Graphs—Geometry & Aesthetics by Byron & Wattenberg for more information.\n */\n insideOut: d3OrderInsideOut,\n /**\n * Given series order [0, 1, … n - 1] where n is the number of elements in series. Thus, the stack order is given by the key accessor.\n */\n none: d3StackOrderNone,\n /**\n * Reverse of the given series order [n - 1, n - 2, … 0] where n is the number of elements in series. Thus, the stack order is given by the reverse of the key accessor.\n */\n reverse: d3StackOrderReverse\n};\nexport const StackOffset = {\n /**\n * Applies a zero baseline and normalizes the values for each point such that the topline is always one.\n * */\n expand: d3StackOffsetExpand,\n /**\n * Positive values are stacked above zero, negative values are stacked below zero, and zero values are stacked at zero.\n * */\n // @ts-expect-error, d3 types are wrong, our custom function implements the correct signature\n diverging: offsetDiverging,\n /**\n * Applies a zero baseline.\n * */\n none: d3StackOffsetNone,\n /**\n * Shifts the baseline down such that the center of the streamgraph is always at zero.\n * */\n silhouette: d3StackOffsetSilhouette,\n /**\n * Shifts the baseline so as to minimize the weighted wiggle of layers. This offset is recommended for streamgraphs in conjunction with the inside-out order. See Stacked Graphs—Geometry & Aesthetics by Bryon & Wattenberg for more information.\n * */\n wiggle: d3StackOffsetWiggle\n};\n\n/**\n * Takes a set of series and groups their ids\n * @param series the object of all bars series\n * @returns an array of groups, including the ids, the stacking order, and the stacking offset.\n */\nexport const getStackingGroups = params => {\n const {\n series,\n seriesOrder,\n defaultStrategy\n } = params;\n const stackingGroups = [];\n const stackIndex = {};\n seriesOrder.forEach(id => {\n const {\n stack,\n stackOrder,\n stackOffset\n } = series[id];\n if (stack === undefined) {\n stackingGroups.push({\n ids: [id],\n stackingOrder: StackOrder.none,\n stackingOffset: StackOffset.none\n });\n } else if (stackIndex[stack] === undefined) {\n stackIndex[stack] = stackingGroups.length;\n stackingGroups.push({\n ids: [id],\n stackingOrder: StackOrder[stackOrder ?? defaultStrategy?.stackOrder ?? 'none'],\n stackingOffset: StackOffset[stackOffset ?? defaultStrategy?.stackOffset ?? 'diverging']\n });\n } else {\n stackingGroups[stackIndex[stack]].ids.push(id);\n if (stackOrder !== undefined) {\n stackingGroups[stackIndex[stack]].stackingOrder = StackOrder[stackOrder];\n }\n if (stackOffset !== undefined) {\n stackingGroups[stackIndex[stack]].stackingOffset = StackOffset[stackOffset];\n }\n }\n });\n return stackingGroups;\n};","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","// Adapted from D3.js's offsetDiverging function https://github.com/d3/d3-shape/blob/main/src/offset/diverging.js\n// Hidden series (with all zero values) affect the stacking in a different way in our implementation compared to the D3 behavior.\n// The D3 stacking keep those values at the 0 \"line\", which creates issues when animating between hidden and visible states.\n// In our modification, we stack them on top/below already stacked items according to the sign of their original value.\n// A hidden negative value will be placed below all the already stacked negative values\n\n/**\n * Positive values are stacked above zero, while negative values are stacked below zero.\n *\n * @param series A series generated by a stack generator.\n * @param order An array of numeric indexes representing the stack order.\n */\nexport function offsetDiverging(series, order) {\n if (series.length === 0) {\n return;\n }\n const seriesCount = series.length;\n const numericOrder = order;\n const pointCount = series[numericOrder[0]].length;\n for (let pointIndex = 0; pointIndex < pointCount; pointIndex += 1) {\n let positiveSum = 0;\n let negativeSum = 0;\n for (let seriesIndex = 0; seriesIndex < seriesCount; seriesIndex += 1) {\n const currentSeries = series[numericOrder[seriesIndex]];\n const dataPoint = currentSeries[pointIndex];\n const difference = dataPoint[1] - dataPoint[0];\n if (difference > 0) {\n dataPoint[0] = positiveSum;\n positiveSum += difference;\n dataPoint[1] = positiveSum;\n } else if (difference < 0) {\n dataPoint[1] = negativeSum;\n negativeSum += difference;\n dataPoint[0] = negativeSum;\n } else if (dataPoint.data[currentSeries.key] > 0) {\n dataPoint[0] = positiveSum;\n dataPoint[1] = positiveSum;\n } else if (dataPoint.data[currentSeries.key] < 0) {\n dataPoint[1] = negativeSum;\n dataPoint[0] = negativeSum;\n } else {\n dataPoint[0] = 0;\n dataPoint[1] = 0;\n }\n }\n }\n}","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { getStackingGroups } from \"../../../internals/stacking/index.js\";\nconst barValueFormatter = v => v == null ? '' : v.toLocaleString();\nconst seriesProcessor = (params, dataset) => {\n const {\n seriesOrder,\n series\n } = params;\n const stackingGroups = getStackingGroups(params);\n\n // Create a data set with format adapted to d3\n const d3Dataset = dataset ?? [];\n seriesOrder.forEach(id => {\n const data = series[id].data;\n if (data !== undefined) {\n data.forEach((value, index) => {\n if (d3Dataset.length <= index) {\n d3Dataset.push({\n [id]: value\n });\n } else {\n d3Dataset[index][id] = value;\n }\n });\n } else if (dataset === undefined) {\n throw new Error([`MUI X Charts: bar series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\\n'));\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!data && dataset) {\n const dataKey = series[id].dataKey;\n if (!dataKey) {\n throw new Error([`MUI X Charts: bar series with id='${id}' has no data and no dataKey.`, 'You must provide a dataKey when using the dataset prop.'].join('\\n'));\n }\n dataset.forEach((entry, index) => {\n const value = entry[dataKey];\n if (value != null && typeof value !== 'number') {\n warnOnce([`MUI X Charts: your dataset key \"${dataKey}\" is used for plotting bars, but the dataset contains the non-null non-numerical element \"${value}\" at index ${index}.`, 'Bar plots only support numeric and null values.'].join('\\n'));\n }\n });\n }\n }\n });\n const completedSeries = {};\n stackingGroups.forEach(stackingGroup => {\n const {\n ids,\n stackingOffset,\n stackingOrder\n } = stackingGroup;\n // Get stacked values, and derive the domain\n const stackedSeries = d3Stack().keys(ids.map(id => {\n // Use dataKey if needed and available\n const dataKey = series[id].dataKey;\n return series[id].data === undefined && dataKey !== undefined ? dataKey : id;\n })).value((d, key) => d[key] ?? 0) // defaultize null value to 0\n .order(stackingOrder).offset(stackingOffset)(d3Dataset);\n ids.forEach((id, index) => {\n const dataKey = series[id].dataKey;\n completedSeries[id] = _extends({\n layout: 'vertical',\n labelMarkType: 'square',\n minBarSize: 0,\n valueFormatter: series[id].valueFormatter ?? barValueFormatter\n }, series[id], {\n data: dataKey ? dataset.map(data => {\n const value = data[dataKey];\n return typeof value === 'number' ? value : null;\n }) : series[id].data,\n stackedData: stackedSeries[index].map(([a, b]) => [a, b])\n });\n });\n });\n return {\n seriesOrder,\n stackingGroups,\n series: completedSeries\n };\n};\nexport default seriesProcessor;","export function getLabel(value, location) {\n return typeof value === 'function' ? value(location) : value;\n}","export function getSeriesColorFn(series) {\n return series.colorGetter ? series.colorGetter : () => series.color;\n}","import { getSeriesColorFn } from \"../../../internals/getSeriesColorFn.js\";\nconst getColor = (series, xAxis, yAxis) => {\n const verticalLayout = series.layout === 'vertical';\n const bandColorScale = verticalLayout ? xAxis?.colorScale : yAxis?.colorScale;\n const valueColorScale = verticalLayout ? yAxis?.colorScale : xAxis?.colorScale;\n const bandValues = verticalLayout ? xAxis?.data : yAxis?.data;\n const getSeriesColor = getSeriesColorFn(series);\n if (valueColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : valueColorScale(value);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n if (bandColorScale && bandValues) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = bandValues[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : bandColorScale(value);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n return getSeriesColor({\n value,\n dataIndex\n });\n };\n};\nexport default getColor;","export function getNonEmptySeriesArray(series, availableSeriesTypes) {\n return Object.keys(series).filter(type => availableSeriesTypes.has(type)).flatMap(type => {\n const seriesOfType = series[type];\n return seriesOfType.seriesOrder.filter(seriesId => seriesOfType.series[seriesId].data.length > 0 && seriesOfType.series[seriesId].data.some(value => value != null)).map(seriesId => ({\n type,\n seriesId\n }));\n });\n}","import { getNonEmptySeriesArray } from \"./getNonEmptySeriesArray.js\";\n\n/**\n * Returns the previous series type and id that contains some data.\n * Returns `null` if no other series have data.\n */\nexport function getPreviousNonEmptySeries(series, availableSeriesTypes, type, seriesId) {\n const nonEmptySeries = getNonEmptySeriesArray(series, availableSeriesTypes);\n if (nonEmptySeries.length === 0) {\n return null;\n }\n const currentSeriesIndex = type !== undefined && seriesId !== undefined ? nonEmptySeries.findIndex(seriesItem => seriesItem.type === type && seriesItem.seriesId === seriesId) : -1;\n if (currentSeriesIndex <= 0) {\n // If no current series, or if it's the first series\n return nonEmptySeries[nonEmptySeries.length - 1];\n }\n return nonEmptySeries[(currentSeriesIndex - 1 + nonEmptySeries.length) % nonEmptySeries.length];\n}","export function getMaxSeriesLength(series, availableSeriesTypes) {\n return Object.keys(series).filter(type => availableSeriesTypes.has(type)).flatMap(type => {\n const seriesOfType = series[type];\n return seriesOfType.seriesOrder.filter(seriesId => seriesOfType.series[seriesId].data.length > 0 && seriesOfType.series[seriesId].data.some(value => value != null)).map(seriesId => seriesOfType.series[seriesId].data.length);\n }).reduce((maxLengths, length) => Math.max(maxLengths, length), 0);\n}","import { getNonEmptySeriesArray } from \"./getNonEmptySeriesArray.js\";\n\n/**\n * Returns the next series type and id that contains some data.\n * Returns `null` if no other series have data.\n * @param series - The processed series from the store.\n * @param availableSeriesTypes - The set of series types that can be focused.\n * @param type - The current series type.\n * @param seriesId - The current series id.\n */\nexport function getNextNonEmptySeries(series, availableSeriesTypes, type, seriesId) {\n const nonEmptySeries = getNonEmptySeriesArray(series, availableSeriesTypes);\n if (nonEmptySeries.length === 0) {\n return null;\n }\n const currentSeriesIndex = type !== undefined && seriesId !== undefined ? nonEmptySeries.findIndex(seriesItem => seriesItem.type === type && seriesItem.seriesId === seriesId) : -1;\n return nonEmptySeries[(currentSeriesIndex + 1) % nonEmptySeries.length];\n}","export function seriesHasData(series, type, seriesId) {\n // @ts-ignore sankey is not in MIT version\n if (type === 'sankey') {\n return false;\n }\n const data = series[type]?.series[seriesId]?.data;\n return data != null && data.length > 0;\n}","import { getPreviousNonEmptySeries } from \"./plugins/featurePlugins/useChartKeyboardNavigation/utils/getPreviousNonEmptySeries.js\";\nimport { getMaxSeriesLength } from \"./plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.js\";\nimport { selectorChartSeriesProcessed } from \"./plugins/corePlugins/useChartSeries/index.js\";\nimport { getNextNonEmptySeries } from \"./plugins/featurePlugins/useChartKeyboardNavigation/utils/getNextNonEmptySeries.js\";\nimport { seriesHasData } from \"./seriesHasData.js\";\nexport function createGetNextIndexFocusedItem(compatibleSeriesTypes) {\n return function getNextIndexFocusedItem(currentItem, state) {\n const processedSeries = selectorChartSeriesProcessed(state);\n let seriesId = currentItem?.seriesId;\n let type = currentItem?.type;\n if (!type || seriesId == null || !seriesHasData(processedSeries, type, seriesId)) {\n const nextSeries = getNextNonEmptySeries(processedSeries, compatibleSeriesTypes, type, seriesId);\n if (nextSeries === null) {\n return null;\n }\n type = nextSeries.type;\n seriesId = nextSeries.seriesId;\n }\n const maxLength = getMaxSeriesLength(processedSeries, compatibleSeriesTypes);\n const dataIndex = Math.min(maxLength - 1, currentItem?.dataIndex == null ? 0 : currentItem.dataIndex + 1);\n return {\n type,\n seriesId,\n dataIndex\n };\n };\n}\nexport function createGetPreviousIndexFocusedItem(compatibleSeriesTypes) {\n return function getPreviousIndexFocusedItem(currentItem, state) {\n const processedSeries = selectorChartSeriesProcessed(state);\n let seriesId = currentItem?.seriesId;\n let type = currentItem?.type;\n if (!type || seriesId == null || !seriesHasData(processedSeries, type, seriesId)) {\n const previousSeries = getPreviousNonEmptySeries(processedSeries, compatibleSeriesTypes, type, seriesId);\n if (previousSeries === null) {\n return null;\n }\n type = previousSeries.type;\n seriesId = previousSeries.seriesId;\n }\n const maxLength = getMaxSeriesLength(processedSeries, compatibleSeriesTypes);\n const dataIndex = Math.max(0, currentItem?.dataIndex == null ? maxLength - 1 : currentItem.dataIndex - 1);\n return {\n type,\n seriesId,\n dataIndex\n };\n };\n}\nexport function createGetNextSeriesFocusedItem(compatibleSeriesTypes) {\n return function getNextSeriesFocusedItem(currentItem, state) {\n const processedSeries = selectorChartSeriesProcessed(state);\n let seriesId = currentItem?.seriesId;\n let type = currentItem?.type;\n const nextSeries = getNextNonEmptySeries(processedSeries, compatibleSeriesTypes, type, seriesId);\n if (nextSeries === null) {\n return null; // No series to move the focus to.\n }\n type = nextSeries.type;\n seriesId = nextSeries.seriesId;\n const dataIndex = currentItem?.dataIndex == null ? 0 : currentItem.dataIndex;\n return {\n type,\n seriesId,\n dataIndex\n };\n };\n}\nexport function createGetPreviousSeriesFocusedItem(compatibleSeriesTypes) {\n return function getPreviousSeriesFocusedItem(currentItem, state) {\n const processedSeries = selectorChartSeriesProcessed(state);\n let seriesId = currentItem?.seriesId;\n let type = currentItem?.type;\n const previousSeries = getPreviousNonEmptySeries(processedSeries, compatibleSeriesTypes, type, seriesId);\n if (previousSeries === null) {\n return null; // No series to move the focus to.\n }\n type = previousSeries.type;\n seriesId = previousSeries.seriesId;\n const data = processedSeries[type].series[seriesId].data;\n const dataIndex = currentItem?.dataIndex == null ? data.length - 1 : currentItem.dataIndex;\n return {\n type,\n seriesId,\n dataIndex\n };\n };\n}","import { createGetNextIndexFocusedItem, createGetPreviousIndexFocusedItem, createGetNextSeriesFocusedItem, createGetPreviousSeriesFocusedItem } from \"../../../internals/commonNextFocusItem.js\";\nconst outSeriesTypes = new Set(['bar', 'line', 'scatter']);\nconst keyboardFocusHandler = event => {\n switch (event.key) {\n case 'ArrowRight':\n return createGetNextIndexFocusedItem(outSeriesTypes);\n case 'ArrowLeft':\n return createGetPreviousIndexFocusedItem(outSeriesTypes);\n case 'ArrowDown':\n return createGetPreviousSeriesFocusedItem(outSeriesTypes);\n case 'ArrowUp':\n return createGetNextSeriesFocusedItem(outSeriesTypes);\n default:\n return null;\n }\n};\nexport default keyboardFocusHandler;","/**\n * Solution of the equations\n * W = barWidth * N + offset * (N-1)\n * offset / (offset + barWidth) = r\n * @param bandWidth (W) The width available to place bars.\n * @param groupCount (N) The number of bars to place in that space.\n * @param gapRatio (r) The ratio of the gap between bars over the bar width.\n * @returns The bar width and the offset between bars.\n */\nexport function getBandSize(bandWidth, groupCount, gapRatio) {\n if (gapRatio === 0) {\n return {\n barWidth: bandWidth / groupCount,\n offset: 0\n };\n }\n const barWidth = bandWidth / (groupCount + (groupCount - 1) * gapRatio);\n const offset = gapRatio * barWidth;\n return {\n barWidth,\n offset\n };\n}","import { getBandSize } from \"./getBandSize.js\";\nfunction shouldInvertStartCoordinate(verticalLayout, baseValue, reverse) {\n const isVerticalAndPositive = verticalLayout && baseValue > 0;\n const isHorizontalAndNegative = !verticalLayout && baseValue < 0;\n const invertStartCoordinate = isVerticalAndPositive || isHorizontalAndNegative;\n return reverse ? !invertStartCoordinate : invertStartCoordinate;\n}\nexport function getBarDimensions(params) {\n const {\n verticalLayout,\n xAxisConfig,\n yAxisConfig,\n series,\n dataIndex,\n numberOfGroups,\n groupIndex\n } = params;\n const baseScaleConfig = verticalLayout ? xAxisConfig : yAxisConfig;\n const reverse = (verticalLayout ? yAxisConfig.reverse : xAxisConfig.reverse) ?? false;\n const {\n barWidth,\n offset\n } = getBandSize(baseScaleConfig.scale.bandwidth(), numberOfGroups, baseScaleConfig.barGapRatio);\n const barOffset = groupIndex * (barWidth + offset);\n const xScale = xAxisConfig.scale;\n const yScale = yAxisConfig.scale;\n const baseValue = baseScaleConfig.data[dataIndex];\n const seriesValue = series.data[dataIndex];\n if (seriesValue == null) {\n return null;\n }\n const values = series.stackedData[dataIndex];\n const valueCoordinates = values.map(v => verticalLayout ? yScale(v) : xScale(v));\n const minValueCoord = Math.round(Math.min(...valueCoordinates));\n const maxValueCoord = Math.round(Math.max(...valueCoordinates));\n const barSize = seriesValue === 0 ? 0 : Math.max(series.minBarSize, maxValueCoord - minValueCoord);\n const startCoordinate = shouldInvertStartCoordinate(verticalLayout, seriesValue, reverse) ? maxValueCoord - barSize : minValueCoord;\n return {\n x: verticalLayout ? xScale(baseValue) + barOffset : startCoordinate,\n y: verticalLayout ? startCoordinate : yScale(baseValue) + barOffset,\n height: verticalLayout ? barSize : barWidth,\n width: verticalLayout ? barWidth : barSize\n };\n}","import { getBarDimensions } from \"../../../internals/getBarDimensions.js\";\nconst tooltipItemPositionGetter = params => {\n const {\n series,\n identifier,\n axesConfig,\n placement\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const itemSeries = series.bar?.series[identifier.seriesId];\n if (series.bar == null || itemSeries == null) {\n return null;\n }\n if (axesConfig.x === undefined || axesConfig.y === undefined) {\n return null;\n }\n const dimensions = getBarDimensions({\n verticalLayout: itemSeries.layout === 'vertical',\n xAxisConfig: axesConfig.x,\n yAxisConfig: axesConfig.y,\n series: itemSeries,\n dataIndex: identifier.dataIndex,\n numberOfGroups: series.bar.stackingGroups.length,\n groupIndex: series.bar.stackingGroups.findIndex(group => group.ids.includes(itemSeries.id))\n });\n if (dimensions == null) {\n return null;\n }\n const {\n x,\n y,\n width,\n height\n } = dimensions;\n switch (placement) {\n case 'right':\n return {\n x: x + width,\n y: y + height / 2\n };\n case 'bottom':\n return {\n x: x + width / 2,\n y: y + height\n };\n case 'left':\n return {\n x,\n y: y + height / 2\n };\n case 'top':\n default:\n return {\n x: x + width / 2,\n y\n };\n }\n};\nexport default tooltipItemPositionGetter;","export const typeSerializer = type => `Type(${type})`;\nexport const seriesIdSerializer = id => `Series(${id})`;\nexport const dataIndexSerializer = dataIndex => dataIndex === undefined ? '' : `Index(${dataIndex})`;\nexport const identifierSerializerSeriesIdDataIndex = identifier => {\n return `${typeSerializer(identifier.type)}${seriesIdSerializer(identifier.seriesId)}${dataIndexSerializer(identifier.dataIndex)}`;\n};","import { getExtremumX, getExtremumY } from \"./bar/extremums.js\";\nimport seriesProcessor from \"./bar/seriesProcessor.js\";\nimport legendGetter from \"./bar/legend.js\";\nimport getColor from \"./bar/getColor.js\";\nimport keyboardFocusHandler from \"./bar/keyboardFocusHandler.js\";\nimport tooltipGetter, { axisTooltipGetter } from \"./bar/tooltip.js\";\nimport tooltipItemPositionGetter from \"./bar/tooltipPosition.js\";\nimport { getSeriesWithDefaultValues } from \"./bar/getSeriesWithDefaultValues.js\";\nimport { identifierSerializerSeriesIdDataIndex } from \"../../internals/identifierSerializer.js\";\nexport const barSeriesConfig = {\n seriesProcessor,\n colorProcessor: getColor,\n legendGetter,\n tooltipGetter,\n tooltipItemPositionGetter,\n axisTooltipGetter,\n xExtremumGetter: getExtremumX,\n yExtremumGetter: getExtremumY,\n getSeriesWithDefaultValues,\n keyboardFocusHandler,\n identifierSerializer: identifierSerializerSeriesIdDataIndex\n};","import { getLabel } from \"../../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n const formattedLabel = getLabel(series[seriesId].label, 'legend');\n if (formattedLabel === undefined) {\n return acc;\n }\n acc.push({\n type: 'bar',\n markType: series[seriesId].labelMarkType,\n id: seriesId,\n seriesId,\n color: series[seriesId].color,\n label: formattedLabel\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import { getLabel } from \"../../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const label = getLabel(series.label, 'tooltip');\n const value = series.data[identifier.dataIndex];\n if (value == null) {\n return null;\n }\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: series.labelMarkType\n };\n};\nexport const axisTooltipGetter = series => {\n return Object.values(series).map(s => s.layout === 'horizontal' ? {\n direction: 'y',\n axisId: s.yAxisId\n } : {\n direction: 'x',\n axisId: s.xAxisId\n });\n};\nexport default tooltipGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function getSeriesWithDefaultValues(seriesData, seriesIndex, colors) {\n return _extends({}, seriesData, {\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n color: seriesData.color ?? colors[seriesIndex % colors.length]\n });\n}","import { createGetNextIndexFocusedItem, createGetPreviousIndexFocusedItem, createGetNextSeriesFocusedItem, createGetPreviousSeriesFocusedItem } from \"../../internals/commonNextFocusItem.js\";\nconst outSeriesTypes = new Set(['bar', 'line', 'scatter']);\nconst keyboardFocusHandler = event => {\n switch (event.key) {\n case 'ArrowRight':\n return createGetNextIndexFocusedItem(outSeriesTypes);\n case 'ArrowLeft':\n return createGetPreviousIndexFocusedItem(outSeriesTypes);\n case 'ArrowDown':\n return createGetPreviousSeriesFocusedItem(outSeriesTypes);\n case 'ArrowUp':\n return createGetNextSeriesFocusedItem(outSeriesTypes);\n default:\n return null;\n }\n};\nexport default keyboardFocusHandler;","import { getExtremumX, getExtremumY } from \"./extremums.js\";\nimport seriesProcessor from \"./seriesProcessor.js\";\nimport getColor from \"./getColor.js\";\nimport legendGetter from \"./legend.js\";\nimport tooltipGetter from \"./tooltip.js\";\nimport getSeriesWithDefaultValues from \"./getSeriesWithDefaultValues.js\";\nimport tooltipItemPositionGetter from \"./tooltipPosition.js\";\nimport keyboardFocusHandler from \"./keyboardFocusHandler.js\";\nimport { identifierSerializerSeriesIdDataIndex } from \"../../internals/identifierSerializer.js\";\nexport const scatterSeriesConfig = {\n seriesProcessor,\n colorProcessor: getColor,\n legendGetter,\n tooltipGetter,\n tooltipItemPositionGetter,\n xExtremumGetter: getExtremumX,\n yExtremumGetter: getExtremumY,\n getSeriesWithDefaultValues,\n keyboardFocusHandler,\n identifierSerializer: identifierSerializerSeriesIdDataIndex\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst seriesProcessor = ({\n series,\n seriesOrder\n}, dataset) => {\n const completeSeries = Object.fromEntries(Object.entries(series).map(([seriesId, seriesData]) => {\n const datasetKeys = seriesData?.datasetKeys;\n const missingKeys = ['x', 'y'].filter(key => typeof datasetKeys?.[key] !== 'string');\n if (seriesData?.datasetKeys && missingKeys.length > 0) {\n throw new Error([`MUI X Charts: scatter series with id='${seriesId}' has incomplete datasetKeys.`, `Properties ${missingKeys.map(key => `\"${key}\"`).join(', ')} are missing.`].join('\\n'));\n }\n const data = !datasetKeys ? seriesData.data ?? [] : dataset?.map(d => {\n return {\n x: d[datasetKeys.x] ?? null,\n y: d[datasetKeys.y] ?? null,\n z: datasetKeys.z && d[datasetKeys.z],\n id: datasetKeys.id && d[datasetKeys.id]\n };\n }) ?? [];\n return [seriesId, _extends({\n labelMarkType: 'circle',\n markerSize: 4\n }, seriesData, {\n preview: _extends({\n markerSize: 1\n }, seriesData?.preview),\n data,\n valueFormatter: seriesData.valueFormatter ?? (v => v && `(${v.x}, ${v.y})`)\n })];\n }));\n return {\n series: completeSeries,\n seriesOrder\n };\n};\nexport default seriesProcessor;","import { getSeriesColorFn } from \"../../internals/getSeriesColorFn.js\";\nconst getColor = (series, xAxis, yAxis, zAxis) => {\n const zColorScale = zAxis?.colorScale;\n const yColorScale = yAxis?.colorScale;\n const xColorScale = xAxis?.colorScale;\n const getSeriesColor = getSeriesColorFn(series);\n if (zColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n if (zAxis?.data?.[dataIndex] !== undefined) {\n const color = zColorScale(zAxis?.data?.[dataIndex]);\n if (color !== null) {\n return color;\n }\n }\n const value = series.data[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : zColorScale(value.z);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n if (yColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : yColorScale(value.y);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n if (xColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : xColorScale(value.x);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n return getSeriesColor({\n value,\n dataIndex\n });\n };\n};\nexport default getColor;","import { getLabel } from \"../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n const formattedLabel = getLabel(series[seriesId].label, 'legend');\n if (formattedLabel === undefined) {\n return acc;\n }\n acc.push({\n type: 'scatter',\n markType: series[seriesId].labelMarkType,\n id: seriesId,\n seriesId,\n color: series[seriesId].color,\n label: formattedLabel\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import { getLabel } from \"../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const label = getLabel(series.label, 'tooltip');\n const value = series.data[identifier.dataIndex];\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: series.labelMarkType\n };\n};\nexport default tooltipGetter;","const tooltipItemPositionGetter = params => {\n const {\n series,\n identifier,\n axesConfig\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const itemSeries = series.scatter?.series[identifier.seriesId];\n if (itemSeries == null) {\n return null;\n }\n if (axesConfig.x === undefined || axesConfig.y === undefined) {\n return null;\n }\n const xValue = itemSeries.data?.[identifier.dataIndex].x;\n const yValue = itemSeries.data?.[identifier.dataIndex].y;\n if (xValue == null || yValue == null) {\n return null;\n }\n return {\n x: axesConfig.x.scale(xValue),\n y: axesConfig.y.scale(yValue)\n };\n};\nexport default tooltipItemPositionGetter;","export const getExtremumX = params => {\n const {\n series,\n axis,\n isDefaultAxis,\n getFilters\n } = params;\n let min = Infinity;\n let max = -Infinity;\n for (const seriesId in series) {\n if (!Object.hasOwn(series, seriesId)) {\n continue;\n }\n const axisId = series[seriesId].xAxisId;\n if (!(axisId === axis.id || axisId === undefined && isDefaultAxis)) {\n continue;\n }\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n const seriesData = series[seriesId].data ?? [];\n for (let i = 0; i < seriesData.length; i += 1) {\n const d = seriesData[i];\n if (filter && !filter(d, i)) {\n continue;\n }\n if (d.x !== null) {\n if (d.x < min) {\n min = d.x;\n }\n if (d.x > max) {\n max = d.x;\n }\n }\n }\n }\n return [min, max];\n};\nexport const getExtremumY = params => {\n const {\n series,\n axis,\n isDefaultAxis,\n getFilters\n } = params;\n let min = Infinity;\n let max = -Infinity;\n for (const seriesId in series) {\n if (!Object.hasOwn(series, seriesId)) {\n continue;\n }\n const axisId = series[seriesId].yAxisId;\n if (!(axisId === axis.id || axisId === undefined && isDefaultAxis)) {\n continue;\n }\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n const seriesData = series[seriesId].data ?? [];\n for (let i = 0; i < seriesData.length; i += 1) {\n const d = seriesData[i];\n if (filter && !filter(d, i)) {\n continue;\n }\n if (d.y !== null) {\n if (d.y < min) {\n min = d.y;\n }\n if (d.y > max) {\n max = d.y;\n }\n }\n }\n }\n return [min, max];\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => {\n return _extends({}, seriesData, {\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n color: seriesData.color ?? colors[seriesIndex % colors.length]\n });\n};\nexport default getSeriesWithDefaultValues;","import { getSeriesColorFn } from \"../../internals/getSeriesColorFn.js\";\nconst getColor = (series, xAxis, yAxis) => {\n const yColorScale = yAxis?.colorScale;\n const xColorScale = xAxis?.colorScale;\n const getSeriesColor = getSeriesColorFn(series);\n if (yColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : yColorScale(value);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n if (xColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = xAxis.data?.[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : xColorScale(value);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n return getSeriesColor({\n value,\n dataIndex\n });\n };\n};\nexport default getColor;","import { createGetNextIndexFocusedItem, createGetPreviousIndexFocusedItem, createGetNextSeriesFocusedItem, createGetPreviousSeriesFocusedItem } from \"../../internals/commonNextFocusItem.js\";\nconst outSeriesTypes = new Set(['bar', 'line', 'scatter']);\nconst keyboardFocusHandler = event => {\n switch (event.key) {\n case 'ArrowRight':\n return createGetNextIndexFocusedItem(outSeriesTypes);\n case 'ArrowLeft':\n return createGetPreviousIndexFocusedItem(outSeriesTypes);\n case 'ArrowDown':\n return createGetPreviousSeriesFocusedItem(outSeriesTypes);\n case 'ArrowUp':\n return createGetNextSeriesFocusedItem(outSeriesTypes);\n default:\n return null;\n }\n};\nexport default keyboardFocusHandler;","import { getExtremumX, getExtremumY } from \"./extremums.js\";\nimport seriesProcessor from \"./seriesProcessor.js\";\nimport getColor from \"./getColor.js\";\nimport legendGetter from \"./legend.js\";\nimport tooltipGetter, { axisTooltipGetter } from \"./tooltip.js\";\nimport getSeriesWithDefaultValues from \"./getSeriesWithDefaultValues.js\";\nimport tooltipItemPositionGetter from \"./tooltipPosition.js\";\nimport keyboardFocusHandler from \"./keyboardFocusHandler.js\";\nimport { identifierSerializerSeriesIdDataIndex } from \"../../internals/identifierSerializer.js\";\nexport const lineSeriesConfig = {\n colorProcessor: getColor,\n seriesProcessor,\n legendGetter,\n tooltipGetter,\n tooltipItemPositionGetter,\n axisTooltipGetter,\n xExtremumGetter: getExtremumX,\n yExtremumGetter: getExtremumY,\n getSeriesWithDefaultValues,\n keyboardFocusHandler,\n identifierSerializer: identifierSerializerSeriesIdDataIndex\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { getStackingGroups } from \"../../internals/stacking/index.js\";\nconst seriesProcessor = (params, dataset) => {\n const {\n seriesOrder,\n series\n } = params;\n const stackingGroups = getStackingGroups(_extends({}, params, {\n defaultStrategy: {\n stackOffset: 'none'\n }\n }));\n\n // Create a data set with format adapted to d3\n const d3Dataset = dataset ?? [];\n seriesOrder.forEach(id => {\n const data = series[id].data;\n if (data !== undefined) {\n data.forEach((value, index) => {\n if (d3Dataset.length <= index) {\n d3Dataset.push({\n [id]: value\n });\n } else {\n d3Dataset[index][id] = value;\n }\n });\n } else if (dataset === undefined && process.env.NODE_ENV !== 'production') {\n throw new Error([`MUI X Charts: line series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\\n'));\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!data && dataset) {\n const dataKey = series[id].dataKey;\n if (!dataKey) {\n throw new Error([`MUI X Charts: line series with id='${id}' has no data and no dataKey.`, 'You must provide a dataKey when using the dataset prop.'].join('\\n'));\n }\n dataset.forEach((entry, index) => {\n const value = entry[dataKey];\n if (value != null && typeof value !== 'number') {\n warnOnce([`MUI X Charts: your dataset key \"${dataKey}\" is used for plotting lines, but the dataset contains the non-null non-numerical element \"${value}\" at index ${index}.`, 'Line plots only support numeric and null values.'].join('\\n'));\n }\n });\n }\n }\n });\n const completedSeries = {};\n stackingGroups.forEach(stackingGroup => {\n // Get stacked values, and derive the domain\n const {\n ids,\n stackingOrder,\n stackingOffset\n } = stackingGroup;\n const stackedSeries = d3Stack().keys(ids.map(id => {\n // Use dataKey if needed and available\n const dataKey = series[id].dataKey;\n return series[id].data === undefined && dataKey !== undefined ? dataKey : id;\n })).value((d, key) => d[key] ?? 0) // defaultize null value to 0\n .order(stackingOrder).offset(stackingOffset)(d3Dataset);\n ids.forEach((id, index) => {\n const dataKey = series[id].dataKey;\n completedSeries[id] = _extends({\n labelMarkType: 'line'\n }, series[id], {\n data: dataKey ? dataset.map(data => {\n const value = data[dataKey];\n return typeof value === 'number' ? value : null;\n }) : series[id].data,\n stackedData: stackedSeries[index].map(([a, b]) => [a, b]),\n valueFormatter: series[id]?.valueFormatter ?? (v => v == null ? '' : v.toLocaleString())\n });\n });\n });\n return {\n seriesOrder,\n stackingGroups,\n series: completedSeries\n };\n};\nexport default seriesProcessor;","import { getLabel } from \"../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n const formattedLabel = getLabel(series[seriesId].label, 'legend');\n if (formattedLabel === undefined) {\n return acc;\n }\n acc.push({\n type: 'line',\n markType: series[seriesId].labelMarkType,\n id: seriesId,\n seriesId,\n color: series[seriesId].color,\n label: formattedLabel\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import { getLabel } from \"../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const label = getLabel(series.label, 'tooltip');\n const value = series.data[identifier.dataIndex];\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: series.labelMarkType\n };\n};\nexport const axisTooltipGetter = series => {\n return Object.values(series).map(s => ({\n direction: 'x',\n axisId: s.xAxisId\n }));\n};\nexport default tooltipGetter;","const tooltipItemPositionGetter = params => {\n const {\n series,\n identifier,\n axesConfig\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const itemSeries = series.line?.series[identifier.seriesId];\n if (itemSeries == null) {\n return null;\n }\n if (axesConfig.x === undefined || axesConfig.y === undefined) {\n return null;\n }\n const xValue = axesConfig.x.data?.[identifier.dataIndex];\n const yValue = itemSeries.data[identifier.dataIndex];\n if (xValue == null || yValue == null) {\n return null;\n }\n return {\n x: axesConfig.x.scale(xValue),\n y: axesConfig.y.scale(yValue)\n };\n};\nexport default tooltipItemPositionGetter;","import { findMinMax } from \"../../internals/findMinMax.js\";\nexport const getExtremumX = params => {\n const {\n axis\n } = params;\n return findMinMax(axis.data ?? []);\n};\nfunction getSeriesExtremums(getValues, data, stackedData, filter) {\n return stackedData.reduce((seriesAcc, stackedValue, index) => {\n if (data[index] === null) {\n return seriesAcc;\n }\n const [base, value] = getValues(stackedValue);\n if (filter && (!filter({\n y: base,\n x: null\n }, index) || !filter({\n y: value,\n x: null\n }, index))) {\n return seriesAcc;\n }\n return [Math.min(base, value, seriesAcc[0]), Math.max(base, value, seriesAcc[1])];\n }, [Infinity, -Infinity]);\n}\nexport const getExtremumY = params => {\n const {\n series,\n axis,\n isDefaultAxis,\n getFilters\n } = params;\n return Object.keys(series).filter(seriesId => {\n const yAxisId = series[seriesId].yAxisId;\n return yAxisId === axis.id || isDefaultAxis && yAxisId === undefined;\n }).reduce((acc, seriesId) => {\n const {\n area,\n stackedData,\n data\n } = series[seriesId];\n const isArea = area !== undefined;\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n\n // Since this series is not used to display an area, we do not consider the base (the d[0]).\n const getValues = isArea && axis.scaleType !== 'log' && typeof series[seriesId].baseline !== 'string' ? d => d : d => [d[1], d[1]];\n const seriesExtremums = getSeriesExtremums(getValues, data, stackedData, filter);\n const [seriesMin, seriesMax] = seriesExtremums;\n return [Math.min(seriesMin, acc[0]), Math.max(seriesMax, acc[1])];\n }, [Infinity, -Infinity]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => {\n return _extends({}, seriesData, {\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n color: seriesData.color ?? colors[seriesIndex % colors.length]\n });\n};\nexport default getSeriesWithDefaultValues;","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","export const deg2rad = (value, defaultRad) => {\n if (value === undefined) {\n return defaultRad;\n }\n return Math.PI * value / 180;\n};\nexport const rad2deg = (value, defaultDeg) => {\n if (value === undefined) {\n return defaultDeg;\n }\n return 180 * value / Math.PI;\n};","/**\n * Helper that converts values and percentages into values.\n * @param value The value provided by the developer. Can either be a number or a string with '%' or 'px'.\n * @param refValue The numerical value associated to 100%.\n * @returns The numerical value associated to the provided value.\n */\nexport function getPercentageValue(value, refValue) {\n if (typeof value === 'number') {\n return value;\n }\n if (value === '100%') {\n // Avoid potential rounding issues\n return refValue;\n }\n if (value.endsWith('%')) {\n const percentage = Number.parseFloat(value.slice(0, value.length - 1));\n if (!Number.isNaN(percentage)) {\n return percentage * refValue / 100;\n }\n }\n if (value.endsWith('px')) {\n const val = Number.parseFloat(value.slice(0, value.length - 2));\n if (!Number.isNaN(val)) {\n return val;\n }\n }\n throw new Error(`MUI X Charts: Received an unknown value \"${value}\". It should be a number, or a string with a percentage value.`);\n}","import { getPercentageValue } from \"../internals/getPercentageValue.js\";\nexport function getPieCoordinates(series, drawing) {\n const {\n height,\n width\n } = drawing;\n const {\n cx: cxParam,\n cy: cyParam\n } = series;\n const availableRadius = Math.min(width, height) / 2;\n const cx = getPercentageValue(cxParam ?? '50%', width);\n const cy = getPercentageValue(cyParam ?? '50%', height);\n return {\n cx,\n cy,\n availableRadius\n };\n}","import { getPercentageValue } from \"../../internals/getPercentageValue.js\";\nimport { getPieCoordinates } from \"../getPieCoordinates.js\";\nconst seriesLayout = (series, drawingArea) => {\n const seriesLayoutRecord = {};\n for (const seriesId of series.seriesOrder) {\n const {\n innerRadius,\n outerRadius,\n arcLabelRadius,\n cx: cxParam,\n cy: cyParam\n } = series.series[seriesId];\n const {\n cx,\n cy,\n availableRadius\n } = getPieCoordinates({\n cx: cxParam,\n cy: cyParam\n }, {\n width: drawingArea.width,\n height: drawingArea.height\n });\n const outer = getPercentageValue(outerRadius ?? availableRadius, availableRadius);\n const inner = getPercentageValue(innerRadius ?? 0, availableRadius);\n const label = arcLabelRadius === undefined ? (inner + outer) / 2 : getPercentageValue(arcLabelRadius, availableRadius);\n seriesLayoutRecord[seriesId] = {\n radius: {\n available: availableRadius,\n inner,\n outer,\n label\n },\n center: {\n x: drawingArea.left + cx,\n y: drawingArea.top + cy\n }\n };\n }\n return seriesLayoutRecord;\n};\nexport default seriesLayout;","import { createGetNextIndexFocusedItem, createGetPreviousIndexFocusedItem, createGetNextSeriesFocusedItem, createGetPreviousSeriesFocusedItem } from \"../../internals/commonNextFocusItem.js\";\nconst outSeriesTypes = new Set(['pie']);\nconst keyboardFocusHandler = event => {\n switch (event.key) {\n case 'ArrowRight':\n return createGetNextIndexFocusedItem(outSeriesTypes);\n case 'ArrowLeft':\n return createGetPreviousIndexFocusedItem(outSeriesTypes);\n case 'ArrowDown':\n return createGetPreviousSeriesFocusedItem(outSeriesTypes);\n case 'ArrowUp':\n return createGetNextSeriesFocusedItem(outSeriesTypes);\n default:\n return null;\n }\n};\nexport default keyboardFocusHandler;","'use client';\n\nimport * as React from 'react';\nimport { useCharts } from \"../../internals/store/useCharts.js\";\nimport { ChartContext } from \"./ChartContext.js\";\nimport { useChartCartesianAxis } from \"../../internals/plugins/featurePlugins/useChartCartesianAxis/index.js\";\nimport { useChartTooltip } from \"../../internals/plugins/featurePlugins/useChartTooltip/index.js\";\nimport { useChartInteraction } from \"../../internals/plugins/featurePlugins/useChartInteraction/index.js\";\nimport { useChartZAxis } from \"../../internals/plugins/featurePlugins/useChartZAxis/index.js\";\nimport { useChartHighlight } from \"../../internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.js\";\nimport { barSeriesConfig } from \"../../BarChart/seriesConfig/index.js\";\nimport { scatterSeriesConfig } from \"../../ScatterChart/seriesConfig/index.js\";\nimport { lineSeriesConfig } from \"../../LineChart/seriesConfig/index.js\";\nimport { pieSeriesConfig } from \"../../PieChart/seriesConfig/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const defaultSeriesConfig = {\n bar: barSeriesConfig,\n scatter: scatterSeriesConfig,\n line: lineSeriesConfig,\n pie: pieSeriesConfig\n};\n\n// For consistency with the v7, the cartesian axes are set by default.\n// To remove them, you can provide a `plugins` props.\nconst defaultPlugins = [useChartZAxis, useChartTooltip, useChartInteraction, useChartCartesianAxis, useChartHighlight];\nfunction ChartProvider(props) {\n const {\n children,\n plugins = defaultPlugins,\n pluginParams = {},\n seriesConfig = defaultSeriesConfig\n } = props;\n const {\n contextValue\n } = useCharts(plugins, pluginParams, seriesConfig);\n return /*#__PURE__*/_jsx(ChartContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nexport { ChartProvider };","import seriesProcessor from \"./seriesProcessor.js\";\nimport getColor from \"./getColor.js\";\nimport legendGetter from \"./legend.js\";\nimport tooltipGetter from \"./tooltip.js\";\nimport seriesLayout from \"./seriesLayout.js\";\nimport getSeriesWithDefaultValues from \"./getSeriesWithDefaultValues.js\";\nimport tooltipItemPositionGetter from \"./tooltipPosition.js\";\nimport keyboardFocusHandler from \"./keyboardFocusHandler.js\";\nimport { identifierSerializerSeriesIdDataIndex } from \"../../internals/identifierSerializer.js\";\nexport const pieSeriesConfig = {\n colorProcessor: getColor,\n seriesProcessor,\n seriesLayout,\n legendGetter,\n tooltipGetter,\n tooltipItemPositionGetter,\n getSeriesWithDefaultValues,\n keyboardFocusHandler,\n identifierSerializer: identifierSerializerSeriesIdDataIndex\n};","const getColor = series => {\n return dataIndex => {\n return series.data[dataIndex].color;\n };\n};\nexport default getColor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { pie as d3Pie } from '@mui/x-charts-vendor/d3-shape';\nimport { getLabel } from \"../../internals/getLabel.js\";\nimport { deg2rad } from \"../../internals/angleConversion.js\";\nconst getSortingComparator = (comparator = 'none') => {\n if (typeof comparator === 'function') {\n return comparator;\n }\n switch (comparator) {\n case 'none':\n return null;\n case 'desc':\n return (a, b) => b - a;\n case 'asc':\n return (a, b) => a - b;\n default:\n return null;\n }\n};\nconst seriesProcessor = params => {\n const {\n seriesOrder,\n series\n } = params;\n const defaultizedSeries = {};\n seriesOrder.forEach(seriesId => {\n const arcs = d3Pie().startAngle(deg2rad(series[seriesId].startAngle ?? 0)).endAngle(deg2rad(series[seriesId].endAngle ?? 360)).padAngle(deg2rad(series[seriesId].paddingAngle ?? 0)).sortValues(getSortingComparator(series[seriesId].sortingValues ?? 'none'))(series[seriesId].data.map(piePoint => piePoint.value));\n defaultizedSeries[seriesId] = _extends({\n labelMarkType: 'circle',\n valueFormatter: item => item.value.toLocaleString()\n }, series[seriesId], {\n data: series[seriesId].data.map((item, index) => _extends({}, item, {\n id: item.id ?? `auto-generated-pie-id-${seriesId}-${index}`\n }, arcs[index])).map((item, index) => _extends({\n labelMarkType: 'circle'\n }, item, {\n formattedValue: series[seriesId].valueFormatter?.(_extends({}, item, {\n label: getLabel(item.label, 'arc')\n }), {\n dataIndex: index\n }) ?? item.value.toLocaleString()\n }))\n });\n });\n return {\n seriesOrder,\n series: defaultizedSeries\n };\n};\nexport default seriesProcessor;","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import { getLabel } from \"../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n series[seriesId].data.forEach((item, dataIndex) => {\n const formattedLabel = getLabel(item.label, 'legend');\n if (formattedLabel === undefined) {\n return;\n }\n const id = item.id ?? dataIndex;\n acc.push({\n type: 'pie',\n markType: item.labelMarkType ?? series[seriesId].labelMarkType,\n seriesId,\n id,\n itemId: id,\n dataIndex,\n color: item.color,\n label: formattedLabel\n });\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getLabel } from \"../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const point = series.data[identifier.dataIndex];\n if (point == null) {\n return null;\n }\n const label = getLabel(point.label, 'tooltip');\n const value = _extends({}, point, {\n label\n });\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: point.labelMarkType ?? series.labelMarkType\n };\n};\nexport default tooltipGetter;","import { findMinMax } from \"../../internals/findMinMax.js\";\nconst tooltipItemPositionGetter = params => {\n const {\n series,\n identifier,\n placement,\n seriesLayout\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const itemSeries = series.pie?.series[identifier.seriesId];\n const layout = seriesLayout.pie?.[identifier.seriesId];\n if (itemSeries == null || layout == null) {\n return null;\n }\n const {\n center,\n radius\n } = layout;\n const {\n data\n } = itemSeries;\n const dataItem = data[identifier.dataIndex];\n if (!dataItem) {\n return null;\n }\n\n // Compute the 4 corner points of the arc to get the bounding box.\n const points = [[radius.inner, dataItem.startAngle], [radius.inner, dataItem.endAngle], [radius.outer, dataItem.startAngle], [radius.outer, dataItem.endAngle]].map(([r, angle]) => ({\n x: center.x + r * Math.sin(angle),\n y: center.y - r * Math.cos(angle)\n }));\n const [x0, x1] = findMinMax(points.map(p => p.x));\n const [y0, y1] = findMinMax(points.map(p => p.y));\n switch (placement) {\n case 'bottom':\n return {\n x: (x1 + x0) / 2,\n y: y1\n };\n case 'left':\n return {\n x: x0,\n y: (y1 + y0) / 2\n };\n case 'right':\n return {\n x: x1,\n y: (y1 + y0) / 2\n };\n case 'top':\n default:\n return {\n x: (x1 + x0) / 2,\n y: y0\n };\n }\n};\nexport default tooltipItemPositionGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => {\n return _extends({}, seriesData, {\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n data: seriesData.data.map((d, index) => _extends({}, d, {\n color: d.color ?? colors[index % colors.length]\n }))\n });\n};\nexport default getSeriesWithDefaultValues;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ChartsSlotsContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Get the slots and slotProps from the nearest `ChartDataProvider` or `ChartDataProviderPro`.\n * @returns {ChartsSlotsContextValue} The slots and slotProps from the context.\n */\nif (process.env.NODE_ENV !== \"production\") ChartsSlotsContext.displayName = \"ChartsSlotsContext\";\nexport function useChartsSlots() {\n const context = React.useContext(ChartsSlotsContext);\n if (context == null) {\n throw new Error(['MUI X Charts: Could not find the Charts Slots context.', 'It looks like you rendered your component outside of a ChartDataProvider.', 'This can also happen if you are bundling multiple versions of the library.'].join('\\n'));\n }\n return context;\n}\nexport function ChartsSlotsProvider(props) {\n const {\n slots,\n slotProps = {},\n defaultSlots,\n children\n } = props;\n const value = React.useMemo(() => ({\n slots: _extends({}, defaultSlots, slots),\n slotProps\n }), [defaultSlots, slots, slotProps]);\n return /*#__PURE__*/_jsx(ChartsSlotsContext.Provider, {\n value: value,\n children: children\n });\n}","/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param defaultProps\n * @param props\n * @returns resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = {\n ...props\n };\n for (const key in defaultProps) {\n if (Object.prototype.hasOwnProperty.call(defaultProps, key)) {\n const propName = key;\n if (propName === 'components' || propName === 'slots') {\n output[propName] = {\n ...defaultProps[propName],\n ...output[propName]\n };\n } else if (propName === 'componentsProps' || propName === 'slotProps') {\n const defaultSlotProps = defaultProps[propName];\n const slotProps = props[propName];\n if (!slotProps) {\n output[propName] = defaultSlotProps || {};\n } else if (!defaultSlotProps) {\n output[propName] = slotProps;\n } else {\n output[propName] = {\n ...slotProps\n };\n for (const slotKey in defaultSlotProps) {\n if (Object.prototype.hasOwnProperty.call(defaultSlotProps, slotKey)) {\n const slotPropName = slotKey;\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n }\n }\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n }\n }\n return output;\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","import * as React from 'react';\nimport { isValidElementType } from 'react-is';\n\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (/*#__PURE__*/React.isValidElement(source) || isValidElementType(source) || !isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\n\n/**\n * Merge objects deeply.\n * It will shallow copy React elements.\n *\n * If `options.clone` is set to `false` the source object will be merged directly into the target object.\n *\n * @example\n * ```ts\n * deepmerge({ a: { b: 1 }, d: 2 }, { a: { c: 2 }, d: 4 });\n * // => { a: { b: 1, c: 2 }, d: 4 }\n * ````\n *\n * @param target The target object.\n * @param source The source object.\n * @param options The merge options.\n * @param options.clone Set to `false` to merge the source object directly into the target object.\n * @returns The merged object.\n */\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? {\n ...target\n } : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (/*#__PURE__*/React.isValidElement(source[key]) || isValidElementType(source[key])) {\n output[key] = source[key];\n } else if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return {\n ...acc,\n [obj.key]: obj.val\n };\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5,\n ...other\n } = breakpoints;\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return {\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit,\n ...other\n };\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/**\n * For using in `sx` prop to sort the breakpoint from low to high.\n * Note: this function does not work and will not support multiple units.\n * e.g. input: { '@container (min-width:300px)': '1rem', '@container (min-width:40rem)': '2rem' }\n * output: { '@container (min-width:40rem)': '2rem', '@container (min-width:300px)': '1rem' } // since 40 < 300 eventhough 40rem > 300px\n */\nexport function sortContainerQueries(theme, css) {\n if (!theme.containerQueries) {\n return css;\n }\n const sorted = Object.keys(css).filter(key => key.startsWith('@container')).sort((a, b) => {\n const regex = /min-width:\\s*([0-9.]+)/;\n return +(a.match(regex)?.[1] || 0) - +(b.match(regex)?.[1] || 0);\n });\n if (!sorted.length) {\n return css;\n }\n return sorted.reduce((acc, key) => {\n const value = css[key];\n delete acc[key];\n acc[key] = value;\n return acc;\n }, {\n ...css\n });\n}\nexport function isCqShorthand(breakpointKeys, value) {\n return value === '@' || value.startsWith('@') && (breakpointKeys.some(key => value.startsWith(`@${key}`)) || !!value.match(/^@\\d/));\n}\nexport function getContainerQuery(theme, shorthand) {\n const matches = shorthand.match(/^@([^/]+)?\\/?(.+)?$/);\n if (!matches) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \\`@\\` or \\`@/\\`.\\n` + 'For example, `@sm` or `@600` or `@40rem/sidebar`.' : _formatMuiErrorMessage(18, `(${shorthand})`));\n }\n return null;\n }\n const [, containerQuery, containerName] = matches;\n const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;\n return theme.containerQueries(containerName).up(value);\n}\nexport default function cssContainerQueries(themeInput) {\n const toContainerQuery = (mediaQuery, name) => mediaQuery.replace('@media', name ? `@container ${name}` : '@container');\n function attachCq(node, name) {\n node.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);\n node.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);\n node.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);\n node.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);\n node.not = (...args) => {\n const result = toContainerQuery(themeInput.breakpoints.not(...args), name);\n if (result.includes('not all and')) {\n // `@container` does not work with `not all and`, so need to invert the logic\n return result.replace('not all and ', '').replace('min-width:', 'width<').replace('max-width:', 'width>').replace('and', 'or');\n }\n return result;\n };\n }\n const node = {};\n const containerQueries = name => {\n attachCq(node, name);\n return node;\n };\n attachCq(containerQueries);\n return {\n ...themeInput,\n containerQueries\n };\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from \"../merge/index.js\";\nimport { isCqShorthand, getContainerQuery } from \"../cssContainerQueries/index.js\";\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nconst defaultContainerQueries = {\n containerQueries: containerName => ({\n up: key => {\n let result = typeof key === 'number' ? key : values[key] || key;\n if (typeof result === 'number') {\n result = `${result}px`;\n }\n return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;\n }\n })\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {\n const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);\n if (containerKey) {\n acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n }\n }\n // key is breakpoint\n else if (Object.keys(themeBreakpoints.values || values).includes(breakpoint)) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction({\n theme,\n ...props[key]\n });\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? {\n ...styleFunction.propTypes,\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n } : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n const breakpointsInOrder = breakpointsInput.keys?.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/interal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n * throw new Error('My message');\n * throw new Error(`My message: ${foo}`);\n * throw new Error(`My message: ${foo}` + 'another string');\n * ...\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code, ...args) {\n const url = new URL(`https://mui.com/production-error/?code=${code}`);\n args.forEach(arg => url.searchParams.append('args[]', arg));\n return `Minified MUI error #${code}; visit ${url} for the full message.`;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `capitalize(string)` expects a string argument.' : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport { getPath } from \"../style/index.js\";\nimport merge from \"../merge/index.js\";\nimport memoize from \"../memoize/index.js\";\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;\n if (typeof themeSpacing === 'number' || typeof themeSpacing === 'string') {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof val !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);\n }\n }\n if (typeof themeSpacing === 'string') {\n return `calc(${val} * ${themeSpacing})`;\n }\n return themeSpacing * val;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n const abs = Math.abs(val);\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n const transformed = themeSpacing[abs];\n if (val >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n return transformer(propValue);\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (!keys.includes(prop)) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import { createUnarySpacing } from \"../spacing/index.js\";\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8,\n// Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n// Smaller components, such as icons, can align to a 4dp grid.\n// https://m2.material.io/design/layout/understanding-layout.html\ntransform = createUnarySpacing({\n spacing: spacingInput\n})) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import merge from \"../merge/index.js\";\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from \"../responsivePropType/index.js\";\nimport style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport responsivePropType from \"../responsivePropType/index.js\";\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { handleBreakpoints, values as breakpointsValues } from \"../breakpoints/index.js\";\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n const breakpoint = props.theme?.breakpoints?.values?.[propValue] || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (props.theme?.breakpoints?.unit !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from \"../spacing/index.js\";\nimport { borderRadius, borderTransform } from \"../borders/index.js\";\nimport { gap, rowGap, columnGap } from \"../cssGrid/index.js\";\nimport { paletteTransform } from \"../palette/index.js\";\nimport { maxWidth, sizingTransform } from \"../sizing/index.js\";\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n font: {\n themeKey: 'font'\n },\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from \"../merge/index.js\";\nimport { getPath, getStyleValue as getValue } from \"../style/index.js\";\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from \"../breakpoints/index.js\";\nimport { sortContainerQueries } from \"../cssContainerQueries/index.js\";\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n const {\n sx,\n theme = {},\n nested\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = theme.unstable_sxConfig ?? defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme,\n nested: true\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n if (!nested && theme.modularCssLayers) {\n return {\n '@layer sx': sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css))\n };\n }\n return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css));\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/customization/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * With the styled function:\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * With the sx prop:\n * ✅ [{ background: '#e5e5e5' }, theme => theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme => theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars) {\n if (!theme.colorSchemes?.[key] || typeof theme.getColorSchemeSelector !== 'function') {\n return {};\n }\n // If CssVarsProvider is used as a provider, returns '*:where({selector}) &'\n let selector = theme.getColorSchemeSelector(key);\n if (selector === '&') {\n return styles;\n }\n if (selector.includes('data-') || selector.includes('.')) {\n // '*' is required as a workaround for Emotion issue (https://github.com/emotion-js/emotion/issues/2836)\n selector = `*:where(${selector.replace(/\\s*&$/, '')}) &`;\n }\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from \"../createBreakpoints/createBreakpoints.js\";\nimport cssContainerQueries from \"../cssContainerQueries/index.js\";\nimport shape from \"./shape.js\";\nimport createSpacing from \"./createSpacing.js\";\nimport styleFunctionSx from \"../styleFunctionSx/styleFunctionSx.js\";\nimport defaultSxConfig from \"../styleFunctionSx/defaultSxConfig.js\";\nimport applyStyles from \"./applyStyles.js\";\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {},\n ...other\n } = options;\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: {\n mode: 'light',\n ...paletteInput\n },\n spacing,\n shape: {\n ...shape,\n ...shapeInput\n }\n }, other);\n muiTheme = cssContainerQueries(muiTheme);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n var newProps = {};\n\n for (var _key in props) {\n if (hasOwn.call(props, _key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var _key2 in props) {\n if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n newProps[_key2] = props[_key2];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from \"../createTheme/index.js\";\nimport useThemeWithoutDefault from \"../useThemeWithoutDefault/index.js\";\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (color.length !== color.trim().length) {\n console.error(`MUI: The color: \"${color}\" is invalid. Make sure the color input doesn't contain leading/trailing space.`);\n }\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (!['rgb', 'rgba', 'hsl', 'hsla', 'color'].includes(type)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\\n` + 'The following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().' : _formatMuiErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (!['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].includes(colorSpace)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\\n` + 'The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.' : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.includes('hsl') && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.includes('rgb')) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.includes('hsl')) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.includes('color')) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.startsWith('#')) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.includes('hsl')) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.includes('rgb') || color.type.includes('color')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.includes('hsl')) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.includes('rgb')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.includes('color')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from \"../colors/common.js\";\nimport grey from \"../colors/grey.js\";\nimport purple from \"../colors/purple.js\";\nimport red from \"../colors/red.js\";\nimport orange from \"../colors/orange.js\";\nimport blue from \"../colors/blue.js\";\nimport lightBlue from \"../colors/lightBlue.js\";\nimport green from \"../colors/green.js\";\nfunction getLight() {\n return {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n };\n}\nexport const light = getLight();\nfunction getDark() {\n return {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n };\n}\nexport const dark = getDark();\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2,\n ...other\n } = palette;\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = {\n ...color\n };\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\\n` + `The color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\\n` + `\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\\n` + '\\n' + 'Did you intend to use one of the following approaches?\\n' + '\\n' + 'import { green } from \"@mui/material/colors\";\\n' + '\\n' + 'const theme1 = createTheme({ palette: {\\n' + ' primary: green,\\n' + '} });\\n' + '\\n' + 'const theme2 = createTheme({ palette: {\\n' + ' primary: { main: green[500] },\\n' + '} });' : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n let modeHydrated;\n if (mode === 'light') {\n modeHydrated = getLight();\n } else if (mode === 'dark') {\n modeHydrated = getDark();\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!modeHydrated) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge({\n // A collection of common colors.\n common: {\n ...common\n },\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset,\n // The light and dark mode object.\n ...modeHydrated\n }, other);\n return paletteOutput;\n}","/**\n * The benefit of this function is to help developers get CSS var from theme without specifying the whole variable\n * and they does not need to remember the prefix (defined once).\n */\nexport default function createGetCssVar(prefix = '') {\n function appendVar(...vars) {\n if (!vars.length) {\n return '';\n }\n const value = vars[0];\n 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+)/)) {\n return `, var(--${prefix ? `${prefix}-` : ''}${value}${appendVar(...vars.slice(1))})`;\n }\n return `, ${value}`;\n }\n\n // AdditionalVars makes `getCssVar` less strict, so it can be use like this `getCssVar('non-mui-variable')` without type error.\n const getCssVar = (field, ...fallbacks) => {\n return `var(--${prefix ? `${prefix}-` : ''}${field}${appendVar(...fallbacks)})`;\n };\n return getCssVar;\n}","export default function prepareTypographyVars(typography) {\n const vars = {};\n const entries = Object.entries(typography);\n entries.forEach(entry => {\n const [key, value] = entry;\n if (typeof value === 'object') {\n vars[key] = `${value.fontStyle ? `${value.fontStyle} ` : ''}${value.fontVariant ? `${value.fontVariant} ` : ''}${value.fontWeight ? `${value.fontWeight} ` : ''}${value.fontStretch ? `${value.fontStretch} ` : ''}${value.fontSize || ''}${value.lineHeight ? `/${value.lineHeight} ` : ''}${value.fontFamily || ''}`;\n }\n });\n return vars;\n}","/**\n * This function create an object from keys, value and then assign to target\n *\n * @param {Object} obj : the target object to be assigned\n * @param {string[]} keys\n * @param {string | number} value\n *\n * @example\n * const source = {}\n * assignNestedKeys(source, ['palette', 'primary'], 'var(--palette-primary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)' } }\n *\n * @example\n * const source = { palette: { primary: 'var(--palette-primary)' } }\n * assignNestedKeys(source, ['palette', 'secondary'], 'var(--palette-secondary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)', secondary: 'var(--palette-secondary)' } }\n */\nexport const assignNestedKeys = (obj, keys, value, arrayKeys = []) => {\n let temp = obj;\n keys.forEach((k, index) => {\n if (index === keys.length - 1) {\n if (Array.isArray(temp)) {\n temp[Number(k)] = value;\n } else if (temp && typeof temp === 'object') {\n temp[k] = value;\n }\n } else if (temp && typeof temp === 'object') {\n if (!temp[k]) {\n temp[k] = arrayKeys.includes(k) ? [] : {};\n }\n temp = temp[k];\n }\n });\n};\n\n/**\n *\n * @param {Object} obj : source object\n * @param {Function} callback : a function that will be called when\n * - the deepest key in source object is reached\n * - the value of the deepest key is NOT `undefined` | `null`\n *\n * @example\n * walkObjectDeep({ palette: { primary: { main: '#000000' } } }, console.log)\n * // ['palette', 'primary', 'main'] '#000000'\n */\nexport const walkObjectDeep = (obj, callback, shouldSkipPaths) => {\n function recurse(object, parentKeys = [], arrayKeys = []) {\n Object.entries(object).forEach(([key, value]) => {\n if (!shouldSkipPaths || shouldSkipPaths && !shouldSkipPaths([...parentKeys, key])) {\n if (value !== undefined && value !== null) {\n if (typeof value === 'object' && Object.keys(value).length > 0) {\n recurse(value, [...parentKeys, key], Array.isArray(value) ? [...arrayKeys, key] : arrayKeys);\n } else {\n callback([...parentKeys, key], value, arrayKeys);\n }\n }\n }\n });\n }\n recurse(obj);\n};\nconst getCssValue = (keys, value) => {\n if (typeof value === 'number') {\n if (['lineHeight', 'fontWeight', 'opacity', 'zIndex'].some(prop => keys.includes(prop))) {\n // CSS property that are unitless\n return value;\n }\n const lastKey = keys[keys.length - 1];\n if (lastKey.toLowerCase().includes('opacity')) {\n // opacity values are unitless\n return value;\n }\n return `${value}px`;\n }\n return value;\n};\n\n/**\n * a function that parse theme and return { css, vars }\n *\n * @param {Object} theme\n * @param {{\n * prefix?: string,\n * shouldSkipGeneratingVar?: (objectPathKeys: Array, value: string | number) => boolean\n * }} options.\n * `prefix`: The prefix of the generated CSS variables. This function does not change the value.\n *\n * @returns {{ css: Object, vars: Object }} `css` is the stylesheet, `vars` is an object to get css variable (same structure as theme).\n *\n * @example\n * const { css, vars } = parser({\n * fontSize: 12,\n * lineHeight: 1.2,\n * palette: { primary: { 500: 'var(--color)' } }\n * }, { prefix: 'foo' })\n *\n * console.log(css) // { '--foo-fontSize': '12px', '--foo-lineHeight': 1.2, '--foo-palette-primary-500': 'var(--color)' }\n * console.log(vars) // { fontSize: 'var(--foo-fontSize)', lineHeight: 'var(--foo-lineHeight)', palette: { primary: { 500: 'var(--foo-palette-primary-500)' } } }\n */\nexport default function cssVarsParser(theme, options) {\n const {\n prefix,\n shouldSkipGeneratingVar\n } = options || {};\n const css = {};\n const vars = {};\n const varsWithDefaults = {};\n walkObjectDeep(theme, (keys, value, arrayKeys) => {\n if (typeof value === 'string' || typeof value === 'number') {\n if (!shouldSkipGeneratingVar || !shouldSkipGeneratingVar(keys, value)) {\n // only create css & var if `shouldSkipGeneratingVar` return false\n const cssVar = `--${prefix ? `${prefix}-` : ''}${keys.join('-')}`;\n const resolvedValue = getCssValue(keys, value);\n Object.assign(css, {\n [cssVar]: resolvedValue\n });\n assignNestedKeys(vars, keys, `var(${cssVar})`, arrayKeys);\n assignNestedKeys(varsWithDefaults, keys, `var(${cssVar}, ${resolvedValue})`, arrayKeys);\n }\n }\n }, keys => keys[0] === 'vars' // skip 'vars/*' paths\n );\n return {\n css,\n vars,\n varsWithDefaults\n };\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2,\n ...other\n } = typeof typography === 'function' ? typography(palette) : typography;\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => ({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight,\n // The letter spacing was designed for the Roboto font-family. Using the same letter-spacing\n // across font-families can cause issues with the kerning.\n ...(fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}),\n ...casing,\n ...allVariants\n });\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // 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.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold,\n ...variants\n }, other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n 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(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst 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)];\nexport default shadows;","// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.desmos.com/calculator/vbrp3ggqet\n return Math.min(Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10), 3000);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = {\n ...easing,\n ...inputTransitions.easing\n };\n const mergedDuration = {\n ...duration,\n ...inputTransitions.duration\n };\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0,\n ...other\n } = options;\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n const isNumber = value => !Number.isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return {\n getAutoHeightDuration,\n create,\n ...inputTransitions,\n easing: mergedEasing,\n duration: mergedDuration\n };\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","/* eslint-disable import/prefer-default-export */\nimport { isPlainObject } from '@mui/utils/deepmerge';\nfunction isSerializable(val) {\n return isPlainObject(val) || typeof val === 'undefined' || typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number' || Array.isArray(val);\n}\n\n/**\n * `baseTheme` usually comes from `createTheme()` or `extendTheme()`.\n *\n * This function is intended to be used with zero-runtime CSS-in-JS like Pigment CSS\n * For example, in a Next.js project:\n *\n * ```js\n * // next.config.js\n * const { extendTheme } = require('@mui/material/styles');\n *\n * const theme = extendTheme();\n * // `.toRuntimeSource` is Pigment CSS specific to create a theme that is available at runtime.\n * theme.toRuntimeSource = stringifyTheme;\n *\n * module.exports = withPigment({\n * theme,\n * });\n * ```\n */\nexport function stringifyTheme(baseTheme = {}) {\n const serializableTheme = {\n ...baseTheme\n };\n function serializeTheme(object) {\n const array = Object.entries(object);\n // eslint-disable-next-line no-plusplus\n for (let index = 0; index < array.length; index++) {\n const [key, value] = array[index];\n if (!isSerializable(value) || key.startsWith('unstable_')) {\n delete object[key];\n } else if (isPlainObject(value)) {\n object[key] = {\n ...value\n };\n serializeTheme(object[key]);\n }\n }\n }\n serializeTheme(serializableTheme);\n return `import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(serializableTheme, null, 2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from \"./createMixins.js\";\nimport createPalette from \"./createPalette.js\";\nimport createTypography from \"./createTypography.js\";\nimport shadows from \"./shadows.js\";\nimport createTransitions from \"./createTransitions.js\";\nimport zIndex from \"./zIndex.js\";\nimport { stringifyTheme } from \"./stringifyTheme.js\";\nfunction createThemeNoVars(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput,\n mixins: mixinsInput = {},\n spacing: spacingInput,\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {},\n shape: shapeInput,\n ...other\n } = options;\n if (options.vars &&\n // The error should throw only for the root theme creation because user is not allowed to use a custom node `vars`.\n // `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.\n options.generateThemeVars === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `vars` is a private field used for CSS variables support.\\n' + 'Please use another name or follow the [docs](https://mui.com/material-ui/customization/css-theme-variables/usage/) to enable the feature.' : _formatMuiErrorMessage(20));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: {\n ...zIndex\n }\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in\n for (key in node) {\n const child = node[key];\n if (stateClasses.includes(key) && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.startsWith('Mui')) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n muiTheme.toRuntimeSource = stringifyTheme; // for Pigment CSS integration\n\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createThemeNoVars(...args);\n}\nexport default createThemeNoVars;","export default function createMixins(breakpoints, mixins) {\n return {\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n },\n ...mixins\n };\n}","// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nexport default function getOverlayAlpha(elevation) {\n let alphaValue;\n if (elevation < 1) {\n alphaValue = 5.11916 * elevation ** 2;\n } else {\n alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n }\n return Math.round(alphaValue * 10) / 1000;\n}","import createPalette from \"./createPalette.js\";\nimport getOverlayAlpha from \"./getOverlayAlpha.js\";\nconst defaultDarkOverlays = [...Array(25)].map((_, index) => {\n if (index === 0) {\n return 'none';\n }\n const overlay = getOverlayAlpha(index);\n return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;\n});\nexport function getOpacity(mode) {\n return {\n inputPlaceholder: mode === 'dark' ? 0.5 : 0.42,\n inputUnderline: mode === 'dark' ? 0.7 : 0.42,\n switchTrackDisabled: mode === 'dark' ? 0.2 : 0.12,\n switchTrack: mode === 'dark' ? 0.3 : 0.38\n };\n}\nexport function getOverlays(mode) {\n return mode === 'dark' ? defaultDarkOverlays : [];\n}\nexport default function createColorScheme(options) {\n const {\n palette: paletteInput = {\n mode: 'light'\n },\n // need to cast to avoid module augmentation test\n opacity,\n overlays,\n ...rest\n } = options;\n const palette = createPalette(paletteInput);\n return {\n palette,\n opacity: {\n ...getOpacity(palette.mode),\n ...opacity\n },\n overlays: overlays || getOverlays(palette.mode),\n ...rest\n };\n}","export default function shouldSkipGeneratingVar(keys) {\n return !!keys[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/) || !!keys[0].match(/sxConfig$/) ||\n // ends with sxConfig\n keys[0] === 'palette' && !!keys[1]?.match(/(mode|contrastThreshold|tonalOffset)/);\n}","/**\n * @internal These variables should not appear in the :root stylesheet when the `defaultColorScheme=\"dark\"`\n */\nconst excludeVariablesFromRoot = cssVarPrefix => [...[...Array(25)].map((_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index}`), `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkBg`, `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkColor`];\nexport default excludeVariablesFromRoot;","import excludeVariablesFromRoot from \"./excludeVariablesFromRoot.js\";\nexport default theme => (colorScheme, css) => {\n const root = theme.rootSelector || ':root';\n const selector = theme.colorSchemeSelector;\n let rule = selector;\n if (selector === 'class') {\n rule = '.%s';\n }\n if (selector === 'data') {\n rule = '[data-%s]';\n }\n if (selector?.startsWith('data-') && !selector.includes('%s')) {\n // 'data-mui-color-scheme' -> '[data-mui-color-scheme=\"%s\"]'\n rule = `[${selector}=\"%s\"]`;\n }\n if (theme.defaultColorScheme === colorScheme) {\n if (colorScheme === 'dark') {\n const excludedVariables = {};\n excludeVariablesFromRoot(theme.cssVarPrefix).forEach(cssVar => {\n excludedVariables[cssVar] = css[cssVar];\n delete css[cssVar];\n });\n if (rule === 'media') {\n return {\n [root]: css,\n [`@media (prefers-color-scheme: dark)`]: {\n [root]: excludedVariables\n }\n };\n }\n if (rule) {\n return {\n [rule.replace('%s', colorScheme)]: excludedVariables,\n [`${root}, ${rule.replace('%s', colorScheme)}`]: css\n };\n }\n return {\n [root]: {\n ...css,\n ...excludedVariables\n }\n };\n }\n if (rule && rule !== 'media') {\n return `${root}, ${rule.replace('%s', String(colorScheme))}`;\n }\n } else if (colorScheme) {\n if (rule === 'media') {\n return {\n [`@media (prefers-color-scheme: ${String(colorScheme)})`]: {\n [root]: css\n }\n };\n }\n if (rule) {\n return rule.replace('%s', String(colorScheme));\n }\n }\n return root;\n};","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { unstable_createGetCssVar as systemCreateGetCssVar, createSpacing } from '@mui/system';\nimport { createUnarySpacing } from '@mui/system/spacing';\nimport { prepareCssVars, prepareTypographyVars, createGetColorSchemeSelector } from '@mui/system/cssVars';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport { private_safeColorChannel as safeColorChannel, private_safeAlpha as safeAlpha, private_safeDarken as safeDarken, private_safeLighten as safeLighten, private_safeEmphasize as safeEmphasize, hslToRgb } from '@mui/system/colorManipulator';\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nimport createColorScheme, { getOpacity, getOverlays } from \"./createColorScheme.js\";\nimport defaultShouldSkipGeneratingVar from \"./shouldSkipGeneratingVar.js\";\nimport defaultGetSelector from \"./createGetSelector.js\";\nimport { stringifyTheme } from \"./stringifyTheme.js\";\nfunction assignNode(obj, keys) {\n keys.forEach(k => {\n if (!obj[k]) {\n obj[k] = {};\n }\n });\n}\nfunction setColor(obj, key, defaultValue) {\n if (!obj[key] && defaultValue) {\n obj[key] = defaultValue;\n }\n}\nfunction toRgb(color) {\n if (typeof color !== 'string' || !color.startsWith('hsl')) {\n return color;\n }\n return hslToRgb(color);\n}\nfunction setColorChannel(obj, key) {\n if (!(`${key}Channel` in obj)) {\n // custom channel token is not provided, generate one.\n // if channel token can't be generated, show a warning.\n obj[`${key}Channel`] = safeColorChannel(toRgb(obj[key]), `MUI: Can't create \\`palette.${key}Channel\\` because \\`palette.${key}\\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` + '\\n' + `To suppress this warning, you need to explicitly provide the \\`palette.${key}Channel\\` as a string (in rgb format, for example \"12 12 12\") or undefined if you want to remove the channel token.`);\n }\n}\nfunction getSpacingVal(spacingInput) {\n if (typeof spacingInput === 'number') {\n return `${spacingInput}px`;\n }\n if (typeof spacingInput === 'string' || typeof spacingInput === 'function' || Array.isArray(spacingInput)) {\n return spacingInput;\n }\n return '8px';\n}\nconst silent = fn => {\n try {\n return fn();\n } catch (error) {\n // ignore error\n }\n return undefined;\n};\nexport const createGetCssVar = (cssVarPrefix = 'mui') => systemCreateGetCssVar(cssVarPrefix);\nfunction attachColorScheme(colorSchemes, scheme, restTheme, colorScheme) {\n if (!scheme) {\n return undefined;\n }\n scheme = scheme === true ? {} : scheme;\n const mode = colorScheme === 'dark' ? 'dark' : 'light';\n if (!restTheme) {\n colorSchemes[colorScheme] = createColorScheme({\n ...scheme,\n palette: {\n mode,\n ...scheme?.palette\n }\n });\n return undefined;\n }\n const {\n palette,\n ...muiTheme\n } = createThemeNoVars({\n ...restTheme,\n palette: {\n mode,\n ...scheme?.palette\n }\n });\n colorSchemes[colorScheme] = {\n ...scheme,\n palette,\n opacity: {\n ...getOpacity(mode),\n ...scheme?.opacity\n },\n overlays: scheme?.overlays || getOverlays(mode)\n };\n return muiTheme;\n}\n\n/**\n * A default `createThemeWithVars` comes with a single color scheme, either `light` or `dark` based on the `defaultColorScheme`.\n * This is better suited for apps that only need a single color scheme.\n *\n * To enable built-in `light` and `dark` color schemes, either:\n * 1. provide a `colorSchemeSelector` to define how the color schemes will change.\n * 2. provide `colorSchemes.dark` will set `colorSchemeSelector: 'media'` by default.\n */\nexport default function createThemeWithVars(options = {}, ...args) {\n const {\n colorSchemes: colorSchemesInput = {\n light: true\n },\n defaultColorScheme: defaultColorSchemeInput,\n disableCssColorScheme = false,\n cssVarPrefix = 'mui',\n shouldSkipGeneratingVar = defaultShouldSkipGeneratingVar,\n colorSchemeSelector: selector = colorSchemesInput.light && colorSchemesInput.dark ? 'media' : undefined,\n rootSelector = ':root',\n ...input\n } = options;\n const firstColorScheme = Object.keys(colorSchemesInput)[0];\n const defaultColorScheme = defaultColorSchemeInput || (colorSchemesInput.light && firstColorScheme !== 'light' ? 'light' : firstColorScheme);\n const getCssVar = createGetCssVar(cssVarPrefix);\n const {\n [defaultColorScheme]: defaultSchemeInput,\n light: builtInLight,\n dark: builtInDark,\n ...customColorSchemes\n } = colorSchemesInput;\n const colorSchemes = {\n ...customColorSchemes\n };\n let defaultScheme = defaultSchemeInput;\n\n // For built-in light and dark color schemes, ensure that the value is valid if they are the default color scheme.\n if (defaultColorScheme === 'dark' && !('dark' in colorSchemesInput) || defaultColorScheme === 'light' && !('light' in colorSchemesInput)) {\n defaultScheme = true;\n }\n if (!defaultScheme) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`colorSchemes.${defaultColorScheme}\\` option is either missing or invalid.` : _formatMuiErrorMessage(21, defaultColorScheme));\n }\n\n // Create the palette for the default color scheme, either `light`, `dark`, or custom color scheme.\n const muiTheme = attachColorScheme(colorSchemes, defaultScheme, input, defaultColorScheme);\n if (builtInLight && !colorSchemes.light) {\n attachColorScheme(colorSchemes, builtInLight, undefined, 'light');\n }\n if (builtInDark && !colorSchemes.dark) {\n attachColorScheme(colorSchemes, builtInDark, undefined, 'dark');\n }\n let theme = {\n defaultColorScheme,\n ...muiTheme,\n cssVarPrefix,\n colorSchemeSelector: selector,\n rootSelector,\n getCssVar,\n colorSchemes,\n font: {\n ...prepareTypographyVars(muiTheme.typography),\n ...muiTheme.font\n },\n spacing: getSpacingVal(input.spacing)\n };\n Object.keys(theme.colorSchemes).forEach(key => {\n const palette = theme.colorSchemes[key].palette;\n const setCssVarColor = cssVar => {\n const tokens = cssVar.split('-');\n const color = tokens[1];\n const colorToken = tokens[2];\n return getCssVar(cssVar, palette[color][colorToken]);\n };\n\n // attach black & white channels to common node\n if (palette.mode === 'light') {\n setColor(palette.common, 'background', '#fff');\n setColor(palette.common, 'onBackground', '#000');\n }\n if (palette.mode === 'dark') {\n setColor(palette.common, 'background', '#000');\n setColor(palette.common, 'onBackground', '#fff');\n }\n\n // assign component variables\n assignNode(palette, ['Alert', 'AppBar', 'Avatar', 'Button', 'Chip', 'FilledInput', 'LinearProgress', 'Skeleton', 'Slider', 'SnackbarContent', 'SpeedDialAction', 'StepConnector', 'StepContent', 'Switch', 'TableCell', 'Tooltip']);\n if (palette.mode === 'light') {\n setColor(palette.Alert, 'errorColor', safeDarken(palette.error.light, 0.6));\n setColor(palette.Alert, 'infoColor', safeDarken(palette.info.light, 0.6));\n setColor(palette.Alert, 'successColor', safeDarken(palette.success.light, 0.6));\n setColor(palette.Alert, 'warningColor', safeDarken(palette.warning.light, 0.6));\n setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-main'));\n setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.main)));\n setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.main)));\n setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.main)));\n setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.main)));\n setColor(palette.Alert, 'errorStandardBg', safeLighten(palette.error.light, 0.9));\n setColor(palette.Alert, 'infoStandardBg', safeLighten(palette.info.light, 0.9));\n setColor(palette.Alert, 'successStandardBg', safeLighten(palette.success.light, 0.9));\n setColor(palette.Alert, 'warningStandardBg', safeLighten(palette.warning.light, 0.9));\n setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-100'));\n setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-400'));\n setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-300'));\n setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-A100'));\n setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-400'));\n setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-700'));\n setColor(palette.FilledInput, 'bg', 'rgba(0, 0, 0, 0.06)');\n setColor(palette.FilledInput, 'hoverBg', 'rgba(0, 0, 0, 0.09)');\n setColor(palette.FilledInput, 'disabledBg', 'rgba(0, 0, 0, 0.12)');\n setColor(palette.LinearProgress, 'primaryBg', safeLighten(palette.primary.main, 0.62));\n setColor(palette.LinearProgress, 'secondaryBg', safeLighten(palette.secondary.main, 0.62));\n setColor(palette.LinearProgress, 'errorBg', safeLighten(palette.error.main, 0.62));\n setColor(palette.LinearProgress, 'infoBg', safeLighten(palette.info.main, 0.62));\n setColor(palette.LinearProgress, 'successBg', safeLighten(palette.success.main, 0.62));\n setColor(palette.LinearProgress, 'warningBg', safeLighten(palette.warning.main, 0.62));\n setColor(palette.Skeleton, 'bg', `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.11)`);\n setColor(palette.Slider, 'primaryTrack', safeLighten(palette.primary.main, 0.62));\n setColor(palette.Slider, 'secondaryTrack', safeLighten(palette.secondary.main, 0.62));\n setColor(palette.Slider, 'errorTrack', safeLighten(palette.error.main, 0.62));\n setColor(palette.Slider, 'infoTrack', safeLighten(palette.info.main, 0.62));\n setColor(palette.Slider, 'successTrack', safeLighten(palette.success.main, 0.62));\n setColor(palette.Slider, 'warningTrack', safeLighten(palette.warning.main, 0.62));\n const snackbarContentBackground = safeEmphasize(palette.background.default, 0.8);\n setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n setColor(palette.SnackbarContent, 'color', silent(() => palette.getContrastText(snackbarContentBackground)));\n setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-400'));\n setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-400'));\n setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-common-white'));\n setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-100'));\n setColor(palette.Switch, 'primaryDisabledColor', safeLighten(palette.primary.main, 0.62));\n setColor(palette.Switch, 'secondaryDisabledColor', safeLighten(palette.secondary.main, 0.62));\n setColor(palette.Switch, 'errorDisabledColor', safeLighten(palette.error.main, 0.62));\n setColor(palette.Switch, 'infoDisabledColor', safeLighten(palette.info.main, 0.62));\n setColor(palette.Switch, 'successDisabledColor', safeLighten(palette.success.main, 0.62));\n setColor(palette.Switch, 'warningDisabledColor', safeLighten(palette.warning.main, 0.62));\n setColor(palette.TableCell, 'border', safeLighten(safeAlpha(palette.divider, 1), 0.88));\n setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n }\n if (palette.mode === 'dark') {\n setColor(palette.Alert, 'errorColor', safeLighten(palette.error.light, 0.6));\n setColor(palette.Alert, 'infoColor', safeLighten(palette.info.light, 0.6));\n setColor(palette.Alert, 'successColor', safeLighten(palette.success.light, 0.6));\n setColor(palette.Alert, 'warningColor', safeLighten(palette.warning.light, 0.6));\n setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-dark'));\n setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-dark'));\n setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-dark'));\n setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-dark'));\n setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.dark)));\n setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.dark)));\n setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.dark)));\n setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.dark)));\n setColor(palette.Alert, 'errorStandardBg', safeDarken(palette.error.light, 0.9));\n setColor(palette.Alert, 'infoStandardBg', safeDarken(palette.info.light, 0.9));\n setColor(palette.Alert, 'successStandardBg', safeDarken(palette.success.light, 0.9));\n setColor(palette.Alert, 'warningStandardBg', safeDarken(palette.warning.light, 0.9));\n setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-900'));\n setColor(palette.AppBar, 'darkBg', setCssVarColor('palette-background-paper')); // specific for dark mode\n setColor(palette.AppBar, 'darkColor', setCssVarColor('palette-text-primary')); // specific for dark mode\n setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-600'));\n setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-800'));\n setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-300'));\n setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-300'));\n setColor(palette.FilledInput, 'bg', 'rgba(255, 255, 255, 0.09)');\n setColor(palette.FilledInput, 'hoverBg', 'rgba(255, 255, 255, 0.13)');\n setColor(palette.FilledInput, 'disabledBg', 'rgba(255, 255, 255, 0.12)');\n setColor(palette.LinearProgress, 'primaryBg', safeDarken(palette.primary.main, 0.5));\n setColor(palette.LinearProgress, 'secondaryBg', safeDarken(palette.secondary.main, 0.5));\n setColor(palette.LinearProgress, 'errorBg', safeDarken(palette.error.main, 0.5));\n setColor(palette.LinearProgress, 'infoBg', safeDarken(palette.info.main, 0.5));\n setColor(palette.LinearProgress, 'successBg', safeDarken(palette.success.main, 0.5));\n setColor(palette.LinearProgress, 'warningBg', safeDarken(palette.warning.main, 0.5));\n setColor(palette.Skeleton, 'bg', `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.13)`);\n setColor(palette.Slider, 'primaryTrack', safeDarken(palette.primary.main, 0.5));\n setColor(palette.Slider, 'secondaryTrack', safeDarken(palette.secondary.main, 0.5));\n setColor(palette.Slider, 'errorTrack', safeDarken(palette.error.main, 0.5));\n setColor(palette.Slider, 'infoTrack', safeDarken(palette.info.main, 0.5));\n setColor(palette.Slider, 'successTrack', safeDarken(palette.success.main, 0.5));\n setColor(palette.Slider, 'warningTrack', safeDarken(palette.warning.main, 0.5));\n const snackbarContentBackground = safeEmphasize(palette.background.default, 0.98);\n setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n setColor(palette.SnackbarContent, 'color', silent(() => palette.getContrastText(snackbarContentBackground)));\n setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-600'));\n setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-600'));\n setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-grey-300'));\n setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-600'));\n setColor(palette.Switch, 'primaryDisabledColor', safeDarken(palette.primary.main, 0.55));\n setColor(palette.Switch, 'secondaryDisabledColor', safeDarken(palette.secondary.main, 0.55));\n setColor(palette.Switch, 'errorDisabledColor', safeDarken(palette.error.main, 0.55));\n setColor(palette.Switch, 'infoDisabledColor', safeDarken(palette.info.main, 0.55));\n setColor(palette.Switch, 'successDisabledColor', safeDarken(palette.success.main, 0.55));\n setColor(palette.Switch, 'warningDisabledColor', safeDarken(palette.warning.main, 0.55));\n setColor(palette.TableCell, 'border', safeDarken(safeAlpha(palette.divider, 1), 0.68));\n setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n }\n\n // MUI X - DataGrid needs this token.\n setColorChannel(palette.background, 'default');\n\n // added for consistency with the `background.default` token\n setColorChannel(palette.background, 'paper');\n setColorChannel(palette.common, 'background');\n setColorChannel(palette.common, 'onBackground');\n setColorChannel(palette, 'divider');\n Object.keys(palette).forEach(color => {\n const colors = palette[color];\n\n // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`.\n\n if (color !== 'tonalOffset' && colors && typeof colors === 'object') {\n // Silent the error for custom palettes.\n if (colors.main) {\n setColor(palette[color], 'mainChannel', safeColorChannel(toRgb(colors.main)));\n }\n if (colors.light) {\n setColor(palette[color], 'lightChannel', safeColorChannel(toRgb(colors.light)));\n }\n if (colors.dark) {\n setColor(palette[color], 'darkChannel', safeColorChannel(toRgb(colors.dark)));\n }\n if (colors.contrastText) {\n setColor(palette[color], 'contrastTextChannel', safeColorChannel(toRgb(colors.contrastText)));\n }\n if (color === 'text') {\n // Text colors: text.primary, text.secondary\n setColorChannel(palette[color], 'primary');\n setColorChannel(palette[color], 'secondary');\n }\n if (color === 'action') {\n // Action colors: action.active, action.selected\n if (colors.active) {\n setColorChannel(palette[color], 'active');\n }\n if (colors.selected) {\n setColorChannel(palette[color], 'selected');\n }\n }\n }\n });\n });\n theme = args.reduce((acc, argument) => deepmerge(acc, argument), theme);\n const parserConfig = {\n prefix: cssVarPrefix,\n disableCssColorScheme,\n shouldSkipGeneratingVar,\n getSelector: defaultGetSelector(theme)\n };\n const {\n vars,\n generateThemeVars,\n generateStyleSheets\n } = prepareCssVars(theme, parserConfig);\n theme.vars = vars;\n Object.entries(theme.colorSchemes[theme.defaultColorScheme]).forEach(([key, value]) => {\n theme[key] = value;\n });\n theme.generateThemeVars = generateThemeVars;\n theme.generateStyleSheets = generateStyleSheets;\n theme.generateSpacing = function generateSpacing() {\n return createSpacing(input.spacing, createUnarySpacing(this));\n };\n theme.getColorSchemeSelector = createGetColorSchemeSelector(selector);\n theme.spacing = theme.generateSpacing();\n theme.shouldSkipGeneratingVar = shouldSkipGeneratingVar;\n theme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...input?.unstable_sxConfig\n };\n theme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n theme.toRuntimeSource = stringifyTheme; // for Pigment CSS integration\n\n return theme;\n}","import deepmerge from '@mui/utils/deepmerge';\nimport cssVarsParser from \"./cssVarsParser.js\";\nfunction prepareCssVars(theme, parserConfig = {}) {\n const {\n getSelector = defaultGetSelector,\n disableCssColorScheme,\n colorSchemeSelector: selector\n } = parserConfig;\n // @ts-ignore - ignore components do not exist\n const {\n colorSchemes = {},\n components,\n defaultColorScheme = 'light',\n ...otherTheme\n } = theme;\n const {\n vars: rootVars,\n css: rootCss,\n varsWithDefaults: rootVarsWithDefaults\n } = cssVarsParser(otherTheme, parserConfig);\n let themeVars = rootVarsWithDefaults;\n const colorSchemesMap = {};\n const {\n [defaultColorScheme]: defaultScheme,\n ...otherColorSchemes\n } = colorSchemes;\n Object.entries(otherColorSchemes || {}).forEach(([key, scheme]) => {\n const {\n vars,\n css,\n varsWithDefaults\n } = cssVarsParser(scheme, parserConfig);\n themeVars = deepmerge(themeVars, varsWithDefaults);\n colorSchemesMap[key] = {\n css,\n vars\n };\n });\n if (defaultScheme) {\n // default color scheme vars should be merged last to set as default\n const {\n css,\n vars,\n varsWithDefaults\n } = cssVarsParser(defaultScheme, parserConfig);\n themeVars = deepmerge(themeVars, varsWithDefaults);\n colorSchemesMap[defaultColorScheme] = {\n css,\n vars\n };\n }\n function defaultGetSelector(colorScheme, cssObject) {\n let rule = selector;\n if (selector === 'class') {\n rule = '.%s';\n }\n if (selector === 'data') {\n rule = '[data-%s]';\n }\n if (selector?.startsWith('data-') && !selector.includes('%s')) {\n // 'data-joy-color-scheme' -> '[data-joy-color-scheme=\"%s\"]'\n rule = `[${selector}=\"%s\"]`;\n }\n if (colorScheme) {\n if (rule === 'media') {\n if (theme.defaultColorScheme === colorScheme) {\n return ':root';\n }\n const mode = colorSchemes[colorScheme]?.palette?.mode || colorScheme;\n return {\n [`@media (prefers-color-scheme: ${mode})`]: {\n ':root': cssObject\n }\n };\n }\n if (rule) {\n if (theme.defaultColorScheme === colorScheme) {\n return `:root, ${rule.replace('%s', String(colorScheme))}`;\n }\n return rule.replace('%s', String(colorScheme));\n }\n }\n return ':root';\n }\n const generateThemeVars = () => {\n let vars = {\n ...rootVars\n };\n Object.entries(colorSchemesMap).forEach(([, {\n vars: schemeVars\n }]) => {\n vars = deepmerge(vars, schemeVars);\n });\n return vars;\n };\n const generateStyleSheets = () => {\n const stylesheets = [];\n const colorScheme = theme.defaultColorScheme || 'light';\n function insertStyleSheet(key, css) {\n if (Object.keys(css).length) {\n stylesheets.push(typeof key === 'string' ? {\n [key]: {\n ...css\n }\n } : key);\n }\n }\n insertStyleSheet(getSelector(undefined, {\n ...rootCss\n }), rootCss);\n const {\n [colorScheme]: defaultSchemeVal,\n ...other\n } = colorSchemesMap;\n if (defaultSchemeVal) {\n // default color scheme has to come before other color schemes\n const {\n css\n } = defaultSchemeVal;\n const cssColorSheme = colorSchemes[colorScheme]?.palette?.mode;\n const finalCss = !disableCssColorScheme && cssColorSheme ? {\n colorScheme: cssColorSheme,\n ...css\n } : {\n ...css\n };\n insertStyleSheet(getSelector(colorScheme, {\n ...finalCss\n }), finalCss);\n }\n Object.entries(other).forEach(([key, {\n css\n }]) => {\n const cssColorSheme = colorSchemes[key]?.palette?.mode;\n const finalCss = !disableCssColorScheme && cssColorSheme ? {\n colorScheme: cssColorSheme,\n ...css\n } : {\n ...css\n };\n insertStyleSheet(getSelector(key, {\n ...finalCss\n }), finalCss);\n });\n return stylesheets;\n };\n return {\n vars: themeVars,\n generateThemeVars,\n generateStyleSheets\n };\n}\nexport default prepareCssVars;","/* eslint-disable import/prefer-default-export */\nexport function createGetColorSchemeSelector(selector) {\n return function getColorSchemeSelector(colorScheme) {\n if (selector === 'media') {\n if (process.env.NODE_ENV !== 'production') {\n if (colorScheme !== 'light' && colorScheme !== 'dark') {\n console.error(`MUI: @media (prefers-color-scheme) supports only 'light' or 'dark', but receive '${colorScheme}'.`);\n }\n }\n return `@media (prefers-color-scheme: ${colorScheme})`;\n }\n if (selector) {\n if (selector.startsWith('data-') && !selector.includes('%s')) {\n return `[${selector}=\"${colorScheme}\"] &`;\n }\n if (selector === 'class') {\n return `.${colorScheme} &`;\n }\n if (selector === 'data') {\n return `[data-${colorScheme}] &`;\n }\n return `${selector.replace('%s', colorScheme)} &`;\n }\n return '&';\n };\n}","import createPalette from \"./createPalette.js\";\nimport createThemeWithVars from \"./createThemeWithVars.js\";\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nexport { createMuiTheme } from \"./createThemeNoVars.js\";\n// eslint-disable-next-line consistent-return\nfunction attachColorScheme(theme, scheme, colorScheme) {\n if (!theme.colorSchemes) {\n return undefined;\n }\n if (colorScheme) {\n theme.colorSchemes[scheme] = {\n ...(colorScheme !== true && colorScheme),\n palette: createPalette({\n ...(colorScheme === true ? {} : colorScheme.palette),\n mode: scheme\n }) // cast type to skip module augmentation test\n };\n }\n}\n\n/**\n * Generate a theme base on the options received.\n * @param options Takes an incomplete theme object and adds the missing parts.\n * @param args Deep merge the arguments with the about to be returned theme.\n * @returns A complete, ready-to-use theme object.\n */\nexport default function createTheme(options = {},\n// cast type to skip module augmentation test\n...args) {\n const {\n palette,\n cssVariables = false,\n colorSchemes: initialColorSchemes = !palette ? {\n light: true\n } : undefined,\n defaultColorScheme: initialDefaultColorScheme = palette?.mode,\n ...rest\n } = options;\n const defaultColorSchemeInput = initialDefaultColorScheme || 'light';\n const defaultScheme = initialColorSchemes?.[defaultColorSchemeInput];\n const colorSchemesInput = {\n ...initialColorSchemes,\n ...(palette ? {\n [defaultColorSchemeInput]: {\n ...(typeof defaultScheme !== 'boolean' && defaultScheme),\n palette\n }\n } : undefined)\n };\n if (cssVariables === false) {\n if (!('colorSchemes' in options)) {\n // Behaves exactly as v5\n return createThemeNoVars(options, ...args);\n }\n let paletteOptions = palette;\n if (!('palette' in options)) {\n if (colorSchemesInput[defaultColorSchemeInput]) {\n if (colorSchemesInput[defaultColorSchemeInput] !== true) {\n paletteOptions = colorSchemesInput[defaultColorSchemeInput].palette;\n } else if (defaultColorSchemeInput === 'dark') {\n // @ts-ignore to prevent the module augmentation test from failing\n paletteOptions = {\n mode: 'dark'\n };\n }\n }\n }\n const theme = createThemeNoVars({\n ...options,\n palette: paletteOptions\n }, ...args);\n theme.defaultColorScheme = defaultColorSchemeInput;\n theme.colorSchemes = colorSchemesInput;\n if (theme.palette.mode === 'light') {\n theme.colorSchemes.light = {\n ...(colorSchemesInput.light !== true && colorSchemesInput.light),\n palette: theme.palette\n };\n attachColorScheme(theme, 'dark', colorSchemesInput.dark);\n }\n if (theme.palette.mode === 'dark') {\n theme.colorSchemes.dark = {\n ...(colorSchemesInput.dark !== true && colorSchemesInput.dark),\n palette: theme.palette\n };\n attachColorScheme(theme, 'light', colorSchemesInput.light);\n }\n return theme;\n }\n if (!palette && !('light' in colorSchemesInput) && defaultColorSchemeInput === 'light') {\n colorSchemesInput.light = true;\n }\n return createThemeWithVars({\n ...rest,\n colorSchemes: colorSchemesInput,\n defaultColorScheme: defaultColorSchemeInput,\n ...(typeof cssVariables !== 'boolean' && cssVariables)\n }, ...args);\n}","'use client';\n\nimport createTheme from \"./createTheme.js\";\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","'use client';\n\nimport systemUseThemeProps from '@mui/system/useThemeProps';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme,\n themeId: THEME_ID\n });\n}","'use client';\n\nimport getThemeProps from \"./getThemeProps.js\";\nimport useTheme from \"../useTheme/index.js\";\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n return getThemeProps({\n theme,\n name,\n props\n });\n}","export const imageMimeTypes = {\n 'image/png': 'PNG',\n 'image/jpeg': 'JPEG',\n 'image/webp': 'WebP'\n};","import { imageMimeTypes } from \"./utils/imageMimeTypes.js\";\nimport { getChartsLocalization } from \"./utils/getChartsLocalization.js\";\n\n// This object is not Partial because it is the default values\n\nexport const enUSLocaleText = {\n // Overlay\n loading: 'Loading data…',\n noData: 'No data to display',\n // Toolbar\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n toolbarExport: 'Export',\n // Toolbar Export Menu\n toolbarExportPrint: 'Print',\n toolbarExportImage: mimeType => `Export as ${imageMimeTypes[mimeType] ?? mimeType}`,\n // Charts renderer configuration\n chartTypeBar: 'Bar',\n chartTypeColumn: 'Column',\n chartTypeLine: 'Line',\n chartTypeArea: 'Area',\n chartTypePie: 'Pie',\n chartPaletteLabel: 'Color palette',\n chartPaletteNameRainbowSurge: 'Rainbow Surge',\n chartPaletteNameBlueberryTwilight: 'Blueberry Twilight',\n chartPaletteNameMangoFusion: 'Mango Fusion',\n chartPaletteNameCheerfulFiesta: 'Cheerful Fiesta',\n chartPaletteNameStrawberrySky: 'Strawberry Sky',\n chartPaletteNameBlue: 'Blue',\n chartPaletteNameGreen: 'Green',\n chartPaletteNamePurple: 'Purple',\n chartPaletteNameRed: 'Red',\n chartPaletteNameOrange: 'Orange',\n chartPaletteNameYellow: 'Yellow',\n chartPaletteNameCyan: 'Cyan',\n chartPaletteNamePink: 'Pink',\n chartConfigurationSectionChart: 'Chart',\n chartConfigurationSectionColumns: 'Columns',\n chartConfigurationSectionBars: 'Bars',\n chartConfigurationSectionAxes: 'Axes',\n chartConfigurationGrid: 'Grid',\n chartConfigurationBorderRadius: 'Border radius',\n chartConfigurationCategoryGapRatio: 'Category gap ratio',\n chartConfigurationBarGapRatio: 'Series gap ratio',\n chartConfigurationStacked: 'Stacked',\n chartConfigurationShowToolbar: 'Show toolbar',\n chartConfigurationSkipAnimation: 'Skip animation',\n chartConfigurationInnerRadius: 'Inner radius',\n chartConfigurationOuterRadius: 'Outer radius',\n chartConfigurationColors: 'Colors',\n chartConfigurationHideLegend: 'Hide legend',\n chartConfigurationShowMark: 'Show mark',\n chartConfigurationHeight: 'Height',\n chartConfigurationWidth: 'Width',\n chartConfigurationSeriesGap: 'Series gap',\n chartConfigurationTickPlacement: 'Tick placement',\n chartConfigurationTickLabelPlacement: 'Tick label placement',\n chartConfigurationCategoriesAxisLabel: 'Categories axis label',\n chartConfigurationSeriesAxisLabel: 'Series axis label',\n chartConfigurationXAxisPosition: 'X-axis position',\n chartConfigurationYAxisPosition: 'Y-axis position',\n chartConfigurationSeriesAxisReverse: 'Reverse series axis',\n chartConfigurationTooltipPlacement: 'Placement',\n chartConfigurationTooltipTrigger: 'Trigger',\n chartConfigurationLegendPosition: 'Position',\n chartConfigurationLegendDirection: 'Direction',\n chartConfigurationBarLabels: 'Bar labels',\n chartConfigurationColumnLabels: 'Column labels',\n chartConfigurationInterpolation: 'Interpolation',\n chartConfigurationSectionTooltip: 'Tooltip',\n chartConfigurationSectionLegend: 'Legend',\n chartConfigurationSectionLines: 'Lines',\n chartConfigurationSectionAreas: 'Areas',\n chartConfigurationSectionArcs: 'Arcs',\n chartConfigurationPaddingAngle: 'Padding angle',\n chartConfigurationCornerRadius: 'Corner radius',\n chartConfigurationArcLabels: 'Arc labels',\n chartConfigurationStartAngle: 'Start angle',\n chartConfigurationEndAngle: 'End angle',\n chartConfigurationPieTooltipTrigger: 'Trigger',\n chartConfigurationPieLegendPosition: 'Position',\n chartConfigurationPieLegendDirection: 'Direction',\n // Common option labels\n chartConfigurationOptionNone: 'None',\n chartConfigurationOptionValue: 'Value',\n chartConfigurationOptionAuto: 'Auto',\n chartConfigurationOptionTop: 'Top',\n chartConfigurationOptionTopLeft: 'Top Left',\n chartConfigurationOptionTopRight: 'Top Right',\n chartConfigurationOptionBottom: 'Bottom',\n chartConfigurationOptionBottomLeft: 'Bottom Left',\n chartConfigurationOptionBottomRight: 'Bottom Right',\n chartConfigurationOptionLeft: 'Left',\n chartConfigurationOptionRight: 'Right',\n chartConfigurationOptionAxis: 'Axis',\n chartConfigurationOptionItem: 'Item',\n chartConfigurationOptionHorizontal: 'Horizontal',\n chartConfigurationOptionVertical: 'Vertical',\n chartConfigurationOptionBoth: 'Both',\n chartConfigurationOptionStart: 'Start',\n chartConfigurationOptionMiddle: 'Middle',\n chartConfigurationOptionEnd: 'End',\n chartConfigurationOptionExtremities: 'Extremities',\n chartConfigurationOptionTick: 'Tick',\n chartConfigurationOptionMonotoneX: 'Monotone X',\n chartConfigurationOptionMonotoneY: 'Monotone Y',\n chartConfigurationOptionCatmullRom: 'Catmull-Rom',\n chartConfigurationOptionLinear: 'Linear',\n chartConfigurationOptionNatural: 'Natural',\n chartConfigurationOptionStep: 'Step',\n chartConfigurationOptionStepBefore: 'Step Before',\n chartConfigurationOptionStepAfter: 'Step After',\n chartConfigurationOptionBumpX: 'Bump X',\n chartConfigurationOptionBumpY: 'Bump Y'\n};\nexport const DEFAULT_LOCALE = enUSLocaleText;\nexport const enUS = getChartsLocalization(enUSLocaleText);","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Helper to pass translation to all charts thanks to the MUI theme.\n * @param chartsTranslations The translation object.\n * @returns an object to pass the translation by using the MUI theme default props\n */\nexport const getChartsLocalization = chartsTranslations => {\n return {\n components: {\n MuiChartsLocalizationProvider: {\n defaultProps: {\n localeText: _extends({}, chartsTranslations)\n }\n }\n }\n };\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"localeText\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport { DEFAULT_LOCALE } from \"../locales/enUS.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ChartsLocalizationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") ChartsLocalizationContext.displayName = \"ChartsLocalizationContext\";\n/**\n * Demos:\n *\n * - [localization](https://mui.com/x/react-charts/localization/)\n *\n * API:\n *\n * - [ChartsLocalizationProvider API](https://mui.com/x/api/charts/charts-localization-provider/)\n */\nfunction ChartsLocalizationProvider(inProps) {\n const {\n localeText: inLocaleText\n } = inProps,\n other = _objectWithoutPropertiesLoose(inProps, _excluded);\n const {\n localeText: parentLocaleText\n } = React.useContext(ChartsLocalizationContext) ?? {\n localeText: undefined\n };\n const props = useThemeProps({\n // We don't want to pass the `localeText` prop to the theme, that way it will always return the theme value,\n // We will then merge this theme value with our value manually\n props: other,\n name: 'MuiChartsLocalizationProvider'\n });\n const {\n children,\n localeText: themeLocaleText\n } = props;\n const localeText = React.useMemo(() => _extends({}, DEFAULT_LOCALE, themeLocaleText, parentLocaleText, inLocaleText), [themeLocaleText, parentLocaleText, inLocaleText]);\n const contextValue = React.useMemo(() => {\n return {\n localeText\n };\n }, [localeText]);\n return /*#__PURE__*/_jsx(ChartsLocalizationContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? ChartsLocalizationProvider.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n children: PropTypes.node,\n /**\n * Localized text for chart components.\n */\n localeText: PropTypes.object\n} : void 0;\nexport { ChartsLocalizationProvider };","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 {\n this.currentId = null;\n fn();\n }, delay);\n }\n clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n disposeEffect = () => {\n return this.clear;\n };\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","/* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0\n ---\n These rules are preventing the performance optimizations below.\n */\n\n/**\n * Compose classes from multiple sources.\n *\n * @example\n * ```tsx\n * const slots = {\n * root: ['root', 'primary'],\n * label: ['label'],\n * };\n *\n * const getUtilityClass = (slot) => `MuiButton-${slot}`;\n *\n * const classes = {\n * root: 'my-root-class',\n * };\n *\n * const output = composeClasses(slots, getUtilityClass, classes);\n * // {\n * // root: 'MuiButton-root MuiButton-primary my-root-class',\n * // label: 'MuiButton-label',\n * // }\n * ```\n *\n * @param slots a list of classes for each possible slot\n * @param getUtilityClass a function to resolve the class based on the slot name\n * @param classes the input classes from props\n * @returns the resolved classes for all slots\n */\nexport default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n for (const slotName in slots) {\n const slot = slots[slotName];\n let buffer = '';\n let start = true;\n for (let i = 0; i < slot.length; i += 1) {\n const value = slot[i];\n if (value) {\n buffer += (start === true ? '' : ' ') + getUtilityClass(value);\n start = false;\n if (classes && classes[value]) {\n buffer += ' ' + classes[value];\n }\n }\n }\n output[slotName] = buffer;\n }\n return output;\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RtlContext = /*#__PURE__*/React.createContext();\nfunction RtlProvider({\n value,\n ...props\n}) {\n return /*#__PURE__*/_jsx(RtlContext.Provider, {\n value: value ?? true,\n ...props\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? RtlProvider.propTypes = {\n children: PropTypes.node,\n value: PropTypes.bool\n} : void 0;\nexport const useRtl = () => {\n const value = React.useContext(RtlContext);\n return value ?? false;\n};\nexport default RtlProvider;","/**\n * Returns a boolean indicating if the event's target has :focus-visible\n */\nexport default function isFocusVisible(element) {\n try {\n return element.matches(':focus-visible');\n } catch (error) {\n // Do not warn on jsdom tests, otherwise all tests that rely on focus have to be skipped\n // Tests that rely on `:focus-visible` will still have to be skipped in jsdom\n if (process.env.NODE_ENV !== 'production' && !/jsdom/.test(window.navigator.userAgent)) {\n console.warn(['MUI: The `:focus-visible` pseudo class is not supported in this browser.', 'Some components rely on this feature to work properly.'].join('\\n'));\n }\n }\n return false;\n}","import * as React from 'react';\n\n/**\n * Returns the ref of a React element handling differences between React 19 and older versions.\n * It will throw runtime error if the element is not a valid React element.\n *\n * @param element React.ReactElement\n * @returns React.Ref | null\n */\nexport default function getReactElementRef(element) {\n // 'ref' is passed as prop in React 19, whereas 'ref' is directly attached to children in older versions\n if (parseInt(React.version, 10) >= 19) {\n return element?.props?.ref || null;\n }\n // @ts-expect-error element.ref is not included in the ReactElement type\n // https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/70189\n return element?.ref || null;\n}","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar 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|popover|popoverTarget|popoverTargetAction|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)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\n\nvar isDevelopment = false;\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n // eslint-disable-next-line prefer-spread\n styles.push.apply(styles, args);\n } else {\n var templateStringsArr = args[0];\n\n styles.push(templateStringsArr[0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n\n styles.push(args[i], templateStringsArr[i]);\n }\n }\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if (finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && isDevelopment) {\n return 'NO_COMPONENT_SELECTOR';\n }\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n var newStyled = createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n }));\n return newStyled.apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/react';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\nimport '@emotion/utils';\nimport 'react';\nimport '@emotion/is-prop-valid';\n\nvar 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\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// bind it to avoid mutating the original function\nvar styled = createStyled.bind(null);\ntags.forEach(function (tagName) {\n styled[tagName] = styled(tagName);\n});\n\nexport { styled as default };\n","/**\n * @mui/styled-engine v6.5.0\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nimport { serializeStyles as emSerializeStyles } from '@emotion/serialize';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_mutateStyles(tag, processor) {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n}\n\n// Emotion only accepts an array, but we want to avoid allocations\nconst wrapper = [];\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_serializeStyles(styles) {\n wrapper[0] = styles;\n return emSerializeStyles(wrapper);\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from \"./StyledEngineProvider/index.js\";\nexport { default as GlobalStyles } from \"./GlobalStyles/index.js\";","import { internal_serializeStyles } from '@mui/styled-engine';\nexport default function preprocessStyles(input) {\n const {\n variants,\n ...style\n } = input;\n const result = {\n variants,\n style: internal_serializeStyles(style),\n isProcessed: true\n };\n\n // Not supported on styled-components\n if (result.style === style) {\n return result;\n }\n if (variants) {\n variants.forEach(variant => {\n if (typeof variant.style !== 'function') {\n variant.style = internal_serializeStyles(variant.style);\n }\n });\n }\n return result;\n}","import styledEngineStyled, { internal_mutateStyles as mutateStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from \"../createTheme/index.js\";\nimport styleFunctionSx from \"../styleFunctionSx/index.js\";\nimport preprocessStyles from \"../preprocessStyles.js\";\n\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-labels */\n/* eslint-disable no-lone-blocks */\n\nexport const systemDefaultTheme = createTheme();\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nfunction shallowLayer(serialized, layerName) {\n if (layerName && serialized && typeof serialized === 'object' && serialized.styles && !serialized.styles.startsWith('@layer') // only add the layer if it is not already there.\n ) {\n serialized.styles = `@layer ${layerName}{${String(serialized.styles)}}`;\n }\n return serialized;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (_props, styles) => styles[slot];\n}\nfunction attachTheme(props, themeId, defaultTheme) {\n props.theme = isObjectEmpty(props.theme) ? defaultTheme : props.theme[themeId] || props.theme;\n}\nfunction processStyle(props, style, layerName) {\n /*\n * Style types:\n * - null/undefined\n * - string\n * - CSS style object: { [cssKey]: [cssValue], variants }\n * - Processed style object: { style, variants, isProcessed: true }\n * - Array of any of the above\n */\n\n const resolvedStyle = typeof style === 'function' ? style(props) : style;\n if (Array.isArray(resolvedStyle)) {\n return resolvedStyle.flatMap(subStyle => processStyle(props, subStyle, layerName));\n }\n if (Array.isArray(resolvedStyle?.variants)) {\n let rootStyle;\n if (resolvedStyle.isProcessed) {\n rootStyle = layerName ? shallowLayer(resolvedStyle.style, layerName) : resolvedStyle.style;\n } else {\n const {\n variants,\n ...otherStyles\n } = resolvedStyle;\n rootStyle = layerName ? shallowLayer(serializeStyles(otherStyles), layerName) : otherStyles;\n }\n return processStyleVariants(props, resolvedStyle.variants, [rootStyle], layerName);\n }\n if (resolvedStyle?.isProcessed) {\n return layerName ? shallowLayer(serializeStyles(resolvedStyle.style), layerName) : resolvedStyle.style;\n }\n return layerName ? shallowLayer(serializeStyles(resolvedStyle), layerName) : resolvedStyle;\n}\nfunction processStyleVariants(props, variants, results = [], layerName = undefined) {\n let mergedState; // We might not need it, initialized lazily\n\n variantLoop: for (let i = 0; i < variants.length; i += 1) {\n const variant = variants[i];\n if (typeof variant.props === 'function') {\n mergedState ??= {\n ...props,\n ...props.ownerState,\n ownerState: props.ownerState\n };\n if (!variant.props(mergedState)) {\n continue;\n }\n } else {\n for (const key in variant.props) {\n if (props[key] !== variant.props[key] && props.ownerState?.[key] !== variant.props[key]) {\n continue variantLoop;\n }\n }\n }\n if (typeof variant.style === 'function') {\n mergedState ??= {\n ...props,\n ...props.ownerState,\n ownerState: props.ownerState\n };\n results.push(layerName ? shallowLayer(serializeStyles(variant.style(mergedState)), layerName) : variant.style(mergedState));\n } else {\n results.push(layerName ? shallowLayer(serializeStyles(variant.style), layerName) : variant.style);\n }\n }\n return results;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n function styleAttachTheme(props) {\n attachTheme(props, themeId, defaultTheme);\n }\n const styled = (tag, inputOptions = {}) => {\n // If `tag` is already a styled component, filter out the `sx` style function\n // to prevent unnecessary styles generated by the composite components.\n mutateStyles(tag, styles => styles.filter(style => style !== styleFunctionSx));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot)),\n ...options\n } = inputOptions;\n const layerName = componentName && componentName.startsWith('Mui') || !!componentSlot ? 'components' : 'custom';\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, {\n shouldForwardProp: shouldForwardPropOption,\n label: generateStyledLabel(componentName, componentSlot),\n ...options\n });\n const transformStyle = style => {\n // - On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n // - `style` could be a styled component from a babel plugin for component selectors, This condition\n // makes sure that we do not interpolate them.\n if (style.__emotion_real === style) {\n return style;\n }\n if (typeof style === 'function') {\n return function styleFunctionProcessor(props) {\n return processStyle(props, style, props.theme.modularCssLayers ? layerName : undefined);\n };\n }\n if (isPlainObject(style)) {\n const serialized = preprocessStyles(style);\n return function styleObjectProcessor(props) {\n if (!serialized.variants) {\n return props.theme.modularCssLayers ? shallowLayer(serialized.style, layerName) : serialized.style;\n }\n return processStyle(props, serialized, props.theme.modularCssLayers ? layerName : undefined);\n };\n }\n return style;\n };\n const muiStyledResolver = (...expressionsInput) => {\n const expressionsHead = [];\n const expressionsBody = expressionsInput.map(transformStyle);\n const expressionsTail = [];\n\n // Preprocess `props` to set the scoped theme value.\n // This must run before any other expression.\n expressionsHead.push(styleAttachTheme);\n if (componentName && overridesResolver) {\n expressionsTail.push(function styleThemeOverrides(props) {\n const theme = props.theme;\n const styleOverrides = theme.components?.[componentName]?.styleOverrides;\n if (!styleOverrides) {\n return null;\n }\n const resolvedStyleOverrides = {};\n\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n // eslint-disable-next-line guard-for-in\n for (const slotKey in styleOverrides) {\n resolvedStyleOverrides[slotKey] = processStyle(props, styleOverrides[slotKey], props.theme.modularCssLayers ? 'theme' : undefined);\n }\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsTail.push(function styleThemeVariants(props) {\n const theme = props.theme;\n const themeVariants = theme?.components?.[componentName]?.variants;\n if (!themeVariants) {\n return null;\n }\n return processStyleVariants(props, themeVariants, [], props.theme.modularCssLayers ? 'theme' : undefined);\n });\n }\n if (!skipSx) {\n expressionsTail.push(styleFunctionSx);\n }\n\n // This function can be called as a tagged template, so the first argument would contain\n // CSS `string[]` values.\n if (Array.isArray(expressionsBody[0])) {\n const inputStrings = expressionsBody.shift();\n\n // We need to add placeholders in the tagged template for the custom functions we have\n // possibly added (attachTheme, overrides, variants, and sx).\n const placeholdersHead = new Array(expressionsHead.length).fill('');\n const placeholdersTail = new Array(expressionsTail.length).fill('');\n let outputStrings;\n // prettier-ignore\n {\n outputStrings = [...placeholdersHead, ...inputStrings, ...placeholdersTail];\n outputStrings.raw = [...placeholdersHead, ...inputStrings.raw, ...placeholdersTail];\n }\n\n // The only case where we put something before `attachTheme`\n expressionsHead.unshift(outputStrings);\n }\n const expressions = [...expressionsHead, ...expressionsBody, ...expressionsTail];\n const Component = defaultStyledResolver(...expressions);\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = generateDisplayName(componentName, componentSlot, tag);\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n return styled;\n}\nfunction generateDisplayName(componentName, componentSlot, tag) {\n if (componentName) {\n return `${componentName}${capitalize(componentSlot || '')}`;\n }\n return `Styled(${getDisplayName(tag)})`;\n}\nfunction generateStyledLabel(componentName, componentSlot) {\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n return label;\n}\nfunction isObjectEmpty(object) {\n // eslint-disable-next-line\n for (const _ in object) {\n return false;\n }\n return true;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\nfunction lowercaseFirstLetter(string) {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n}","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","import slotShouldForwardProp from \"./slotShouldForwardProp.js\";\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nimport rootShouldForwardProp from \"./rootShouldForwardProp.js\";\nexport { default as slotShouldForwardProp } from \"./slotShouldForwardProp.js\";\nexport { default as rootShouldForwardProp } from \"./rootShouldForwardProp.js\";\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme[THEME_ID] || theme;\n}","import preprocessStyles from \"./preprocessStyles.js\";\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\n// We need to pass an argument as `{ theme }` for PigmentCSS, but we don't want to\n// allocate more objects.\nconst arg = {\n theme: undefined\n};\n\n/**\n * Memoize style function on theme.\n * Intended to be used in styled() calls that only need access to the theme.\n */\nexport default function unstable_memoTheme(styleFn) {\n let lastValue;\n let lastTheme;\n return function styleMemoized(props) {\n let value = lastValue;\n if (value === undefined || props.theme !== lastTheme) {\n arg.theme = props.theme;\n value = preprocessStyles(styleFn(arg));\n lastValue = value;\n lastTheme = props.theme;\n }\n return value;\n };\n}","import { unstable_memoTheme } from '@mui/system';\nconst memoTheme = unstable_memoTheme;\nexport default memoTheme;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n value,\n children\n}) {\n return /*#__PURE__*/_jsx(PropsContext.Provider, {\n value: value,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name]) {\n return props;\n }\n const config = theme.components[name];\n if (config.defaultProps) {\n // compatible with v5 signature\n return resolveProps(config.defaultProps, props);\n }\n if (!config.styleOverrides && !config.variants) {\n // v6 signature, no property 'defaultProps'\n return resolveProps(config, props);\n }\n return props;\n}\nexport function useDefaultProps({\n props,\n name\n}) {\n const ctx = React.useContext(PropsContext);\n return getThemeProps({\n props,\n name,\n theme: {\n components: ctx\n }\n });\n}\nexport default DefaultPropsProvider;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport SystemDefaultPropsProvider, { useDefaultProps as useSystemDefaultProps } from '@mui/system/DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction DefaultPropsProvider(props) {\n return /*#__PURE__*/_jsx(SystemDefaultPropsProvider, {\n ...props\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object.isRequired\n} : void 0;\nexport default DefaultPropsProvider;\nexport function useDefaultProps(params) {\n return useSystemDefaultProps(params);\n}","import capitalize from '@mui/utils/capitalize';\nexport default capitalize;","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"ReactDOM\"];","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: style.transitionDuration ?? (typeof timeout === 'number' ? timeout : timeout[options.mode] || 0),\n easing: style.transitionTimingFunction ?? (typeof easing === 'object' ? easing[options.mode] : easing),\n delay: style.transitionDelay\n };\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n *\n * ```tsx\n * const rootRef = React.useRef(null);\n * const refFork = useForkRef(rootRef, props.ref);\n *\n * return (\n * \n * );\n * ```\n *\n * @param {Array | undefined>} refs The ref array.\n * @returns {React.RefCallback | null} The new ref callback.\n */\nexport default function useForkRef(...refs) {\n const cleanupRef = React.useRef(undefined);\n const refEffect = React.useCallback(instance => {\n const cleanups = refs.map(ref => {\n if (ref == null) {\n return null;\n }\n if (typeof ref === 'function') {\n const refCallback = ref;\n const refCleanup = refCallback(instance);\n return typeof refCleanup === 'function' ? refCleanup : () => {\n refCallback(null);\n };\n }\n ref.current = instance;\n return () => {\n ref.current = null;\n };\n });\n return () => {\n cleanups.forEach(refCleanup => refCleanup?.());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = undefined;\n }\n if (value != null) {\n cleanupRef.current = refEffect(value);\n }\n };\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- intentionally ignoring that the dependency array must be an array literal\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nexport default useForkRef;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport { Transition } from 'react-transition-group';\nimport { useTheme } from \"../zero-styled/index.js\";\nimport { getTransitionProps, reflow } from \"../transitions/utils.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition,\n ...other\n } = props;\n const timer = useTimeout();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay: isWebKit154 ? delay : delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = 0;\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.start(autoTimeout.current || 0, next);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, {\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout,\n ...other,\n children: (state, {\n ownerState,\n ...restChildProps\n }) => {\n return /*#__PURE__*/React.cloneElement(children, {\n style: {\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined,\n ...styles[state],\n ...style,\n ...children.props.style\n },\n ref: handleRef,\n ...restChildProps\n });\n }\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nif (Grow) {\n Grow.muiSupportAuto = true;\n}\nexport default Grow;","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n 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));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n return typeof element === 'string';\n}\nexport default isHostComponent;","import isHostComponent from \"../isHostComponent/index.js\";\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nfunction appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return {\n ...otherProps,\n ownerState: {\n ...otherProps.ownerState,\n ...ownerState\n }\n };\n}\nexport default appendOwnerState;","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nfunction extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}\nexport default extractEventHandlers;","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nfunction omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}\nexport default omitEventHandlers;","import clsx from 'clsx';\nimport extractEventHandlers from \"../extractEventHandlers/index.js\";\nimport omitEventHandlers from \"../omitEventHandlers/index.js\";\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nfunction mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n const mergedStyle = {\n ...additionalProps?.style,\n ...externalForwardedProps?.style,\n ...externalSlotProps?.style\n };\n const props = {\n ...additionalProps,\n ...externalForwardedProps,\n ...externalSlotProps\n };\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers({\n ...externalForwardedProps,\n ...externalSlotProps\n });\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming Base UI) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n const mergedStyle = {\n ...internalSlotProps?.style,\n ...additionalProps?.style,\n ...externalForwardedProps?.style,\n ...externalSlotProps?.style\n };\n const props = {\n ...internalSlotProps,\n ...additionalProps,\n ...otherPropsWithoutEventHandlers,\n ...componentsPropsWithoutEventHandlers\n };\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}\nexport default mergeSlotProps;","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nfunction resolveComponentProps(componentProps, ownerState, slotState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState, slotState);\n }\n return componentProps;\n}\nexport default resolveComponentProps;","'use client';\n\nimport useForkRef from \"../useForkRef/index.js\";\nimport appendOwnerState from \"../appendOwnerState/index.js\";\nimport mergeSlotProps from \"../mergeSlotProps/index.js\";\nimport resolveComponentProps from \"../resolveComponentProps/index.js\";\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nfunction useSlotProps(parameters) {\n const {\n elementType,\n externalSlotProps,\n ownerState,\n skipResolvingSlotProps = false,\n ...other\n } = parameters;\n const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps({\n ...other,\n externalSlotProps: resolvedComponentsProps\n });\n const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.additionalProps?.ref);\n const props = appendOwnerState(elementType, {\n ...mergedProps,\n ref\n }, ownerState);\n return props;\n}\nexport default useSlotProps;","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef, unstable_getReactElementRef as getReactElementRef } from '@mui/utils';\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://v6.mui.com/material-ui/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://v6.mui.com/material-ui/api/portal/)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, forwardedRef) {\n const {\n children,\n container,\n disablePortal = false\n } = props;\n const [mountNode, setMountNode] = React.useState(null);\n const handleRef = useForkRef(/*#__PURE__*/React.isValidElement(children) ? getReactElementRef(children) : null, forwardedRef);\n useEnhancedEffect(() => {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(() => {\n if (mountNode && !disablePortal) {\n setRef(forwardedRef, mountNode);\n return () => {\n setRef(forwardedRef, null);\n };\n }\n return undefined;\n }, [forwardedRef, mountNode, disablePortal]);\n if (disablePortal) {\n if (/*#__PURE__*/React.isValidElement(children)) {\n const newProps = {\n ref: handleRef\n };\n return /*#__PURE__*/React.cloneElement(children, newProps);\n }\n return children;\n }\n return mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode;\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport default Portal;","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPopperUtilityClass(slot) {\n return generateUtilityClass('MuiPopper', slot);\n}\nconst popperClasses = generateUtilityClasses('MuiPopper', ['root']);\nexport default popperClasses;","'use client';\n\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport Portal from \"../Portal/index.js\";\nimport { getPopperUtilityClass } from \"./popperClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n if (direction === 'ltr') {\n return placement;\n }\n switch (placement) {\n case 'bottom-end':\n return 'bottom-start';\n case 'bottom-start':\n return 'bottom-end';\n case 'top-end':\n return 'top-start';\n case 'top-start':\n return 'top-end';\n default:\n return placement;\n }\n}\nfunction resolveAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n return !isHTMLElement(element);\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getPopperUtilityClass, classes);\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, forwardedRef) {\n const {\n anchorEl,\n children,\n direction,\n disablePortal,\n modifiers,\n open,\n placement: initialPlacement,\n popperOptions,\n popperRef: popperRefProp,\n slotProps = {},\n slots = {},\n TransitionProps,\n // @ts-ignore internal logic\n ownerState: ownerStateProp,\n // prevent from spreading to DOM, it can come from the parent component e.g. Select.\n ...other\n } = props;\n const tooltipRef = React.useRef(null);\n const ownRef = useForkRef(tooltipRef, forwardedRef);\n const popperRef = React.useRef(null);\n const handlePopperRef = useForkRef(popperRef, popperRefProp);\n const handlePopperRefRef = React.useRef(handlePopperRef);\n useEnhancedEffect(() => {\n handlePopperRefRef.current = handlePopperRef;\n }, [handlePopperRef]);\n React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n const rtlPlacement = flipPlacement(initialPlacement, direction);\n /**\n * placement initialized from prop but can change during lifetime if modifiers.flip.\n * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n */\n const [placement, setPlacement] = React.useState(rtlPlacement);\n const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n React.useEffect(() => {\n if (popperRef.current) {\n popperRef.current.forceUpdate();\n }\n });\n React.useEffect(() => {\n if (anchorEl) {\n setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n }\n }, [anchorEl]);\n useEnhancedEffect(() => {\n if (!resolvedAnchorElement || !open) {\n return undefined;\n }\n const handlePopperUpdate = data => {\n setPlacement(data.placement);\n };\n if (process.env.NODE_ENV !== 'production') {\n if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n const box = resolvedAnchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n }\n let popperModifiers = [{\n name: 'preventOverflow',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'flip',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'onUpdate',\n enabled: true,\n phase: 'afterWrite',\n fn: ({\n state\n }) => {\n handlePopperUpdate(state);\n }\n }];\n if (modifiers != null) {\n popperModifiers = popperModifiers.concat(modifiers);\n }\n if (popperOptions && popperOptions.modifiers != null) {\n popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n }\n const popper = createPopper(resolvedAnchorElement, tooltipRef.current, {\n placement: rtlPlacement,\n ...popperOptions,\n modifiers: popperModifiers\n });\n handlePopperRefRef.current(popper);\n return () => {\n popper.destroy();\n handlePopperRefRef.current(null);\n };\n }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n const childProps = {\n placement: placement\n };\n if (TransitionProps !== null) {\n childProps.TransitionProps = TransitionProps;\n }\n const classes = useUtilityClasses(props);\n const Root = slots.root ?? 'div';\n const rootProps = useSlotProps({\n elementType: Root,\n externalSlotProps: slotProps.root,\n externalForwardedProps: other,\n additionalProps: {\n role: 'tooltip',\n ref: ownRef\n },\n ownerState: props,\n className: classes.root\n });\n return /*#__PURE__*/_jsx(Root, {\n ...rootProps,\n children: typeof children === 'function' ? children(childProps) : children\n });\n});\n\n/**\n * @ignore - internal component.\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(props, forwardedRef) {\n const {\n anchorEl,\n children,\n container: containerProp,\n direction = 'ltr',\n disablePortal = false,\n keepMounted = false,\n modifiers,\n open,\n placement = 'bottom',\n popperOptions = defaultPopperOptions,\n popperRef,\n style,\n transition = false,\n slotProps = {},\n slots = {},\n ...other\n } = props;\n const [exited, setExited] = React.useState(true);\n const handleEnter = () => {\n setExited(false);\n };\n const handleExited = () => {\n setExited(true);\n };\n if (!keepMounted && !open && (!transition || exited)) {\n return null;\n }\n\n // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n let container;\n if (containerProp) {\n container = containerProp;\n } else if (anchorEl) {\n const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n }\n const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n const transitionProps = transition ? {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited\n } : undefined;\n return /*#__PURE__*/_jsx(Portal, {\n disablePortal: disablePortal,\n container: container,\n children: /*#__PURE__*/_jsx(PopperTooltip, {\n anchorEl: anchorEl,\n direction: direction,\n disablePortal: disablePortal,\n modifiers: modifiers,\n ref: forwardedRef,\n open: transition ? !exited : open,\n placement: placement,\n popperOptions: popperOptions,\n popperRef: popperRef,\n slotProps: slotProps,\n slots: slots,\n ...other,\n style: {\n // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n position: 'fixed',\n // Fix Popper.js display issue\n top: 0,\n left: 0,\n display,\n ...style\n },\n TransitionProps: transitionProps,\n children: children\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n if (props.open) {\n const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * Direction of the text.\n * @default 'ltr'\n */\n direction: PropTypes.oneOf(['ltr', 'rtl']),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","'use client';\n\nimport { useRtl } from '@mui/system/RtlProvider';\nimport refType from '@mui/utils/refType';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport BasePopper from \"./BasePopper.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(BasePopper, {\n name: 'MuiPopper',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://v6.mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://v6.mui.com/material-ui/react-menu/)\n * - [Popper](https://v6.mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://v6.mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n const isRtl = useRtl();\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiPopper'\n });\n const {\n anchorEl,\n component,\n components,\n componentsProps,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition,\n slots,\n slotProps,\n ...other\n } = props;\n const RootComponent = slots?.root ?? components?.Root;\n const otherProps = {\n anchorEl,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition,\n ...other\n };\n return /*#__PURE__*/_jsx(PopperRoot, {\n as: component,\n direction: isRtl ? 'rtl' : 'ltr',\n slots: {\n root: RootComponent\n },\n slotProps: slotProps ?? componentsProps,\n ...otherProps,\n ref: ref\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n *\n * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The props used for each slot inside the Popper.\n *\n * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from \"../useEnhancedEffect/index.js\";\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// See https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379 for why\nconst safeReact = {\n ...React\n};\nconst maybeReactUseId = safeReact.useId;\n\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n // React.useId() is only available from React 17.0.0.\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride ?? reactId;\n }\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","'use client';\n\nimport useId from '@mui/utils/useId';\nexport default useId;","'use client';\n\n// TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- process.env never changes, dependency arrays are intentionally ignored\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n // Object.is() is not equivalent to the === operator.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is for more details.\n if (!isControlled && !Object.is(defaultValue, defaultProp)) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport useControlled from '@mui/utils/useControlled';\nexport default useControlled;","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nimport appendOwnerState from '@mui/utils/appendOwnerState';\nimport resolveComponentProps from '@mui/utils/resolveComponentProps';\nimport mergeSlotProps from '@mui/utils/mergeSlotProps';\n/**\n * An internal function to create a Material UI slot.\n *\n * This is an advanced version of Base UI `useSlotProps` because Material UI allows leaf component to be customized via `component` prop\n * while Base UI does not need to support leaf component customization.\n *\n * @param {string} name: name of the slot\n * @param {object} parameters\n * @returns {[Slot, slotProps]} The slot's React component and the slot's props\n *\n * Note: the returned slot's props\n * - will never contain `component` prop.\n * - might contain `as` prop.\n */\nexport default function useSlot(\n/**\n * The slot's name. All Material UI components should have `root` slot.\n *\n * If the name is `root`, the logic behaves differently from other slots,\n * e.g. the `externalForwardedProps` are spread to `root` slot but not other slots.\n */\nname, parameters) {\n const {\n className,\n elementType: initialElementType,\n ownerState,\n externalForwardedProps,\n internalForwardedProps,\n shouldForwardComponentProp = false,\n ...useSlotPropsParams\n } = parameters;\n const {\n component: rootComponent,\n slots = {\n [name]: undefined\n },\n slotProps = {\n [name]: undefined\n },\n ...other\n } = externalForwardedProps;\n const elementType = slots[name] || initialElementType;\n\n // `slotProps[name]` can be a callback that receives the component's ownerState.\n // `resolvedComponentsProps` is always a plain object.\n const resolvedComponentsProps = resolveComponentProps(slotProps[name], ownerState);\n const {\n props: {\n component: slotComponent,\n ...mergedProps\n },\n internalRef\n } = mergeSlotProps({\n className,\n ...useSlotPropsParams,\n externalForwardedProps: name === 'root' ? other : undefined,\n externalSlotProps: resolvedComponentsProps\n });\n const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.ref);\n const LeafComponent = name === 'root' ? slotComponent || rootComponent : slotComponent;\n const props = appendOwnerState(elementType, {\n ...(name === 'root' && !rootComponent && !slots[name] && internalForwardedProps),\n ...(name !== 'root' && !slots[name] && internalForwardedProps),\n ...mergedProps,\n ...(LeafComponent && !shouldForwardComponentProp && {\n as: LeafComponent\n }),\n ...(LeafComponent && shouldForwardComponentProp && {\n component: LeafComponent\n }),\n ref\n }, ownerState);\n return [elementType, props];\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTooltipUtilityClass(slot) {\n return generateUtilityClass('MuiTooltip', slot);\n}\nconst tooltipClasses = generateUtilityClasses('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\nexport default tooltipClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useTimeout, { Timeout } from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport Grow from \"../Grow/index.js\";\nimport Popper from \"../Popper/index.js\";\nimport useEventCallback from \"../utils/useEventCallback.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useId from \"../utils/useId.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport tooltipClasses, { getTooltipUtilityClass } from \"./tooltipClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableInteractive,\n arrow,\n touch,\n placement\n } = ownerState;\n const slots = {\n popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${capitalize(placement.split('-')[0])}`],\n arrow: ['arrow']\n };\n return composeClasses(slots, getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = styled(Popper, {\n name: 'MuiTooltip',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n }\n})(memoTheme(({\n theme\n}) => ({\n zIndex: (theme.vars || theme).zIndex.tooltip,\n pointerEvents: 'none',\n variants: [{\n props: ({\n ownerState\n }) => !ownerState.disableInteractive,\n style: {\n pointerEvents: 'auto'\n }\n }, {\n props: ({\n open\n }) => !open,\n style: {\n pointerEvents: 'none'\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.arrow,\n style: {\n [`&[data-popper-placement*=\"bottom\"] .${tooltipClasses.arrow}`]: {\n top: 0,\n marginTop: '-0.71em',\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n [`&[data-popper-placement*=\"top\"] .${tooltipClasses.arrow}`]: {\n bottom: 0,\n marginBottom: '-0.71em',\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '100% 100%'\n }\n },\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '0 0'\n }\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.arrow && !ownerState.isRtl,\n style: {\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: {\n left: 0,\n marginLeft: '-0.71em'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.arrow && !!ownerState.isRtl,\n style: {\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: {\n right: 0,\n marginRight: '-0.71em'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.arrow && !ownerState.isRtl,\n style: {\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: {\n right: 0,\n marginRight: '-0.71em'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.arrow && !!ownerState.isRtl,\n style: {\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: {\n left: 0,\n marginLeft: '-0.71em'\n }\n }\n }]\n})));\nconst TooltipTooltip = styled('div', {\n name: 'MuiTooltip',\n slot: 'Tooltip',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${capitalize(ownerState.placement.split('-')[0])}`]];\n }\n})(memoTheme(({\n theme\n}) => ({\n backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),\n borderRadius: (theme.vars || theme).shape.borderRadius,\n color: (theme.vars || theme).palette.common.white,\n fontFamily: theme.typography.fontFamily,\n padding: '4px 8px',\n fontSize: theme.typography.pxToRem(11),\n maxWidth: 300,\n margin: 2,\n wordWrap: 'break-word',\n fontWeight: theme.typography.fontWeightMedium,\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n transformOrigin: 'right center'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n transformOrigin: 'left center'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: {\n transformOrigin: 'center bottom',\n marginBottom: '14px'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: {\n transformOrigin: 'center top',\n marginTop: '14px'\n },\n variants: [{\n props: ({\n ownerState\n }) => ownerState.arrow,\n style: {\n position: 'relative',\n margin: 0\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.touch,\n style: {\n padding: '8px 16px',\n fontSize: theme.typography.pxToRem(14),\n lineHeight: `${round(16 / 14)}em`,\n fontWeight: theme.typography.fontWeightRegular\n }\n }, {\n props: ({\n ownerState\n }) => !ownerState.isRtl,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n marginRight: '14px'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n marginLeft: '14px'\n }\n }\n }, {\n props: ({\n ownerState\n }) => !ownerState.isRtl && ownerState.touch,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n marginRight: '24px'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n marginLeft: '24px'\n }\n }\n }, {\n props: ({\n ownerState\n }) => !!ownerState.isRtl,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n marginLeft: '14px'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n marginRight: '14px'\n }\n }\n }, {\n props: ({\n ownerState\n }) => !!ownerState.isRtl && ownerState.touch,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n marginLeft: '24px'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n marginRight: '24px'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.touch,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: {\n marginBottom: '24px'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.touch,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: {\n marginTop: '24px'\n }\n }\n }]\n})));\nconst TooltipArrow = styled('span', {\n name: 'MuiTooltip',\n slot: 'Arrow',\n overridesResolver: (props, styles) => styles.arrow\n})(memoTheme(({\n theme\n}) => ({\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n})));\nlet hystersisOpen = false;\nconst hystersisTimer = new Timeout();\nlet cursorPosition = {\n x: 0,\n y: 0\n};\nexport function testReset() {\n hystersisOpen = false;\n hystersisTimer.clear();\n}\nfunction composeEventHandler(handler, eventHandler) {\n return (event, ...params) => {\n if (eventHandler) {\n eventHandler(event, ...params);\n }\n handler(event, ...params);\n };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiTooltip'\n });\n const {\n arrow = false,\n children: childrenProp,\n classes: classesProp,\n components = {},\n componentsProps = {},\n describeChild = false,\n disableFocusListener = false,\n disableHoverListener = false,\n disableInteractive: disableInteractiveProp = false,\n disableTouchListener = false,\n enterDelay = 100,\n enterNextDelay = 0,\n enterTouchDelay = 700,\n followCursor = false,\n id: idProp,\n leaveDelay = 0,\n leaveTouchDelay = 1500,\n onClose,\n onOpen,\n open: openProp,\n placement = 'bottom',\n PopperComponent: PopperComponentProp,\n PopperProps = {},\n slotProps = {},\n slots = {},\n title,\n TransitionComponent: TransitionComponentProp,\n TransitionProps,\n ...other\n } = props;\n\n // to prevent runtime errors, developers will need to provide a child as a React element anyway.\n const children = /*#__PURE__*/React.isValidElement(childrenProp) ? childrenProp : /*#__PURE__*/_jsx(\"span\", {\n children: childrenProp\n });\n const theme = useTheme();\n const isRtl = useRtl();\n const [childNode, setChildNode] = React.useState();\n const [arrowRef, setArrowRef] = React.useState(null);\n const ignoreNonTouchEvents = React.useRef(false);\n const disableInteractive = disableInteractiveProp || followCursor;\n const closeTimer = useTimeout();\n const enterTimer = useTimeout();\n const leaveTimer = useTimeout();\n const touchTimer = useTimeout();\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: 'Tooltip',\n state: 'open'\n });\n let open = openState;\n if (process.env.NODE_ENV !== 'production') {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- process.env never changes\n const {\n current: isControlled\n } = React.useRef(openProp !== undefined);\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- process.env never changes\n React.useEffect(() => {\n if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n console.warn(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n }\n }, [title, childNode, isControlled]);\n }\n const id = useId(idProp);\n const prevUserSelect = React.useRef();\n const stopTouchInteraction = useEventCallback(() => {\n if (prevUserSelect.current !== undefined) {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n prevUserSelect.current = undefined;\n }\n touchTimer.clear();\n });\n React.useEffect(() => stopTouchInteraction, [stopTouchInteraction]);\n const handleOpen = event => {\n hystersisTimer.clear();\n hystersisOpen = true;\n\n // The mouseover event will trigger for every nested element in the tooltip.\n // We can skip rerendering when the tooltip is already open.\n // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n setOpenState(true);\n if (onOpen && !open) {\n onOpen(event);\n }\n };\n const handleClose = useEventCallback(\n /**\n * @param {React.SyntheticEvent | Event} event\n */\n event => {\n hystersisTimer.start(800 + leaveDelay, () => {\n hystersisOpen = false;\n });\n setOpenState(false);\n if (onClose && open) {\n onClose(event);\n }\n closeTimer.start(theme.transitions.duration.shortest, () => {\n ignoreNonTouchEvents.current = false;\n });\n });\n const handleMouseOver = event => {\n if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n return;\n }\n\n // Remove the title ahead of time.\n // We don't want to wait for the next render commit.\n // We would risk displaying two tooltips at the same time (native + this one).\n if (childNode) {\n childNode.removeAttribute('title');\n }\n enterTimer.clear();\n leaveTimer.clear();\n if (enterDelay || hystersisOpen && enterNextDelay) {\n enterTimer.start(hystersisOpen ? enterNextDelay : enterDelay, () => {\n handleOpen(event);\n });\n } else {\n handleOpen(event);\n }\n };\n const handleMouseLeave = event => {\n enterTimer.clear();\n leaveTimer.start(leaveDelay, () => {\n handleClose(event);\n });\n };\n const [, setChildIsFocusVisible] = React.useState(false);\n const handleBlur = event => {\n if (!isFocusVisible(event.target)) {\n setChildIsFocusVisible(false);\n handleMouseLeave(event);\n }\n };\n const handleFocus = event => {\n // Workaround for https://github.com/facebook/react/issues/7769\n // The autoFocus of React might trigger the event before the componentDidMount.\n // We need to account for this eventuality.\n if (!childNode) {\n setChildNode(event.currentTarget);\n }\n if (isFocusVisible(event.target)) {\n setChildIsFocusVisible(true);\n handleMouseOver(event);\n }\n };\n const detectTouchStart = event => {\n ignoreNonTouchEvents.current = true;\n const childrenProps = children.props;\n if (childrenProps.onTouchStart) {\n childrenProps.onTouchStart(event);\n }\n };\n const handleTouchStart = event => {\n detectTouchStart(event);\n leaveTimer.clear();\n closeTimer.clear();\n stopTouchInteraction();\n prevUserSelect.current = document.body.style.WebkitUserSelect;\n // Prevent iOS text selection on long-tap.\n document.body.style.WebkitUserSelect = 'none';\n touchTimer.start(enterTouchDelay, () => {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n handleMouseOver(event);\n });\n };\n const handleTouchEnd = event => {\n if (children.props.onTouchEnd) {\n children.props.onTouchEnd(event);\n }\n stopTouchInteraction();\n leaveTimer.start(leaveTouchDelay, () => {\n handleClose(event);\n });\n };\n React.useEffect(() => {\n if (!open) {\n return undefined;\n }\n\n /**\n * @param {KeyboardEvent} nativeEvent\n */\n function handleKeyDown(nativeEvent) {\n if (nativeEvent.key === 'Escape') {\n handleClose(nativeEvent);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleClose, open]);\n const handleRef = useForkRef(getReactElementRef(children), setChildNode, ref);\n\n // There is no point in displaying an empty tooltip.\n // So we exclude all falsy values, except 0, which is valid.\n if (!title && title !== 0) {\n open = false;\n }\n const popperRef = React.useRef();\n const handleMouseMove = event => {\n const childrenProps = children.props;\n if (childrenProps.onMouseMove) {\n childrenProps.onMouseMove(event);\n }\n cursorPosition = {\n x: event.clientX,\n y: event.clientY\n };\n if (popperRef.current) {\n popperRef.current.update();\n }\n };\n const nameOrDescProps = {};\n const titleIsString = typeof title === 'string';\n if (describeChild) {\n nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n nameOrDescProps['aria-describedby'] = open ? id : null;\n } else {\n nameOrDescProps['aria-label'] = titleIsString ? title : null;\n nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n }\n const childrenProps = {\n ...nameOrDescProps,\n ...other,\n ...children.props,\n className: clsx(other.className, children.props.className),\n onTouchStart: detectTouchStart,\n ref: handleRef,\n ...(followCursor ? {\n onMouseMove: handleMouseMove\n } : {})\n };\n if (process.env.NODE_ENV !== 'production') {\n childrenProps['data-mui-internal-clone-element'] = true;\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- process.env never changes\n React.useEffect(() => {\n if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n }\n }, [childNode]);\n }\n const interactiveWrapperListeners = {};\n if (!disableTouchListener) {\n childrenProps.onTouchStart = handleTouchStart;\n childrenProps.onTouchEnd = handleTouchEnd;\n }\n if (!disableHoverListener) {\n childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n if (!disableInteractive) {\n interactiveWrapperListeners.onMouseOver = handleMouseOver;\n interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n }\n }\n if (!disableFocusListener) {\n childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n if (!disableInteractive) {\n interactiveWrapperListeners.onFocus = handleFocus;\n interactiveWrapperListeners.onBlur = handleBlur;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (children.props.title) {\n console.error(['MUI: You have provided a `title` prop to the child of .', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n }\n }\n const ownerState = {\n ...props,\n isRtl,\n arrow,\n disableInteractive,\n placement,\n PopperComponentProp,\n touch: ignoreNonTouchEvents.current\n };\n const resolvedPopperProps = typeof slotProps.popper === 'function' ? slotProps.popper(ownerState) : slotProps.popper;\n const popperOptions = React.useMemo(() => {\n let tooltipModifiers = [{\n name: 'arrow',\n enabled: Boolean(arrowRef),\n options: {\n element: arrowRef,\n padding: 4\n }\n }];\n if (PopperProps.popperOptions?.modifiers) {\n tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n }\n if (resolvedPopperProps?.popperOptions?.modifiers) {\n tooltipModifiers = tooltipModifiers.concat(resolvedPopperProps.popperOptions.modifiers);\n }\n return {\n ...PopperProps.popperOptions,\n ...resolvedPopperProps?.popperOptions,\n modifiers: tooltipModifiers\n };\n }, [arrowRef, PopperProps.popperOptions, resolvedPopperProps?.popperOptions]);\n const classes = useUtilityClasses(ownerState);\n const resolvedTransitionProps = typeof slotProps.transition === 'function' ? slotProps.transition(ownerState) : slotProps.transition;\n const externalForwardedProps = {\n slots: {\n popper: components.Popper,\n transition: components.Transition ?? TransitionComponentProp,\n tooltip: components.Tooltip,\n arrow: components.Arrow,\n ...slots\n },\n slotProps: {\n arrow: slotProps.arrow ?? componentsProps.arrow,\n popper: {\n ...PopperProps,\n ...(resolvedPopperProps ?? componentsProps.popper)\n },\n // resolvedPopperProps can be spread because it's already an object\n tooltip: slotProps.tooltip ?? componentsProps.tooltip,\n transition: {\n ...TransitionProps,\n ...(resolvedTransitionProps ?? componentsProps.transition)\n }\n }\n };\n const [PopperSlot, popperSlotProps] = useSlot('popper', {\n elementType: TooltipPopper,\n externalForwardedProps,\n ownerState,\n className: clsx(classes.popper, PopperProps?.className)\n });\n const [TransitionSlot, transitionSlotProps] = useSlot('transition', {\n elementType: Grow,\n externalForwardedProps,\n ownerState\n });\n const [TooltipSlot, tooltipSlotProps] = useSlot('tooltip', {\n elementType: TooltipTooltip,\n className: classes.tooltip,\n externalForwardedProps,\n ownerState\n });\n const [ArrowSlot, arrowSlotProps] = useSlot('arrow', {\n elementType: TooltipArrow,\n className: classes.arrow,\n externalForwardedProps,\n ownerState,\n ref: setArrowRef\n });\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/React.cloneElement(children, childrenProps), /*#__PURE__*/_jsx(PopperSlot, {\n as: PopperComponentProp ?? Popper,\n placement: placement,\n anchorEl: followCursor ? {\n getBoundingClientRect: () => ({\n top: cursorPosition.y,\n left: cursorPosition.x,\n right: cursorPosition.x,\n bottom: cursorPosition.y,\n width: 0,\n height: 0\n })\n } : childNode,\n popperRef: popperRef,\n open: childNode ? open : false,\n id: id,\n transition: true,\n ...interactiveWrapperListeners,\n ...popperSlotProps,\n popperOptions: popperOptions,\n children: ({\n TransitionProps: TransitionPropsInner\n }) => /*#__PURE__*/_jsx(TransitionSlot, {\n timeout: theme.transitions.duration.shorter,\n ...TransitionPropsInner,\n ...transitionSlotProps,\n children: /*#__PURE__*/_jsxs(TooltipSlot, {\n ...tooltipSlotProps,\n children: [title, arrow ? /*#__PURE__*/_jsx(ArrowSlot, {\n ...arrowSlotProps\n }) : null]\n })\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, adds an arrow to the tooltip.\n * @default false\n */\n arrow: PropTypes.bool,\n /**\n * Tooltip reference element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The components used for each slot inside.\n *\n * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Arrow: PropTypes.elementType,\n Popper: PropTypes.elementType,\n Tooltip: PropTypes.elementType,\n Transition: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * Set to `true` if the `title` acts as an accessible description.\n * By default the `title` acts as an accessible label for the child.\n * @default false\n */\n describeChild: PropTypes.bool,\n /**\n * Do not respond to focus-visible events.\n * @default false\n */\n disableFocusListener: PropTypes.bool,\n /**\n * Do not respond to hover events.\n * @default false\n */\n disableHoverListener: PropTypes.bool,\n /**\n * Makes a tooltip not interactive, i.e. it will close when the user\n * hovers over the tooltip before the `leaveDelay` is expired.\n * @default false\n */\n disableInteractive: PropTypes.bool,\n /**\n * Do not respond to long press touch events.\n * @default false\n */\n disableTouchListener: PropTypes.bool,\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n * @default 100\n */\n enterDelay: PropTypes.number,\n /**\n * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n * @default 0\n */\n enterNextDelay: PropTypes.number,\n /**\n * The number of milliseconds a user must touch the element before showing the tooltip.\n * @default 700\n */\n enterTouchDelay: PropTypes.number,\n /**\n * If `true`, the tooltip follow the cursor over the wrapped element.\n * @default false\n */\n followCursor: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id: PropTypes.string,\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n * @default 0\n */\n leaveDelay: PropTypes.number,\n /**\n * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n * @default 1500\n */\n leaveTouchDelay: PropTypes.number,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the component requests to be open.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * Tooltip placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * The component used for the popper.\n * @deprecated use the `slots.popper` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n PopperComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Popper`](https://mui.com/material-ui/api/popper/) element.\n * @deprecated use the `slotProps.popper` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n * @default {}\n */\n PopperProps: PropTypes.object,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n arrow: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n popper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n tooltip: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n transition: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n arrow: PropTypes.elementType,\n popper: PropTypes.elementType,\n tooltip: PropTypes.elementType,\n transition: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n */\n title: PropTypes.node,\n /**\n * The component used for the transition.\n * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @deprecated use the `slots.transition` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n * @deprecated use the `slotProps.transition` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n * @default {}\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Tooltip;","import ownerDocument from '@mui/utils/ownerDocument';\nexport default ownerDocument;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ListContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\nexport default ListContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListUtilityClass(slot) {\n return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"./ListContext.js\";\nimport { getListUtilityClass } from \"./listClasses.js\";\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePadding,\n dense,\n subheader\n } = ownerState;\n const slots = {\n root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n };\n return composeClasses(slots, getListUtilityClass, classes);\n};\nconst ListRoot = styled('ul', {\n name: 'MuiList',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n }\n})({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative',\n variants: [{\n props: ({\n ownerState\n }) => !ownerState.disablePadding,\n style: {\n paddingTop: 8,\n paddingBottom: 8\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.subheader,\n style: {\n paddingTop: 0\n }\n }]\n});\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiList'\n });\n const {\n children,\n className,\n component = 'ul',\n dense = false,\n disablePadding = false,\n subheader,\n ...other\n } = props;\n const context = React.useMemo(() => ({\n dense\n }), [dense]);\n const ownerState = {\n ...props,\n component,\n dense,\n disablePadding\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsxs(ListRoot, {\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState,\n ...other,\n children: [subheader, children]\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * If `true`, vertical padding is removed from the list.\n * @default false\n */\n disablePadding: PropTypes.bool,\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/488fd8afc535ca3a6ad4dc581f5e89217b6a36ac/js/src/util/scrollbar.js#L14-L18\nexport default function getScrollbarSize(win = window) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = win.document.documentElement.clientWidth;\n return win.innerWidth - documentWidth;\n}","import getScrollbarSize from '@mui/utils/getScrollbarSize';\nexport default getScrollbarSize;","'use client';\n\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport default useEnhancedEffect;","import ownerDocument from \"../ownerDocument/index.js\";\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import ownerWindow from '@mui/utils/ownerWindow';\nexport default ownerWindow;","'use client';\n\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from \"../utils/ownerDocument.js\";\nimport List from \"../List/index.js\";\nimport getScrollbarSize from \"../utils/getScrollbarSize.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useEnhancedEffect from \"../utils/useEnhancedEffect.js\";\nimport { ownerWindow } from \"../utils/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n let text = nextFocus.innerText;\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n text = text.trim().toLowerCase();\n if (text.length === 0) {\n return false;\n }\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n return text.startsWith(textCriteria.keys.join(''));\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n let wrappedOnce = false;\n let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return false;\n }\n wrappedOnce = true;\n }\n\n // Same logic as useAutocomplete.js\n const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return true;\n }\n }\n return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n autoFocus = false,\n autoFocusItem = false,\n children,\n className,\n disabledItemsFocusable = false,\n disableListWrap = false,\n onKeyDown,\n variant = 'selectedMenu',\n ...other\n } = props;\n const listRef = React.useRef(null);\n const textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(() => {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, () => ({\n adjustStyleForScrollbar: (containerElement, {\n direction\n }) => {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n const noExplicitWidth = !listRef.current.style.width;\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n const scrollbarSize = `${getScrollbarSize(ownerWindow(containerElement))}px`;\n listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n }\n return listRef.current;\n }\n }), []);\n const handleKeyDown = event => {\n const list = listRef.current;\n const key = event.key;\n const isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;\n if (isModifierKeyPressed) {\n if (onKeyDown) {\n onKeyDown(event);\n }\n return;\n }\n\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n const currentFocus = ownerDocument(list).activeElement;\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key.length === 1) {\n const criteria = textCriteriaRef.current;\n const lowerKey = key.toLowerCase();\n const currTime = performance.now();\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n const handleRef = useForkRef(listRef, ref);\n\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n let activeItemIndex = -1;\n // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n React.Children.forEach(children, (child, index) => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n if (activeItemIndex === index) {\n activeItemIndex += 1;\n if (activeItemIndex >= children.length) {\n // there are no focusable items within the list.\n activeItemIndex = -1;\n }\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {\n activeItemIndex += 1;\n if (activeItemIndex >= children.length) {\n // there are no focusable items within the list.\n activeItemIndex = -1;\n }\n }\n });\n const items = React.Children.map(children, (child, index) => {\n if (index === activeItemIndex) {\n const newChildProps = {};\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n return /*#__PURE__*/React.cloneElement(child, newChildProps);\n }\n return child;\n });\n return /*#__PURE__*/_jsx(List, {\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1,\n ...other,\n children: items\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n * @default false\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n * if `variant=\"selectedMenu\"`.\n * @default false\n */\n autoFocusItem: PropTypes.bool,\n /**\n * MenuList contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the menu items will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n * @default 'selectedMenu'\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDividerUtilityClass(slot) {\n return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getDividerUtilityClass } from \"./dividerClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n absolute,\n children,\n classes,\n flexItem,\n light,\n orientation,\n textAlign,\n variant\n } = ownerState;\n const slots = {\n root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n };\n return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n name: 'MuiDivider',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n }\n})(memoTheme(({\n theme\n}) => ({\n margin: 0,\n // Reset browser default style.\n flexShrink: 0,\n borderWidth: 0,\n borderStyle: 'solid',\n borderColor: (theme.vars || theme).palette.divider,\n borderBottomWidth: 'thin',\n variants: [{\n props: {\n absolute: true\n },\n style: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%'\n }\n }, {\n props: {\n light: true\n },\n style: {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n }\n }, {\n props: {\n variant: 'inset'\n },\n style: {\n marginLeft: 72\n }\n }, {\n props: {\n variant: 'middle',\n orientation: 'horizontal'\n },\n style: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n }\n }, {\n props: {\n variant: 'middle',\n orientation: 'vertical'\n },\n style: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n }\n }, {\n props: {\n orientation: 'vertical'\n },\n style: {\n height: '100%',\n borderBottomWidth: 0,\n borderRightWidth: 'thin'\n }\n }, {\n props: {\n flexItem: true\n },\n style: {\n alignSelf: 'stretch',\n height: 'auto'\n }\n }, {\n props: ({\n ownerState\n }) => !!ownerState.children,\n style: {\n display: 'flex',\n textAlign: 'center',\n border: 0,\n borderTopStyle: 'solid',\n borderLeftStyle: 'solid',\n '&::before, &::after': {\n content: '\"\"',\n alignSelf: 'center'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.children && ownerState.orientation !== 'vertical',\n style: {\n '&::before, &::after': {\n width: '100%',\n borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,\n borderTopStyle: 'inherit'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.orientation === 'vertical' && ownerState.children,\n style: {\n flexDirection: 'column',\n '&::before, &::after': {\n height: '100%',\n borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,\n borderLeftStyle: 'inherit'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical',\n style: {\n '&::before': {\n width: '90%'\n },\n '&::after': {\n width: '10%'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical',\n style: {\n '&::before': {\n width: '10%'\n },\n '&::after': {\n width: '90%'\n }\n }\n }]\n})));\nconst DividerWrapper = styled('span', {\n name: 'MuiDivider',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n }\n})(memoTheme(({\n theme\n}) => ({\n display: 'inline-block',\n paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n paddingRight: `calc(${theme.spacing(1)} * 1.2)`,\n whiteSpace: 'nowrap',\n variants: [{\n props: {\n orientation: 'vertical'\n },\n style: {\n paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n }\n }]\n})));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiDivider'\n });\n const {\n absolute = false,\n children,\n className,\n orientation = 'horizontal',\n component = children || orientation === 'vertical' ? 'div' : 'hr',\n flexItem = false,\n light = false,\n role = component !== 'hr' ? 'separator' : undefined,\n textAlign = 'center',\n variant = 'fullWidth',\n ...other\n } = props;\n const ownerState = {\n ...props,\n absolute,\n component,\n flexItem,\n light,\n orientation,\n role,\n textAlign,\n variant\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DividerRoot, {\n as: component,\n className: clsx(classes.root, className),\n role: role,\n ref: ref,\n ownerState: ownerState,\n \"aria-orientation\": role === 'separator' && (component !== 'hr' || orientation === 'vertical') ? orientation : undefined,\n ...other,\n children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n className: classes.wrapper,\n ownerState: ownerState,\n children: children\n }) : null\n });\n});\n\n/**\n * The following flag is used to ensure that this component isn't tabbable i.e.\n * does not get highlight/focus inside of MUI List.\n */\nif (Divider) {\n Divider.muiSkipListHighlight = true;\n}\nprocess.env.NODE_ENV !== \"production\" ? Divider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Absolutely position the element.\n * @default false\n */\n absolute: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, a vertical divider will have the correct height when used in flex container.\n * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n * @default false\n */\n flexItem: PropTypes.bool,\n /**\n * If `true`, the divider will have a lighter color.\n * @default false\n * @deprecated Use (or any opacity or color) instead. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n light: PropTypes.bool,\n /**\n * The component orientation.\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The text alignment.\n * @default 'center'\n */\n textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n /**\n * The variant to use.\n * @default 'fullWidth'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;","/**\n * Type guard to check if the object has a \"main\" property of type string.\n *\n * @param obj - the object to check\n * @returns boolean\n */\nfunction hasCorrectMainProperty(obj) {\n return typeof obj.main === 'string';\n}\n/**\n * Checks if the object conforms to the SimplePaletteColorOptions type.\n * The minimum requirement is that the object has a \"main\" property of type string, this is always checked.\n * Optionally, you can pass additional properties to check.\n *\n * @param obj - The object to check\n * @param additionalPropertiesToCheck - Array containing \"light\", \"dark\", and/or \"contrastText\"\n * @returns boolean\n */\nfunction checkSimplePaletteColorValues(obj, additionalPropertiesToCheck = []) {\n if (!hasCorrectMainProperty(obj)) {\n return false;\n }\n for (const value of additionalPropertiesToCheck) {\n if (!obj.hasOwnProperty(value) || typeof obj[value] !== 'string') {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Creates a filter function used to filter simple palette color options.\n * The minimum requirement is that the object has a \"main\" property of type string, this is always checked.\n * Optionally, you can pass additional properties to check.\n *\n * @param additionalPropertiesToCheck - Array containing \"light\", \"dark\", and/or \"contrastText\"\n * @returns ([, value]: [any, PaletteColorOptions]) => boolean\n */\nexport default function createSimplePaletteValueFilter(additionalPropertiesToCheck = []) {\n return ([, value]) => value && checkSimplePaletteColorValues(value, additionalPropertiesToCheck);\n}","'use client';\n\nimport * as React from 'react';\nimport useLazyRef from '@mui/utils/useLazyRef';\n/**\n * Lazy initialization container for the Ripple instance. This improves\n * performance by delaying mounting the ripple until it's needed.\n */\nexport class LazyRipple {\n /** React ref to the ripple instance */\n\n /** If the ripple component should be mounted */\n\n /** Promise that resolves when the ripple component is mounted */\n\n /** If the ripple component has been mounted */\n\n /** React state hook setter */\n\n static create() {\n return new LazyRipple();\n }\n static use() {\n /* eslint-disable */\n const ripple = useLazyRef(LazyRipple.create).current;\n const [shouldMount, setShouldMount] = React.useState(false);\n ripple.shouldMount = shouldMount;\n ripple.setShouldMount = setShouldMount;\n React.useEffect(ripple.mountEffect, [shouldMount]);\n /* eslint-enable */\n\n return ripple;\n }\n constructor() {\n this.ref = {\n current: null\n };\n this.mounted = null;\n this.didMount = false;\n this.shouldMount = false;\n this.setShouldMount = null;\n }\n mount() {\n if (!this.mounted) {\n this.mounted = createControlledPromise();\n this.shouldMount = true;\n this.setShouldMount(this.shouldMount);\n }\n return this.mounted;\n }\n mountEffect = () => {\n if (this.shouldMount && !this.didMount) {\n if (this.ref.current !== null) {\n this.didMount = true;\n this.mounted.resolve();\n }\n }\n };\n\n /* Ripple API */\n\n start(...args) {\n this.mount().then(() => this.ref.current?.start(...args));\n }\n stop(...args) {\n this.mount().then(() => this.ref.current?.stop(...args));\n }\n pulsate(...args) {\n this.mount().then(() => this.ref.current?.pulsate(...args));\n }\n}\nexport default function useLazyRipple() {\n return LazyRipple.use();\n}\nfunction createControlledPromise() {\n let resolve;\n let reject;\n const p = new Promise((resolveFn, rejectFn) => {\n resolve = resolveFn;\n reject = rejectFn;\n });\n p.resolve = resolve;\n p.reject = reject;\n return p;\n}","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-f0de968e.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-f0de968e.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx = function jsx(type, props) {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n(function (_jsx) {\n var JSX;\n\n (function (_JSX) {})(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));\n})(jsx || (jsx = {}));\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nfunction keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n}\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes /* remove-proptypes */ = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport useTimeout from '@mui/utils/useTimeout';\nimport { keyframes, styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Ripple from \"./Ripple.js\";\nimport touchRippleClasses from \"./touchRippleClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`;\nconst exitKeyframe = keyframes`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`;\nconst pulsateKeyframe = keyframes`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`;\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})`\n opacity: 0;\n position: absolute;\n\n &.${touchRippleClasses.rippleVisible} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${enterKeyframe};\n animation-duration: ${DURATION}ms;\n animation-timing-function: ${({\n theme\n}) => theme.transitions.easing.easeInOut};\n }\n\n &.${touchRippleClasses.ripplePulsate} {\n animation-duration: ${({\n theme\n}) => theme.transitions.duration.shorter}ms;\n }\n\n & .${touchRippleClasses.child} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${touchRippleClasses.childLeaving} {\n opacity: 0;\n animation-name: ${exitKeyframe};\n animation-duration: ${DURATION}ms;\n animation-timing-function: ${({\n theme\n}) => theme.transitions.easing.easeInOut};\n }\n\n & .${touchRippleClasses.childPulsate} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${pulsateKeyframe};\n animation-duration: 2500ms;\n animation-timing-function: ${({\n theme\n}) => theme.transitions.easing.easeInOut};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`;\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n const {\n center: centerProp = false,\n classes = {},\n className,\n ...other\n } = props;\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]);\n\n // Used to filter out mouse emulated events on mobile.\n const ignoringMouseDown = React.useRef(false);\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n const startTimer = useTimeout();\n\n // This is the hook called once the previous timeout is ready.\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n } = options;\n if (event?.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if (event?.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n\n // Touche devices\n if (event?.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n };\n // Delay the execution of the ripple effect.\n // We have to make a tradeoff with this delay value.\n startTimer.start(DELAY_RIPPLE, () => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n });\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit, startTimer]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n startTimer.clear();\n\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if (event?.type === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.start(0, () => {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, [startTimer]);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, {\n className: clsx(touchRippleClasses.root, classes.root, className),\n ref: container,\n ...other,\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes /* remove-proptypes */ = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useEventCallback from \"../utils/useEventCallback.js\";\nimport useLazyRipple from \"../useLazyRipple/index.js\";\nimport TouchRipple from \"./TouchRipple.js\";\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from \"./buttonBaseClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n focusVisibleClassName,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type,\n ...other\n } = props;\n const buttonRef = React.useRef(null);\n const ripple = useLazyRipple();\n const handleRippleRef = useForkRef(ripple.ref, touchRippleRef);\n const [focusVisible, setFocusVisible] = React.useState(false);\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const enableTouchRipple = ripple.shouldMount && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple) {\n ripple.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, ripple]);\n const handleMouseDown = useRippleHandler(ripple, 'start', onMouseDown, disableTouchRipple);\n const handleContextMenu = useRippleHandler(ripple, 'stop', onContextMenu, disableTouchRipple);\n const handleDragLeave = useRippleHandler(ripple, 'stop', onDragLeave, disableTouchRipple);\n const handleMouseUp = useRippleHandler(ripple, 'stop', onMouseUp, disableTouchRipple);\n const handleMouseLeave = useRippleHandler(ripple, 'stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n }, disableTouchRipple);\n const handleTouchStart = useRippleHandler(ripple, 'start', onTouchStart, disableTouchRipple);\n const handleTouchEnd = useRippleHandler(ripple, 'stop', onTouchEnd, disableTouchRipple);\n const handleTouchMove = useRippleHandler(ripple, 'stop', onTouchMove, disableTouchRipple);\n const handleBlur = useRippleHandler(ripple, 'stop', event => {\n if (!isFocusVisible(event.target)) {\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n if (isFocusVisible(event.target)) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !event.repeat && focusVisible && event.key === ' ') {\n ripple.stop(event, () => {\n ripple.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a
\n );\n};\n\nItemLabelWithControls.propTypes = {\n itemId: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n editable: PropTypes.bool,\n ownerState: PropTypes.object,\n};\n\n// Custom label-input slot. When `itemsReordering` is on, MUI's reorder plugin\n// puts `draggable=\"true\"` on the TreeItem root with NO editing guard. While the\n// label input is focused, that native draggable ancestor hijacks text\n// selection: dragging to highlight a word starts an HTML5 element drag, the\n// input loses focus, MUI's onBlur fires, and edit mode exits mid-gesture.\n//\n// Fix: while this input is mounted (i.e. editing), flip the nearest\n// draggable ancestor to draggable=\"false\" and restore it on cleanup. Also\n// stop mouse/pointer/click from reaching the row (so clicking inside the cell\n// doesn't toggle selection or steal focus) and cancel any dragstart that does\n// fire. We deliberately do NOT preventDefault on mousedown — the browser needs\n// it for caret placement and native text selection inside the input.\nconst EditableLabelInput = React.forwardRef(function EditableLabelInput(\n props,\n ref\n) {\n const innerRef = useRef(null);\n const restoreRef = useRef(null);\n\n const setRefs = useCallback(\n (node) => {\n innerRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n },\n [ref]\n );\n\n useEffect(() => {\n const el = innerRef.current;\n if (!el || typeof el.closest !== 'function') return undefined;\n const host = el.closest('[draggable=\"true\"]');\n if (host) {\n restoreRef.current = host;\n host.setAttribute('draggable', 'false');\n }\n return () => {\n if (restoreRef.current) {\n restoreRef.current.setAttribute('draggable', 'true');\n restoreRef.current = null;\n }\n };\n }, []);\n\n const stopOnly = (handler) => (e) => {\n e.stopPropagation();\n if (handler) handler(e);\n };\n\n return (\n {\n e.preventDefault();\n e.stopPropagation();\n }}\n />\n );\n});\n\nEditableLabelInput.propTypes = {\n onMouseDown: PropTypes.func,\n onPointerDown: PropTypes.func,\n onClick: PropTypes.func,\n};\n\nconst CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) {\n const {itemId} = props;\n // Keep the real string `label` prop intact so MUI's edit input and\n // `onItemLabelChange` get the actual text (not \"[object Object]\").\n // Inject the slider + kebab through the label *slot*, and harden the\n // label-input slot so editing stays stable under itemsReordering.\n return (\n \n );\n});\n\nCustomTreeItem.propTypes = {\n itemId: PropTypes.string,\n};\n\n// --- Main component ----------------------------------------------------------\nconst TreeViewPro = ({\n id,\n items: itemsProp = [],\n licenseKey = '',\n // Item accessors\n getItemId: getItemIdProp = 'id',\n getItemLabel: getItemLabelProp = 'label',\n getItemChildren: getItemChildrenProp = 'children',\n // Selection\n selectedItems,\n defaultSelectedItems,\n multiSelect = false,\n checkboxSelection = false,\n disableSelection = false,\n selectionPropagation,\n // Expansion\n expandedItems,\n defaultExpandedItems,\n expansionTrigger = 'content',\n // Editing\n isItemEditable = false,\n editableItems,\n // Disabled\n disabledItems,\n disabledItemsFocusable = false,\n // Appearance\n itemChildrenIndentation = '12px',\n height,\n sx,\n // Icons\n collapseIcon,\n expandIcon,\n endIcon,\n // Accessibility\n ariaLabel,\n ariaLabelledBy,\n // PRO: Ordering\n itemsReordering = false,\n reorderableItems,\n // PRO: Lazy Loading\n lazyLoading = false,\n lazyLoadedChildren,\n // Per-item controls\n showItemControls = false,\n controlsItems,\n sliderValues,\n sliderMin = 0,\n sliderMax = 100,\n sliderStep = 1,\n sliderColor,\n kebabMenuItems,\n // Dash\n setProps,\n}) => {\n const colorScheme = useMantineColorScheme();\n const muiTheme = colorScheme === 'dark' ? darkTheme : lightTheme;\n\n // --- License key ---\n if (licenseKey && !licenseKeySet) {\n LicenseInfo.setLicenseKey(licenseKey);\n licenseKeySet = true;\n }\n\n // --- Lazy loading: merge loaded children into items ---\n const items = useMemo(() => {\n if (!lazyLoading || !lazyLoadedChildren || !itemsProp) return itemsProp || [];\n const childrenProp = getItemChildrenProp || 'children';\n const idProp = getItemIdProp || 'id';\n\n const mergeChildren = (nodeList) => {\n if (!nodeList) return nodeList;\n return nodeList.map((node) => {\n const nodeId = node[idProp];\n const loadedKids = lazyLoadedChildren[nodeId];\n const existingChildren = node[childrenProp];\n const mergedChildren = loadedKids || existingChildren;\n return {\n ...node,\n [childrenProp]: mergeChildren(mergedChildren),\n };\n });\n };\n return mergeChildren(itemsProp);\n }, [itemsProp, lazyLoadedChildren, lazyLoading, getItemChildrenProp, getItemIdProp]);\n\n // --- Accessor conversion ---\n const getItemId = useCallback(\n (item) => item[getItemIdProp || 'id'],\n [getItemIdProp]\n );\n const getItemLabel = useCallback(\n (item) => item[getItemLabelProp || 'label'],\n [getItemLabelProp]\n );\n const getItemChildren = useCallback(\n (item) => item[getItemChildrenProp || 'children'],\n [getItemChildrenProp]\n );\n\n // --- Disabled/editable conversion ---\n const isItemDisabledFn = useMemo(() => {\n if (!disabledItems || disabledItems.length === 0) return undefined;\n const s = new Set(disabledItems);\n return (item) => s.has(getItemId(item));\n }, [disabledItems, getItemId]);\n\n const isItemEditableFn = useMemo(() => {\n if (typeof isItemEditable === 'boolean') return isItemEditable;\n if (editableItems && editableItems.length > 0) {\n const s = new Set(editableItems);\n return (item) => s.has(getItemId(item));\n }\n return false;\n }, [isItemEditable, editableItems, getItemId]);\n\n // --- PRO: Reorderable conversion ---\n const isItemReorderableFn = useMemo(() => {\n if (!reorderableItems || reorderableItems.length === 0) return undefined;\n const s = new Set(reorderableItems);\n return (itemId) => s.has(itemId);\n }, [reorderableItems]);\n\n // --- Per-item controls: slider + kebab handlers ---\n const sliderValuesRef = useRef(sliderValues || {});\n sliderValuesRef.current = sliderValues || sliderValuesRef.current || {};\n\n const handleSliderChange = useCallback(\n (itemId, value, committed) => {\n const next = {...sliderValuesRef.current, [itemId]: value};\n sliderValuesRef.current = next;\n if (setProps) {\n setProps({sliderValues: next});\n if (committed) {\n setProps({\n sliderChange: {\n itemId,\n value,\n event_timestamp: Date.now(),\n },\n });\n }\n }\n },\n [setProps]\n );\n\n const handleKebabAction = useCallback(\n (itemId, action) => {\n if (setProps) {\n setProps({\n kebabAction: {\n itemId,\n action,\n event_timestamp: Date.now(),\n },\n });\n }\n },\n [setProps]\n );\n\n const controlsItemSet = useMemo(() => {\n if (!controlsItems || controlsItems.length === 0) return null;\n return new Set(controlsItems);\n }, [controlsItems]);\n\n const resolvedSliderColor = useMemo(\n () => resolveSliderColor(sliderColor),\n [sliderColor]\n );\n\n const controlsContextValue = useMemo(\n () => ({\n controlsItemSet,\n sliderValues: sliderValues || {},\n sliderMin,\n sliderMax,\n sliderStep,\n sliderColor: resolvedSliderColor,\n onSliderChange: handleSliderChange,\n kebabMenuItems: kebabMenuItems || [],\n onKebabAction: handleKebabAction,\n }),\n [\n controlsItemSet,\n sliderValues,\n sliderMin,\n sliderMax,\n sliderStep,\n resolvedSliderColor,\n kebabMenuItems,\n handleSliderChange,\n handleKebabAction,\n ]\n );\n\n // --- Slots ---\n const slots = useMemo(() => {\n const s = {};\n if (collapseIcon) s.collapseIcon = resolveIcon(collapseIcon);\n if (expandIcon) s.expandIcon = resolveIcon(expandIcon);\n if (endIcon) s.endIcon = resolveIcon(endIcon);\n if (showItemControls) s.item = CustomTreeItem;\n return Object.keys(s).length > 0 ? s : undefined;\n }, [collapseIcon, expandIcon, endIcon, showItemControls]);\n\n // --- Callbacks ---\n const handleSelectedItemsChange = useCallback(\n (event, itemIds) => {\n if (setProps) setProps({selectedItems: itemIds});\n },\n [setProps]\n );\n\n const handleExpandedItemsChange = useCallback(\n (event, itemIds) => {\n if (setProps) setProps({expandedItems: itemIds});\n\n // Lazy loading: fire request for items that have no children\n if (lazyLoading && setProps && itemIds) {\n const idProp = getItemIdProp || 'id';\n const childrenProp = getItemChildrenProp || 'children';\n const findItem = (nodes, targetId) => {\n if (!nodes) return null;\n for (const node of nodes) {\n if (node[idProp] === targetId) return node;\n const found = findItem(node[childrenProp], targetId);\n if (found) return found;\n }\n return null;\n };\n\n // Check newly expanded items for missing children\n for (const itemId of itemIds) {\n const item = findItem(items, itemId);\n if (item && !item[childrenProp]) {\n setProps({\n lazyLoadRequest: {\n itemId,\n event_timestamp: Date.now(),\n },\n });\n break;\n }\n }\n }\n },\n [setProps, lazyLoading, items, getItemIdProp, getItemChildrenProp]\n );\n\n const handleItemClick = useCallback(\n (event, itemId) => {\n if (setProps) setProps({clickedItem: {itemId, event_timestamp: Date.now()}});\n },\n [setProps]\n );\n\n const handleItemFocus = useCallback(\n (event, itemId) => {\n if (setProps) setProps({focusedItem: {itemId, event_timestamp: Date.now()}});\n },\n [setProps]\n );\n\n const handleItemLabelChange = useCallback(\n (itemId, newLabel) => {\n if (setProps) setProps({editedItemLabel: {itemId, newLabel, event_timestamp: Date.now()}});\n },\n [setProps]\n );\n\n // Track the live (reordered) tree so we can emit it as `orderedItems`.\n // Re-seed from the items prop whenever it changes externally.\n const orderedRef = useRef(itemsProp || []);\n useEffect(() => {\n orderedRef.current = itemsProp || [];\n }, [itemsProp]);\n\n const handleItemPositionChange = useCallback(\n (params) => {\n const updated = applyReorder(\n orderedRef.current,\n params,\n getItemIdProp,\n getItemChildrenProp\n );\n orderedRef.current = updated;\n if (setProps) {\n setProps({\n itemPositionChanged: {\n itemId: params.itemId,\n oldPosition: params.oldPosition,\n newPosition: params.newPosition,\n event_timestamp: Date.now(),\n },\n orderedItems: updated,\n });\n }\n },\n [setProps, getItemIdProp, getItemChildrenProp]\n );\n\n const containerStyle = useMemo(() => {\n const s = {};\n if (height) s.height = typeof height === 'number' ? `${height}px` : height;\n return s;\n }, [height]);\n\n return (\n \n
\n \n \n \n
\n
\n );\n};\n\nTreeViewPro.propTypes = {\n /** Dash component id */\n id: PropTypes.string,\n\n /** MUI X Pro license key. Required for Pro features. */\n licenseKey: PropTypes.string,\n\n /** Array of item objects. */\n items: PropTypes.arrayOf(PropTypes.object),\n\n // --- Accessors ---\n /** Property name for item ID (default: \"id\") */\n getItemId: PropTypes.string,\n\n /** Property name for item label (default: \"label\") */\n getItemLabel: PropTypes.string,\n\n /** Property name for item children (default: \"children\") */\n getItemChildren: PropTypes.string,\n\n // --- Selection ---\n /** Controlled selected item(s). String when multiSelect=false, array when true. */\n selectedItems: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /** Default selected items (uncontrolled). */\n defaultSelectedItems: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /** Allow selecting multiple items. */\n multiSelect: PropTypes.bool,\n\n /** Show checkboxes for selection. */\n checkboxSelection: PropTypes.bool,\n\n /** Disable all selection. */\n disableSelection: PropTypes.bool,\n\n /** Auto-propagate selection to parents/descendants. */\n selectionPropagation: PropTypes.exact({\n parents: PropTypes.bool,\n descendants: PropTypes.bool,\n }),\n\n // --- Expansion ---\n /** Controlled expanded item IDs. */\n expandedItems: PropTypes.arrayOf(PropTypes.string),\n\n /** Default expanded items (uncontrolled). */\n defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),\n\n /** What triggers expansion: \"content\" or \"iconContainer\". */\n expansionTrigger: PropTypes.oneOf(['content', 'iconContainer']),\n\n // --- Editing ---\n /** Enable label editing for all items. */\n isItemEditable: PropTypes.bool,\n\n /** List of item IDs that are editable. */\n editableItems: PropTypes.arrayOf(PropTypes.string),\n\n // --- Disabled ---\n /** List of item IDs that should be disabled. */\n disabledItems: PropTypes.arrayOf(PropTypes.string),\n\n /** Allow focus on disabled items. */\n disabledItemsFocusable: PropTypes.bool,\n\n // --- Appearance ---\n /** Indentation of children. */\n itemChildrenIndentation: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** Container height. */\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** MUI sx styling object. */\n sx: PropTypes.object,\n\n // --- Icons ---\n /** MUI icon name for collapse icon. */\n collapseIcon: PropTypes.string,\n\n /** MUI icon name for expand icon. */\n expandIcon: PropTypes.string,\n\n /** MUI icon name for leaf/end icon. */\n endIcon: PropTypes.string,\n\n // --- Accessibility ---\n /** ARIA label for the tree. */\n ariaLabel: PropTypes.string,\n\n /** ID of element that labels the tree. */\n ariaLabelledBy: PropTypes.string,\n\n // --- PRO: Ordering ---\n /** Enable drag-and-drop item reordering. */\n itemsReordering: PropTypes.bool,\n\n /** List of item IDs that can be reordered. If empty, all items are reorderable. */\n reorderableItems: PropTypes.arrayOf(PropTypes.string),\n\n /** Output: Fired after item reorder. {itemId, oldPosition, newPosition, event_timestamp} */\n itemPositionChanged: PropTypes.object,\n\n /**\n * Output: the current tree after any drag-and-drop reorder, preserving\n * each node's original fields (id, label, children, etc.). Updates on\n * every reorder so Python callbacks can render the live order.\n */\n orderedItems: PropTypes.arrayOf(PropTypes.object),\n\n // --- PRO: Lazy Loading ---\n /** Enable lazy loading mode. */\n lazyLoading: PropTypes.bool,\n\n /** Input: Children loaded by Dash callback. {parentItemId: [childItems]} */\n lazyLoadedChildren: PropTypes.object,\n\n /** Output: Fired when unloaded node is expanded. {itemId, event_timestamp} */\n lazyLoadRequest: PropTypes.exact({\n itemId: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n // --- Per-item controls (slider + kebab) ---\n /** Show a Slider + kebab menu on each item row. */\n showItemControls: PropTypes.bool,\n\n /** Restrict slider+kebab to a subset of item IDs. Empty/omitted means all items. */\n controlsItems: PropTypes.arrayOf(PropTypes.string),\n\n /** Controlled slider values keyed by itemId, e.g. {\"task-1\": 40}. Also updated as user drags. */\n sliderValues: PropTypes.object,\n\n /** Slider minimum. */\n sliderMin: PropTypes.number,\n\n /** Slider maximum. */\n sliderMax: PropTypes.number,\n\n /** Slider step. */\n sliderStep: PropTypes.number,\n\n /**\n * Slider color. Accepts a Mantine theme color name (\"teal\", \"blue.5\"),\n * a CSS color literal (\"#ff6b6b\", \"rgb(...)\"), or a CSS expression\n * (\"var(--mantine-color-teal-6)\", \"light-dark(...)\"). Bare names use\n * shade 6 by default. When omitted, the slider falls back to MUI's\n * `primary` palette color.\n */\n sliderColor: PropTypes.string,\n\n /** Kebab menu options: [{label, value, icon?}]. `value` is sent back as `action`. */\n kebabMenuItems: PropTypes.arrayOf(\n PropTypes.exact({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n icon: PropTypes.string,\n })\n ),\n\n /** Output: fires once on each commit (mouse-up) of a slider drag. {itemId, value, event_timestamp} */\n sliderChange: PropTypes.exact({\n itemId: PropTypes.string,\n value: PropTypes.number,\n event_timestamp: PropTypes.number,\n }),\n\n /** Output: fires when a kebab menu item is chosen. {itemId, action, event_timestamp} */\n kebabAction: PropTypes.exact({\n itemId: PropTypes.string,\n action: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n // --- Output Props ---\n /** Fired when item is clicked. {itemId, event_timestamp} */\n clickedItem: PropTypes.exact({\n itemId: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n /** Fired when item is focused. {itemId, event_timestamp} */\n focusedItem: PropTypes.exact({\n itemId: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n /** Fired when label edit completes. {itemId, newLabel, event_timestamp} */\n editedItemLabel: PropTypes.exact({\n itemId: PropTypes.string,\n newLabel: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n /** Dash setProps callback */\n setProps: PropTypes.func,\n};\n\nexport default TreeViewPro;\n","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"localeText\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const PickerAdapterContext = /*#__PURE__*/React.createContext(null);\n\n// TODO v9: Remove this public export\n/**\n * The context that provides the date adapter and default dates to the pickers.\n * @deprecated Use `usePickersAdapter` hook if you need access to the adapter instead.\n */\nif (process.env.NODE_ENV !== \"production\") PickerAdapterContext.displayName = \"PickerAdapterContext\";\nexport const MuiPickersAdapterContext = PickerAdapterContext;\n/**\n * Demos:\n *\n * - [Date format and localization](https://mui.com/x/react-date-pickers/adapters-locale/)\n * - [Calendar systems](https://mui.com/x/react-date-pickers/calendar-systems/)\n * - [Translated components](https://mui.com/x/react-date-pickers/localization/)\n * - [UTC and timezones](https://mui.com/x/react-date-pickers/timezone/)\n *\n * API:\n *\n * - [LocalizationProvider API](https://mui.com/x/api/date-pickers/localization-provider/)\n */\nexport const LocalizationProvider = function LocalizationProvider(inProps) {\n const {\n localeText: inLocaleText\n } = inProps,\n otherInProps = _objectWithoutPropertiesLoose(inProps, _excluded);\n const {\n adapter: parentAdapter,\n localeText: parentLocaleText\n } = React.useContext(PickerAdapterContext) ?? {\n utils: undefined,\n adapter: undefined,\n localeText: undefined\n };\n const props = useThemeProps({\n // We don't want to pass the `localeText` prop to the theme, that way it will always return the theme value,\n // We will then merge this theme value with our value manually\n props: otherInProps,\n name: 'MuiLocalizationProvider'\n });\n const {\n children,\n dateAdapter: DateAdapter,\n dateFormats,\n dateLibInstance,\n adapterLocale,\n localeText: themeLocaleText\n } = props;\n const localeText = React.useMemo(() => _extends({}, themeLocaleText, parentLocaleText, inLocaleText), [themeLocaleText, parentLocaleText, inLocaleText]);\n const adapter = React.useMemo(() => {\n if (!DateAdapter) {\n if (parentAdapter) {\n return parentAdapter;\n }\n return null;\n }\n const dateAdapter = new DateAdapter({\n locale: adapterLocale,\n formats: dateFormats,\n instance: dateLibInstance\n });\n if (!dateAdapter.isMUIAdapter) {\n throw new Error(['MUI X: The date adapter should be imported from `@mui/x-date-pickers` or `@mui/x-date-pickers-pro`, not from `@date-io`', \"For example, `import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'` instead of `import AdapterDayjs from '@date-io/dayjs'`\", 'More information on the installation documentation: https://mui.com/x/react-date-pickers/quickstart/#installation'].join(`\\n`));\n }\n return dateAdapter;\n }, [DateAdapter, adapterLocale, dateFormats, dateLibInstance, parentAdapter]);\n const defaultDates = React.useMemo(() => {\n if (!adapter) {\n return null;\n }\n return {\n minDate: adapter.date('1900-01-01T00:00:00.000'),\n maxDate: adapter.date('2099-12-31T00:00:00.000')\n };\n }, [adapter]);\n const contextValue = React.useMemo(() => {\n return {\n utils: adapter,\n adapter,\n defaultDates,\n localeText\n };\n }, [defaultDates, adapter, localeText]);\n return /*#__PURE__*/_jsx(PickerAdapterContext.Provider, {\n value: contextValue,\n children: children\n });\n};\nif (process.env.NODE_ENV !== \"production\") LocalizationProvider.displayName = \"LocalizationProvider\";\nprocess.env.NODE_ENV !== \"production\" ? LocalizationProvider.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Locale for the date library you are using\n */\n adapterLocale: PropTypes.any,\n children: PropTypes.node,\n /**\n * Date library adapter class function.\n * @see See the localization provider {@link https://mui.com/x/react-date-pickers/quickstart/#integrate-provider-and-adapter date adapter setup section} for more details.\n */\n dateAdapter: PropTypes.func,\n /**\n * Formats that are used for any child pickers\n */\n dateFormats: PropTypes.shape({\n dayOfMonth: PropTypes.string,\n dayOfMonthFull: PropTypes.string,\n fullDate: PropTypes.string,\n fullTime12h: PropTypes.string,\n fullTime24h: PropTypes.string,\n hours12h: PropTypes.string,\n hours24h: PropTypes.string,\n keyboardDate: PropTypes.string,\n keyboardDateTime12h: PropTypes.string,\n keyboardDateTime24h: PropTypes.string,\n meridiem: PropTypes.string,\n minutes: PropTypes.string,\n month: PropTypes.string,\n monthShort: PropTypes.string,\n normalDate: PropTypes.string,\n normalDateWithWeekday: PropTypes.string,\n seconds: PropTypes.string,\n shortDate: PropTypes.string,\n weekday: PropTypes.string,\n weekdayShort: PropTypes.string,\n year: PropTypes.string\n }),\n /**\n * Date library instance you are using, if it has some global overrides\n * ```jsx\n * dateLibInstance={momentTimeZone}\n * ```\n */\n dateLibInstance: PropTypes.any,\n /**\n * Locale for components texts\n */\n localeText: PropTypes.object\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* v8 ignore start */\nimport dayjs from 'dayjs';\n// dayjs has no exports field defined\n// See https://github.com/iamkun/dayjs/issues/2562\n/* eslint-disable import/extensions */\nimport weekOfYearPlugin from 'dayjs/plugin/weekOfYear.js';\nimport customParseFormatPlugin from 'dayjs/plugin/customParseFormat.js';\nimport localizedFormatPlugin from 'dayjs/plugin/localizedFormat.js';\nimport isBetweenPlugin from 'dayjs/plugin/isBetween.js';\nimport advancedFormatPlugin from 'dayjs/plugin/advancedFormat.js';\n/* v8 ignore stop */\n/* eslint-enable import/extensions */\nimport { warnOnce } from '@mui/x-internals/warning';\ndayjs.extend(localizedFormatPlugin);\ndayjs.extend(weekOfYearPlugin);\ndayjs.extend(isBetweenPlugin);\ndayjs.extend(advancedFormatPlugin);\nconst formatTokenMap = {\n // Year\n YY: 'year',\n YYYY: {\n sectionType: 'year',\n contentType: 'digit',\n maxLength: 4\n },\n // Month\n M: {\n sectionType: 'month',\n contentType: 'digit',\n maxLength: 2\n },\n MM: 'month',\n MMM: {\n sectionType: 'month',\n contentType: 'letter'\n },\n MMMM: {\n sectionType: 'month',\n contentType: 'letter'\n },\n // Day of the month\n D: {\n sectionType: 'day',\n contentType: 'digit',\n maxLength: 2\n },\n DD: 'day',\n Do: {\n sectionType: 'day',\n contentType: 'digit-with-letter'\n },\n // Day of the week\n d: {\n sectionType: 'weekDay',\n contentType: 'digit',\n maxLength: 2\n },\n dd: {\n sectionType: 'weekDay',\n contentType: 'letter'\n },\n ddd: {\n sectionType: 'weekDay',\n contentType: 'letter'\n },\n dddd: {\n sectionType: 'weekDay',\n contentType: 'letter'\n },\n // Meridiem\n A: 'meridiem',\n a: 'meridiem',\n // Hours\n H: {\n sectionType: 'hours',\n contentType: 'digit',\n maxLength: 2\n },\n HH: 'hours',\n h: {\n sectionType: 'hours',\n contentType: 'digit',\n maxLength: 2\n },\n hh: 'hours',\n // Minutes\n m: {\n sectionType: 'minutes',\n contentType: 'digit',\n maxLength: 2\n },\n mm: 'minutes',\n // Seconds\n s: {\n sectionType: 'seconds',\n contentType: 'digit',\n maxLength: 2\n },\n ss: 'seconds'\n};\nconst defaultFormats = {\n year: 'YYYY',\n month: 'MMMM',\n monthShort: 'MMM',\n dayOfMonth: 'D',\n dayOfMonthFull: 'Do',\n weekday: 'dddd',\n weekdayShort: 'dd',\n hours24h: 'HH',\n hours12h: 'hh',\n meridiem: 'A',\n minutes: 'mm',\n seconds: 'ss',\n fullDate: 'll',\n keyboardDate: 'L',\n shortDate: 'MMM D',\n normalDate: 'D MMMM',\n normalDateWithWeekday: 'ddd, MMM D',\n fullTime12h: 'hh:mm A',\n fullTime24h: 'HH:mm',\n keyboardDateTime12h: 'L hh:mm A',\n keyboardDateTime24h: 'L HH:mm'\n};\nconst MISSING_UTC_PLUGIN = ['Missing UTC plugin', 'To be able to use UTC or timezones, you have to enable the `utc` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc'].join('\\n');\nconst MISSING_TIMEZONE_PLUGIN = ['Missing timezone plugin', 'To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone'].join('\\n');\n/**\n * Based on `@date-io/dayjs`\n *\n * MIT License\n *\n * Copyright (c) 2017 Dmitriy Kovalenko\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport class AdapterDayjs {\n isMUIAdapter = true;\n isTimezoneCompatible = true;\n lib = 'dayjs';\n escapedCharacters = {\n start: '[',\n end: ']'\n };\n formatTokenMap = (() => formatTokenMap)();\n constructor({\n locale,\n formats\n } = {}) {\n this.locale = locale;\n this.formats = _extends({}, defaultFormats, formats);\n\n // Moved plugins to the constructor to allow for users to use options on the library\n // for reference: https://github.com/mui/mui-x/pull/11151\n dayjs.extend(customParseFormatPlugin);\n }\n setLocaleToValue = value => {\n const expectedLocale = this.getCurrentLocaleCode();\n if (expectedLocale === value.locale()) {\n return value;\n }\n return value.locale(expectedLocale);\n };\n hasUTCPlugin = () => typeof dayjs.utc !== 'undefined';\n hasTimezonePlugin = () => typeof dayjs.tz !== 'undefined';\n isSame = (value, comparing, comparisonTemplate) => {\n const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));\n return value.format(comparisonTemplate) === comparingInValueTimezone.format(comparisonTemplate);\n };\n\n /**\n * Replaces \"default\" by undefined and \"system\" by the system timezone before passing it to `dayjs`.\n */\n cleanTimezone = timezone => {\n switch (timezone) {\n case 'default':\n {\n return undefined;\n }\n case 'system':\n {\n return dayjs.tz.guess();\n }\n default:\n {\n return timezone;\n }\n }\n };\n createSystemDate = value => {\n let date;\n if (this.hasUTCPlugin() && this.hasTimezonePlugin()) {\n const timezone = dayjs.tz.guess();\n if (timezone === 'UTC') {\n date = dayjs(value);\n } /* v8 ignore next 3 */else {\n // We can't change the system timezone in the tests\n date = dayjs.tz(value, timezone);\n }\n } else {\n date = dayjs(value);\n }\n return this.setLocaleToValue(date);\n };\n createUTCDate = value => {\n /* v8 ignore next 3 */\n if (!this.hasUTCPlugin()) {\n throw new Error(MISSING_UTC_PLUGIN);\n }\n return this.setLocaleToValue(dayjs.utc(value));\n };\n createTZDate = (value, timezone) => {\n /* v8 ignore next 3 */\n if (!this.hasUTCPlugin()) {\n throw new Error(MISSING_UTC_PLUGIN);\n }\n\n /* v8 ignore next 3 */\n if (!this.hasTimezonePlugin()) {\n throw new Error(MISSING_TIMEZONE_PLUGIN);\n }\n const keepLocalTime = value !== undefined && !value.endsWith('Z');\n return this.setLocaleToValue(dayjs(value).tz(this.cleanTimezone(timezone), keepLocalTime));\n };\n getLocaleFormats = () => {\n const locales = dayjs.Ls;\n const locale = this.locale || 'en';\n let localeObject = locales[locale];\n if (localeObject === undefined) {\n /* v8 ignore start */\n if (process.env.NODE_ENV !== 'production') {\n warnOnce(['MUI X: Your locale has not been found.', 'Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale.', \"Or you forget to import the locale from 'dayjs/locale/{localeUsed}'\", 'fallback on English locale.']);\n }\n /* v8 ignore stop */\n localeObject = locales.en;\n }\n return localeObject.formats;\n };\n\n /**\n * If the new day does not have the same offset as the old one (when switching to summer day time for example),\n * Then dayjs will not automatically adjust the offset (moment does).\n * We have to parse again the value to make sure the `fixOffset` method is applied.\n * See https://github.com/iamkun/dayjs/blob/b3624de619d6e734cd0ffdbbd3502185041c1b60/src/plugin/timezone/index.js#L72\n */\n adjustOffset = value => {\n if (!this.hasTimezonePlugin()) {\n return value;\n }\n const timezone = this.getTimezone(value);\n if (timezone !== 'UTC') {\n const fixedValue = value.tz(this.cleanTimezone(timezone), true);\n // TODO: Simplify the case when we raise the `dayjs` peer dep to 1.11.12 (https://github.com/iamkun/dayjs/releases/tag/v1.11.12)\n /* v8 ignore next 3 */\n // @ts-ignore\n if (fixedValue.$offset === (value.$offset ?? 0)) {\n return value;\n }\n // Change only what is needed to avoid creating a new object with unwanted data\n // Especially important when used in an environment where utc or timezone dates are used only in some places\n // Reference: https://github.com/mui/mui-x/issues/13290\n // @ts-ignore\n value.$offset = fixedValue.$offset;\n }\n return value;\n };\n date = (value, timezone = 'default') => {\n if (value === null) {\n return null;\n }\n if (timezone === 'UTC') {\n return this.createUTCDate(value);\n }\n if (timezone === 'system' || timezone === 'default' && !this.hasTimezonePlugin()) {\n return this.createSystemDate(value);\n }\n return this.createTZDate(value, timezone);\n };\n getInvalidDate = () => dayjs(new Date('Invalid date'));\n getTimezone = value => {\n if (this.hasTimezonePlugin()) {\n // @ts-ignore\n const zone = value.$x?.$timezone;\n if (zone) {\n return zone;\n }\n }\n if (this.hasUTCPlugin() && value.isUTC()) {\n return 'UTC';\n }\n return 'system';\n };\n setTimezone = (value, timezone) => {\n if (this.getTimezone(value) === timezone) {\n return value;\n }\n if (timezone === 'UTC') {\n /* v8 ignore next 3 */\n if (!this.hasUTCPlugin()) {\n throw new Error(MISSING_UTC_PLUGIN);\n }\n return value.utc();\n }\n\n // We know that we have the UTC plugin.\n // Otherwise, the value timezone would always equal \"system\".\n // And it would be caught by the first \"if\" of this method.\n if (timezone === 'system') {\n return value.local();\n }\n if (!this.hasTimezonePlugin()) {\n if (timezone === 'default') {\n return value;\n }\n\n /* v8 ignore next */\n throw new Error(MISSING_TIMEZONE_PLUGIN);\n }\n return this.setLocaleToValue(dayjs.tz(value, this.cleanTimezone(timezone)));\n };\n toJsDate = value => {\n return value.toDate();\n };\n parse = (value, format) => {\n if (value === '') {\n return null;\n }\n return dayjs(value, format, this.locale, true);\n };\n getCurrentLocaleCode = () => {\n return this.locale || 'en';\n };\n is12HourCycleInCurrentLocale = () => {\n /* v8 ignore next */\n return /A|a/.test(this.getLocaleFormats().LT || '');\n };\n expandFormat = format => {\n const localeFormats = this.getLocaleFormats();\n\n // @see https://github.com/iamkun/dayjs/blob/dev/src/plugin/localizedFormat/index.js\n const t = formatBis => formatBis.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, (_, a, b) => a || b.slice(1));\n return format.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g, (_, a, b) => {\n const B = b && b.toUpperCase();\n return a || localeFormats[b] || t(localeFormats[B]);\n });\n };\n isValid = value => {\n if (value == null) {\n return false;\n }\n return value.isValid();\n };\n format = (value, formatKey) => {\n return this.formatByString(value, this.formats[formatKey]);\n };\n formatByString = (value, formatString) => {\n return this.setLocaleToValue(value).format(formatString);\n };\n formatNumber = numberToFormat => {\n return numberToFormat;\n };\n isEqual = (value, comparing) => {\n if (value === null && comparing === null) {\n return true;\n }\n if (value === null || comparing === null) {\n return false;\n }\n return value.toDate().getTime() === comparing.toDate().getTime();\n };\n isSameYear = (value, comparing) => {\n return this.isSame(value, comparing, 'YYYY');\n };\n isSameMonth = (value, comparing) => {\n return this.isSame(value, comparing, 'YYYY-MM');\n };\n isSameDay = (value, comparing) => {\n return this.isSame(value, comparing, 'YYYY-MM-DD');\n };\n isSameHour = (value, comparing) => {\n return value.isSame(comparing, 'hour');\n };\n isAfter = (value, comparing) => {\n return value > comparing;\n };\n isAfterYear = (value, comparing) => {\n if (!this.hasUTCPlugin()) {\n return value.isAfter(comparing, 'year');\n }\n return !this.isSameYear(value, comparing) && value.utc() > comparing.utc();\n };\n isAfterDay = (value, comparing) => {\n if (!this.hasUTCPlugin()) {\n return value.isAfter(comparing, 'day');\n }\n return !this.isSameDay(value, comparing) && value.utc() > comparing.utc();\n };\n isBefore = (value, comparing) => {\n return value < comparing;\n };\n isBeforeYear = (value, comparing) => {\n if (!this.hasUTCPlugin()) {\n return value.isBefore(comparing, 'year');\n }\n return !this.isSameYear(value, comparing) && value.utc() < comparing.utc();\n };\n isBeforeDay = (value, comparing) => {\n if (!this.hasUTCPlugin()) {\n return value.isBefore(comparing, 'day');\n }\n return !this.isSameDay(value, comparing) && value.utc() < comparing.utc();\n };\n isWithinRange = (value, [start, end]) => {\n return value >= start && value <= end;\n };\n startOfYear = value => {\n return this.adjustOffset(value.startOf('year'));\n };\n startOfMonth = value => {\n return this.adjustOffset(value.startOf('month'));\n };\n startOfWeek = value => {\n return this.adjustOffset(this.setLocaleToValue(value).startOf('week'));\n };\n startOfDay = value => {\n return this.adjustOffset(value.startOf('day'));\n };\n endOfYear = value => {\n return this.adjustOffset(value.endOf('year'));\n };\n endOfMonth = value => {\n return this.adjustOffset(value.endOf('month'));\n };\n endOfWeek = value => {\n return this.adjustOffset(this.setLocaleToValue(value).endOf('week'));\n };\n endOfDay = value => {\n return this.adjustOffset(value.endOf('day'));\n };\n addYears = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'year'));\n };\n addMonths = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'month'));\n };\n addWeeks = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'week'));\n };\n addDays = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'day'));\n };\n addHours = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'hour'));\n };\n addMinutes = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'minute'));\n };\n addSeconds = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'second'));\n };\n getYear = value => {\n return value.year();\n };\n getMonth = value => {\n return value.month();\n };\n getDate = value => {\n return value.date();\n };\n getHours = value => {\n return value.hour();\n };\n getMinutes = value => {\n return value.minute();\n };\n getSeconds = value => {\n return value.second();\n };\n getMilliseconds = value => {\n return value.millisecond();\n };\n setYear = (value, year) => {\n return this.adjustOffset(value.set('year', year));\n };\n setMonth = (value, month) => {\n return this.adjustOffset(value.set('month', month));\n };\n setDate = (value, date) => {\n return this.adjustOffset(value.set('date', date));\n };\n setHours = (value, hours) => {\n return this.adjustOffset(value.set('hour', hours));\n };\n setMinutes = (value, minutes) => {\n return this.adjustOffset(value.set('minute', minutes));\n };\n setSeconds = (value, seconds) => {\n return this.adjustOffset(value.set('second', seconds));\n };\n setMilliseconds = (value, milliseconds) => {\n return this.adjustOffset(value.set('millisecond', milliseconds));\n };\n getDaysInMonth = value => {\n return value.daysInMonth();\n };\n getWeekArray = value => {\n const start = this.startOfWeek(this.startOfMonth(value));\n const end = this.endOfWeek(this.endOfMonth(value));\n let count = 0;\n let current = start;\n const nestedWeeks = [];\n while (current < end) {\n const weekNumber = Math.floor(count / 7);\n nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n nestedWeeks[weekNumber].push(current);\n current = this.addDays(current, 1);\n count += 1;\n }\n return nestedWeeks;\n };\n getWeekNumber = value => {\n return value.week();\n };\n getDayOfWeek(value) {\n return value.day() + 1;\n }\n getYearRange = ([start, end]) => {\n const startDate = this.startOfYear(start);\n const endDate = this.endOfYear(end);\n const years = [];\n let current = startDate;\n while (this.isBefore(current, endDate)) {\n years.push(current);\n current = this.addYears(current, 1);\n }\n return years;\n };\n}","/* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0\n ---\n These rules are preventing the performance optimizations below.\n */\n\n/**\n * Compose classes from multiple sources.\n *\n * @example\n * ```tsx\n * const slots = {\n * root: ['root', 'primary'],\n * label: ['label'],\n * };\n *\n * const getUtilityClass = (slot) => `MuiButton-${slot}`;\n *\n * const classes = {\n * root: 'my-root-class',\n * };\n *\n * const output = composeClasses(slots, getUtilityClass, classes);\n * // {\n * // root: 'MuiButton-root MuiButton-primary my-root-class',\n * // label: 'MuiButton-label',\n * // }\n * ```\n *\n * @param slots a list of classes for each possible slot\n * @param getUtilityClass a function to resolve the class based on the slot name\n * @param classes the input classes from props\n * @returns the resolved classes for all slots\n */\nexport default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n for (const slotName in slots) {\n const slot = slots[slotName];\n let buffer = '';\n let start = true;\n for (let i = 0; i < slot.length; i += 1) {\n const value = slot[i];\n if (value) {\n buffer += (start === true ? '' : ' ') + getUtilityClass(value);\n start = false;\n if (classes && classes[value]) {\n buffer += ' ' + classes[value];\n }\n }\n }\n output[slotName] = buffer;\n }\n return output;\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// See https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379 for why\nconst safeReact = {\n ...React\n};\nconst maybeReactUseId = safeReact.useId;\n\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n // React.useId() is only available from React 17.0.0.\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride ?? reactId;\n }\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const getPickersLocalization = pickersTranslations => {\n return {\n components: {\n MuiLocalizationProvider: {\n defaultProps: {\n localeText: _extends({}, pickersTranslations)\n }\n }\n }\n };\n};","import { getPickersLocalization } from \"./utils/getPickersLocalization.js\";\n\n// This object is not Partial because it is the default values\n\nconst enUSPickers = {\n // Calendar navigation\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n // View navigation\n openPreviousView: 'Open previous view',\n openNextView: 'Open next view',\n calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'year view is open, switch to calendar view' : 'calendar view is open, switch to year view',\n // DateRange labels\n start: 'Start',\n end: 'End',\n startDate: 'Start date',\n startTime: 'Start time',\n endDate: 'End date',\n endTime: 'End time',\n // Action bar\n cancelButtonLabel: 'Cancel',\n clearButtonLabel: 'Clear',\n okButtonLabel: 'OK',\n todayButtonLabel: 'Today',\n nextStepButtonLabel: 'Next',\n // Toolbar titles\n datePickerToolbarTitle: 'Select date',\n dateTimePickerToolbarTitle: 'Select date & time',\n timePickerToolbarTitle: 'Select time',\n dateRangePickerToolbarTitle: 'Select date range',\n timeRangePickerToolbarTitle: 'Select time range',\n // Clock labels\n clockLabelText: (view, formattedTime) => `Select ${view}. ${!formattedTime ? 'No time selected' : `Selected time is ${formattedTime}`}`,\n hoursClockNumberText: hours => `${hours} hours`,\n minutesClockNumberText: minutes => `${minutes} minutes`,\n secondsClockNumberText: seconds => `${seconds} seconds`,\n // Digital clock labels\n selectViewText: view => `Select ${view}`,\n // Calendar labels\n calendarWeekNumberHeaderLabel: 'Week number',\n calendarWeekNumberHeaderText: '#',\n calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,\n calendarWeekNumberText: weekNumber => `${weekNumber}`,\n // Open Picker labels\n openDatePickerDialogue: formattedDate => formattedDate ? `Choose date, selected date is ${formattedDate}` : 'Choose date',\n openTimePickerDialogue: formattedTime => formattedTime ? `Choose time, selected time is ${formattedTime}` : 'Choose time',\n openRangePickerDialogue: formattedRange => formattedRange ? `Choose range, selected range is ${formattedRange}` : 'Choose range',\n fieldClearLabel: 'Clear',\n // Table labels\n timeTableLabel: 'pick time',\n dateTableLabel: 'pick date',\n // Field section placeholders\n fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),\n fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',\n fieldDayPlaceholder: () => 'DD',\n fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',\n fieldHoursPlaceholder: () => 'hh',\n fieldMinutesPlaceholder: () => 'mm',\n fieldSecondsPlaceholder: () => 'ss',\n fieldMeridiemPlaceholder: () => 'aa',\n // View names\n year: 'Year',\n month: 'Month',\n day: 'Day',\n weekDay: 'Week day',\n hours: 'Hours',\n minutes: 'Minutes',\n seconds: 'Seconds',\n meridiem: 'Meridiem',\n // Common\n empty: 'Empty'\n};\nexport const DEFAULT_LOCALE = enUSPickers;\nexport const enUS = getPickersLocalization(enUSPickers);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { DEFAULT_LOCALE } from \"../locales/enUS.js\";\nimport { PickerAdapterContext } from \"../LocalizationProvider/LocalizationProvider.js\";\nexport const useLocalizationContext = () => {\n const localization = React.useContext(PickerAdapterContext);\n if (localization === null) {\n throw new Error(['MUI X: Can not find the date and time pickers localization context.', 'It looks like you forgot to wrap your component in LocalizationProvider.', 'This can also happen if you are bundling multiple versions of the `@mui/x-date-pickers` package'].join('\\n'));\n }\n if (localization.adapter === null) {\n throw new Error(['MUI X: Can not find the date and time pickers adapter from its localization context.', 'It looks like you forgot to pass a `dateAdapter` to your LocalizationProvider.'].join('\\n'));\n }\n const localeText = React.useMemo(() => _extends({}, DEFAULT_LOCALE, localization.localeText), [localization.localeText]);\n return React.useMemo(() => _extends({}, localization, {\n localeText\n }), [localization, localeText]);\n};\nexport const usePickerAdapter = () => useLocalizationContext().adapter;","'use client';\n\nimport { useLocalizationContext } from \"./usePickerAdapter.js\";\nexport const usePickerTranslations = () => useLocalizationContext().localeText;","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nfunction omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}\nexport default omitEventHandlers;","import clsx from 'clsx';\nimport extractEventHandlers from \"../extractEventHandlers/index.js\";\nimport omitEventHandlers from \"../omitEventHandlers/index.js\";\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nfunction mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n const mergedStyle = {\n ...additionalProps?.style,\n ...externalForwardedProps?.style,\n ...externalSlotProps?.style\n };\n const props = {\n ...additionalProps,\n ...externalForwardedProps,\n ...externalSlotProps\n };\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers({\n ...externalForwardedProps,\n ...externalSlotProps\n });\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming Base UI) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n const mergedStyle = {\n ...internalSlotProps?.style,\n ...additionalProps?.style,\n ...externalForwardedProps?.style,\n ...externalSlotProps?.style\n };\n const props = {\n ...internalSlotProps,\n ...additionalProps,\n ...otherPropsWithoutEventHandlers,\n ...componentsPropsWithoutEventHandlers\n };\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}\nexport default mergeSlotProps;","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nfunction extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}\nexport default extractEventHandlers;","'use client';\n\nimport useForkRef from \"../useForkRef/index.js\";\nimport appendOwnerState from \"../appendOwnerState/index.js\";\nimport mergeSlotProps from \"../mergeSlotProps/index.js\";\nimport resolveComponentProps from \"../resolveComponentProps/index.js\";\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nfunction useSlotProps(parameters) {\n const {\n elementType,\n externalSlotProps,\n ownerState,\n skipResolvingSlotProps = false,\n ...other\n } = parameters;\n const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps({\n ...other,\n externalSlotProps: resolvedComponentsProps\n });\n const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.additionalProps?.ref);\n const props = appendOwnerState(elementType, {\n ...mergedProps,\n ref\n }, ownerState);\n return props;\n}\nexport default useSlotProps;","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nfunction resolveComponentProps(componentProps, ownerState, slotState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState, slotState);\n }\n return componentProps;\n}\nexport default resolveComponentProps;","'use client';\n\nimport * as React from 'react';\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n *\n * ```tsx\n * const rootRef = React.useRef(null);\n * const refFork = useForkRef(rootRef, props.ref);\n *\n * return (\n * \n * );\n * ```\n *\n * @param {Array | undefined>} refs The ref array.\n * @returns {React.RefCallback | null} The new ref callback.\n */\nexport default function useForkRef(...refs) {\n const cleanupRef = React.useRef(undefined);\n const refEffect = React.useCallback(instance => {\n const cleanups = refs.map(ref => {\n if (ref == null) {\n return null;\n }\n if (typeof ref === 'function') {\n const refCallback = ref;\n const refCleanup = refCallback(instance);\n return typeof refCleanup === 'function' ? refCleanup : () => {\n refCallback(null);\n };\n }\n ref.current = instance;\n return () => {\n ref.current = null;\n };\n });\n return () => {\n cleanups.forEach(refCleanup => refCleanup?.());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = undefined;\n }\n if (value != null) {\n cleanupRef.current = refEffect(value);\n }\n };\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- intentionally ignoring that the dependency array must be an array literal\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","import isHostComponent from \"../isHostComponent/index.js\";\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nfunction appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return {\n ...otherProps,\n ownerState: {\n ...otherProps.ownerState,\n ...ownerState\n }\n };\n}\nexport default appendOwnerState;","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n return typeof element === 'string';\n}\nexport default isHostComponent;","import { createSvgIcon } from '@mui/material/utils';\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ArrowDropDownIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');\n\n/**\n * @ignore - internal component.\n */\nexport const ArrowLeftIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'ArrowLeft');\n\n/**\n * @ignore - internal component.\n */\nexport const ArrowRightIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'ArrowRight');\n\n/**\n * @ignore - internal component.\n */\nexport const CalendarIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"\n}), 'Calendar');\n\n/**\n * @ignore - internal component.\n */\nexport const ClockIcon = createSvgIcon(/*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.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\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Clock');\n\n/**\n * @ignore - internal component.\n */\nexport const DateRangeIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z\"\n}), 'DateRange');\n\n/**\n * @ignore - internal component.\n */\nexport const TimeIcon = createSvgIcon(/*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.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\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Time');\n\n/**\n * @ignore - internal component.\n */\nexport const ClearIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n 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\"\n}), 'Clear');","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickersArrowSwitcherUtilityClass(slot) {\n return generateUtilityClass('MuiPickersArrowSwitcher', slot);\n}\nexport const pickersArrowSwitcherClasses = generateUtilityClasses('MuiPickersArrowSwitcher', ['root', 'spacer', 'button', 'previousIconButton', 'nextIconButton', 'leftArrowIcon', 'rightArrowIcon']);","'use client';\n\nimport * as React from 'react';\nimport { LocalizationProvider } from \"../../LocalizationProvider/index.js\";\nimport { IsValidValueContext } from \"../../hooks/useIsValidValue.js\";\nimport { PickerFieldPrivateContext } from \"../hooks/useNullableFieldPrivateContext.js\";\nimport { PickerContext } from \"../../hooks/usePickerContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const PickerActionsContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") PickerActionsContext.displayName = \"PickerActionsContext\";\nexport const PickerPrivateContext = /*#__PURE__*/React.createContext({\n ownerState: {\n isPickerDisabled: false,\n isPickerReadOnly: false,\n isPickerValueEmpty: false,\n isPickerOpen: false,\n pickerVariant: 'desktop',\n pickerOrientation: 'portrait'\n },\n rootRefObject: {\n current: null\n },\n labelId: undefined,\n dismissViews: () => {},\n hasUIView: true,\n getCurrentViewMode: () => 'UI',\n triggerElement: null,\n viewContainerRole: null,\n defaultActionBarActions: [],\n onPopperExited: undefined\n});\n\n/**\n * Provides the context for the various parts of a Picker component:\n * - contextValue: the context for the Picker sub-components.\n * - localizationProvider: the translations passed through the props and through a parent LocalizationProvider.\n *\n * @ignore - do not document.\n */\nif (process.env.NODE_ENV !== \"production\") PickerPrivateContext.displayName = \"PickerPrivateContext\";\nexport function PickerProvider(props) {\n const {\n contextValue,\n actionsContextValue,\n privateContextValue,\n fieldPrivateContextValue,\n isValidContextValue,\n localeText,\n children\n } = props;\n return /*#__PURE__*/_jsx(PickerContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(PickerActionsContext.Provider, {\n value: actionsContextValue,\n children: /*#__PURE__*/_jsx(PickerPrivateContext.Provider, {\n value: privateContextValue,\n children: /*#__PURE__*/_jsx(PickerFieldPrivateContext.Provider, {\n value: fieldPrivateContextValue,\n children: /*#__PURE__*/_jsx(IsValidValueContext.Provider, {\n value: isValidContextValue,\n children: /*#__PURE__*/_jsx(LocalizationProvider, {\n localeText: localeText,\n children: children\n })\n })\n })\n })\n })\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { PickerPrivateContext } from \"../components/PickerProvider.js\";\n\n/**\n * Returns the private context passed by the Picker wrapping the current component.\n */\nexport const usePickerPrivateContext = () => React.useContext(PickerPrivateContext);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"slots\", \"slotProps\", \"isNextDisabled\", \"isNextHidden\", \"onGoToNext\", \"nextLabel\", \"isPreviousDisabled\", \"isPreviousHidden\", \"onGoToPrevious\", \"previousLabel\", \"labelId\", \"classes\"],\n _excluded2 = [\"ownerState\"],\n _excluded3 = [\"ownerState\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport IconButton from '@mui/material/IconButton';\nimport { ArrowLeftIcon, ArrowRightIcon } from \"../../../icons/index.js\";\nimport { getPickersArrowSwitcherUtilityClass } from \"./pickersArrowSwitcherClasses.js\";\nimport { usePickerPrivateContext } from \"../../hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersArrowSwitcherRoot = styled('div', {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Root'\n})({\n display: 'flex'\n});\nconst PickersArrowSwitcherSpacer = styled('div', {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Spacer'\n})(({\n theme\n}) => ({\n width: theme.spacing(3)\n}));\nconst PickersArrowSwitcherButton = styled(IconButton, {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Button'\n})({\n variants: [{\n props: {\n isButtonHidden: true\n },\n style: {\n visibility: 'hidden'\n }\n }]\n});\nconst useUtilityClasses = classes => {\n const slots = {\n root: ['root'],\n spacer: ['spacer'],\n button: ['button'],\n previousIconButton: ['previousIconButton'],\n nextIconButton: ['nextIconButton'],\n leftArrowIcon: ['leftArrowIcon'],\n rightArrowIcon: ['rightArrowIcon']\n };\n return composeClasses(slots, getPickersArrowSwitcherUtilityClass, classes);\n};\nexport const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function PickersArrowSwitcher(inProps, ref) {\n const isRtl = useRtl();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersArrowSwitcher'\n });\n const {\n children,\n className,\n slots,\n slotProps,\n isNextDisabled,\n isNextHidden,\n onGoToNext,\n nextLabel,\n isPreviousDisabled,\n isPreviousHidden,\n onGoToPrevious,\n previousLabel,\n labelId,\n classes: classesProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n ownerState\n } = usePickerPrivateContext();\n const classes = useUtilityClasses(classesProp);\n const nextProps = {\n isDisabled: isNextDisabled,\n isHidden: isNextHidden,\n goTo: onGoToNext,\n label: nextLabel\n };\n const previousProps = {\n isDisabled: isPreviousDisabled,\n isHidden: isPreviousHidden,\n goTo: onGoToPrevious,\n label: previousLabel\n };\n const PreviousIconButton = slots?.previousIconButton ?? PickersArrowSwitcherButton;\n const previousIconButtonProps = useSlotProps({\n elementType: PreviousIconButton,\n externalSlotProps: slotProps?.previousIconButton,\n additionalProps: {\n size: 'medium',\n title: previousProps.label,\n 'aria-label': previousProps.label,\n disabled: previousProps.isDisabled,\n edge: 'end',\n onClick: previousProps.goTo\n },\n ownerState: _extends({}, ownerState, {\n isButtonHidden: previousProps.isHidden ?? false\n }),\n className: clsx(classes.button, classes.previousIconButton)\n });\n const NextIconButton = slots?.nextIconButton ?? PickersArrowSwitcherButton;\n const nextIconButtonProps = useSlotProps({\n elementType: NextIconButton,\n externalSlotProps: slotProps?.nextIconButton,\n additionalProps: {\n size: 'medium',\n title: nextProps.label,\n 'aria-label': nextProps.label,\n disabled: nextProps.isDisabled,\n edge: 'start',\n onClick: nextProps.goTo\n },\n ownerState: _extends({}, ownerState, {\n isButtonHidden: nextProps.isHidden ?? false\n }),\n className: clsx(classes.button, classes.nextIconButton)\n });\n const LeftArrowIcon = slots?.leftArrowIcon ?? ArrowLeftIcon;\n // The spread is here to avoid this bug mui/material-ui#34056\n const _useSlotProps = useSlotProps({\n elementType: LeftArrowIcon,\n externalSlotProps: slotProps?.leftArrowIcon,\n additionalProps: {\n fontSize: 'inherit'\n },\n ownerState,\n className: classes.leftArrowIcon\n }),\n leftArrowIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n const RightArrowIcon = slots?.rightArrowIcon ?? ArrowRightIcon;\n // The spread is here to avoid this bug mui/material-ui#34056\n const _useSlotProps2 = useSlotProps({\n elementType: RightArrowIcon,\n externalSlotProps: slotProps?.rightArrowIcon,\n additionalProps: {\n fontSize: 'inherit'\n },\n ownerState,\n className: classes.rightArrowIcon\n }),\n rightArrowIconProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);\n return /*#__PURE__*/_jsxs(PickersArrowSwitcherRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(PreviousIconButton, _extends({}, previousIconButtonProps, {\n children: isRtl ? /*#__PURE__*/_jsx(RightArrowIcon, _extends({}, rightArrowIconProps)) : /*#__PURE__*/_jsx(LeftArrowIcon, _extends({}, leftArrowIconProps))\n })), children ? /*#__PURE__*/_jsx(Typography, {\n variant: \"subtitle1\",\n component: \"span\",\n id: labelId,\n children: children\n }) : /*#__PURE__*/_jsx(PickersArrowSwitcherSpacer, {\n className: classes.spacer,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(NextIconButton, _extends({}, nextIconButtonProps, {\n children: isRtl ? /*#__PURE__*/_jsx(LeftArrowIcon, _extends({}, leftArrowIconProps)) : /*#__PURE__*/_jsx(RightArrowIcon, _extends({}, rightArrowIconProps))\n }))]\n }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersArrowSwitcher.displayName = \"PickersArrowSwitcher\";","import { areViewsEqual } from \"./views.js\";\nexport const EXPORTED_TIME_VIEWS = ['hours', 'minutes', 'seconds'];\nexport const TIME_VIEWS = ['hours', 'minutes', 'seconds', 'meridiem'];\nexport const isTimeView = view => EXPORTED_TIME_VIEWS.includes(view);\nexport const isInternalTimeView = view => TIME_VIEWS.includes(view);\nexport const getMeridiem = (date, adapter) => {\n if (!date) {\n return null;\n }\n return adapter.getHours(date) >= 12 ? 'pm' : 'am';\n};\nexport const convertValueToMeridiem = (value, meridiem, ampm) => {\n if (ampm) {\n const currentMeridiem = value >= 12 ? 'pm' : 'am';\n if (currentMeridiem !== meridiem) {\n return meridiem === 'am' ? value - 12 : value + 12;\n }\n }\n return value;\n};\nexport const convertToMeridiem = (time, meridiem, ampm, adapter) => {\n const newHoursAmount = convertValueToMeridiem(adapter.getHours(time), meridiem, ampm);\n return adapter.setHours(time, newHoursAmount);\n};\nexport const getSecondsInDay = (date, adapter) => {\n return adapter.getHours(date) * 3600 + adapter.getMinutes(date) * 60 + adapter.getSeconds(date);\n};\nexport const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation, adapter) => (dateLeft, dateRight) => {\n if (disableIgnoringDatePartForTimeValidation) {\n return adapter.isAfter(dateLeft, dateRight);\n }\n return getSecondsInDay(dateLeft, adapter) > getSecondsInDay(dateRight, adapter);\n};\nexport const resolveTimeFormat = (adapter, {\n format,\n views,\n ampm\n}) => {\n if (format != null) {\n return format;\n }\n const formats = adapter.formats;\n if (areViewsEqual(views, ['hours'])) {\n return ampm ? `${formats.hours12h} ${formats.meridiem}` : formats.hours24h;\n }\n if (areViewsEqual(views, ['minutes'])) {\n return formats.minutes;\n }\n if (areViewsEqual(views, ['seconds'])) {\n return formats.seconds;\n }\n if (areViewsEqual(views, ['minutes', 'seconds'])) {\n return `${formats.minutes}:${formats.seconds}`;\n }\n if (areViewsEqual(views, ['hours', 'minutes', 'seconds'])) {\n return ampm ? `${formats.hours12h}:${formats.minutes}:${formats.seconds} ${formats.meridiem}` : `${formats.hours24h}:${formats.minutes}:${formats.seconds}`;\n }\n return ampm ? `${formats.hours12h}:${formats.minutes} ${formats.meridiem}` : `${formats.hours24h}:${formats.minutes}`;\n};","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from \"../useEnhancedEffect/index.js\";\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\n// TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- process.env never changes, dependency arrays are intentionally ignored\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(props) {\n const {\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n } = props;\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && JSON.stringify(defaultProp) !== JSON.stringify(defaultValue)) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n\n // TODO: provide overloads for the useControlled function to account for the case where either\n // controlled or default is not undefined.\n // In that case the return type should be [T, React.Dispatch>]\n // otherwise it should be [T | undefined, React.Dispatch>]\n return [value, setValueIfUncontrolled];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const DEFAULT_STEP_NAVIGATION = {\n hasNextStep: false,\n hasSeveralSteps: false,\n goToNextStep: () => {},\n areViewsInSameStep: () => true\n};\n\n/**\n * Create an object that determines whether there is a next step and allows to go to the next step.\n * @param {CreateStepNavigationParameters} parameters The parameters of the createStepNavigation function\n * @returns {CreateStepNavigationReturnValue} The return value of the createStepNavigation function\n */\nexport function createStepNavigation(parameters) {\n const {\n steps,\n isViewMatchingStep,\n onStepChange\n } = parameters;\n return parametersBis => {\n if (steps == null) {\n return DEFAULT_STEP_NAVIGATION;\n }\n const currentStepIndex = steps.findIndex(step => isViewMatchingStep(parametersBis.view, step));\n const nextStep = currentStepIndex === -1 || currentStepIndex === steps.length - 1 ? null : steps[currentStepIndex + 1];\n return {\n hasNextStep: nextStep != null,\n hasSeveralSteps: steps.length > 1,\n goToNextStep: () => {\n if (nextStep == null) {\n return;\n }\n onStepChange(_extends({}, parametersBis, {\n step: nextStep\n }));\n },\n areViewsInSameStep: (viewA, viewB) => {\n const stepA = steps.find(step => isViewMatchingStep(viewA, step));\n const stepB = steps.find(step => isViewMatchingStep(viewB, step));\n return stepA === stepB;\n }\n };\n };\n}","export const DAY_SIZE = 36;\nexport const DAY_MARGIN = 2;\nexport const DIALOG_WIDTH = 320;\nexport const MAX_CALENDAR_HEIGHT = 280;\nexport const VIEW_HEIGHT = 336;\nexport const DIGITAL_CLOCK_VIEW_HEIGHT = 232;\nexport const MULTI_SECTION_CLOCK_SECTION_WIDTH = 48;","import { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH, VIEW_HEIGHT } from \"../../constants/dimensions.js\";\nexport const PickerViewRoot = styled('div', {\n slot: 'internal',\n shouldForwardProp: undefined\n})({\n overflow: 'hidden',\n width: DIALOG_WIDTH,\n maxHeight: VIEW_HEIGHT,\n display: 'flex',\n flexDirection: 'column',\n margin: '0 auto'\n});","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getTimeClockUtilityClass(slot) {\n return generateUtilityClass('MuiTimeClock', slot);\n}\nexport const timeClockClasses = generateUtilityClasses('MuiTimeClock', ['root', 'arrowSwitcher']);","export const CLOCK_WIDTH = 220;\nexport const CLOCK_HOUR_WIDTH = 36;\nconst clockCenter = {\n x: CLOCK_WIDTH / 2,\n y: CLOCK_WIDTH / 2\n};\nconst baseClockPoint = {\n x: clockCenter.x,\n y: 0\n};\nconst cx = baseClockPoint.x - clockCenter.x;\nconst cy = baseClockPoint.y - clockCenter.y;\nconst rad2deg = rad => rad * (180 / Math.PI);\nconst getAngleValue = (step, offsetX, offsetY) => {\n const x = offsetX - clockCenter.x;\n const y = offsetY - clockCenter.y;\n const atan = Math.atan2(cx, cy) - Math.atan2(x, y);\n let deg = rad2deg(atan);\n deg = Math.round(deg / step) * step;\n deg %= 360;\n const value = Math.floor(deg / step) || 0;\n const delta = x ** 2 + y ** 2;\n const distance = Math.sqrt(delta);\n return {\n value,\n distance\n };\n};\nexport const getMinutes = (offsetX, offsetY, step = 1) => {\n const angleStep = step * 6;\n let {\n value\n } = getAngleValue(angleStep, offsetX, offsetY);\n value = value * step % 60;\n return value;\n};\nexport const getHours = (offsetX, offsetY, ampm) => {\n const {\n value,\n distance\n } = getAngleValue(30, offsetX, offsetY);\n let hour = value || 12;\n if (!ampm) {\n if (distance < CLOCK_WIDTH / 2 - CLOCK_HOUR_WIDTH) {\n hour += 12;\n hour %= 24;\n }\n } else {\n hour %= 12;\n }\n return hour;\n};","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getClockPointerUtilityClass(slot) {\n return generateUtilityClass('MuiClockPointer', slot);\n}\nexport const clockPointerClasses = generateUtilityClasses('MuiClockPointer', ['root', 'thumb']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"classes\", \"isBetweenTwoClockValues\", \"isInner\", \"type\", \"viewValue\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from \"./shared.js\";\nimport { getClockPointerUtilityClass } from \"./clockPointerClasses.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n const slots = {\n root: ['root'],\n thumb: ['thumb']\n };\n return composeClasses(slots, getClockPointerUtilityClass, classes);\n};\nconst ClockPointerRoot = styled('div', {\n name: 'MuiClockPointer',\n slot: 'Root'\n})(({\n theme\n}) => ({\n width: 2,\n backgroundColor: (theme.vars || theme).palette.primary.main,\n position: 'absolute',\n left: 'calc(50% - 1px)',\n bottom: '50%',\n transformOrigin: 'center bottom 0px',\n variants: [{\n props: {\n isClockPointerAnimated: true\n },\n style: {\n transition: theme.transitions.create(['transform', 'height'])\n }\n }]\n}));\nconst ClockPointerThumb = styled('div', {\n name: 'MuiClockPointer',\n slot: 'Thumb'\n})(({\n theme\n}) => ({\n width: 4,\n height: 4,\n backgroundColor: (theme.vars || theme).palette.primary.contrastText,\n borderRadius: '50%',\n position: 'absolute',\n top: -21,\n left: `calc(50% - ${CLOCK_HOUR_WIDTH / 2}px)`,\n border: `${(CLOCK_HOUR_WIDTH - 4) / 2}px solid ${(theme.vars || theme).palette.primary.main}`,\n boxSizing: 'content-box',\n variants: [{\n props: {\n isClockPointerBetweenTwoValues: false\n },\n style: {\n backgroundColor: (theme.vars || theme).palette.primary.main\n }\n }]\n}));\n\n/**\n * @ignore - internal component.\n */\nexport function ClockPointer(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockPointer'\n });\n const {\n className,\n classes: classesProp,\n isBetweenTwoClockValues,\n isInner,\n type,\n viewValue\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const previousType = React.useRef(type);\n React.useEffect(() => {\n previousType.current = type;\n }, [type]);\n const {\n ownerState: pickerOwnerState\n } = usePickerPrivateContext();\n const ownerState = _extends({}, pickerOwnerState, {\n isClockPointerAnimated: previousType.current !== type,\n isClockPointerBetweenTwoValues: isBetweenTwoClockValues\n });\n const classes = useUtilityClasses(classesProp);\n const getAngleStyle = () => {\n const max = type === 'hours' ? 12 : 60;\n let angle = 360 / max * viewValue;\n if (type === 'hours' && viewValue > 12) {\n angle -= 360; // round up angle to max 360 degrees\n }\n return {\n height: Math.round((isInner ? 0.26 : 0.4) * CLOCK_WIDTH),\n transform: `rotateZ(${angle}deg)`\n };\n };\n return /*#__PURE__*/_jsx(ClockPointerRoot, _extends({\n style: getAngleStyle(),\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(ClockPointerThumb, {\n ownerState: ownerState,\n className: classes.thumb\n })\n }));\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getClockUtilityClass(slot) {\n return generateUtilityClass('MuiClock', slot);\n}\nexport const clockClasses = generateUtilityClasses('MuiClock', ['root', 'clock', 'wrapper', 'squareMask', 'pin', 'amButton', 'pmButton', 'meridiemText', 'selected']);","import { areViewsEqual } from \"./views.js\";\nexport const mergeDateAndTime = (adapter, dateParam, timeParam) => {\n let mergedDate = dateParam;\n mergedDate = adapter.setHours(mergedDate, adapter.getHours(timeParam));\n mergedDate = adapter.setMinutes(mergedDate, adapter.getMinutes(timeParam));\n mergedDate = adapter.setSeconds(mergedDate, adapter.getSeconds(timeParam));\n mergedDate = adapter.setMilliseconds(mergedDate, adapter.getMilliseconds(timeParam));\n return mergedDate;\n};\nexport const findClosestEnabledDate = ({\n date,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n isDateDisabled,\n adapter,\n timezone\n}) => {\n const today = mergeDateAndTime(adapter, adapter.date(undefined, timezone), date);\n if (disablePast && adapter.isBefore(minDate, today)) {\n minDate = today;\n }\n if (disableFuture && adapter.isAfter(maxDate, today)) {\n maxDate = today;\n }\n let forward = date;\n let backward = date;\n if (adapter.isBefore(date, minDate)) {\n forward = minDate;\n backward = null;\n }\n if (adapter.isAfter(date, maxDate)) {\n if (backward) {\n backward = maxDate;\n }\n forward = null;\n }\n while (forward || backward) {\n if (forward && adapter.isAfter(forward, maxDate)) {\n forward = null;\n }\n if (backward && adapter.isBefore(backward, minDate)) {\n backward = null;\n }\n if (forward) {\n if (!isDateDisabled(forward)) {\n return forward;\n }\n forward = adapter.addDays(forward, 1);\n }\n if (backward) {\n if (!isDateDisabled(backward)) {\n return backward;\n }\n backward = adapter.addDays(backward, -1);\n }\n }\n return null;\n};\nexport const replaceInvalidDateByNull = (adapter, value) => !adapter.isValid(value) ? null : value;\nexport const applyDefaultDate = (adapter, value, defaultValue) => {\n if (value == null || !adapter.isValid(value)) {\n return defaultValue;\n }\n return value;\n};\nexport const areDatesEqual = (adapter, a, b) => {\n if (!adapter.isValid(a) && a != null && !adapter.isValid(b) && b != null) {\n return true;\n }\n return adapter.isEqual(a, b);\n};\nexport const getMonthsInYear = (adapter, year) => {\n const firstMonth = adapter.startOfYear(year);\n const months = [firstMonth];\n while (months.length < 12) {\n const prevMonth = months[months.length - 1];\n months.push(adapter.addMonths(prevMonth, 1));\n }\n return months;\n};\nexport const getTodayDate = (adapter, timezone, valueType) => valueType === 'date' ? adapter.startOfDay(adapter.date(undefined, timezone)) : adapter.date(undefined, timezone);\nexport const formatMeridiem = (adapter, meridiem) => {\n const date = adapter.setHours(adapter.date(), meridiem === 'am' ? 2 : 14);\n return adapter.format(date, 'meridiem');\n};\nexport const DATE_VIEWS = ['year', 'month', 'day'];\nexport const isDatePickerView = view => DATE_VIEWS.includes(view);\nexport const resolveDateFormat = (adapter, {\n format,\n views\n}, isInToolbar) => {\n if (format != null) {\n return format;\n }\n const formats = adapter.formats;\n if (areViewsEqual(views, ['year'])) {\n return formats.year;\n }\n if (areViewsEqual(views, ['month'])) {\n return formats.month;\n }\n if (areViewsEqual(views, ['day'])) {\n return formats.dayOfMonth;\n }\n if (areViewsEqual(views, ['month', 'year'])) {\n return `${formats.month} ${formats.year}`;\n }\n if (areViewsEqual(views, ['day', 'month'])) {\n return `${formats.month} ${formats.dayOfMonth}`;\n }\n if (isInToolbar) {\n // Little localization hack (Google is doing the same for android native pickers):\n // For english localization it is convenient to include weekday into the date \"Mon, Jun 1\".\n // For other locales using strings like \"June 1\", without weekday.\n return /en/.test(adapter.getCurrentLocaleCode()) ? formats.normalDateWithWeekday : formats.normalDate;\n }\n return formats.keyboardDate;\n};\nexport const getWeekdays = (adapter, date) => {\n const start = adapter.startOfWeek(date);\n return [0, 1, 2, 3, 4, 5, 6].map(diff => adapter.addDays(start, diff));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { ClockPointer } from \"./ClockPointer.js\";\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nimport { CLOCK_HOUR_WIDTH, getHours, getMinutes } from \"./shared.js\";\nimport { getClockUtilityClass } from \"./clockClasses.js\";\nimport { formatMeridiem } from \"../internals/utils/date-utils.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = (classes, ownerState) => {\n const slots = {\n root: ['root'],\n clock: ['clock'],\n wrapper: ['wrapper'],\n squareMask: ['squareMask'],\n pin: ['pin'],\n amButton: ['amButton', ownerState.clockMeridiemMode === 'am' && 'selected'],\n pmButton: ['pmButton', ownerState.clockMeridiemMode === 'pm' && 'selected'],\n meridiemText: ['meridiemText']\n };\n return composeClasses(slots, getClockUtilityClass, classes);\n};\nconst ClockRoot = styled('div', {\n name: 'MuiClock',\n slot: 'Root'\n})(({\n theme\n}) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n margin: theme.spacing(2)\n}));\nconst ClockClock = styled('div', {\n name: 'MuiClock',\n slot: 'Clock'\n})({\n backgroundColor: 'rgba(0,0,0,.07)',\n borderRadius: '50%',\n height: 220,\n width: 220,\n flexShrink: 0,\n position: 'relative',\n pointerEvents: 'none'\n});\nconst ClockWrapper = styled('div', {\n name: 'MuiClock',\n slot: 'Wrapper'\n})({\n '&:focus': {\n outline: 'none'\n }\n});\nconst ClockSquareMask = styled('div', {\n name: 'MuiClock',\n slot: 'SquareMask'\n})({\n width: '100%',\n height: '100%',\n position: 'absolute',\n pointerEvents: 'auto',\n outline: 0,\n // Disable scroll capabilities.\n touchAction: 'none',\n userSelect: 'none',\n variants: [{\n props: {\n isClockDisabled: false\n },\n style: {\n '@media (pointer: fine)': {\n cursor: 'pointer',\n borderRadius: '50%'\n },\n '&:active': {\n cursor: 'move'\n }\n }\n }]\n});\nconst ClockPin = styled('div', {\n name: 'MuiClock',\n slot: 'Pin'\n})(({\n theme\n}) => ({\n width: 6,\n height: 6,\n borderRadius: '50%',\n backgroundColor: (theme.vars || theme).palette.primary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n}));\nconst meridiemButtonCommonStyles = (theme, clockMeridiemMode) => ({\n zIndex: 1,\n bottom: 8,\n paddingLeft: 4,\n paddingRight: 4,\n width: CLOCK_HOUR_WIDTH,\n variants: [{\n props: {\n clockMeridiemMode\n },\n style: {\n backgroundColor: (theme.vars || theme).palette.primary.main,\n color: (theme.vars || theme).palette.primary.contrastText,\n '&:hover': {\n backgroundColor: (theme.vars || theme).palette.primary.light\n }\n }\n }]\n});\nconst ClockAmButton = styled(IconButton, {\n name: 'MuiClock',\n slot: 'AmButton'\n})(({\n theme\n}) => _extends({}, meridiemButtonCommonStyles(theme, 'am'), {\n // keeping it here to make TS happy\n position: 'absolute',\n left: 8\n}));\nconst ClockPmButton = styled(IconButton, {\n name: 'MuiClock',\n slot: 'PmButton'\n})(({\n theme\n}) => _extends({}, meridiemButtonCommonStyles(theme, 'pm'), {\n // keeping it here to make TS happy\n position: 'absolute',\n right: 8\n}));\nconst ClockMeridiemText = styled(Typography, {\n name: 'MuiClock',\n slot: 'MeridiemText'\n})({\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n});\n\n/**\n * @ignore - internal component.\n */\nexport function Clock(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClock'\n });\n const {\n ampm,\n ampmInClock,\n autoFocus,\n children,\n value,\n handleMeridiemChange,\n isTimeDisabled,\n meridiemMode,\n minutesStep = 1,\n onChange,\n selectedId,\n type,\n viewValue,\n viewRange: [minViewValue, maxViewValue],\n disabled = false,\n readOnly,\n className,\n classes: classesProp\n } = props;\n const adapter = usePickerAdapter();\n const translations = usePickerTranslations();\n const {\n ownerState: pickerOwnerState\n } = usePickerPrivateContext();\n const ownerState = _extends({}, pickerOwnerState, {\n isClockDisabled: disabled,\n clockMeridiemMode: meridiemMode\n });\n const isMoving = React.useRef(false);\n const classes = useUtilityClasses(classesProp, ownerState);\n const isSelectedTimeDisabled = isTimeDisabled(viewValue, type);\n const isPointerInner = !ampm && type === 'hours' && (viewValue < 1 || viewValue > 12);\n const handleValueChange = (newValue, isFinish) => {\n if (disabled || readOnly) {\n return;\n }\n if (isTimeDisabled(newValue, type)) {\n return;\n }\n onChange(newValue, isFinish);\n };\n const setTime = (event, isFinish) => {\n let {\n offsetX,\n offsetY\n } = event;\n if (offsetX === undefined) {\n const rect = event.target.getBoundingClientRect();\n offsetX = event.changedTouches[0].clientX - rect.left;\n offsetY = event.changedTouches[0].clientY - rect.top;\n }\n const newSelectedValue = type === 'seconds' || type === 'minutes' ? getMinutes(offsetX, offsetY, minutesStep) : getHours(offsetX, offsetY, Boolean(ampm));\n handleValueChange(newSelectedValue, isFinish);\n };\n const handleTouchSelection = event => {\n isMoving.current = true;\n setTime(event, 'shallow');\n };\n const handleTouchEnd = event => {\n if (isMoving.current) {\n setTime(event, 'finish');\n isMoving.current = false;\n }\n event.preventDefault();\n };\n const handleMouseMove = event => {\n // event.buttons & PRIMARY_MOUSE_BUTTON\n if (event.buttons > 0) {\n setTime(event.nativeEvent, 'shallow');\n }\n };\n const handleMouseUp = event => {\n if (isMoving.current) {\n isMoving.current = false;\n }\n setTime(event.nativeEvent, 'finish');\n };\n const isPointerBetweenTwoClockValues = type === 'hours' ? false : viewValue % 5 !== 0;\n const keyboardControlStep = type === 'minutes' ? minutesStep : 1;\n const listboxRef = React.useRef(null);\n // Since this is rendered when a Popper is opened we can't use passive effects.\n // Focusing in passive effects in Popper causes scroll jump.\n useEnhancedEffect(() => {\n if (autoFocus) {\n // The ref not being resolved would be a bug in MUI.\n listboxRef.current.focus();\n }\n }, [autoFocus]);\n const clampValue = newValue => Math.max(minViewValue, Math.min(maxViewValue, newValue));\n const circleValue = newValue => (newValue + (maxViewValue + 1)) % (maxViewValue + 1);\n const handleKeyDown = event => {\n // TODO: Why this early exit?\n if (isMoving.current) {\n return;\n }\n switch (event.key) {\n case 'Home':\n // reset both hours and minutes\n handleValueChange(minViewValue, 'partial');\n event.preventDefault();\n break;\n case 'End':\n handleValueChange(maxViewValue, 'partial');\n event.preventDefault();\n break;\n case 'ArrowUp':\n handleValueChange(circleValue(viewValue + keyboardControlStep), 'partial');\n event.preventDefault();\n break;\n case 'ArrowDown':\n handleValueChange(circleValue(viewValue - keyboardControlStep), 'partial');\n event.preventDefault();\n break;\n case 'PageUp':\n handleValueChange(clampValue(viewValue + 5), 'partial');\n event.preventDefault();\n break;\n case 'PageDown':\n handleValueChange(clampValue(viewValue - 5), 'partial');\n event.preventDefault();\n break;\n case 'Enter':\n case ' ':\n handleValueChange(viewValue, 'finish');\n event.preventDefault();\n break;\n default:\n // do nothing\n }\n };\n return /*#__PURE__*/_jsxs(ClockRoot, {\n className: clsx(classes.root, className),\n children: [/*#__PURE__*/_jsxs(ClockClock, {\n className: classes.clock,\n children: [/*#__PURE__*/_jsx(ClockSquareMask, {\n onTouchMove: handleTouchSelection,\n onTouchStart: handleTouchSelection,\n onTouchEnd: handleTouchEnd,\n onMouseUp: handleMouseUp,\n onMouseMove: handleMouseMove,\n ownerState: ownerState,\n className: classes.squareMask\n }), !isSelectedTimeDisabled && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockPin, {\n className: classes.pin\n }), value != null && /*#__PURE__*/_jsx(ClockPointer, {\n type: type,\n viewValue: viewValue,\n isInner: isPointerInner,\n isBetweenTwoClockValues: isPointerBetweenTwoClockValues\n })]\n }), /*#__PURE__*/_jsx(ClockWrapper, {\n \"aria-activedescendant\": selectedId,\n \"aria-label\": translations.clockLabelText(type, value == null ? null : adapter.format(value, ampm ? 'fullTime12h' : 'fullTime24h')),\n ref: listboxRef,\n role: \"listbox\",\n onKeyDown: handleKeyDown,\n tabIndex: 0,\n className: classes.wrapper,\n children: children\n })]\n }), ampm && ampmInClock && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockAmButton, {\n onClick: readOnly ? undefined : () => handleMeridiemChange('am'),\n disabled: disabled || meridiemMode === null,\n ownerState: ownerState,\n className: classes.amButton,\n title: formatMeridiem(adapter, 'am'),\n children: /*#__PURE__*/_jsx(ClockMeridiemText, {\n variant: \"caption\",\n className: classes.meridiemText,\n children: formatMeridiem(adapter, 'am')\n })\n }), /*#__PURE__*/_jsx(ClockPmButton, {\n disabled: disabled || meridiemMode === null,\n onClick: readOnly ? undefined : () => handleMeridiemChange('pm'),\n ownerState: ownerState,\n className: classes.pmButton,\n title: formatMeridiem(adapter, 'pm'),\n children: /*#__PURE__*/_jsx(ClockMeridiemText, {\n variant: \"caption\",\n className: classes.meridiemText,\n children: formatMeridiem(adapter, 'pm')\n })\n })]\n })]\n });\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getClockNumberUtilityClass(slot) {\n return generateUtilityClass('MuiClockNumber', slot);\n}\nexport const clockNumberClasses = generateUtilityClasses('MuiClockNumber', ['root', 'selected', 'disabled']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"classes\", \"disabled\", \"index\", \"inner\", \"label\", \"selected\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from \"./shared.js\";\nimport { getClockNumberUtilityClass, clockNumberClasses } from \"./clockNumberClasses.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = (classes, ownerState) => {\n const slots = {\n root: ['root', ownerState.isClockNumberSelected && 'selected', ownerState.isClockNumberDisabled && 'disabled']\n };\n return composeClasses(slots, getClockNumberUtilityClass, classes);\n};\nconst ClockNumberRoot = styled('span', {\n name: 'MuiClockNumber',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${clockNumberClasses.disabled}`]: styles.disabled\n }, {\n [`&.${clockNumberClasses.selected}`]: styles.selected\n }]\n})(({\n theme\n}) => ({\n height: CLOCK_HOUR_WIDTH,\n width: CLOCK_HOUR_WIDTH,\n position: 'absolute',\n left: `calc((100% - ${CLOCK_HOUR_WIDTH}px) / 2)`,\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '50%',\n color: (theme.vars || theme).palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n '&:focused': {\n backgroundColor: (theme.vars || theme).palette.background.paper\n },\n [`&.${clockNumberClasses.selected}`]: {\n color: (theme.vars || theme).palette.primary.contrastText\n },\n [`&.${clockNumberClasses.disabled}`]: {\n pointerEvents: 'none',\n color: (theme.vars || theme).palette.text.disabled\n },\n variants: [{\n props: {\n isClockNumberInInnerRing: true\n },\n style: _extends({}, theme.typography.body2, {\n color: (theme.vars || theme).palette.text.secondary\n })\n }]\n}));\n\n/**\n * @ignore - internal component.\n */\nexport function ClockNumber(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockNumber'\n });\n const {\n className,\n classes: classesProp,\n disabled,\n index,\n inner,\n label,\n selected\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n ownerState: pickerOwnerState\n } = usePickerPrivateContext();\n const ownerState = _extends({}, pickerOwnerState, {\n isClockNumberInInnerRing: inner,\n isClockNumberSelected: selected,\n isClockNumberDisabled: disabled\n });\n const classes = useUtilityClasses(classesProp, ownerState);\n const angle = index % 12 / 12 * Math.PI * 2 - Math.PI / 2;\n const length = (CLOCK_WIDTH - CLOCK_HOUR_WIDTH - 2) / 2 * (inner ? 0.65 : 1);\n const x = Math.round(Math.cos(angle) * length);\n const y = Math.round(Math.sin(angle) * length);\n return /*#__PURE__*/_jsx(ClockNumberRoot, _extends({\n className: clsx(classes.root, className),\n \"aria-disabled\": disabled ? true : undefined,\n \"aria-selected\": selected ? true : undefined,\n role: \"option\",\n style: {\n transform: `translate(${x}px, ${y + (CLOCK_WIDTH - CLOCK_HOUR_WIDTH) / 2}px`\n },\n ownerState: ownerState\n }, other, {\n children: label\n }));\n}","import * as React from 'react';\nimport { ClockNumber } from \"./ClockNumber.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * @ignore - internal component.\n */\nexport const getHourNumbers = ({\n ampm,\n value,\n getClockNumberText,\n isDisabled,\n selectedId,\n adapter\n}) => {\n const currentHours = value ? adapter.getHours(value) : null;\n const hourNumbers = [];\n const startHour = ampm ? 1 : 0;\n const endHour = ampm ? 12 : 23;\n const isSelected = hour => {\n if (currentHours === null) {\n return false;\n }\n if (ampm) {\n if (hour === 12) {\n return currentHours === 12 || currentHours === 0;\n }\n return currentHours === hour || currentHours - 12 === hour;\n }\n return currentHours === hour;\n };\n for (let hour = startHour; hour <= endHour; hour += 1) {\n let label = hour.toString();\n if (hour === 0) {\n label = '00';\n }\n const inner = !ampm && (hour === 0 || hour > 12);\n label = adapter.formatNumber(label);\n const selected = isSelected(hour);\n hourNumbers.push(/*#__PURE__*/_jsx(ClockNumber, {\n id: selected ? selectedId : undefined,\n index: hour,\n inner: inner,\n selected: selected,\n disabled: isDisabled(hour),\n label: label,\n \"aria-label\": getClockNumberText(label)\n }, hour));\n }\n return hourNumbers;\n};\nexport const getMinutesNumbers = ({\n adapter,\n value,\n isDisabled,\n getClockNumberText,\n selectedId\n}) => {\n const f = adapter.formatNumber;\n return [[5, f('05')], [10, f('10')], [15, f('15')], [20, f('20')], [25, f('25')], [30, f('30')], [35, f('35')], [40, f('40')], [45, f('45')], [50, f('50')], [55, f('55')], [0, f('00')]].map(([numberValue, label], index) => {\n const selected = numberValue === value;\n return /*#__PURE__*/_jsx(ClockNumber, {\n label: label,\n id: selected ? selectedId : undefined,\n index: index + 1,\n inner: false,\n disabled: isDisabled(numberValue),\n selected: selected,\n \"aria-label\": getClockNumberText(label)\n }, numberValue);\n });\n};","import { createIsAfterIgnoreDatePart } from \"./time-utils.js\";\nimport { mergeDateAndTime, getTodayDate } from \"./date-utils.js\";\nexport const SECTION_TYPE_GRANULARITY = {\n year: 1,\n month: 2,\n day: 3,\n hours: 4,\n minutes: 5,\n seconds: 6,\n milliseconds: 7\n};\nexport const getSectionTypeGranularity = sections => Math.max(...sections.map(section => SECTION_TYPE_GRANULARITY[section.type] ?? 1));\nconst roundDate = (adapter, granularity, date) => {\n if (granularity === SECTION_TYPE_GRANULARITY.year) {\n return adapter.startOfYear(date);\n }\n if (granularity === SECTION_TYPE_GRANULARITY.month) {\n return adapter.startOfMonth(date);\n }\n if (granularity === SECTION_TYPE_GRANULARITY.day) {\n return adapter.startOfDay(date);\n }\n\n // We don't have startOfHour / startOfMinute / startOfSecond\n let roundedDate = date;\n if (granularity < SECTION_TYPE_GRANULARITY.minutes) {\n roundedDate = adapter.setMinutes(roundedDate, 0);\n }\n if (granularity < SECTION_TYPE_GRANULARITY.seconds) {\n roundedDate = adapter.setSeconds(roundedDate, 0);\n }\n if (granularity < SECTION_TYPE_GRANULARITY.milliseconds) {\n roundedDate = adapter.setMilliseconds(roundedDate, 0);\n }\n return roundedDate;\n};\nexport const getDefaultReferenceDate = ({\n props,\n adapter,\n granularity,\n timezone,\n getTodayDate: inGetTodayDate\n}) => {\n let referenceDate = inGetTodayDate ? inGetTodayDate() : roundDate(adapter, granularity, getTodayDate(adapter, timezone));\n if (props.minDate != null && adapter.isAfterDay(props.minDate, referenceDate)) {\n referenceDate = roundDate(adapter, granularity, props.minDate);\n }\n if (props.maxDate != null && adapter.isBeforeDay(props.maxDate, referenceDate)) {\n referenceDate = roundDate(adapter, granularity, props.maxDate);\n }\n const isAfter = createIsAfterIgnoreDatePart(props.disableIgnoringDatePartForTimeValidation ?? false, adapter);\n if (props.minTime != null && isAfter(props.minTime, referenceDate)) {\n referenceDate = roundDate(adapter, granularity, props.disableIgnoringDatePartForTimeValidation ? props.minTime : mergeDateAndTime(adapter, referenceDate, props.minTime));\n }\n if (props.maxTime != null && isAfter(referenceDate, props.maxTime)) {\n referenceDate = roundDate(adapter, granularity, props.disableIgnoringDatePartForTimeValidation ? props.maxTime : mergeDateAndTime(adapter, referenceDate, props.maxTime));\n }\n return referenceDate;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"value\", \"referenceDate\"];\nimport { areDatesEqual, getTodayDate, replaceInvalidDateByNull } from \"./date-utils.js\";\nimport { getDefaultReferenceDate } from \"./getDefaultReferenceDate.js\";\nimport { createDateStrForV7HiddenInputFromSections, createDateStrForV6InputFromSections } from \"../hooks/useField/useField.utils.js\";\nexport const singleItemValueManager = {\n emptyValue: null,\n getTodayValue: getTodayDate,\n getInitialReferenceValue: _ref => {\n let {\n value,\n referenceDate\n } = _ref,\n params = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (params.adapter.isValid(value)) {\n return value;\n }\n if (referenceDate != null) {\n return referenceDate;\n }\n return getDefaultReferenceDate(params);\n },\n cleanValue: replaceInvalidDateByNull,\n areValuesEqual: areDatesEqual,\n isSameError: (a, b) => a === b,\n hasError: error => error != null,\n defaultErrorState: null,\n getTimezone: (adapter, value) => adapter.isValid(value) ? adapter.getTimezone(value) : null,\n setTimezone: (adapter, timezone, value) => value == null ? null : adapter.setTimezone(value, timezone)\n};\nexport const singleItemFieldValueManager = {\n updateReferenceValue: (adapter, value, prevReferenceValue) => adapter.isValid(value) ? value : prevReferenceValue,\n getSectionsFromValue: (date, getSectionsFromDate) => getSectionsFromDate(date),\n getV7HiddenInputValueFromSections: createDateStrForV7HiddenInputFromSections,\n getV6InputValueFromSections: createDateStrForV6InputFromSections,\n parseValueStr: (valueStr, referenceValue, parseDate) => parseDate(valueStr.trim(), referenceValue),\n getDateFromSection: value => value,\n getDateSectionsFromValue: sections => sections,\n updateDateInValue: (value, activeSection, activeDate) => activeDate,\n clearDateSections: sections => sections.map(section => _extends({}, section, {\n value: ''\n }))\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ampm\", \"ampmInClock\", \"autoFocus\", \"slots\", \"slotProps\", \"value\", \"defaultValue\", \"referenceDate\", \"disableIgnoringDatePartForTimeValidation\", \"maxTime\", \"minTime\", \"disableFuture\", \"disablePast\", \"minutesStep\", \"shouldDisableTime\", \"showViewSwitcher\", \"onChange\", \"view\", \"views\", \"openTo\", \"onViewChange\", \"focusedView\", \"onFocusedViewChange\", \"className\", \"classes\", \"disabled\", \"readOnly\", \"timezone\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nimport { useNow } from \"../internals/hooks/useUtils.js\";\nimport { PickersArrowSwitcher } from \"../internals/components/PickersArrowSwitcher/index.js\";\nimport { convertValueToMeridiem, createIsAfterIgnoreDatePart } from \"../internals/utils/time-utils.js\";\nimport { useViews } from \"../internals/hooks/useViews.js\";\nimport { useMeridiemMode } from \"../internals/hooks/date-helpers-hooks.js\";\nimport { PickerViewRoot } from \"../internals/components/PickerViewRoot/index.js\";\nimport { getTimeClockUtilityClass } from \"./timeClockClasses.js\";\nimport { Clock } from \"./Clock.js\";\nimport { getHourNumbers, getMinutesNumbers } from \"./ClockNumbers.js\";\nimport { useControlledValue } from \"../internals/hooks/useControlledValue.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { useClockReferenceDate } from \"../internals/hooks/useClockReferenceDate.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n const slots = {\n root: ['root'],\n arrowSwitcher: ['arrowSwitcher']\n };\n return composeClasses(slots, getTimeClockUtilityClass, classes);\n};\nconst TimeClockRoot = styled(PickerViewRoot, {\n name: 'MuiTimeClock',\n slot: 'Root'\n})({\n display: 'flex',\n flexDirection: 'column',\n position: 'relative'\n});\nconst TimeClockArrowSwitcher = styled(PickersArrowSwitcher, {\n name: 'MuiTimeClock',\n slot: 'ArrowSwitcher'\n})({\n position: 'absolute',\n right: 12,\n top: 15\n});\nconst TIME_CLOCK_DEFAULT_VIEWS = ['hours', 'minutes'];\n\n/**\n * Demos:\n *\n * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)\n * - [TimeClock](https://mui.com/x/react-date-pickers/time-clock/)\n *\n * API:\n *\n * - [TimeClock API](https://mui.com/x/api/date-pickers/time-clock/)\n */\nexport const TimeClock = /*#__PURE__*/React.forwardRef(function TimeClock(inProps, ref) {\n const adapter = usePickerAdapter();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTimeClock'\n });\n const {\n ampm = adapter.is12HourCycleInCurrentLocale(),\n ampmInClock = false,\n autoFocus,\n slots,\n slotProps,\n value: valueProp,\n defaultValue,\n referenceDate: referenceDateProp,\n disableIgnoringDatePartForTimeValidation = false,\n maxTime,\n minTime,\n disableFuture,\n disablePast,\n minutesStep = 1,\n shouldDisableTime,\n showViewSwitcher,\n onChange,\n view: inView,\n views = TIME_CLOCK_DEFAULT_VIEWS,\n openTo,\n onViewChange,\n focusedView,\n onFocusedViewChange,\n className,\n classes: classesProp,\n disabled,\n readOnly,\n timezone: timezoneProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n value,\n handleValueChange,\n timezone\n } = useControlledValue({\n name: 'TimeClock',\n timezone: timezoneProp,\n value: valueProp,\n defaultValue,\n referenceDate: referenceDateProp,\n onChange,\n valueManager: singleItemValueManager\n });\n const valueOrReferenceDate = useClockReferenceDate({\n value,\n referenceDate: referenceDateProp,\n adapter,\n props,\n timezone\n });\n const translations = usePickerTranslations();\n const now = useNow(timezone);\n const selectedId = useId();\n const {\n ownerState\n } = usePickerPrivateContext();\n const {\n view,\n setView,\n previousView,\n nextView,\n setValueAndGoToNextView\n } = useViews({\n view: inView,\n views,\n openTo,\n onViewChange,\n onChange: handleValueChange,\n focusedView,\n onFocusedViewChange\n });\n const {\n meridiemMode,\n handleMeridiemChange\n } = useMeridiemMode(valueOrReferenceDate, ampm, setValueAndGoToNextView);\n const isTimeDisabled = React.useCallback((rawValue, viewType) => {\n const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter);\n const shouldCheckPastEnd = viewType === 'hours' || viewType === 'minutes' && views.includes('seconds');\n const containsValidTime = ({\n start,\n end\n }) => {\n if (minTime && isAfter(minTime, end)) {\n return false;\n }\n if (maxTime && isAfter(start, maxTime)) {\n return false;\n }\n if (disableFuture && isAfter(start, now)) {\n return false;\n }\n if (disablePast && isAfter(now, shouldCheckPastEnd ? end : start)) {\n return false;\n }\n return true;\n };\n const isValidValue = (timeValue, step = 1) => {\n if (timeValue % step !== 0) {\n return false;\n }\n if (shouldDisableTime) {\n switch (viewType) {\n case 'hours':\n return !shouldDisableTime(adapter.setHours(valueOrReferenceDate, timeValue), 'hours');\n case 'minutes':\n return !shouldDisableTime(adapter.setMinutes(valueOrReferenceDate, timeValue), 'minutes');\n case 'seconds':\n return !shouldDisableTime(adapter.setSeconds(valueOrReferenceDate, timeValue), 'seconds');\n default:\n return false;\n }\n }\n return true;\n };\n switch (viewType) {\n case 'hours':\n {\n const valueWithMeridiem = convertValueToMeridiem(rawValue, meridiemMode, ampm);\n const dateWithNewHours = adapter.setHours(valueOrReferenceDate, valueWithMeridiem);\n if (adapter.getHours(dateWithNewHours) !== valueWithMeridiem) {\n return true;\n }\n const start = adapter.setSeconds(adapter.setMinutes(dateWithNewHours, 0), 0);\n const end = adapter.setSeconds(adapter.setMinutes(dateWithNewHours, 59), 59);\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(valueWithMeridiem);\n }\n case 'minutes':\n {\n const dateWithNewMinutes = adapter.setMinutes(valueOrReferenceDate, rawValue);\n const start = adapter.setSeconds(dateWithNewMinutes, 0);\n const end = adapter.setSeconds(dateWithNewMinutes, 59);\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(rawValue, minutesStep);\n }\n case 'seconds':\n {\n const dateWithNewSeconds = adapter.setSeconds(valueOrReferenceDate, rawValue);\n const start = dateWithNewSeconds;\n const end = dateWithNewSeconds;\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(rawValue);\n }\n default:\n throw new Error('not supported');\n }\n }, [ampm, valueOrReferenceDate, disableIgnoringDatePartForTimeValidation, maxTime, meridiemMode, minTime, minutesStep, shouldDisableTime, adapter, disableFuture, disablePast, now, views]);\n const viewProps = React.useMemo(() => {\n switch (view) {\n case 'hours':\n {\n const handleHoursChange = (hourValue, isFinish) => {\n const valueWithMeridiem = convertValueToMeridiem(hourValue, meridiemMode, ampm);\n setValueAndGoToNextView(adapter.setHours(valueOrReferenceDate, valueWithMeridiem), isFinish, 'hours');\n };\n const viewValue = adapter.getHours(valueOrReferenceDate);\n let viewRange;\n if (ampm) {\n if (viewValue > 12) {\n viewRange = [12, 23];\n } else {\n viewRange = [0, 11];\n }\n } else {\n viewRange = [0, 23];\n }\n return {\n onChange: handleHoursChange,\n viewValue,\n children: getHourNumbers({\n value,\n adapter,\n ampm,\n onChange: handleHoursChange,\n getClockNumberText: translations.hoursClockNumberText,\n isDisabled: hourValue => disabled || isTimeDisabled(hourValue, 'hours'),\n selectedId\n }),\n viewRange\n };\n }\n case 'minutes':\n {\n const minutesValue = adapter.getMinutes(valueOrReferenceDate);\n const handleMinutesChange = (minuteValue, isFinish) => {\n setValueAndGoToNextView(adapter.setMinutes(valueOrReferenceDate, minuteValue), isFinish, 'minutes');\n };\n return {\n viewValue: minutesValue,\n onChange: handleMinutesChange,\n children: getMinutesNumbers({\n adapter,\n value: minutesValue,\n onChange: handleMinutesChange,\n getClockNumberText: translations.minutesClockNumberText,\n isDisabled: minuteValue => disabled || isTimeDisabled(minuteValue, 'minutes'),\n selectedId\n }),\n viewRange: [0, 59]\n };\n }\n case 'seconds':\n {\n const secondsValue = adapter.getSeconds(valueOrReferenceDate);\n const handleSecondsChange = (secondValue, isFinish) => {\n setValueAndGoToNextView(adapter.setSeconds(valueOrReferenceDate, secondValue), isFinish, 'seconds');\n };\n return {\n viewValue: secondsValue,\n onChange: handleSecondsChange,\n children: getMinutesNumbers({\n adapter,\n value: secondsValue,\n onChange: handleSecondsChange,\n getClockNumberText: translations.secondsClockNumberText,\n isDisabled: secondValue => disabled || isTimeDisabled(secondValue, 'seconds'),\n selectedId\n }),\n viewRange: [0, 59]\n };\n }\n default:\n throw new Error('You must provide the type for ClockView');\n }\n }, [view, adapter, value, ampm, translations.hoursClockNumberText, translations.minutesClockNumberText, translations.secondsClockNumberText, meridiemMode, setValueAndGoToNextView, valueOrReferenceDate, isTimeDisabled, selectedId, disabled]);\n const classes = useUtilityClasses(classesProp);\n return /*#__PURE__*/_jsxs(TimeClockRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(Clock, _extends({\n autoFocus: autoFocus ?? !!focusedView,\n ampmInClock: ampmInClock && views.includes('hours'),\n value: value,\n type: view,\n ampm: ampm,\n minutesStep: minutesStep,\n isTimeDisabled: isTimeDisabled,\n meridiemMode: meridiemMode,\n handleMeridiemChange: handleMeridiemChange,\n selectedId: selectedId,\n disabled: disabled,\n readOnly: readOnly\n }, viewProps)), showViewSwitcher && /*#__PURE__*/_jsx(TimeClockArrowSwitcher, {\n className: classes.arrowSwitcher,\n slots: slots,\n slotProps: slotProps,\n onGoToPrevious: () => setView(previousView),\n isPreviousDisabled: !previousView,\n previousLabel: translations.openPreviousView,\n onGoToNext: () => setView(nextView),\n isNextDisabled: !nextView,\n nextLabel: translations.openNextView,\n ownerState: ownerState\n })]\n }));\n});\nif (process.env.NODE_ENV !== \"production\") TimeClock.displayName = \"TimeClock\";\nprocess.env.NODE_ENV !== \"production\" ? TimeClock.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * 12h/24h view for hour selection clock.\n * @default adapter.is12HourCycleInCurrentLocale()\n */\n ampm: PropTypes.bool,\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n /**\n * If `true`, the main element is focused during the first mount.\n * This main element is:\n * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n * - the `input` element if there is a field rendered.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n className: PropTypes.string,\n /**\n * The default selected value.\n * Used when the component is not controlled.\n */\n defaultValue: PropTypes.object,\n /**\n * If `true`, the component is disabled.\n * When disabled, the value cannot be changed and no interaction is possible.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n * @default false\n */\n disableFuture: PropTypes.bool,\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n /**\n * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n * @default false\n */\n disablePast: PropTypes.bool,\n /**\n * Controlled focused view.\n */\n focusedView: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n /**\n * Maximal selectable time.\n * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n */\n maxTime: PropTypes.object,\n /**\n * Minimal selectable time.\n * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n */\n minTime: PropTypes.object,\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n /**\n * Callback fired when the value changes.\n * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n * @template TView The view type. Will be one of date or time views.\n * @param {TValue} value The new value.\n * @param {PickerSelectionState | undefined} selectionState Indicates if the date selection is complete.\n * @param {TView | undefined} selectedView Indicates the view in which the selection has been made.\n */\n onChange: PropTypes.func,\n /**\n * Callback fired on focused view change.\n * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n * @param {TView} view The new view to focus or not.\n * @param {boolean} hasFocus `true` if the view should be focused.\n */\n onFocusedViewChange: PropTypes.func,\n /**\n * Callback fired on view change.\n * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n * @param {TView} view The new view.\n */\n onViewChange: PropTypes.func,\n /**\n * The default visible view.\n * Used when the component view is not controlled.\n * Must be a valid option from `views` list.\n */\n openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n /**\n * If `true`, the component is read-only.\n * When read-only, the value cannot be changed but the user can interact with the interface.\n * @default false\n */\n readOnly: PropTypes.bool,\n /**\n * The date used to generate the new value when both `value` and `defaultValue` are empty.\n * @default The closest valid time using the validation props, except callbacks such as `shouldDisableTime`.\n */\n referenceDate: PropTypes.object,\n /**\n * Disable specific time.\n * @param {PickerValidDate} value The value to check.\n * @param {TimeView} view The clock type of the timeValue.\n * @returns {boolean} If `true` the time will be disabled.\n */\n shouldDisableTime: PropTypes.func,\n showViewSwitcher: PropTypes.bool,\n /**\n * The props used for each component slot.\n * @default {}\n */\n slotProps: PropTypes.object,\n /**\n * Overridable component slots.\n * @default {}\n */\n slots: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Choose which timezone to use for the value.\n * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n */\n timezone: PropTypes.string,\n /**\n * The selected value.\n * Used when the component is controlled.\n */\n value: PropTypes.object,\n /**\n * The visible view.\n * Used when the component view is controlled.\n * Must be a valid option from `views` list.\n */\n view: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n /**\n * Available views.\n * @default ['hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'minutes', 'seconds']).isRequired)\n} : void 0;","import * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useControlled from '@mui/utils/useControlled';\nimport { usePickerAdapter } from \"../../hooks/usePickerAdapter.js\";\n\n/**\n * Hooks controlling the value while making sure that:\n * - The value returned by `onChange` always have the timezone of `props.value` or `props.defaultValue` if defined\n * - The value rendered is always the one from `props.timezone` if defined\n */\nexport const useControlledValue = ({\n name,\n timezone: timezoneProp,\n value: valueProp,\n defaultValue,\n referenceDate,\n onChange: onChangeProp,\n valueManager\n}) => {\n const adapter = usePickerAdapter();\n const [valueWithInputTimezone, setValue] = useControlled({\n name,\n state: 'value',\n controlled: valueProp,\n default: defaultValue ?? valueManager.emptyValue\n });\n const inputTimezone = React.useMemo(() => valueManager.getTimezone(adapter, valueWithInputTimezone), [adapter, valueManager, valueWithInputTimezone]);\n const setInputTimezone = useEventCallback(newValue => {\n if (inputTimezone == null) {\n return newValue;\n }\n return valueManager.setTimezone(adapter, inputTimezone, newValue);\n });\n const timezoneToRender = React.useMemo(() => {\n if (timezoneProp) {\n return timezoneProp;\n }\n if (inputTimezone) {\n return inputTimezone;\n }\n if (referenceDate) {\n return adapter.getTimezone(Array.isArray(referenceDate) ? referenceDate[0] : referenceDate);\n }\n return 'default';\n }, [timezoneProp, inputTimezone, referenceDate, adapter]);\n const valueWithTimezoneToRender = React.useMemo(() => valueManager.setTimezone(adapter, timezoneToRender, valueWithInputTimezone), [valueManager, adapter, timezoneToRender, valueWithInputTimezone]);\n const handleValueChange = useEventCallback((newValue, ...otherParams) => {\n const newValueWithInputTimezone = setInputTimezone(newValue);\n setValue(newValueWithInputTimezone);\n onChangeProp?.(newValueWithInputTimezone, ...otherParams);\n });\n return {\n value: valueWithTimezoneToRender,\n handleValueChange,\n timezone: timezoneToRender\n };\n};","import * as React from 'react';\nimport { singleItemValueManager } from \"../utils/valueManagers.js\";\nimport { getTodayDate } from \"../utils/date-utils.js\";\nimport { SECTION_TYPE_GRANULARITY } from \"../utils/getDefaultReferenceDate.js\";\nexport const useClockReferenceDate = ({\n value,\n referenceDate: referenceDateProp,\n adapter,\n props,\n timezone\n}) => {\n const referenceDate = React.useMemo(() => singleItemValueManager.getInitialReferenceValue({\n value,\n adapter,\n props,\n referenceDate: referenceDateProp,\n granularity: SECTION_TYPE_GRANULARITY.day,\n timezone,\n getTodayDate: () => getTodayDate(adapter, timezone, 'date')\n }),\n // We want the `referenceDate` to update on prop and `timezone` change (https://github.com/mui/mui-x/issues/10804)\n [referenceDateProp, timezone] // eslint-disable-line react-hooks/exhaustive-deps\n );\n return value ?? referenceDate;\n};","import * as React from 'react';\nimport { useLocalizationContext, usePickerAdapter } from \"../../hooks/usePickerAdapter.js\";\nexport const useDefaultDates = () => useLocalizationContext().defaultDates;\nexport const useNow = timezone => {\n const adapter = usePickerAdapter();\n const now = React.useRef(undefined);\n if (now.current === undefined) {\n now.current = adapter.date(undefined, timezone);\n }\n return now.current;\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useControlled from '@mui/utils/useControlled';\nimport { DEFAULT_STEP_NAVIGATION } from \"../utils/createStepNavigation.js\";\nlet warnedOnceNotValidView = false;\nexport function useViews({\n onChange,\n onViewChange,\n openTo,\n view: inView,\n views,\n autoFocus,\n focusedView: inFocusedView,\n onFocusedViewChange,\n getStepNavigation\n}) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnceNotValidView) {\n if (inView != null && !views.includes(inView)) {\n console.warn(`MUI X: \\`view=\"${inView}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n warnedOnceNotValidView = true;\n }\n if (inView == null && openTo != null && !views.includes(openTo)) {\n console.warn(`MUI X: \\`openTo=\"${openTo}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n warnedOnceNotValidView = true;\n }\n }\n }\n const previousOpenTo = React.useRef(openTo);\n const previousViews = React.useRef(views);\n const defaultView = React.useRef(views.includes(openTo) ? openTo : views[0]);\n const [view, setView] = useControlled({\n name: 'useViews',\n state: 'view',\n controlled: inView,\n default: defaultView.current\n });\n const defaultFocusedView = React.useRef(autoFocus ? view : null);\n const [focusedView, setFocusedView] = useControlled({\n name: 'useViews',\n state: 'focusedView',\n controlled: inFocusedView,\n default: defaultFocusedView.current\n });\n const stepNavigation = getStepNavigation ? getStepNavigation({\n setView,\n view,\n defaultView: defaultView.current,\n views\n }) : DEFAULT_STEP_NAVIGATION;\n React.useEffect(() => {\n // Update the current view when `openTo` or `views` props change\n if (previousOpenTo.current && previousOpenTo.current !== openTo || previousViews.current && previousViews.current.some(previousView => !views.includes(previousView))) {\n setView(views.includes(openTo) ? openTo : views[0]);\n previousViews.current = views;\n previousOpenTo.current = openTo;\n }\n }, [openTo, setView, view, views]);\n const viewIndex = views.indexOf(view);\n const previousView = views[viewIndex - 1] ?? null;\n const nextView = views[viewIndex + 1] ?? null;\n const handleFocusedViewChange = useEventCallback((viewToFocus, hasFocus) => {\n if (hasFocus) {\n // Focus event\n setFocusedView(viewToFocus);\n } else {\n // Blur event\n setFocusedView(prevFocusedView => viewToFocus === prevFocusedView ? null : prevFocusedView // If false the blur is due to view switching\n );\n }\n onFocusedViewChange?.(viewToFocus, hasFocus);\n });\n const handleChangeView = useEventCallback(newView => {\n // always keep the focused view in sync\n handleFocusedViewChange(newView, true);\n if (newView === view) {\n return;\n }\n setView(newView);\n if (onViewChange) {\n onViewChange(newView);\n }\n });\n const goToNextView = useEventCallback(() => {\n if (nextView) {\n handleChangeView(nextView);\n }\n });\n const setValueAndGoToNextView = useEventCallback((value, currentViewSelectionState, selectedView) => {\n const isSelectionFinishedOnCurrentView = currentViewSelectionState === 'finish';\n const hasMoreViews = selectedView ?\n // handles case like `DateTimePicker`, where a view might return a `finish` selection state\n // but when it's not the final view given all `views` -> overall selection state should be `partial`.\n views.indexOf(selectedView) < views.length - 1 : Boolean(nextView);\n const globalSelectionState = isSelectionFinishedOnCurrentView && hasMoreViews ? 'partial' : currentViewSelectionState;\n onChange(value, globalSelectionState, selectedView);\n\n // The selected view can be different from the active view,\n // This can happen if multiple views are displayed, like in `DesktopDateTimePicker` or `MultiSectionDigitalClock`.\n let currentView = null;\n if (selectedView != null && selectedView !== view) {\n currentView = selectedView;\n } else if (isSelectionFinishedOnCurrentView) {\n currentView = view;\n }\n if (currentView == null) {\n return;\n }\n const viewToNavigateTo = views[views.indexOf(currentView) + 1];\n if (viewToNavigateTo == null || !stepNavigation.areViewsInSameStep(currentView, viewToNavigateTo)) {\n return;\n }\n handleChangeView(viewToNavigateTo);\n });\n return _extends({}, stepNavigation, {\n view,\n setView: handleChangeView,\n focusedView,\n setFocusedView: handleFocusedViewChange,\n nextView,\n previousView,\n // Always return up-to-date default view instead of the initial one (i.e. defaultView.current)\n defaultView: views.includes(openTo) ? openTo : views[0],\n goToNextView,\n setValueAndGoToNextView\n });\n}","import * as React from 'react';\nimport { getMeridiem, convertToMeridiem } from \"../utils/time-utils.js\";\nimport { usePickerAdapter } from \"../../hooks/usePickerAdapter.js\";\nexport function useNextMonthDisabled(month, {\n disableFuture,\n maxDate,\n timezone\n}) {\n const adapter = usePickerAdapter();\n return React.useMemo(() => {\n const now = adapter.date(undefined, timezone);\n const lastEnabledMonth = adapter.startOfMonth(disableFuture && adapter.isBefore(now, maxDate) ? now : maxDate);\n return !adapter.isAfter(lastEnabledMonth, month);\n }, [disableFuture, maxDate, month, adapter, timezone]);\n}\nexport function usePreviousMonthDisabled(month, {\n disablePast,\n minDate,\n timezone\n}) {\n const adapter = usePickerAdapter();\n return React.useMemo(() => {\n const now = adapter.date(undefined, timezone);\n const firstEnabledMonth = adapter.startOfMonth(disablePast && adapter.isAfter(now, minDate) ? now : minDate);\n return !adapter.isBefore(firstEnabledMonth, month);\n }, [disablePast, minDate, month, adapter, timezone]);\n}\nexport function useMeridiemMode(date, ampm, onChange, selectionState) {\n const adapter = usePickerAdapter();\n const cleanDate = React.useMemo(() => !adapter.isValid(date) ? null : date, [adapter, date]);\n const meridiemMode = getMeridiem(cleanDate, adapter);\n const handleMeridiemChange = React.useCallback(mode => {\n const timeWithMeridiem = cleanDate == null ? null : convertToMeridiem(cleanDate, mode, Boolean(ampm), adapter);\n onChange(timeWithMeridiem, selectionState ?? 'partial');\n }, [ampm, cleanDate, onChange, selectionState, adapter]);\n return {\n meridiemMode,\n handleMeridiemChange\n };\n}","/**\n * TimeClock — Dash wrapper for MUI X TimeClock (@mui/x-date-pickers, Community)\n *\n * An inline time selector (no input / popper / modal). The user drags the clock\n * hand or clicks the numbers to pick hours, minutes, and optionally seconds.\n *\n * Dash boundary contract\n * ----------------------\n * dayjs objects cannot cross the Dash <-> Python boundary, so `value` and\n * `defaultValue` are exchanged as plain strings:\n * - Full wall-time ISO : \"2022-04-17T15:30:00\"\n * - Time-only : \"15:30\" or \"15:30:45\"\n * On every change the component pushes back `value` (full wall-time ISO string),\n * the current `view`, and a convenience `timeData` object — so a callback can use\n * the parsed parts without re-parsing the string.\n *\n * MUI components inside this wrapper follow the Mantine color scheme on ,\n * so the clock re-skins automatically in dark mode (same approach as TreeViewPro).\n */\nimport React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport dayjs from 'dayjs';\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {AdapterDayjs} from '@mui/x-date-pickers/AdapterDayjs';\nimport {TimeClock as MuiTimeClock} from '@mui/x-date-pickers/TimeClock';\nimport {ThemeProvider, createTheme} from '@mui/material/styles';\n\n// --- Color scheme: watch ---------------\nconst readMantineScheme = () => {\n if (typeof document === 'undefined') return 'light';\n const v = document.documentElement.getAttribute('data-mantine-color-scheme');\n return v === 'dark' ? 'dark' : 'light';\n};\n\nconst useMantineColorScheme = () => {\n const [scheme, setScheme] = useState(readMantineScheme);\n useEffect(() => {\n if (typeof document === 'undefined') return undefined;\n const html = document.documentElement;\n const sync = () => setScheme(readMantineScheme());\n const obs = new MutationObserver(sync);\n obs.observe(html, {\n attributes: true,\n attributeFilter: ['data-mantine-color-scheme'],\n });\n sync();\n return () => obs.disconnect();\n }, []);\n return scheme;\n};\n\nconst lightTheme = createTheme({palette: {mode: 'light'}});\nconst darkTheme = createTheme({palette: {mode: 'dark'}});\n\n// --- String <-> dayjs at the Dash boundary ----------------------------------\nconst TIME_ONLY_RE = /^(\\d{1,2}):(\\d{2})(:(\\d{2}))?$/;\n\n/** Parse a Dash string value into a dayjs object (or null). */\nconst parseToDayjs = (val) => {\n if (val === null || val === undefined || val === '') return null;\n if (typeof val !== 'string') return null;\n const m = val.match(TIME_ONLY_RE);\n if (m) {\n // Time-only string: anchor it to today's date so the clock has a date part.\n const base = dayjs().startOf('day');\n const withTime = base\n .hour(parseInt(m[1], 10))\n .minute(parseInt(m[2], 10))\n .second(m[4] ? parseInt(m[4], 10) : 0);\n return withTime.isValid() ? withTime : null;\n }\n const d = dayjs(val);\n return d.isValid() ? d : null;\n};\n\n/**\n * TimeClock lets the user pick a time on an inline clock face (hours, minutes,\n * and optionally seconds) without any input, popper, or modal. Values are\n * exchanged with Dash as strings; on change it emits `value` (wall-time ISO),\n * the current `view`, and a parsed `timeData` convenience object.\n */\nconst TimeClock = (props) => {\n const {\n id,\n value,\n defaultValue,\n views,\n view,\n openTo,\n ampm,\n disabled,\n readOnly,\n autoFocus,\n minutesStep,\n minTime,\n maxTime,\n disableFuture,\n disablePast,\n disableIgnoringDatePartForTimeValidation,\n showViewSwitcher,\n className,\n sx,\n setProps,\n } = props;\n\n const scheme = useMantineColorScheme();\n const theme = scheme === 'dark' ? darkTheme : lightTheme;\n\n // --- Parse incoming string props to dayjs -------------------------------\n const dValue = useMemo(() => parseToDayjs(value), [value]);\n const dDefault = useMemo(() => parseToDayjs(defaultValue), [defaultValue]);\n const dMinTime = useMemo(() => parseToDayjs(minTime), [minTime]);\n const dMaxTime = useMemo(() => parseToDayjs(maxTime), [maxTime]);\n\n // --- Change handlers -> Dash outputs ------------------------------------\n const handleChange = useCallback(\n (newVal) => {\n if (!setProps) return;\n if (!newVal || typeof newVal.isValid !== 'function' || !newVal.isValid()) {\n setProps({\n value: null,\n timeData: {\n hours: null,\n minutes: null,\n seconds: null,\n formatted: null,\n event_timestamp: Date.now(),\n },\n });\n return;\n }\n setProps({\n value: newVal.format('YYYY-MM-DDTHH:mm:ss'),\n timeData: {\n hours: newVal.hour(),\n minutes: newVal.minute(),\n seconds: newVal.second(),\n formatted: newVal.format('HH:mm:ss'),\n event_timestamp: Date.now(),\n },\n });\n },\n [setProps]\n );\n\n const handleViewChange = useCallback(\n (newView) => {\n if (setProps) setProps({view: newView});\n },\n [setProps]\n );\n\n // --- Assemble the controlled/uncontrolled value -------------------------\n const clockProps = {};\n if (value !== undefined && value !== null) {\n clockProps.value = dValue; // controlled\n } else if (defaultValue !== undefined && defaultValue !== null) {\n clockProps.defaultValue = dDefault; // uncontrolled initial\n }\n if (view !== undefined && view !== null) clockProps.view = view;\n\n return (\n
\n \n \n \n \n \n
\n );\n};\n\nTimeClock.defaultProps = {\n views: ['hours', 'minutes'],\n disabled: false,\n readOnly: false,\n autoFocus: false,\n disableFuture: false,\n disablePast: false,\n disableIgnoringDatePartForTimeValidation: false,\n showViewSwitcher: false,\n};\n\nTimeClock.propTypes = {\n /** Dash component id */\n id: PropTypes.string,\n\n // --- Value (string <-> dayjs at the boundary) ---------------------------\n /**\n * Controlled value. Full wall-time ISO (\"2022-04-17T15:30:00\") or time-only\n * (\"15:30\" / \"15:30:45\"). Also an OUTPUT: updated on every change with a\n * full wall-time ISO string.\n */\n value: PropTypes.string,\n\n /** Uncontrolled initial value (same string formats as `value`). */\n defaultValue: PropTypes.string,\n\n // --- Views --------------------------------------------------------------\n /** Which views to render, in order. Default [\"hours\", \"minutes\"]. */\n views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'minutes', 'seconds'])),\n\n /** Controlled visible view. Also an OUTPUT — updated when the view changes. */\n view: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /** Which view to open first (uncontrolled). */\n openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n // --- Format -------------------------------------------------------------\n /** Force 12h (true) or 24h (false). Omit to use the locale default. */\n ampm: PropTypes.bool,\n\n // --- Form props ---------------------------------------------------------\n /** Disable the whole clock. */\n disabled: PropTypes.bool,\n\n /** Make the clock read-only (no editing). */\n readOnly: PropTypes.bool,\n\n /** Auto-focus the clock on mount. */\n autoFocus: PropTypes.bool,\n\n // --- Constraints --------------------------------------------------------\n /** Step (in minutes) between selectable minute values. */\n minutesStep: PropTypes.number,\n\n /** Minimum selectable time (ISO or time-only string). */\n minTime: PropTypes.string,\n\n /** Maximum selectable time (ISO or time-only string). */\n maxTime: PropTypes.string,\n\n /** Disable times in the future (relative to now). */\n disableFuture: PropTypes.bool,\n\n /** Disable times in the past (relative to now). */\n disablePast: PropTypes.bool,\n\n /**\n * When true, min/max time comparisons include the date part. When false\n * (default), only the time-of-day is compared.\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /** Show the hours/minutes/seconds view-switch arrow buttons. */\n showViewSwitcher: PropTypes.bool,\n\n // --- Appearance ---------------------------------------------------------\n /** CSS class applied to the wrapping div. */\n className: PropTypes.string,\n\n /** MUI sx styling object applied to the TimeClock. */\n sx: PropTypes.object,\n\n // --- Output props -------------------------------------------------------\n /**\n * Parsed convenience output, updated on every change:\n * { hours, minutes, seconds, formatted (\"HH:mm:ss\"), event_timestamp }.\n */\n timeData: PropTypes.exact({\n hours: PropTypes.number,\n minutes: PropTypes.number,\n seconds: PropTypes.number,\n formatted: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n /** Dash setProps callback */\n setProps: PropTypes.func,\n};\n\nexport default TimeClock;\n"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","module","exports","e","LTS","LT","L","LL","LLL","LLLL","t","n","r","i","o","s","a","f","this","h","zone","offset","match","u","indexOf","concat","d","meridiem","c","A","afternoon","Q","month","S","milliseconds","SS","SSS","ss","m","mm","H","HH","hh","D","DD","Do","ordinal","day","replace","w","ww","M","MM","MMM","map","slice","Error","MMMM","Y","YY","year","YYYY","Z","ZZ","l","formats","toUpperCase","length","regex","parser","exec","call","hours","p","customParseFormat","parseTwoDigitYear","prototype","parse","date","utc","args","$u","$locale","Ls","$d","Date","minutes","seconds","week","getDate","getFullYear","v","getMonth","g","y","UTC","toDate","init","$L","locale","format","Array","apply","isValid","k","Symbol","for","Object","hasOwnProperty","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","key","ref","__self","__source","q","b","defaultProps","$$typeof","type","props","_owner","current","jsx","jsxs","window","React","shim","objectIs","is","x","useSyncExternalStore","useRef","useEffect","useMemo","useDebugValue","useSyncExternalStoreWithSelector","subscribe","getSnapshot","getServerSnapshot","selector","isEqual","instRef","inst","hasValue","value","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","z","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","name","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","render","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","targetStatics","sourceStatics","descriptor","$","weekdays","split","months","String","join","utcOffset","Math","abs","floor","clone","add","ceil","ms","toLowerCase","_","O","$x","$offset","NaN","test","substring","$y","$M","$D","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","weekStart","$set","min","daysInMonth","get","Number","round","subtract","invalidDate","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","forEach","extend","$i","isDayjs","en","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_CLIENT_REFERENCE","getModuleId","bind","weekYear","isoWeekYear","isoWeek","offsetName","isBetween","yearStart","weeks","useState","useLayoutEffect","checkIfSnapshotChanged","latestGetSnapshot","nextValue","error","document","createElement","_useState","forceUpdate","kSampleStepSize","float32ArraySupported","Float32Array","aA1","aA2","B","C","calcBezier","aT","getSlope","LinearEasing","mX1","mY1","mX2","mY2","sampleValues","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","getTForX","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","id","loaded","__webpack_modules__","getter","__esModule","obj","mode","then","ns","create","def","definition","enumerable","chunkId","Promise","all","reduce","promises","globalThis","Function","prop","url","done","push","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","fn","setTimeout","target","head","appendChild","toStringTag","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","getCurrentScript","doc_scripts","filter","async","text","textContent","jsonpScriptSrc","__jsonpScriptSrc__","isLocal","srcFragments","fileFragments","splice","installedChunks","j","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","self","ponyfillGlobal","__MUI_LICENSE_INFO__","LicenseInfo","getLicenseInfo","getLicenseKey","setLicenseKey","assign","fastObjectShallowCompare","aLength","bLength","sendMuiXTelemetryEvent","licenseVerification","_keyStr","base64Decode","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","charAt","fromCharCode","sin","PI","LICENSE_STATUS","PLAN_SCOPES","LICENSE_MODELS","expiryReg","orderReg","PRO_PACKAGES_AVAILABLE_IN_INITIAL_PRO_PLAN","verifyLicense","releaseInfo","licenseKey","packageName","status","NotFound","hash","substr","encoded","words","unescape","encodeURI","charCodeAt","md5","Invalid","license","encodedLicense","includes","expiryTimestamp","orderId","parseInt","isNaN","err","version","licenseModel","planScope","planVersion","expiryDate","decodeLicenseVersion1","licenseInfo","token","el","orderNum","decodeLicenseVersion2","decodeLicense","console","pkgTimestamp","ExpiredVersion","acceptedScopes","isPlanScopeSufficient","Valid","NotAvailableInInitialProPlan","OutOfScope","isCodeSandbox","hostname","endsWith","showError","log","sharedLicenseStatuses","useLicenseVerifier","contextKey","licenseVerifier","plan","licenseStatus","fullPackageName","packageReleaseInfo","rootPackageName","showLicenseKeyPlanMismatchError","showMissingLicenseKeyError","ExpiredAnnualGrace","showExpiredAnnualGraceLicenseKeyError","meta","ExpiredAnnual","showExpiredAnnualLicenseKeyError","showExpiredPackageVersionError","getLicenseErrorMessage","MemoizedWatermark","style","position","pointerEvents","color","zIndex","width","textAlign","bottom","right","letterSpacing","fontSize","globalId","maybeReactUseId","useId","idOverride","reactId","defaultId","setDefaultId","useGlobalId","useStoreImplementation","reactMajor","store","a1","a2","a3","getSelection","state","Store","constructor","listeners","Set","updateTick","delete","setState","newState","currentTick","it","values","result","next","listener","update","changes","use","useChartAnimation","params","animation","skip","skipAnimation","disableAnimation","disableCalled","skipAnimationRequests","matchMedia","disableAnimationCleanup","handleMediaChange","matches","mql","addEventListener","removeEventListener","instance","useEffectAfterFirstRender","effect","deps","isFirstRender","getDefaultizedParams","getInitialState","DEFAULT_X_AXIS_KEY","DEFAULT_Y_AXIS_KEY","DEFAULT_MARGINS","top","left","NOT_FOUND","ensureIsArray","item","isArray","referenceEqualityCheck","lruMemoize","func","equalityCheckOrOptions","providedOptions","equalityCheck","maxSize","resultEqualityCheck","comparator","createCacheKeyComparator","resultsCount","cache","equals","entry","put","getEntries","clear","createSingletonCache","entries","cacheIndex","findIndex","unshift","pop","createLruCache","memoized","matchingEntry","find","clearCache","resetResultsCount","Ref","WeakRef","deref","createCacheNode","weakMapMemoize","options","fnNode","lastResult","cacheNode","arg","objectCache","WeakMap","objectNode","primitiveCache","Map","primitiveNode","terminatedNode","lastResultValue","createSelectorCreator","memoizeOrOptions","memoizeOptionsFromArgs","createSelectorCreatorOptions","memoize","memoizeOptions","createSelector2","createSelectorArgs","recomputations","dependencyRecomputations","directlyPassedOptions","resultFunc","errorMessage","TypeError","assertIsFunction","combinedOptions","argsMemoize","argsMemoizeOptions","devModeChecks","finalMemoizeOptions","finalArgsMemoizeOptions","dependencies","array","every","itemTypes","assertIsArrayOfFunctions","getDependencies","memoizedResultFunc","inputSelectorResults","inputSelectorArgs","collectInputSelectorResults","resetDependencyRecomputations","resetRecomputations","withTypes","createSelector","createStructuredSelector","inputSelectorsObject","selectorCreator","object","assertIsObject","inputSelectorKeys","structuredSelector","composition","index","reselectCreateSelector","other","va","vb","vc","vd","ve","vf","vg","createSelectorMemoizedWithOptions","inputs","nextCacheId","combiner","nSelectors","argsLength","max","cacheKey","__cacheKey__","selectors","reselectArgs","selectorArgs","createSelectorMemoized","selectorChartRawXAxis","cartesianAxis","selectorChartRawYAxis","selectorChartAxisSizes","yAxis","acc","axis","zoom","slider","enabled","size","xAxis","height","selectorChartDimensionsState","dimensions","selectorChartDrawingArea","margin","marginTop","marginRight","marginBottom","marginLeft","axisSizeLeft","axisSizeRight","axisSizeTop","axisSizeBottom","selectorChartSvgWidth","dimensionsState","selectorChartSvgHeight","selectorChartPropsWidth","propsWidth","selectorChartPropsHeight","propsHeight","defaultizeMargin","defaultMargin","useChartDimensions","svgRef","hasInSize","stateRef","displayError","initialCompute","computeRun","innerWidth","setInnerWidth","innerHeight","setInnerHeight","computeSize","mainEl","computedStyle","node","doc","ownerDocument","defaultView","ownerWindow","getComputedStyle","newHeight","parseFloat","newWidth","computedSize","elementToObserve","ResizeObserver","animationFrame","observer","requestAnimationFrame","observe","cancelAnimationFrame","unobserve","drawingArea","isXInside","isYInside","isPointInside","targetElement","closest","useChartExperimentalFeatures","experimentalFeatures","globalChartDefaultId","useChartId","providedChartId","chartId","rainbowSurgePaletteLight","rainbowSurgePaletteDark","rainbowSurgePalette","defaultizeSeries","series","colors","seriesConfig","seriesGroups","seriesData","seriesIndex","seriesWithDefaultValues","getSeriesWithDefaultValues","seriesOrder","identifier","serializer","identifierSerializer","useChartSeries","dataset","theme","defaultizedSeries","serializeIdentifier","EMPTY_ARRAY","ActiveGesturesRegistry","activeGestures","registerActiveGesture","element","gesture","has","unregisterActiveGesture","elementGestures","getActiveGestures","from","isGestureActive","destroy","unregisterElement","KeyboardManager","pressedKeys","initialize","handleKeyDown","handleKeyUp","clearKeys","areKeysPressed","navigator","platform","PointerManager","preventEventInterruption","pointers","gestureHandlers","root","getRootNode","composed","body","touchAction","passive","setupEventListeners","registerGestureHandler","handler","getPointers","handlePointerEvent","handleInterruptEvents","pointerType","preventDefault","cancelEvent","PointerEvent","bubbles","cancelable","firstPointer","defineProperties","clientX","clientY","pointerId","pointer","updatedPointer","notifyHandlers","createPointerData","pageX","pageY","timeStamp","isPrimary","pressure","srcEvent","GestureManager","gestureTemplates","elementGestureMap","activeGesturesRegistry","keyboardManager","pointerManager","gestures","addGestureTemplate","warn","setGestureOptions","gestureName","CustomEvent","detail","dispatchEvent","setGestureState","registerElement","gestureNames","gestureOptions","registerSingleGesture","gestureTemplate","gestureInstance","unregisterAllGestures","eventList","abort","animationcancel","animationend","animationiteration","animationstart","auxclick","beforeinput","beforetoggle","blur","cancel","canplay","canplaythrough","change","click","close","compositionend","compositionstart","compositionupdate","contextlost","contextmenu","contextrestored","copy","cuechange","cut","dblclick","drag","dragend","dragenter","dragleave","dragover","dragstart","drop","durationchange","emptied","ended","focus","focusin","focusout","formdata","gotpointercapture","invalid","keydown","keypress","keyup","load","loadeddata","loadedmetadata","loadstart","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","paste","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","scrollend","securitypolicyviolation","seeked","seeking","select","selectionchange","selectstart","slotchange","stalled","submit","suspend","timeupdate","toggle","touchcancel","touchend","touchmove","touchstart","transitioncancel","transitionend","transitionrun","transitionstart","volumechange","waiting","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend","wheel","beforematch","pointerrawupdate","Gesture","customData","stopPropagation","preventIf","requiredKeys","pointerMode","pointerOptions","gestureRegistry","gesturesRegistry","changeOptionsEventName","handleOptionsChange","changeStateEventName","handleStateChange","updateOptions","getBaseConfig","getEffectiveConfig","baseConfig","pointerModeOverrides","updateState","stateChanges","getTargetElement","isActive","contains","ShadowRoot","composedPath","shouldPreventGesture","effectiveConfig","isPointerTypeAllowed","PointerGesture","unregisterHandler","originalTarget","super","minPointers","maxPointers","Infinity","isWithinPointerCount","config","getRelevantPointers","calculatedTarget","calculateCentroid","sum","MAIN_THRESHOLD","createEventName","phase","PanGesture","startPointers","startCentroid","lastCentroid","movementThresholdReached","totalDeltaX","totalDeltaY","activeDeltaX","activeDeltaY","lastDirection","vertical","horizontal","mainAxis","lastDeltas","direction","threshold","overrides","structuredClone","resetState","pointersArray","relevantPointers","oldCentroid","newCentroid","offsetX","offsetY","currentCentroid","distanceDeltaX","distanceDeltaY","distance","sqrt","moveDirection","previous","deltaX","deltaY","isDiagonal","angle","atan2","isDiagonalMovement","mainMovement","horizontalThreshold","verticalThreshold","getDirection","lastDeltaX","lastDeltaY","allowedDirections","verticalAllowed","horizontalAllowed","isDirectionAllowed","emitPanEvent","remainingPointers","removedPointerId","timeElapsed","velocityX","velocityY","velocity","customEventData","initialCentroid","centroid","eventName","domEvent","MoveGesture","lastPosition","handleElementEnter","handleElementLeave","currentPosition","emitMoveEvent","TapGesture","currentTapCount","lastTapTime","maxDistance","taps","cancelTap","fireTapEvent","tapCount","PressGesture","timerId","startTime","pressThresholdReached","duration","clearPressTimer","cancelPress","emitPressEvent","currentDuration","getDistance","pointA","pointB","calculateAverageDistance","totalDistance","pairCount","PinchGesture","startDistance","lastDistance","lastScale","lastTime","totalScale","deltaScale","emitPinchEvent","initialDistance","newDistance","currentDistance","distanceChange","scale","scaleChange","deltaTime","TurnWheelGesture","totalDeltaZ","sensitivity","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","initialDelta","invert","handleWheelEvent","deltaZ","emitWheelEvent","deltaMode","TapAndDragGesture","dragTimeoutId","tapMaxDistance","dragTimeout","dragThreshold","dragDirection","tapGesture","panGesture","tapHandler","dragStartHandler","dragMoveHandler","dragEndHandler","restoreTouchAction","setTouchAction","PressAndDragGesture","pressDuration","pressMaxDistance","pressGesture","pressHandler","useChartInteractionListener","gestureManagerRef","svg","gestureManager","addInteractionListener","interaction","callback","cleanup","updateZoomInteractionListeners","CHART_CORE_PLUGINS","_objectWithoutPropertiesLoose","_excluded","extractPluginParamsFromProps","_ref","plugins","paramsLookup","plugin","pluginParams","propName","ChartContext","UNINITIALIZED","useLazyRef","initArg","EMPTY","previousState","dispose","nextState","onMount","selectorChartSeriesState","selectorChartDefaultizedSeries","seriesState","selectorChartSeriesConfig","selectorChartDataset","selectorChartSeriesProcessed","processedSeries","group","seriesProcessor","applySeriesProcessors","selectorChartSeriesLayout","processingDetected","seriesLayout","processor","thisSeries","newValue","applySeriesLayout","ZOOM_SLIDER_MARGIN","ZOOM_SLIDER_PREVIEW_SIZE","DEFAULT_ZOOM_SLIDER_SIZE","DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE","DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP","DEFAULT_PIE_CHART_MARGIN","defaultZoomOptions","minStart","maxEnd","step","minSpan","maxSpan","panning","filterMode","reverse","preview","showTooltip","defaultizeZoom","axisId","axisDirection","defaultizeXAxis","inAxes","offsets","none","parsedAxes","scaleType","axisConfig","dataKey","defaultPosition","defaultHeight","label","sharedConfig","defaultizeYAxis","defaultWidth","createScalarFormatter","tickNumber","zoomScale","context","domain","tickFormat","isBandScaleConfig","scaleConfig","isPointScaleConfig","ascending","descending","bisector","compare1","compare2","delta","lo","hi","mid","zero","center","ascendingBisect","bisectRight","initRange","range","interpolator","unknown","bisect","invertExtent","factory","parent","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","trim","rgbn","Rgb","rgba","hsla","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","basis","t1","v0","v1","v2","v3","t2","t3","channels","displayable","formatHex8","formatHsl","pow","clamp","nogamma","linear","rgbGamma","exponential","gamma","start","end","rgbSpline","spline","rgbBasis","genericArray","nb","na","setTime","reA","reB","source","am","bm","bs","bi","lastIndex","one","string","ArrayBuffer","isView","DataView","unit","identity","normalize","bimap","interpolate","d0","d1","r0","r1","polymap","transformer","transform","untransform","piecewise","rescale","clamper","rangeRound","continuous","e10","e5","e2","tickSpec","stop","count","power","log10","factor","i1","i2","inc","ticks","tickIncrement","tickStep","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","comma","precision","formatDecimalParts","toExponential","coefficient","exponent","toFixed","toLocaleString","toPrecision","formatRounded","formatPrefix","prefixes","linearish","precisionPrefix","precisionRound","precisionFixed","nice","prestep","i0","maxIter","sequential","t0","k10","x0","x1","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","prefix","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","padding","InternMap","keyof","_intern","_key","intern_get","intern_set","intern_delete","implicit","getSequentialColorScale","thresholds","getOrdinalColorScale","unknownColor","getColorScale","getTickNumber","defaultTickNumber","tickMaxStep","tickMinStep","maxTicks","minTicks","defaultizedTickNumber","scaleTickNumberByRange","getDefaultTickNumber","dimension","interval","transformLog","transformExp","exp","transformLogn","transformExpn","pow10","isFinite","reflect","logs","pows","base","E","log2","logp","powp","transformPow","transformSqrt","transformSquare","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationYear","timeInterval","floori","offseti","field","millisecond","second","getUTCSeconds","timeMinute","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","utcDate","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","names","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","time","transformSymlog","log1p","transformSymexp","expm1","symlog","constant","scaleSymlog","originalTicks","negativeScale","linearScale","positiveScale","generateScales","negativeLogTickCount","linearTickCount","positiveLogTickCount","tick","finalTicks","linearTicks","at","positiveTicks","extent","negativeScaleDomain","negativeScaleExtent","negativeScaleTickCount","linearScaleDomain","linearScaleExtent","linearScaleTickCount","positiveScaleDomain","positiveScaleExtent","positiveScaleTickCount","negativeTickFormat","linearTickFormat","positiveTickFormat","getScale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","utcFormats","parses","parseSpecifier","newParse","X","utcParse","formatLocale","isDateData","createDateFormatter","timeScale","cartesianInstance","polarInstance","cartesianSeriesTypes","types","addType","getTypes","polarSeriesTypes","isCartesianSeriesType","seriesType","isCartesianSeries","isOrdinalScale","bandwidth","isBandScale","paddingOuter","computeAxisValue","scales","formattedSeries","allAxis","zoomMap","domains","axisIds","axisIdsTriggeringTooltip","defaultAxisId","tooltipAxesIds","chartType","tooltipAxes","axisTooltipGetter","getAxisTriggerTooltip","completeAxis","eachAxis","zoomRange","getRange","rawTickNumber","triggerTooltip","ignoreTooltip","scaleRange","desiredCategoryGapRatio","categoryGapRatio","ignoreGapRatios","shouldIgnoreGapRatios","barGapRatio","colorScale","colorMap","dateFormatter","valueFormatter","continuousAxis","isDefined","createDiscreteScaleGetAxisFilter","axisData","zoomStart","zoomEnd","maxIndex","minVal","maxVal","dataIndex","createContinuousScaleGetAxisFilter","val","createZoomLookup","axes","defaultizedZoom","selectorPreferStrictDomainInLineCharts","features","Boolean","preferStrictDomainInLineCharts","JSON","stringify","scaleBand","ordinalRange","isRound","paddingInner","adjustedStart","finalStart","finalBandwidth","arg0","arg1","scalePoint","originalCopy","copied","getNormalizedAxisScale","zoomScaleRange","rangeGap","zoomGap","axisExtremumCallback","axisIndex","getFilters","xExtremumGetter","yExtremumGetter","isDefaultAxis","getAxisExtrema","cartesianChartTypes","extrema","niceDomain","calculateInitialDomainAndTickNumber","minData","maxData","domainLimit","getDomainLimit","axisExtrema","getActualAxisExtrema","calculateFinalDomain","seriesId","line","xAxisId","getAxisDomainLimit","FlatQueue","ids","priority","pos","parentValue","last","halfLen","child","peek","peekValue","shrink","ARRAY_TYPES","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float64Array","Flatbush","byteOffset","byteLength","buffer","magic","versionAndType","ArrayType","nodeSize","numItems","ArrayBufferType","numNodes","_levelBounds","IndexArrayType","arrayTypeIndex","nodesByteSize","BYTES_PER_ELEMENT","_boxes","_indices","_pos","minX","minY","maxX","maxY","_queue","boxes","finish","hilbertValues","hilbert","sort","nodeIndex","nodeMinX","nodeMinY","nodeMaxX","nodeMaxY","search","filterFn","queue","results","upperBound","neighbors","maxResults","maxDistSq","sqDistFn","sqDist","outer","dist","dx","dy","arr","indices","pivot","swap","temp","selectorChartZoomState","selectorChartHasZoom","xAxes","yAxes","selectorChartZoomIsInteracting","isInteracting","selectorChartZoomMap","zoomData","zoomItemMap","zoomItem","createZoomMap","selectorChartAxisZoomData","selectorChartZoomOptionsLookup","selectorChartAxisZoomOptionsLookup","axisLookup","selectorDefaultXAxisTickNumber","selectorDefaultYAxisTickNumber","selectorChartXAxisWithDomains","ordinalTimeTicks","findLast","selectorChartYAxisWithDomains","selectorChartZoomAxisFilters","zoomOptions","xDomains","yDomains","hasFilter","filters","currentAxisId","seriesXAxisId","seriesYAxisId","createGetAxisFilters","selectorChartFilteredXDomains","filteredDomains","zoomOption","selectorChartFilteredYDomains","selectorChartNormalizedXScales","selectorChartNormalizedYScales","selectorChartXScales","normalizedScales","zoomedRange","selectorChartYScales","selectorChartXAxis","selectorChartYAxis","selectorChartAxis","selectorChartRawAxis","selectorChartDefaultXAxisId","selectorChartDefaultYAxisId","EMPTY_MAP","selectorChartSeriesEmptyFlatbushMap","selectorChartSeriesFlatbushMap","allSeries","xAxesScaleMap","yAxesScaleMap","defaultXAxisId","defaultYAxisId","validSeries","scatter","flatbushMap","yAxisId","flatbush","originalXScale","originalYScale","datum","getAsANumber","getAxisIndex","pointerValue","valueAsNumber","closestIndex","pointValue","getAxisValue","invertedValue","getSVGPoint","pt","createSVGPoint","matrixTransform","getScreenCTM","inverse","selectInteraction","selectorChartsInteractionIsInitialized","selectorChartsInteractionPointer","selectorChartsInteractionPointerX","selectorChartsInteractionPointerY","selectorChartsLastInteraction","lastUpdate","isDeepEqual","entriesA","entryA","flags","indexGetter","selectChartsInteractionAxisIndex","selectorChartsInteractionXAxisIndex","selectorChartsInteractionYAxisIndex","selectorChartAxisInteraction","valueGetter","indexes","selectorChartsInteractionXAxisValue","xIndex","selectorChartsInteractionYAxisValue","yIndex","selectorChartsInteractionTooltipXAxes","selectorChartsInteractionTooltipYAxes","selectorChartsInteractionAxisTooltip","xTooltip","yTooltip","checkHasInteractionPlugin","setPointerCoordinate","AXIS_CLICK_SERIES_TYPES","useChartCartesianAxis","onHighlightedAxisChange","isInteractionEnabled","xAxisWithScale","xAxisIds","yAxisWithScale","yAxisIds","highlightedAxis","usedXAxis","usedYAxis","useStoreEffect","prevAxisInteraction","nextAxisInteraction","itemIndex","hasInteractionPlugin","disableAxisListener","moveEndHandler","pan","cleanInteraction","panEndHandler","move","pressEndHandler","gestureHandler","srvEvent","svgPoint","buttons","hasPointerCapture","releasePointerCapture","moveHandler","panHandler","onAxisClick","axisClickHandler","isXAxis","USED_AXIS_ID","axisValue","seriesValues","seriesTypeConfig","seriesItem","providedXAxisId","providedYAxisId","axisKey","defaultizedXAxis","defaultizedYAxis","controlledCartesianAxisHighlight","useChartTooltip","removeTooltipItem","itemToRemove","prevItem","tooltip","setTooltipItem","newItem","useChartInteraction","setLastUpdateSource","coordinate","addDefaultId","processColorMap","getZAxisState","zAxis","zAxisLookup","defaultizedId","useChartZAxis","useChartHighlight","highlightedItem","highlight","clearHighlight","onHighlightChange","prevHighlight","isControlled","setHighlight","findMinMax","createResult","getBaseExtremum","getValueExtremum","stackedData","seriesMin","seriesMax","seriesAcc","order","s0","s1","stackValue","stackSeries","stack","oz","sz","peaks","peak","vi","vj","sums","StackOrder","appearance","insideOut","tops","bottoms","StackOffset","expand","diverging","seriesCount","numericOrder","pointCount","pointIndex","positiveSum","negativeSum","currentSeries","dataPoint","difference","silhouette","wiggle","s2","si","sij0","s3","sk","getStackingGroups","defaultStrategy","stackingGroups","stackIndex","stackOrder","stackOffset","stackingOrder","stackingOffset","barValueFormatter","getLabel","getSeriesColorFn","colorGetter","verticalLayout","layout","bandColorScale","valueColorScale","bandValues","getSeriesColor","getNonEmptySeriesArray","availableSeriesTypes","flatMap","seriesOfType","getPreviousNonEmptySeries","nonEmptySeries","currentSeriesIndex","getMaxSeriesLength","maxLengths","getNextNonEmptySeries","seriesHasData","createGetNextIndexFocusedItem","compatibleSeriesTypes","currentItem","nextSeries","maxLength","createGetPreviousIndexFocusedItem","previousSeries","createGetNextSeriesFocusedItem","createGetPreviousSeriesFocusedItem","outSeriesTypes","getBandSize","bandWidth","groupCount","gapRatio","barWidth","getBarDimensions","xAxisConfig","yAxisConfig","numberOfGroups","groupIndex","baseScaleConfig","barOffset","xScale","yScale","baseValue","seriesValue","valueCoordinates","minValueCoord","maxValueCoord","barSize","minBarSize","startCoordinate","invertStartCoordinate","shouldInvertStartCoordinate","identifierSerializerSeriesIdDataIndex","barSeriesConfig","d3Dataset","completedSeries","stackingGroup","stackedSeries","labelMarkType","colorProcessor","legendGetter","formattedLabel","markType","tooltipGetter","getColor","formattedValue","tooltipItemPositionGetter","axesConfig","placement","itemSeries","bar","keyboardFocusHandler","scatterSeriesConfig","fromEntries","datasetKeys","missingKeys","markerSize","zColorScale","yColorScale","xColorScale","xValue","yValue","hasOwn","lineSeriesConfig","area","isArea","seriesExtremums","getValues","stackedValue","getSeriesExtremums","baseline","cos","epsilon","pi","halfPi","tau","asin","deg2rad","defaultRad","getPercentageValue","refValue","percentage","getPieCoordinates","drawing","cx","cxParam","cy","cyParam","availableRadius","defaultSeriesConfig","pie","arcs","sortValues","startAngle","endAngle","padAngle","a0","da","pa","paddingAngle","getSortingComparator","sortingValues","piePoint","seriesLayoutRecord","innerRadius","outerRadius","arcLabelRadius","inner","radius","available","itemId","point","dataItem","points","y0","y1","defaultPlugins","ChartProvider","contextValue","inPlugins","publicAPI","inputApiRef","fallbackPublicApiRef","initializeInputApiRef","useChartApiInitialization","apiRef","innerChartRootRef","innerSvgRef","storeRef","initialState","pluginResponse","chartRootRef","useCharts","Provider","ChartsSlotsContext","useChartsSlots","ChartsSlotsProvider","slots","slotProps","defaultSlots","resolveProps","defaultSlotProps","slotKey","slotPropName","getThemeProps","components","isPlainObject","iterator","deepClone","createBreakpoints","breakpoints","xs","sm","md","lg","xl","sortedValues","breakpointsAsArray","breakpoint1","breakpoint2","sortBreakpointsValues","up","down","between","endIndex","only","not","keyIndex","sortContainerQueries","css","containerQueries","sorted","startsWith","borderRadius","defaultBreakpoints","defaultContainerQueries","containerName","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","breakpoint","breakpointKeys","isCqShorthand","containerKey","shorthand","containerQuery","getContainerQuery","cssKey","removeUnusedBreakpoints","breakpointOutput","formatMuiErrorMessage","code","URL","searchParams","append","getPath","path","checkVars","vars","getStyleValue","themeMapping","propValueFinal","userValue","cssProperty","themeKey","filterProps","properties","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","property","dir","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","defaultValue","themeSpacing","transformed","createUnarySpacing","cssProperties","getStyleFromPropValue","resolveCssProperty","spacing","createSpacing","spacingInput","mui","argsInput","argument","styles","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","gap","columnGap","rowGap","paletteTransform","sizingTransform","maxWidth","minWidth","maxHeight","minHeight","defaultSxConfig","bgcolor","backgroundColor","pr","pb","pl","px","py","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mr","mb","ml","mx","my","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","display","overflow","textOverflow","visibility","whiteSpace","flexBasis","flexDirection","flexWrap","justifyContent","alignItems","alignContent","flex","flexGrow","flexShrink","alignSelf","justifyItems","justifySelf","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","boxShadow","boxSizing","font","fontFamily","fontStyle","fontWeight","textTransform","lineHeight","typography","styleFunctionSx","getThemeValue","sx","nested","unstable_sxConfig","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsInput","breakpointsInOrder","createEmptyBreakpointObject","breakpointsKeys","styleKey","maybeFn","callIfFn","breakpointsValues","objects","allKeys","union","objectsHaveSameKeys","modularCssLayers","unstable_createStyleFunctionSx","applyStyles","colorSchemes","getColorSchemeSelector","palette","paletteInput","shape","shapeInput","muiTheme","themeInput","toContainerQuery","mediaQuery","attachCq","cssContainerQueries","unstable_sx","StyleSheet","_this","_insertTag","tag","before","tags","insertionPoint","nextSibling","prepend","container","firstChild","insertBefore","isSpeedy","speedy","ctr","nonce","_proto","hydrate","nodes","insert","rule","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","flush","_tag$parentNode","pattern","replacement","indexof","begin","column","character","characters","return","caret","alloc","dealloc","delimit","delimiter","whitespace","escaping","commenter","COMMENT","compile","rules","rulesets","pseudo","declarations","atrule","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","identifierWithPointTracking","fixedElements","compat","isImplicitRule","parsed","toRules","getRules","parentRules","removeLabel","defaultStylisPlugins","ssrStyles","querySelectorAll","_insert","stylisPlugins","inserted","nodesToHydrate","attrib","currentSheet","collection","finalizingPlugins","serialized","shouldCache","stylis","registered","registeredStyles","classNames","rawClassName","className","isStringTag","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexPositive","flexNegative","flexOrder","gridRowEnd","gridRowSpan","gridRowStart","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","orphans","tabSize","widows","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p1","p2","cursor","handleInterpolation","mergedProps","interpolation","componentSelector","__emotion_styles","keyframes","anim","serializedStyles","asString","interpolated","_i","createStringFromObject","previousCursor","cached","labelPattern","stringMode","strings","raw","identifierName","str","len","useInsertionEffect","useInsertionEffectWithLayoutFallback","EmotionCacheContext","HTMLElement","forwardRef","useContext","typePropName","Insertion","Emotion$1","cssProp","WrappedComponent","newProps","_key2","defaultTheme","contextTheme","systemDefaultTheme","useThemeWithoutDefault","clampWrapper","decomposeColor","hexToRgb","marker","colorSpace","shift","private_safeColorChannel","warning","decomposedColor","idx","colorChannel","recomposeColor","hslToRgb","getLuminance","alpha","private_safeAlpha","darken","private_safeDarken","lighten","private_safeLighten","private_safeEmphasize","emphasize","A100","A200","A400","A700","getLight","primary","secondary","disabled","divider","background","paper","default","action","active","hover","hoverOpacity","selected","selectedOpacity","disabledBackground","disabledOpacity","focusOpacity","activatedOpacity","light","getDark","icon","dark","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","main","createPalette","contrastThreshold","getDefaultPrimary","getDefaultSecondary","getDefaultError","info","getDefaultInfo","success","getDefaultSuccess","getDefaultWarning","getContrastText","contrastText","foreground","lumA","lumB","getContrastRatio","augmentColor","mainShade","lightShade","darkShade","modeHydrated","common","createGetCssVar","appendVar","fallbacks","prepareTypographyVars","fontVariant","fontStretch","assignNestedKeys","arrayKeys","cssVarsParser","shouldSkipGeneratingVar","varsWithDefaults","shouldSkipPaths","cssVar","resolvedValue","getCssValue","recurse","parentKeys","caseAllCaps","defaultFontFamily","createTypography","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem","pxToRem2","coef","buildVariant","casing","variants","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","inherit","createShadow","easing","easeInOut","easeOut","easeIn","sharp","shortest","shorter","short","standard","complex","enteringScreen","leavingScreen","formatMs","getAutoHeightDuration","createTransitions","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","delay","animatedProp","mobileStepper","fab","speedDial","appBar","drawer","modal","snackbar","isSerializable","stringifyTheme","baseTheme","serializableTheme","serializeTheme","mixinsInput","transitions","transitionsInput","typographyInput","generateThemeVars","systemTheme","toolbar","shadows","toRuntimeSource","getOverlayAlpha","elevation","alphaValue","defaultDarkOverlays","overlay","getOpacity","inputPlaceholder","inputUnderline","switchTrackDisabled","switchTrack","getOverlays","colorScheme","rootSelector","colorSchemeSelector","defaultColorScheme","excludedVariables","cssVarPrefix","setColor","toRgb","setColorChannel","silent","attachColorScheme","scheme","restTheme","overlays","rest","createColorScheme","createThemeWithVars","colorSchemesInput","defaultColorSchemeInput","disableCssColorScheme","firstColorScheme","getCssVar","defaultSchemeInput","builtInLight","builtInDark","customColorSchemes","defaultScheme","setCssVarColor","tokens","colorToken","Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","snackbarContentBackground","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip","parserConfig","getSelector","generateStyleSheets","defaultGetSelector","otherTheme","rootVars","rootCss","rootVarsWithDefaults","themeVars","colorSchemesMap","otherColorSchemes","cssObject","schemeVars","stylesheets","insertStyleSheet","defaultSchemeVal","cssColorSheme","finalCss","generateSpacing","createGetColorSchemeSelector","cssVariables","initialColorSchemes","initialDefaultColorScheme","paletteOptions","themeId","imageMimeTypes","enUSLocaleText","loading","noData","zoomIn","zoomOut","toolbarExport","toolbarExportPrint","toolbarExportImage","mimeType","chartTypeBar","chartTypeColumn","chartTypeLine","chartTypeArea","chartTypePie","chartPaletteLabel","chartPaletteNameRainbowSurge","chartPaletteNameBlueberryTwilight","chartPaletteNameMangoFusion","chartPaletteNameCheerfulFiesta","chartPaletteNameStrawberrySky","chartPaletteNameBlue","chartPaletteNameGreen","chartPaletteNamePurple","chartPaletteNameRed","chartPaletteNameOrange","chartPaletteNameYellow","chartPaletteNameCyan","chartPaletteNamePink","chartConfigurationSectionChart","chartConfigurationSectionColumns","chartConfigurationSectionBars","chartConfigurationSectionAxes","chartConfigurationGrid","chartConfigurationBorderRadius","chartConfigurationCategoryGapRatio","chartConfigurationBarGapRatio","chartConfigurationStacked","chartConfigurationShowToolbar","chartConfigurationSkipAnimation","chartConfigurationInnerRadius","chartConfigurationOuterRadius","chartConfigurationColors","chartConfigurationHideLegend","chartConfigurationShowMark","chartConfigurationHeight","chartConfigurationWidth","chartConfigurationSeriesGap","chartConfigurationTickPlacement","chartConfigurationTickLabelPlacement","chartConfigurationCategoriesAxisLabel","chartConfigurationSeriesAxisLabel","chartConfigurationXAxisPosition","chartConfigurationYAxisPosition","chartConfigurationSeriesAxisReverse","chartConfigurationTooltipPlacement","chartConfigurationTooltipTrigger","chartConfigurationLegendPosition","chartConfigurationLegendDirection","chartConfigurationBarLabels","chartConfigurationColumnLabels","chartConfigurationInterpolation","chartConfigurationSectionTooltip","chartConfigurationSectionLegend","chartConfigurationSectionLines","chartConfigurationSectionAreas","chartConfigurationSectionArcs","chartConfigurationPaddingAngle","chartConfigurationCornerRadius","chartConfigurationArcLabels","chartConfigurationStartAngle","chartConfigurationEndAngle","chartConfigurationPieTooltipTrigger","chartConfigurationPieLegendPosition","chartConfigurationPieLegendDirection","chartConfigurationOptionNone","chartConfigurationOptionValue","chartConfigurationOptionAuto","chartConfigurationOptionTop","chartConfigurationOptionTopLeft","chartConfigurationOptionTopRight","chartConfigurationOptionBottom","chartConfigurationOptionBottomLeft","chartConfigurationOptionBottomRight","chartConfigurationOptionLeft","chartConfigurationOptionRight","chartConfigurationOptionAxis","chartConfigurationOptionItem","chartConfigurationOptionHorizontal","chartConfigurationOptionVertical","chartConfigurationOptionBoth","chartConfigurationOptionStart","chartConfigurationOptionMiddle","chartConfigurationOptionEnd","chartConfigurationOptionExtremities","chartConfigurationOptionTick","chartConfigurationOptionMonotoneX","chartConfigurationOptionMonotoneY","chartConfigurationOptionCatmullRom","chartConfigurationOptionLinear","chartConfigurationOptionNatural","chartConfigurationOptionStep","chartConfigurationOptionStepBefore","chartConfigurationOptionStepAfter","chartConfigurationOptionBumpX","chartConfigurationOptionBumpY","DEFAULT_LOCALE","ChartsLocalizationContext","ChartsLocalizationProvider","inProps","localeText","inLocaleText","parentLocaleText","themeLocaleText","Timeout","currentId","disposeEffect","useTimeout","composeClasses","getUtilityClass","classes","slotName","slot","RtlContext","useRtl","isFocusVisible","getReactElementRef","reactPropsRegex","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","isReal","shouldForwardProp","optionsShouldForwardProp","__emotion_forwardProp","styled","createStyled","targetClassName","__emotion_real","baseTag","__emotion_base","defaultShouldForwardProp","shouldUseAs","templateStringsArr","Styled","FinalTag","as","classInterpolations","finalShouldForwardProp","withComponent","nextTag","nextOptions","wrapper","internal_serializeStyles","preprocessStyles","isProcessed","variant","shallowLayer","layerName","defaultOverridesResolver","_props","processStyle","resolvedStyle","subStyle","rootStyle","otherStyles","processStyleVariants","mergedState","variantLoop","ownerState","lowercaseFirstLetter","rootShouldForwardProp","slotShouldForwardProp","styleAttachTheme","attachTheme","inputOptions","componentName","componentSlot","skipVariantsResolver","inputSkipVariantsResolver","skipSx","inputSkipSx","overridesResolver","shouldForwardPropOption","defaultStyledResolver","generateStyledLabel","transformStyle","muiStyledResolver","expressionsInput","expressionsHead","expressionsBody","expressionsTail","styleOverrides","resolvedStyleOverrides","themeVariants","inputStrings","placeholdersHead","placeholdersTail","outputStrings","expressions","Component","muiName","withConfig","styleFn","lastValue","lastTheme","PropsContext","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","prevState","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","scrollTop","forceReflow","performEnter","performExit","_this2","appearing","_ref2","maybeNode","maybeAppearing","timeouts","enterTimeout","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","_this3","onExit","onExiting","onExited","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","_this$props","childProps","TransitionGroupContext","reflow","getTransitionProps","transitionDuration","transitionTimingFunction","transitionDelay","useForkRef","refs","cleanupRef","refEffect","cleanups","refCallback","refCleanup","entering","entered","isWebKit154","userAgent","Grow","inProp","TransitionComponent","timer","autoTimeout","handleRef","normalizedTransitionCallback","maybeIsAppearing","handleEntering","handleEnter","isAppearing","clientHeight","transition","handleEntered","handleExiting","handleExit","handleExited","restChildProps","muiSupportAuto","getWindow","isHTMLElement","isShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","offsetTop","getWindowScroll","win","scrollLeft","pageXOffset","pageYOffset","getNodeName","nodeName","getDocumentElement","documentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","rect","isElementScaled","getNodeScroll","clientLeft","clientTop","getLayoutRect","getParentNode","assignedSlot","host","getScrollParent","listScrollParents","list","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","perspective","contain","willChange","getContainingBlock","auto","basePlacements","viewport","popper","variationPlacements","modifierPhases","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","_len","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","modifiersData","elements","attributes","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","merged","orderModifiers","existing","_ref$options","cleanupFn","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","_options","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","removeAttribute","initialStyles","arrow","attribute","getOppositePlacement","matched","getOppositeVariationPlacement","rootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","html","clientWidth","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","fittingPlacement","within","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","querySelector","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$scroll","_options$resize","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","elementType","otherProps","excludeKeys","parameters","getSlotProps","additionalProps","externalSlotProps","externalForwardedProps","joinedClasses","mergedStyle","internalRef","eventHandlers","componentsPropsWithoutEventHandlers","otherPropsWithoutEventHandlers","internalSlotProps","componentProps","slotState","skipResolvingSlotProps","resolvedComponentsProps","setRef","forwardedRef","disablePortal","mountNode","setMountNode","getContainer","defaultGenerator","generate","configure","generator","createClassNameGenerator","globalStateClasses","checked","completed","expanded","focused","focusVisible","open","readOnly","required","globalStatePrefix","globalStateClass","generateUtilityClasses","getPopperUtilityClass","resolveAnchorEl","anchorEl","defaultPopperOptions","PopperTooltip","initialPlacement","popperOptions","popperRef","popperRefProp","TransitionProps","ownerStateProp","tooltipRef","ownRef","handlePopperRef","handlePopperRefRef","rtlPlacement","flipPlacement","setPlacement","resolvedAnchorElement","setResolvedAnchorElement","popperModifiers","useUtilityClasses","Root","rootProps","role","PopperRoot","containerProp","keepMounted","exited","setExited","resolvedAnchorEl","nodeType","transitionProps","isRtl","componentsProps","RootComponent","useControlled","controlled","defaultProp","valueState","setValue","useSlot","initialElementType","internalForwardedProps","shouldForwardComponentProp","useSlotPropsParams","rootComponent","slotComponent","LeafComponent","getTooltipUtilityClass","TooltipPopper","disableInteractive","popperInteractive","popperArrow","popperClose","transformOrigin","TooltipTooltip","touch","tooltipArrow","bg","wordWrap","TooltipArrow","content","hystersisOpen","hystersisTimer","cursorPosition","composeEventHandler","eventHandler","childrenProp","classesProp","describeChild","disableFocusListener","disableHoverListener","disableInteractiveProp","disableTouchListener","enterDelay","enterNextDelay","enterTouchDelay","followCursor","idProp","leaveDelay","leaveTouchDelay","onClose","onOpen","openProp","PopperComponent","PopperComponentProp","PopperProps","title","TransitionComponentProp","childNode","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","openState","setOpenState","prevUserSelect","stopTouchInteraction","WebkitUserSelect","handleOpen","handleClose","handleMouseOver","handleMouseLeave","setChildIsFocusVisible","handleBlur","handleFocus","currentTarget","detectTouchStart","childrenProps","onTouchStart","nativeEvent","nameOrDescProps","titleIsString","onMouseMove","interactiveWrapperListeners","onTouchEnd","onMouseOver","onMouseLeave","onFocus","onBlur","resolvedPopperProps","tooltipModifiers","resolvedTransitionProps","Popper","Arrow","PopperSlot","popperSlotProps","TransitionSlot","transitionSlotProps","TooltipSlot","tooltipSlotProps","ArrowSlot","arrowSlotProps","TransitionPropsInner","getListUtilityClass","ListRoot","disablePadding","dense","subheader","listStyle","List","getScrollbarSize","documentWidth","nextItem","disableListWrap","nextElementSibling","previousItem","lastChild","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","innerText","repeating","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","hasAttribute","actions","autoFocus","autoFocusItem","onKeyDown","listRef","textCriteriaRef","previousKeyMatched","adjustStyleForScrollbar","containerElement","noExplicitWidth","scrollbarSize","activeItemIndex","muiSkipListHighlight","items","newChildProps","tabIndex","ctrlKey","metaKey","altKey","activeElement","criteria","lowerKey","currTime","performance","now","keepFocusOnCurrent","getDividerUtilityClass","DividerRoot","absolute","orientation","flexItem","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","borderWidth","borderStyle","borderBottomWidth","dividerChannel","borderRightWidth","borderTopStyle","borderLeftStyle","DividerWrapper","wrapperVertical","Divider","createSimplePaletteValueFilter","additionalPropertiesToCheck","hasCorrectMainProperty","checkSimplePaletteColorValues","LazyRipple","ripple","shouldMount","setShouldMount","mountEffect","mounted","didMount","mount","resolveFn","rejectFn","createControlledPromise","pulsate","getChildMapping","mapFn","Children","isValidElement","mapper","getProp","getNextChildMapping","nextProps","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","cloneElement","TransitionGroup","ReferenceError","_assertThisInitialized","firstRender","currentChildMapping","childFactory","_jsx","JSX","createElementArgArray","createEmotionProps","Global","sheetRef","rehydrating","sheetRefCurrent","insertable","enterKeyframe","exitKeyframe","pulsateKeyframe","TouchRippleRoot","TouchRippleRipple","rippleX","rippleY","rippleSize","leaving","setLeaving","rippleClassName","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","timeoutId","TouchRipple","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","startCommit","cb","oldRipples","fakeElement","touches","sizeX","sizeY","getButtonBaseUtilityClass","ButtonBaseRoot","WebkitTapHighlightColor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","textDecoration","colorAdjust","ButtonBase","centerRipple","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onClick","onContextMenu","onDragLeave","onFocusVisible","onKeyUp","onMouseDown","onMouseUp","onTouchMove","TouchRippleProps","touchRippleRef","buttonRef","handleRippleRef","setFocusVisible","enableTouchRipple","handleMouseDown","useRippleHandler","handleContextMenu","handleDragLeave","handleMouseUp","handleTouchStart","handleTouchEnd","handleTouchMove","isNonNativeButton","href","repeat","defaultPrevented","ComponentProp","to","buttonProps","composedClasses","rippleAction","eventCallback","skipRippleAction","getCircularProgressUtilityClass","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","CircularProgressSVG","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","CircularProgress","thickness","circleStyle","circumference","viewBox","getIconButtonUtilityClass","IconButtonRoot","edge","activeChannel","mainChannel","IconButtonLoadingIndicator","loadingIndicator","IconButton","disableFocusRipple","loadingIndicatorProp","loadingId","loadingWrapper","getButtonUtilityClass","commonIconStyles","ButtonRoot","colorInherit","disableElevation","fullWidth","inheritContainedBackgroundColor","inheritContainedHoverBackgroundColor","inheritContainedBg","inheritContainedHoverBg","primaryChannel","loadingPosition","ButtonStartIcon","startIcon","startIconLoadingStart","ButtonEndIcon","endIcon","endIconLoadingEnd","ButtonLoadingIndicator","ButtonLoadingIconPlaceholder","loadingIconPlaceholder","contextProps","buttonGroupButtonContextPositionClassName","endIconProp","startIconProp","positionClassName","loader","defaultSlotsMaterial","baseButton","baseIconButton","getListItemIconUtilityClass","getListItemTextUtilityClass","getMenuItemUtilityClass","MenuItemRoot","disableGutters","gutters","inset","backgroundClip","MenuItem","tabIndexProp","childContext","menuItemRef","ListItemIconRoot","alignItemsFlexStart","getTypographyUtilityClass","v6Colors","textPrimary","textSecondary","textDisabled","inSx","systemProps","splitProps","finalSx","TypographyRoot","noWrap","gutterBottom","paragraph","defaultVariantMapping","Typography","themeProps","variantMapping","ListItemTextRoot","multiline","disableTypography","primaryProp","primaryTypographyProps","secondaryProp","secondaryTypographyProps","RootSlot","rootSlotProps","PrimarySlot","primarySlotProps","SecondarySlot","secondarySlotProps","candidatesSelector","defaultGetTabbable","regularTabNodes","orderedTabNodes","nodeTabIndex","tabindexAttr","contentEditable","getTabIndex","getRadio","roving","isNonTabbableRadio","isNodeMatchingSelectorFocusable","documentOrder","defaultIsEnabled","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","getTabbable","isEnabled","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","reactFocusEventTarget","activated","rootRef","lastKeydown","loopFocus","shiftKey","rootElement","hasFocus","tabbable","isShiftTab","focusNext","focusPrevious","setInterval","clearInterval","handleFocusSentinel","relatedTarget","childrenPropsHandler","mapEventPropToEvent","eventProp","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","activatedRef","syntheticEventRef","handleClickAway","insideReactTree","clickedRootScrollbar","insideDOM","createHandleSynthetic","handlerName","mappedTouchEvent","mappedMouseEvent","getPaperUtilityClass","PaperRoot","square","rounded","backgroundImage","Paper","wrappers","focusTrap","focusTrapWrapper","clickAwayTouchEvent","clickAwayMouseEvent","clickAwayWrapper","getSvgIconUtilityClass","SvgIconRoot","hasSvgAsChild","SvgIcon","htmlColor","inheritViewBox","titleAccess","instanceFontSize","more","focusable","createSvgIcon","ChartsZoomInIcon","ChartsZoomOutIcon","ChartsExportIcon","baseTooltip","basePopper","flip","onDidShow","onDidHide","popperOnExited","baseMenuList","baseMenuItem","inert","iconStart","iconEnd","baseDivider","zoomInIcon","zoomOutIcon","exportIcon","selectorBrush","brush","selectorBrushStartX","selectorBrushStartY","selectorBrushCurrentX","selectorBrushCurrentY","selectorBrushState","startX","startY","currentY","selectorBrushConfigNoZoom","hasHorizontal","isBothDirections","selectorBrushConfigZoom","optionsLookup","selectorBrushConfig","configNoZoom","configZoom","selectorIsBrushEnabled","isZoomBrushEnabled","selectorIsBrushSelectionActive","isBrushEnabled","selectorBrushShouldPreventAxisHighlight","isBrushSelectionActive","preventHighlight","selectorBrushShouldPreventTooltip","preventTooltip","useChartBrush","brushConfig","setBrushCoordinates","clearBrush","setZoomBrushEnabled","brushStartHandler","brushHandler","currentPoint","brushCancelHandler","brushEndHandler","defaultizeAxis","inAxis","axisName","DEFAULT_AXIS_KEY","isPolarSeriesType","angles","extremums","charType","rotationExtremumGetter","radiusExtremumGetter","minChartTypeData","maxChartTypeData","getAxisExtremum","axisExtremums","finalScale","minDomain","maxDomain","selectorChartPolarAxisState","polarAxis","selectorChartRawRotationAxis","rotation","selectorChartRawRadiusAxis","selectorChartRotationAxis","selectorChartPolarCenter","generateSvg2rotation","clampAngle","TWO_PI","angleGap","useChartPolarAxis","rotationAxis","radiusAxis","rotationAxisWithScale","rotationAxisIds","radiusAxisWithScale","radiusAxisIds","svg2rotation","svg2polar","generateSvg2polar","polar2svg","generatePolar2svg","usedRotationAxisId","usedRadiusAxisId","mousePosition","isInChart","svgRect","isRotationAxis","rotationIndex","EMPTY_VISIBILITY_MAP","visibilityParamToMap","visibilityManager","visibilityMap","uniqueId","isIdentifierVisible","hiddenItems","useChartVisibilityManager","hideItem","newVisibilityMap","onHiddenItemsChange","showItem","toggleItem","toggleItemVisibility","loadStyleSheets","stylesheetLoadPromises","headStyleElements","newHeadStyleElement","styleCSS","cssText","attr","nodeValue","createExportIframe","iframeEl","previousStyles","getPropertyValue","setProperty","chartsToolbarClasses","defaultOnBeforeExport","iframe","chartsToolbarEl","contentDocument","remove","waitForAnimationFrame","res","useChartProExport","exportAsPrint","chartRoot","enableAnimation","fileName","onBeforeExport","copyStyles","printWindow","printDoc","elementClone","cloneNode","replaceChildren","rootCandidate","contentWindow","print","printChart","exportAsImage","quality","drawDocumentPromise","drawDocument","cause","getDrawDocument","iframeLoadPromise","exportDoc","exportDocBodySize","canvas","ratio","resolveBlobPromise","blobPromise","blob","toBlob","createObjectURL","download","triggerDownload","revokeObjectURL","exportImage","rafThrottle","lastArgs","rafRef","later","throttled","export","zoomAtPoint","centerRatio","scaleRatio","currentZoomData","MIN_RANGE","MAX_RANGE","MIN_ALLOWED_SPAN","minRange","maxRange","newMinRange","newMaxRange","minSpillover","maxSpillover","isSpanValid","isZoomIn","option","newSpanPercent","getHorizontalCenterRatio","getVerticalCenterRatio","translateZoom","initialZoomData","movement","span","MIN_PERCENT","MAX_PERCENT","rawDisplacement","displacement","newMinPercent","newMaxPercent","selectorChartZoomIsEnabled","selectorChartCanZoomOut","zoomState","selectorChartCanZoomIn","selectorZoomInteractionConfig","interactionName","zoomInteractionConfig","selectorPanInteractionConfig","useZoomOnWheel","setZoomDataCallback","startedOutsideRef","startedOutsideTimeoutRef","isZoomOnWheelEnabled","rafThrottledSetZoomData","zoomOnWheelHandler","multiplier","ctrlMultiplier","getMultiplier","scaledStep","getWheelScaleRatio","initializeZoomInteractionConfig","defaultizedConfig","initializeFor","mouse","pinch","hasXZoom","hasYZoom","allowedDirection","interactionType","aggregation","lastEmpty","lastMouse","lastTouch","initializeZoomData","zoomDataMap","useChartProZoom","pluginData","paramsZoomData","onZoomChange","onZoomChangeProp","removeIsInteracting","wait","debounced","newZoomData","setAxisZoomData","prevZoom","moveZoomRange","by","prevZoomData","isPanOnDragEnabled","accumulatedChange","throttledCallback","panStartHandler","usePanOnDrag","isPanOnPressAndDragEnabled","pressAndDragHandler","pressAndDragStartHandler","pressAndDragEndHandler","usePanOnPressAndDrag","isPanOnWheelEnabled","wheelHandler","movementX","movementY","usePanOnWheel","isZoomOnPinchEnabled","rafThrottledCallback","zoomHandler","useZoomOnPinch","isZoomOnTapAndDragEnabled","useZoomOnTapAndDrag","isZoomOnBrushEnabled","startPoint","endPoint","startRatio","endRatio","minRatio","maxRatio","currentStart","currentSpan","newStart","newEnd","clampedStart","clampedEnd","useZoomOnBrush","isZoomOnDoubleTapResetEnabled","doubleTapResetHandler","useZoomOnDoubleTapReset","calculateZoom","setZoomData","initialZoom","DEFAULT_PLUGINS","useChartKeyboardNavigation","removeFocus","keyboardNavigation","enableKeyboardNavigation","keyboardHandler","newFocusedItem","calculateFocusedItem","findClosestPoints","xZoomStart","xZoomEnd","yZoomStart","yZoomEnd","svgPointX","svgPointY","maxRadius","fx","fy","fxSq","fySq","pointX","invertScale","pointY","getDataPoint","useChartClosestPoint","disableVoronoi","voronoiMaxRadius","onItemClick","zoomIsInteracting","isVoronoiEnabled","getClosestPoint","closestPoint","aSeries","xAxisZoom","yAxisZoom","closestPointIndex","scaledX","scaledY","distSq","distanceSq","enableVoronoi","voronoi","useChartDataProviderProps","chartProviderProps","useChartDataProviderProProps","packageIdentifier","defaultSeriesConfigPro","ChartDataProviderPro","useDrawingArea","useXAxes","useYAxes","useRotationAxes","ChartsPiecewiseGradient","isReversed","gradientId","x2","y2","gradientUnits","stopColor","ChartsContinuousGradient","extremumValues","extremumPositions","numberOfPoints","keyPrefix","ChartsContinuousGradientObjectBound","selectorChartZAxis","useZAxes","zAxisIds","selectorChartId","idState","useChartGradientIdBuilder","useChartGradientIdObjectBoundBuilder","ChartsAxesGradients","svgHeight","svgWidth","getGradientId","getObjectBoundGradientId","filteredYAxisIds","filteredXAxisIds","filteredZAxisIds","objectBoundGradientId","useSvgRef","selectKeyboardNavigation","selectorChartsItemIsFocused","keyboardNavigationState","selectorChartsHasFocusedItem","selectorChartsFocusedItem","selectorChartsIsKeyboardNavigationEnabled","createSelectAxisHighlight","selectorChartsKeyboardXAxisIndex","selectorChartsKeyboardYAxisIndex","selectorChartsKeyboardItem","keyboardState","getSurfaceUtilityClass","ChartsSurfaceStyles","hasZoom","ChartsSurface","isKeyboardNavigationEnabled","hasFocusedItem","desc","hasIntrinsicSize","onPointerDown","useInteractionItemProps","interactionActive","onPointerEnter","onPointerLeave","alwaysFalse","createIsHighlighted","highlightScope","createIsFaded","fade","isSeriesHighlighted","scope","getSeriesHighlightedItem","selectorChartsHighlightScopePerSeriesId","selectorChartsHighlightedItem","keyboardItem","selectorChartsHighlightScope","seriesIdToHighlightScope","selectorChartsIsHighlightedCallback","selectorChartsIsFadedCallback","selectorChartsIsHighlighted","selectorChartIsSeriesHighlighted","selectorChartIsSeriesFaded","selectorChartSeriesUnfadedItem","selectorChartSeriesHighlightedItem","selectorChartsIsFaded","useItemHighlighted","isHighlighted","isFaded","ANIMATION_DURATION_MS","ANIMATION_TIMING_FUNCTION","ANIMATION_TIMING_FUNCTION_JS","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","clearNow","Timer","_call","_time","_next","restart","wake","timerFlush","sleep","nap","poke","elapsed","easingFn","onTick","onTickCallback","resume","running","timerCallback","easedT","useAnimate","createInterpolator","transformProps","applyProps","initialProps","animateRef","lastInterpolatedProps","lastInterpolatedPropsRef","transitionRef","elementRef","lastPropsRef","animate","interpolatedProps","lastElement","objA","objB","keysA","keysB","currentKey","shallowEqual","useAnimateInternal","animatedProps","cleanId","appearingMaskClasses","AnimatedRect","animationName","animationTimingFunction","animationDuration","AppearingMask","clipId","clipPath","AnimatedArea","lastProps","useAnimateArea","getAreaElementUtilityClass","areaElementClasses","AreaElement","innerClasses","interactionProps","Area","areaProps","selectorChartSkipAnimation","useSkipAnimation","storeSkipAnimation","useInternalIsZoomInteracting","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","closePath","lineTo","moveTo","tauEpsilon","Path","digits","_x0","_y0","_x1","_y1","_append","appendRound","quadraticCurveTo","bezierCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","ccw","cw","withPath","RangeError","defined","curve","defined0","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","that","_k","_x2","_y2","Cardinal","tension","CatmullRom","_alpha","custom","cardinal","_l01_a","_l12_a","_l23_a","_l01_2a","_l12_2a","_l23_2a","x23","y23","catmullRom","slope3","h0","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","Step","_t","stepBefore","stepAfter","_t0","_x","_y","Bump","bumpX","bumpY","getCurveFactory","curveType","selectorAllSeriesOfType","selectorSeriesOfType","failedIds","useAllSeriesOfType","useLineSeriesContext","getValueToPositionMapper","useXScale","useYScale","useAreaPlotData","allData","areaPlotData","groupIds","connectNulls","strictStepCurve","xPosition","xData","shouldExpand","formattedData","nullData","rep","isExtension","d3Data","areaPath","AreaPlotRoot","transitionProperty","useAggregatedData","AreaPlot","inSkipAnimation","completedData","AnimatedLine","animateProps","useAnimateLine","fadedOpacity","strokeLinejoin","hidden","getLineElementUtilityClass","lineElementClasses","LineElement","Line","lineProps","useLinePlotData","linePlotData","linePath","LinePlotRoot","LinePlot","getMarkElementUtilityClass","markElementClasses","Circle","CircleMarkElement","draw","tan30","tan30_2","kr","kx","ky","symbolsFill","cross","diamond","star","triangle","wye","getSymbol","MarkElementPath","MarkElement","useItemHighlightedGetter","selectorChartControlledCartesianAxisHighlight","selectAxisHighlight","computedIndex","axisItems","selectorChartsHighlightXAxisIndex","selectAxisHighlightWithValue","computedValue","controlledAxisItems","keyboardAxisItem","lastInteractionUpdate","pointerHighlight","keyboardValue","keyboardHighlight","selectorChartsHighlightXAxisValue","selectorChartsHighlightYAxisValue","selectAxis","MarkPlot","xAxisHighlightIndexes","highlightedItems","markPlotData","showMark","marks","xPos","useMarkPlotData","Mark","mark","isSeriesFaded","useIsHydrated","isHydrated","setIsHydrated","isInfinity","monthNumber","dayNumber","tickFrequencies","years","isTick","quarterly","Intl","DateTimeFormat","biweekly","offsetRatio","extremities","middle","getTickPosition","useTicks","tickPlacement","tickLabelPlacement","tickSpacing","isInside","tickPlacementProp","tickLabelPlacementProp","ticksIndexes","ticksFrequencies","startIndex","findLastIndex","startFrequencyIndex","endFrequencyIndex","prevTickCount","nextTickCount","tickIndex","prevDate","currentDate","formatter","getTimeTicks","tickDef","labelOffset","filteredDomain","rangeSpan","applyTickSpacing","defaultTickLabel","getDefaultTicks","visibleTicks","getTicks","segmenter","Segmenter","granularity","getGraphemeCount","segments","segment","_unused","sliceUntil","newText","ELLIPSIS","doesTextFitInRect","measureText","textSize","angledWidth","angledHeight","ellipsize","doesTextFit","shortenedText","graphemeCount","newLength","lastLength","longestFittingText","isSsr","stringCache","MAX_CACHE_NUM","PIXEL_STYLES","convertPixelValue","AZ","camelCaseToDashCase","getStyleString","getStringSize","measurementSpanContainer","getMeasurementContainer","measurementElem","createElementNS","measureSVGTextElement","getBBox","measurementContainer","ANGLE_APPROX","getAxisUtilityClass","axisClasses","tickContainer","tickLabel","TICK_LABEL_GAP","AXIS_LABEL_TICK_LABEL_GAP","disableLine","disableTicks","tickSize","tickLabelMinGap","_excluded2","ChartsText","styleProps","textProps","textAnchor","dominantBaseline","wordsByLines","needsComputation","subText","getWordsByLines","startDy","getDefaultTextAnchor","adjustedAngle","getDefaultBaseline","invertTextAnchor","useAxisTicksProps","_xAxis","themedProps","defaultizedProps","tickLabelStyle","positionSign","Tick","axisTick","TickLabel","axisTickLabel","defaultTextAnchor","defaultDominantBaseline","axisTickLabelProps","ChartsSingleXAxisTicks","axisLabelHeight","isMounted","defer","mountedState","setMountedState","useMounted","tickSizeProp","tickLabelInterval","axisHeight","xTicks","visibleLabels","previousTextLimit","candidateTickLabels","sizeMap","texts","textToMeasure","styleString","measurementSpanStyle","measurementElements","batchMeasureStrings","measureTickLabels","labelIndex","textPosition","lineSize","getTickLabelSize","standardAngle","radAngle","getMinXTranslation","getVisibleLabels","tickLabelsMaxHeight","tickLabels","shortenedLabels","leftBoundFactor","rightBoundFactor","shortenLabels","tickOffset","xTickLabel","yTickLabel","showTick","showTickLabel","useTicksGrouped","groups","mapToGrouping","ignoreTick","tickValues","allTickItems","dataIndexToTickIndex","currentValueCount","tickValue","groupValue","getValue","lastItem","tickIndexes","previousIndex","DEFAULT_GROUPING_CONFIG","getGroupingConfig","defaultTickSize","calculatedTickSize","ChartsGroupedXAxisTicks","groupConfig","tickYSize","labelPositionY","AxisRoot","shapeRendering","XAxisRoot","ChartsXAxisImpl","labelStyle","axisLine","Label","axisLabel","axisLabelProps","labelHeight","labelRefPoint","ChartsXAxis","_yAxis","tickFontSize","ChartsSingleYAxisTicks","axisWidth","yTicks","tickLabelsMaxWidth","topBoundFactor","bottomBoundFactor","skipLabel","showLabel","ChartsGroupedYAxisTicks","tickXSize","labelPositionX","YAxisRoot","ChartsYAxisImpl","settings","strokeLinecap","ChartsYAxis","getChartsGridUtilityClass","chartsGridClasses","GridRoot","verticalLine","horizontalLine","GridLine","ChartsGridVertical","ChartsGridHorizontal","ChartsGrid","horizontalAxis","verticalAxis","getChartsTooltipUtilityClass","chartsTooltipClasses","table","row","cell","markContainer","labelCell","valueCell","axisValueCell","useSeries","selectorChartsTooltipPointerItem","selectorChartsTooltipPointerItemIsDefined","selectorChartsTooltipItem","lastInteraction","pointerItem","selectorChartsTooltipItemIsDefined","pointerItemIsDefined","keyboardItemIsDefined","selectorChartsTooltipAxisConfig","rotationAxes","radiusAxes","selectorChartsTooltipItemPosition","useInternalItemTooltip","zAxisId","rotationAxisId","ChartsTooltipPaper","ChartsTooltipTable","borderSpacing","ChartsTooltipRow","ChartsTooltipCell","getLabelMarkUtilityClass","labelMarkClasses","mergeClassNameAndStyle","consumeThemeProps","InComponent","outProps","classesResolver","OutComponent","mask","ChartsLabelMark","preserveAspectRatio","ChartsItemTooltipContent","propClasses","tooltipData","seriesLabel","useMediaQueryOld","query","defaultMatches","ssrMatchMedia","noSsr","setMatch","queryList","updateMatch","maybeReactUseSyncExternalStore","useMediaQueryNew","getDefaultSnapshot","mediaQueryList","notify","unstable_createUseMediaQuery","queryInput","supportMatchMedia","useIsFineMainPointer","optionalGetAxisId","optionalGetAxisIds","selectorChartsInteractionRotationAngle","selectorChartsInteractionRotationAxisIndex","selectorChartsInteractionRotationAxisIndexes","selectorChartsInteractionTooltipRotationAxes","rotationIndexes","selectorChartsInteractionPolarAxisTooltip","rotationTooltip","defaultAxisTooltipConfig","axisFormattedValue","utcFormatter","seriesItems","useAxesTooltip","multipleAxes","defaultXAxis","defaultYAxis","defaultRotationAxis","tooltipXAxes","tooltipYAxes","tooltipRotationAxes","colorProcessors","seriesT","useColorProcessor","seriesToAdd","tooltipItemIndex","providedRotationAxisId","useAxisTooltip","ChartsAxisTooltipContent","hideTooltip","fallback","selectorReturnFalse","selectorReturnNull","ChartsTooltipRoot","ChartsTooltipContainer","trigger","anchor","anchorRef","setPointerType","handleOut","usePointerType","isFineMainPointer","positionRef","axisSystem","rawRotationAxis","rawXAxis","useAxisSystem","shouldPreventBecauseOfBrush","isOpen","getIsOpenSelector","computedAnchor","itemPosition","svgElement","pointerUpdate","pointerAnchorEl","isMouse","isTouch","ChartsTooltip","getAxisHighlightUtilityClass","ChartsAxisHighlightPath","axisHighlight","ChartsYHighlight","axisYValues","getYPosition","isYScaleOrdinal","ChartsXHighlight","axisXValues","getXPosition","isXScaleOrdinal","ChartsAxisHighlight","xAxisHighlight","yAxisHighlight","getSeriesToDisplay","getLegendUtilityClass","legendClasses","getLabelUtilityClass","ChartsLabel","RootElement","listStyleType","li","ChartsLegend","ConsumeSlotsInternal","propagateSlots","_useSlotProps","omitProps","consumeSlots","ChartsClipPath","offsetProps","createPreviewDrawingArea","mainChartDrawingArea","selectorChartPreviewXScales","chartDrawingArea","normalizedXScales","hasAxis","selectorChartPreviewComputedXAxis","computedAxes","selectorChartPreviewYScales","normalizedYScales","selectorChartPreviewComputedYAxis","getAxisMessage","useBarSeriesContext","useBarPlotData","masks","seriesIds","xMin","xMax","yMin","yMax","lastNegativePerIndex","lastPositivePerIndex","seriesDataLength","discreteAxisConfig","continuousAxisConfig","discreteAxisId","continuousAxisId","discreteAxisDirection","continuousAxisDirection","checkBarChartScaleErrors","xOrigin","yOrigin","seriesDataPoints","barDimensions","stackId","maskId","lastNegative","lastPositive","borderRadiusSide","hasNegative","hasPositive","barLabel","barLabelPlacement","masksData","getBarElementUtilityClass","barElementClasses","barPropsInterpolator","interpolateX","interpolateY","interpolateWidth","interpolateHeight","AnimatedBarElement","useAnimateBar","BarElement","itemIdentifier","isFocused","Bar","barProps","useScatterPlotData","scatterPoint","useScatterSeriesContext","ScatterMarker","ScatterPreviewItems","scatterPlotData","AreaPreviewPlot","useAreaPreviewData","PreviewAreaElement","LinePreviewPlot","useLinePreviewData","PreviewLineElement","seriesPreviewPlotMap","useBarPreviewData","zAxes","defaultZAxisId","ChartAxisZoomSliderPreviewContent","PreviewBackgroundRect","rx","ry","ChartAxisZoomSliderPreview","PreviewRectangles","ZOOM_SLIDER_TRACK_SIZE","ZOOM_SLIDER_ACTIVE_TRACK_SIZE","ZOOM_SLIDER_THUMB_HEIGHT","ZOOM_SLIDER_THUMB_WIDTH","ZOOM_SLIDER_SIZE","calculateZoomFromPoint","pointerZoom","calculateZoomFromPointImpl","calculateZoomStart","currentZoom","calculateZoomEnd","getAxisZoomSliderTrackUtilityClass","ZoomSliderTrack","isSelecting","ChartAxisZoomSliderTrack","onSelectStart","onSelectEnd","setIsSelecting","pointerDownPoint","zoomFromPointerDown","onPointerMove","pointerMoveEvent","pointerMovePoint","zoomFromPointerMove","setPointerCapture","onPointerUp","pointerUpEvent","getDataIndexForOrdinalScaleValue","chartAxisZoomSliderThumbClasses","getAxisZoomSliderThumbUtilityClass","Rect","ChartAxisZoomSliderThumb","onMove","thumbRef","onMoveEvent","thumb","onPointerEnd","ChartsZoomSliderTooltipRoot","MODIFIERS","ChartsTooltipZoomSliderValue","ZoomSliderActiveTrackRect","ChartAxisZoomSliderActiveTrack","axisPosition","activePreviewRectRef","startThumbEl","setStartThumbEl","endThumbEl","setEndThumbEl","tooltipStart","tooltipEnd","formatValue","startValue","endValue","getZoomSliderTooltipsText","previewThumbWidth","previewThumbHeight","previewX","previewY","previewWidth","previewHeight","startThumbX","startThumbY","endThumbX","endThumbY","activePreviewRect","prevPointerZoom","deltaZoom","axisZoomData","pointerDownZoom","previewOffset","ChartAxisZoomSlider","setShowTooltip","showPreview","tooltipConditions","sliderSize","axisSize","backgroundRectOffset","track","ChartZoomSlider","getReferenceLineUtilityClass","referenceLineClasses","ReferenceLineRoot","getTextParams","labelAlign","defaultSpacingOtherAxis","spacingX","spacingY","ChartsXReferenceLine","inClasses","lineStyle","xAxisScale","getXReferenceLineClasses","textParams","ChartsYReferenceLine","yPosition","yAxisScale","getYReferenceLineClasses","ChartsReferenceLine","brushOverlayClasses","BrushRect","ChartsBrushOverlay","brushStartX","brushStartY","brushCurrentX","brushCurrentY","clampX","clampY","rectColor","rectWidth","rectHeight","useComponentRenderer","defaultElement","otherClassName","ToolbarContext","ToolbarContextProvider","focusableItemId","setFocusableItemId","focusableItemIdRef","setItems","getSortedItems","sortByDocumentPosition","findEnabledItem","wrap","sortedItems","itemCount","ariaDisabled","registerItem","itemRef","prevItems","unregisterItem","onItemKeyDown","focusableItemIndex","newIndex","onItemFocus","onItemDisabled","currentIndex","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_CONTAINS","ToolbarButton","_useRegisterToolbarBu","useToolbarContext","previousDisabled","previousAriaDisabled","useRegisterToolbarButton","toolbarButtonProps","ToolbarRoot","Toolbar","useChartsLocalization","localization","ChartsToolbarDivider","ChartsMenu","savedFocusRef","ChartsToolbarZoomInTrigger","ChartsToolbarZoomOutTrigger","useChartProApiContext","useChartApiContext","ChartsToolbarPrintExportTrigger","ChartsToolbarImageExportTrigger","DEFAULT_IMAGE_EXPORT_OPTIONS","ChartsToolbarPro","printOptions","imageExportOptions","rawImageExportOptions","exportMenuOpen","setExportMenuOpen","exportMenuTriggerRef","exportMenuId","exportMenuTriggerId","isZoomEnabled","imageExportOptionList","showExportMenu","disableToolbarButton","ZoomOutIcon","ZoomInIcon","MenuList","ExportIcon","closeExportMenu","handleListKeyDown","licenseKeySet","MONTHS_SHORT","pad2","CustomBrushOverlay","_ref$primaryColor","primaryColor","_ref$positiveColor","positiveColor","_ref$negativeColor","negativeColor","clampedStartX","clampedCurrentX","getIndex","_toConsumableArray","currentValue","percentChange","startLabel","currentLabel","diffColor","LineChart","_series$","_props$series","_props$height","grid","_props$hideLegend","hideLegend","_props$skipAnimation","_props$loading","_props$showSlider","showSlider","_props$referenceLines","referenceLines","_props$brushOverlay","brushOverlay","brushSeriesId","_props$axisHighlight","tooltipItem","_props$showToolbar","showToolbar","_props$n_clicks","brushData","clickData","n_clicks","setProps","clipPathId","_useState2","_slicedToArray","controlledZoom","setControlledZoom","lastKnownZoomRef","_useState4","chartKey","setChartKey","currentZoomStr","lastKnownHighlightedAxisRef","_useState6","controlledHighlightedAxis","setControlledHighlightedAxis","currentStr","lastKnownHighlightedItemRef","_useState8","controlledHighlightedItem","setControlledHighlightedItem","lastKnownTooltipItemRef","_useState0","controlledTooltipItem","setControlledTooltipItem","hasAreaSeries","hasMarks","_objectSpread","hasSliderInAxisConfig","checkAxes","_typeof","processedXAxis","dateFormat","tf","formatDateStr","dateTickFormat","resolved","registry","dashMuiChartsFunctions","resolveFunctionProp","existingZoom","zoomConfig","providerProps","resolvedZoomData","onTooltipItemChange","AXIS_RENDER_PROPS","extractRenderProps","renderProps","_AXIS_RENDER_PROPS","xAxisConfigs","resolvedXAxis","yAxisConfigs","_extends","timestamp","refLine","getBarLabelUtilityClass","PropTypes","function","isRequired","barLabelClasses","barLabelPropsInterpolator","LABEL_OFFSET","BarLabelComponent","faded","highlighted","BarLabel","initialX","initialY","getOutsidePlacement","getCenterPlacement","useAnimateBarLabel","getTextAnchor","getDominantBaseline","BarLabelItem","barLabelOwnerState","barLabelProps","formattedLabelText","getBarLabel","BarLabelPlot","getBarUtilityClass","seriesLabels","barClipPathPropsInterpolator","interpolateBorderRadius","BarClipPath","generateClipPath","useAnimateBarClipPath","bR","IndividualBarPlot","withoutBorderRadius","barElement","selectorBarItemAtPosition","bandAxis","bandScale","svgPointBandCoordinate","bandValue","bandStart","bandBarStart","bandBarEnd","bandBarMin","bandBarMax","svgPointContinuousCoordinate","continuousMin","continuousMax","appendAtKey","bucket","createPath","barData","topLeftBorderRadius","topRightBorderRadius","bottomRightBorderRadius","bottomLeftBorderRadius","tLBR","tRBR","bRBR","bLBR","generateBarPath","PathGroup","BarGroup","AnimatedGroup","animationFillMode","animateChildren","BatchBarPlot","prevCursorRef","getItemAtPosition","onItemEnter","onItemLeave","lastItemRef","onItemEnterRef","onItemLeaveRef","useRegisterPointerInteractions","lastPointerUp","useRegisterItemClickHandlers","SeriesBatchPlot","MemoFadedHighlightedBars","FadedHighlightedBars","BatchBarSeriesPlot","temporaryPaths","pathString","tempPath","useCreateBarPaths","dArray","seriesHighlightedDataIndex","seriesUnfadedDataIndex","seriesHighlightedItem","seriesUnfadedItem","siblings","BarPlotRoot","BarPlot","renderer","batchSkipAnimation","BarElementPlot","getHighlightElementUtilityClass","LineHighlightElement","LineHighlightPlot","highlightedIndexes","lineHighlight","highlightedIndex","highlightedAxisId","disableHighlight","ChartDataProvider","useFocusedItem","FocusedLineMark","focusedItem","lineSeries","SPARK_LINE_DEFAULT_MARGIN","SparkLineChart","xAxisProps","yAxisProps","showHighlight","inAxisHighlight","plotType","disableClipping","clipAreaOffset","clipPathOffset","defaultXHighlight","SparklineChart","_props$data","_props$plotType","_props$area","_props$curve","_props$showTooltip","_props$showHighlight","_props$disableClippin","_props$n_hovers","hoverIndex","hoverValue","n_hovers","internalHighlightIndex","setInternalHighlightIndex","lastHighlightPropRef","sparklineProps","mergedSlotProps","_axisItems$0$dataInde","_axisItems$","MuiSparkLineChart","ChartsAxis","getJustifyItems","getAlignItems","horizontalPosition","drawingAreaColumn","getTemplateColumns","legendDirection","legendPosition","verticalPosition","drawingAreaRow","getTemplateRows","getGridTemplateAreas","extendVertically","ChartsWrapper","StyledText","ChartsLoadingOverlay","ChartsNoDataOverlay","ChartsOverlay","seriesPerType","seriesOfGivenType","links","useNoData","LoadingOverlay","loadingOverlay","NoDataOverlay","noDataOverlay","getLabelGradientUtilityClass","labelGradientClasses","rotate","getRotation","ChartsLabelGradient","continuousColorLegendClasses","templateAreas","endLabel","extremes","maxLabel","minLabel","gradient","getText","ContinuousColorLegend","labelPosition","rotateGradient","generateGradientId","axisItem","useAxis","minValue","maxValue","formattedMin","formattedMax","minText","maxText","minComponent","maxComponent","useHeatmapSeriesContext","getHeatmapUtilityClass","HeatmapCell","HeatmapItem","Cell","cellProps","HeatmapPlot","useZAxis","useZColorScale","xDomain","yDomain","seriesToDisplay","heatmapSeriesConfig","heatmap","HeatmapTooltipAxesValue","HeatmapTooltipContent","heatmapSeries","formattedX","formattedY","HeatmapTooltip","HEATMAP_PLUGINS","defaultColorMap","getDefaultDataForAxis","getDefaultDataForXAxis","getDefaultDataForYAxis","Heatmap","xAxisWithDefault","yAxisWithDefault","zAxisWithDefault","chartsWrapperProps","legend","DefaultCell","onCellClick","_objectWithoutProperties","RoundedCell","cellConfig","_ref$gap","_ref$borderRadius","_ref$showValue","showValue","_ref$fontSize","_ref$fontWeight","_ref$textColor","textColor","cellStyle","zAxisConfig","_colorScale$min","_colorScale$max","handleCellClick","_params$dataIndex","_params$dataIndex2","heatmapProps","MuiHeatmap","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","d2","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cornerRadius","padRadius","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","oc","x3","y3","x32","y32","intersect","ax","ay","bx","kc","lc","pieArcPropsInterpolator","interpolateStartAngle","interpolateEndAngle","interpolateInnerRadius","interpolateOuterRadius","interpolatePaddingAngle","interpolateCornerRadius","getPieArcUtilityClass","pieArcClasses","PieArcRoot","PieArc","strokeProp","skipInteraction","useAnimatePieArc","getModifiedArcProperties","seriesDef","basePaddingAngle","baseCornerRadius","baseInnerRadius","baseArcLabelRadius","baseOuterRadius","attributesOverride","additionalRadius","useTransformData","isItemFaded","isItemHighlighted","isItemFocused","useIsItemFocusedGetter","arcSizes","PieArcPlot","transformedData","Arc","pieArc","pieArcLabelPropsInterpolator","getPieArcLabelUtilityClass","pieArcLabelClasses","PieArcLabelRoot","PieArcLabel","formattedArcLabel","useAnimatePieArcLabel","RATIO","getItemLabel","arcLabel","arcLabelMinAngle","PieArcLabelPlot","ArcLabel","pieArcLabel","usePieSeriesContext","usePieSeriesLayout","getPieUtilityClass","PiePlot","useChartContainerProps","chartsSurfaceProps","chartDataProviderProps","PIE_CHART_PLUGINS","FocusedPieArc","pieSeriesLayout","pieSeries","focusIndicator","PieChart","marginProps","chartSeries","seriesProp","_props$paddingAngle","_props$cornerRadius","_props$startAngle","_props$endAngle","chartProps","_clickedItem","_clickedItem2","_clickedItem3","clickedItem","_seriesProp$seriesInd","MuiPieChart","selectorChartsIsVoronoiEnabled","getScatterUtilityClass","Scatter","skipInteractionHandlers","disableHover","Marker","markerProps","getInteractionItemProps","ALMOST_ZERO","BatchScatterPaths","useCreatePaths","MemoBatchScatterPaths","Group","BatchScatter","ScatterPlot","DefaultScatterItems","ScatterItems","SCATTER_CHART_PLUGINS","FocusedScatterMark","scatterSeries","ScatterChart","chartContainerProps","chartsAxisProps","gridProps","scatterPlotProps","overlayProps","legendProps","axisHighlightProps","seriesWithDefault","useVoronoiOnItemClick","useScatterChartProps","_props$disableVoronoi","_seriesConfig$data","MuiScatterChart","CrosshairTracker","_useDrawingArea","lastReportedRef","ownerSVGElement","svgPt","xVal","yVal","rawX","crosshairPosition","_unused2","crosshairClick","CompositeAxisTooltipContent","proximity","displayAxisValue","scatterSeriesIds","lineEntries","scatterEntries","_step","numericValue","_iterator","_createForOfIteratorHelper","_step2","_iterator2","maximumFractionDigits","allEntries","rowStyle","dotStyle","ExternalAxisTooltip","xAxisObj","useXAxis","xPixel","_unused3","_unused4","_s$data","_step3","_iterator3","_step4","_iterator4","tooltipLeft","chartMidpoint","showOnLeft","ForecastOverlay","forecast","_ref4$color","_ref4$opacity","pts","yUp","upper","yLo","lower","CompositeChart","_axisHighlight$x","_axisHighlight$y","syncedTooltipIndex","_props$forecastColor","forecastColor","_props$forecastOpacit","forecastOpacity","_props$enableCrosshai","enableCrosshair","lastZoomPropRef","hasScatter","hasLine","hasArea","scatterSeriesData","handleLineClick","scatterProximity","_resolvedXAxis$","minStep","tooltipTrigger","useCustomTooltip","_i4","newZoom","createSeededRng","seed","imul","nextGaussian","u1","u2","CandlestickPlot","candles","upColor","downColor","totalSlots","drawWidth","slotWidth","bodyWidth","wickWidth","yHigh","high","yLow","low","yOpen","yClose","bodyTop","bodyHeight","VolumeBars","volumeHeightPct","_useDrawingArea2","drawHeight","maxVol","volume","volZoneHeight","volZoneTop","isUp","barH","PriceLabels","labelInterval","forecastData","lowerBound","AlertMarks","alerts","alertUpColor","alertDownColor","formatterFn","alert","displayIndex","price","bgColor","labelText","pctChange","labelWidth","ShadedBackground","_ref6","_useDrawingArea3","LiveTradingChart","_grid$horizontal","_grid$vertical","_props$windowSize","windowSize","_props$forecastSize","forecastSize","_props$running","_props$intervalMs","intervalMs","_props$seed","_props$resetTrigger","resetTrigger","_props$initialPrice","initialPrice","_props$volatility","volatility","_props$drift","drift","_props$forecastVolati","forecastVolatility","_props$alertProbabili","alertProbability","_props$alertThreshold","alertThresholdPct","_props$alertLookback","alertLookback","_props$alertMinDistan","alertMinDistance","_props$maxVisibleAler","maxVisibleAlerts","alertFilter","alertFormatter","_props$candleUpColor","candleUpColor","_props$candleDownColo","candleDownColor","_props$alertUpColor","_props$alertDownColor","_props$uncertaintyOpa","uncertaintyOpacity","_props$showVolume","showVolume","_props$showLabels","showLabels","_props$volumeHeightPc","_props$showGrid","showGrid","_props$xAxisLabel","xAxisLabel","_props$yAxisLabel","yAxisLabel","alertHistory","currentPrice","tickCount","rngRef","candleBufferRef","alertBufferRef","intervalRef","lastResetRef","forecastStartIndex","displayData","setDisplayData","generateForecast","useCallback","lastClose","rng","numPoints","cumUncertainty","shock","prevClose","vol","dft","r2","r3","buf","candle","candidateIdx","candidate","alertFilterFn","alertType","lookback","rangeStart","rangeEnd","isSwingHigh","isSwingLow","lastAlertTick","windowStart","windowed","_generateForecast","visibleAlerts","_useMemo","totalLen","closeData","allValues","xAxisData","forecastStartIdx","BAR_CHART_PLUGINS","useBarChartProps","hasHorizontalSeries","defaultBandXAxis","defaultBandYAxis","processedYAxis","barPlotProps","clipPathGroupProps","clipPathProps","FocusedBar","barSeries","BarChart","BAR_CHART_PRO_PLUGINS","BarChartPro","chartDataProviderProProps","baseProps","useChartContainerProProps","_props$layout","axisClickData","usePro","handleHighlightChange","handleZoomChange","handleItemClick","barItemIdentifier","handleAxisClick","refLineChildren","ChartComponent","MuiBarChart","CandlePlot","ohlcData","labels","bodyWidthRatio","onCandleClick","xBase","bodyBottom","wickTop","wickBottom","VolumePlot","volumeData","maxHeightRatio","volumeHeight","baseY","CandleTooltip","tooltipEnabled","setHoverIndex","CandlestickChart","volumeHeightRatio","hoverData","cats","vols","volumeKey","computedYDomain","allLows","allHighs","dataMin","dataMax","handleCandleClick","ohlc","baseAxis","useMergedRefs","forkRef","createForkRef","didChange","cleanupCallbacks","cleanupCallback","getAlertUtilityClass","AlertRoot","severity","getBackgroundColor","colorSeverity","AlertIcon","AlertMessage","AlertAction","defaultIconMapping","SuccessOutlined","ReportProblemOutlined","ErrorOutline","InfoOutlined","closeText","iconMapping","closeButton","CloseButton","closeIcon","CloseIcon","IconSlot","iconSlotProps","MessageSlot","messageSlotProps","ActionSlot","actionSlotProps","CloseButtonSlot","closeButtonProps","CloseIconSlot","closeIconProps","Close","getRichTreeViewUtilityClass","createUseThemeProps","freeze","EMPTY_OBJECT","TreeViewContext","useTreeViewContext","TreeViewStyleContext","useTreeViewStyleContext","TreeViewProvider","buildPublicAPI","runItemPlugins","itemPluginProps","finalRootRef","finalContentRef","pluginPropEnhancers","pluginPropEnhancersNames","itemPluginManager","listPlugins","itemPlugin","itemPluginResponse","contentRef","propsEnhancers","propsEnhancerName","propEnhancerName","currentSlotName","currentSlotParams","enhancedProps","propsEnhancersForCurrentPlugin","propsEnhancerForCurrentPluginAndSlot","wrapItem","idAttribute","finalChildren","itemsWrapper","listWrappers","itemWrapper","useTreeViewBuildContext","styleContextValue","collapseIcon","expandIcon","getCollapseUtilityClass","CollapseRoot","collapsedSize","CollapseWrapper","CollapseWrapperInner","wrapperInner","Collapse","collapsedSizeProp","wrapperRef","autoTransitionDuration","isHorizontal","getWrapperSize","wrapperSize","duration2","incomingOwnerState","getSwitchBaseUtilityClass","SwitchBaseRoot","SwitchBaseInput","SwitchBase","checkedProp","checkedIcon","defaultChecked","disabledProp","inputProps","inputRef","onChange","setCheckedState","muiFormControl","hasLabelFor","InputSlot","inputSlotProps","newChecked","handleInputChange","getCheckboxUtilityClass","defaultSlotPropsValue","externalSlotPropsValue","typedDefaultSlotProps","CheckboxRoot","indeterminate","defaultCheckedIcon","CheckBox","defaultIcon","CheckBoxOutlineBlank","defaultIndeterminateIcon","IndeterminateCheckBox","Checkbox","iconProp","indeterminateIcon","indeterminateIconProp","externalInputProps","TREE_VIEW_ROOT_PARENT_ID","buildSiblingIndexes","siblingsIndexLookup","childId","isItemDisabled","itemMetaLookup","itemMeta","parentId","buildItemsLookups","storeParameters","depth","isItemExpandable","otherItemsMetaLookup","metaLookup","modelLookup","orderedChildrenIds","itemsChildren","processItem","getItemId","siblingsMetaLookup","checkId","getItemChildren","expandable","selectable","isItemSelectionDisabled","childrenIndexes","EMPTY_CHILDREN","itemsSelectors","domStructure","disabledItemFocusable","itemOrderedChildrenIdsLookup","itemOrderedChildrenIds","itemModel","itemModelLookup","itemChildrenIndexesLookup","itemParentId","itemDepth","canItemBeFocused","itemChildrenIndentation","expandedItemMapSelector","expandedItems","expandedItemsMap","expansionSelectors","expandedItemsRaw","flatList","appendChildren","itemsWithDescendants","triggerSlot","expansionTrigger","isItemExpanded","_itemId","selectedItemsSelector","selectedItems","selectedItemsRaw","selectedItemsMapSelector","selectedItemsMap","isItemSelectableSelector","selectionSelectors","disableSelection","isMultiSelectEnabled","multiSelect","isCheckboxSelectionEnabled","checkboxSelection","propagationRules","selectionPropagation","isItemSelected","isFeatureEnabledForItem","isItemSelectable","isSelectionEnabled","canItemBeSelected","defaultFocusableItemIdSelector","orderedRootItemIds","firstSelectedItem","firstNavigableItem","focusSelectors","defaultFocusableItemId","isItemTheDefaultFocusableItem","focusedItemId","lazyLoadingSelectors","isEmpty","lazyLoadedItems","errors","isItemLoading","itemHasError","itemError","labelSelectors","isItemEditable","isItemBeingEdited","editedItemId","isAnyItemBeingEdited","itemHasChildren","reactChildren","TreeViewItemDepthContext","getLastNavigableItemInArray","getPreviousNavigableItem","previousNavigableSiblingIndex","currentItemId","lastNavigableChild","getNextNavigableItem","firstNavigableChild","currentItemIndex","nextItemIndex","getLastNavigableItem","getFirstNavigableItem","findOrderInTremauxTree","itemAId","itemBId","itemMetaA","itemMetaB","aFamily","bFamily","aAncestor","bAncestor","aAncestorIsCommon","bAncestorIsCommon","continueA","continueB","commonAncestor","ancestorFamily","aSide","bSide","isTargetInDescendants","itemRoot","treeIdSelector","providedTreeId","treeId","idSelectors","treeItemIdAttribute","providedIdAttribute","depthSelector","depthContext","getTreeItemUtilityClass","TreeViewExpandIcon","TreeViewCollapseIcon","pickIcon","treeItemIcon","treeViewIcon","TreeItemIcon","slotsFromTreeItem","slotPropsFromTreeItem","slotsFromTreeView","slotPropsFromTreeView","iconName","Icon","iconProps","tempOwnerState","TreeItemDragAndDropOverlayRoot","darkChannel","TreeItemDragAndDropOverlay","TreeItemProvider","TreeItemLabelInput","TreeItemRoot","TreeItemContent","TreeItemLabel","editable","TreeItemIconContainer","TreeItemGroupTransition","groupTransition","TreeItemErrorContainer","TreeItemLoadingContainer","TreeItemCheckbox","visible","TreeItem","getContextProviderProps","getRootProps","getContentProps","getIconContainerProps","getCheckboxProps","getLabelProps","getGroupTransitionProps","getLabelInputProps","getDragAndDropOverlayProps","getErrorContainerProps","getLoadingContainerProps","pluginRootRef","interactions","isLoading","hasError","isExpandable","isExpanded","isSelected","isDisabled","isEditing","isEditable","editing","toggleItemEditing","labelEditing","setEditedItem","handleExpansion","focusItem","multiple","expansion","setItemExpansion","handleSelection","selection","expandSelectionRange","setItemSelection","keepExistingSelection","shouldBeSelected","handleCheckboxSelection","hasShift","handleSaveItemLabel","newLabel","updateItemLabel","handleCancelItemLabelEditing","useTreeItemUtils","rootRefObject","contentRefObject","handleRootRef","handleContentRef","checkboxRef","shouldBeAccessibleWithTab","sharedPropsEnhancerParams","createRootHandleBlur","otherHandlers","defaultMuiPrevented","getItemDOMElement","removeFocusedItem","createRootHandleKeyDown","handleItemKeyDown","createContentHandleMouseDown","externalProps","externalEventHandlers","enhancedRootProps","enhancedContentProps","enhancedCheckboxProps","checkbox","onDoubleClick","enhancedLabelProps","enhancedLabelInputProps","labelInput","enhancedDragAndDropOverlayProps","dragAndDropOverlay","useTreeItem","classesFromTreeView","iconContainer","errorIcon","loadingIcon","itemContent","itemIconContainer","itemCheckbox","itemLabel","itemGroupTransition","itemLabelInput","itemDragAndDropOverlay","itemErrorIcon","itemLoadingIcon","Content","contentProps","IconContainer","iconContainerProps","labelProps","checkboxProps","GroupTransition","groupTransitionProps","LabelInput","labelInputProps","DragAndDropOverlay","dragAndDropOverlayProps","ErrorIcon","errorContainerProps","LoadingIcon","loadingContainerProps","RichTreeViewItemsContext","selectorNoChildren","selectorChildrenIdsNull","WrappedTreeItem","itemSlot","itemSlotProps","skipChildren","renderItemForRichTreeView","Item","itemProps","RichTreeViewItems","renderItem","useTreeViewRootProps","forwardedProps","handleRootFocus","handleRootBlur","useIsoLayoutEffect","useTreeViewStore","StoreClass","updateStateFromParameters","useLabelEditingItemPlugin","labelInputValue","setLabelInputValue","TreeViewLabelEditingPlugin","register","onItemLabelChange","EventManager","maxListeners","warnOnce","events","on","highPriority","regular","isFirst","removeListener","removeAllListeners","emit","highPriorityListeners","regularListeners","once","oneTimeListener","getExpansionTrigger","TreeViewItemsPlugin","static","newParameters","previousParameters","typedKey","processSiblings","parentIdWithDefault","getItem","getItemTree","getItemFromItemId","itemToMutate","newChildren","getItemOrderedChildrenIds","getParentId","setIsItemDisabled","shouldBeDisabled","getElementById","setItemChildren","getChildrenCount","parentDepth","removeChildren","newMetaMap","newItemOrderedChildrenIdsLookup","newItemChildrenIndexesLookup","deriveStateFromParameters","applyModelInitialValue","controlledValue","globalTreeViewDefaultId","TimeoutManager","timeoutIds","intervalIds","startTimeout","startInterval","clearAll","TreeViewKeyboardNavigationPlugin","typeaheadQuery","labelMap","createLabelMapFromItemMetaLookup","registerStoreEffect","shouldIgnoreItemsStateUpdate","canToggleItemSelection","canToggleItemExpansion","getFirstItemMatchingTypeaheadQuery","newKey","getNextItem","itemIdToCheck","nextItemId","getNextMatchingItemId","matchingItemId","checkedItems","cleanNewKey","concatenatedQuery","concatenatedQueryMatchingItemId","newKeyMatchingItemId","updateLabelMap","ctrlPressed","selectItemFromArrowNavigation","selectRangeFromStartToItem","selectRangeFromItemToEnd","expandAllSiblings","keyCode","selectAllNavigableItems","isPrintableKey","timeoutManager","matchingItem","TreeViewFocusPlugin","checkItemInNewTree","itemToFocusId","setFocusedItemId","applyItemFocus","itemElement","selectorCheckboxSelectionStatus","hasSelectedDescendant","hasUnSelectedDescendant","traverseDescendants","itemToTraverseId","parents","useSelectionItemPlugin","selectionStatus","ariaChecked","TreeViewSelectionPlugin","lastSelectedItem","lastSelectedRange","setSelectedItems","newModel","additionalItemsToPropagate","onItemSelectionToggle","onSelectedItemsChange","oldModel","cleanModel","descendants","shouldRegenerateModel","newModelLookup","getLookupFromArray","getAddedAndRemovedItems","added","removed","addedItemId","selectDescendants","checkAllDescendantsSelected","selectParents","removedItemId","deSelectDescendants","propagateSelection","selectRange","newSelectedItems","selectedItemsLookup","first","getNonDisabledItemsInRange","itemsToAddToModel","newSelected","oldSelected","isSelectedBefore","navigableItems","getAllNavigableItems","newModelMap","lookup","TreeViewExpansionPlugin","setExpandedItems","onExpandedItemsChange","shouldBeExpanded","isExpandedBefore","cleanShouldBeExpanded","eventParameters","isExpansionPrevented","publishEvent","applyItemExpansion","oldExpanded","newExpanded","onItemExpansionToggle","newlyExpandedItemId","addExpandableItems","newItemMetaLookup","TreeViewItemPluginManager","itemPlugins","itemWrappers","MinimalTreeViewStore","initialParameters","eventManager","instanceName","minimalInitialState","buildItemsStateIfNeeded","defaultExpandedItems","defaultSelectedItems","createMinimalInitialState","updateModel","mutableNewState","controlledProp","newMinimalState","shouldRebuildItemsState","previousValue","isPropagationStopped","isSyntheticEvent","subscribeEvent","parametersToStateMapper","ExtendableRichTreeViewStore","RichTreeViewStore","RichTreeViewRoot","RichTreeView","useExtractRichTreeViewParameters","ICON_MAP","ExpandMore","ExpandMoreIcon","ChevronRight","ChevronRightIcon","Folder","FolderIcon","FolderOpen","FolderOpenIcon","InsertDriveFile","InsertDriveFileIcon","Remove","RemoveIcon","Add","AddIcon","ArrowDropDown","ArrowDropDownIcon","ArrowRight","ArrowRightIcon","AccountTree","AccountTreeIcon","Description","DescriptionIcon","Code","CodeIcon","Image","ImageIcon","Settings","SettingsIcon","Home","HomeIcon","Star","StarIcon","Delete","DeleteIcon","Edit","EditIcon","Visibility","VisibilityIcon","Lock","LockIcon","ShowChart","ShowChartIcon","BarChartIcon","PieChartIcon","ScatterPlotIcon","GridOn","GridOnIcon","Timeline","TimelineIcon","CandlestickChartIcon","Speed","SpeedIcon","Layers","LayersIcon","TrendingUp","TrendingUpIcon","History","HistoryIcon","PlayArrow","PlayArrowIcon","Tune","TuneIcon","Brush","BrushIcon","Highlight","HighlightIcon","Sync","SyncIcon","ZoomIn","TouchApp","TouchAppIcon","TableChart","TableChartIcon","StackedBarChart","StackedBarChartIcon","Palette","PaletteIcon","Rule","RuleIcon","Mouse","MouseIcon","CheckBoxIcon","UnfoldMore","UnfoldMoreIcon","Block","BlockIcon","Diamond","DiamondIcon","AutoGraph","AutoGraphIcon","ViewList","ViewListIcon","GpsFixed","GpsFixedIcon","ContentCopy","ContentCopyIcon","PersonAdd","PersonAddIcon","CheckCircle","CheckCircleIcon","Archive","ArchiveIcon","MoreVert","MoreVertIcon","resolveIcon","TreeView","getItemIdProp","getItemLabelProp","getItemChildrenProp","editableItems","disabledItems","ariaLabel","ariaLabelledBy","isItemDisabledFn","disabledSet","isItemEditableFn","editableSet","handleSelectedItemsChange","itemIds","handleExpandedItemsChange","event_timestamp","handleItemFocus","handleItemLabelChange","editedItemLabel","containerStyle","getSimpleTreeViewUtilityClass","TreeViewChildrenItemContext","TreeViewChildrenItemProvider","childrenIdAttrToIdRef","previousChildrenIds","escapedIdAttr","childrenElements","childrenIds","jsxItems","setJSXItemsOrderedChildrenIds","registerChild","childIdAttribute","childItemId","unregisterChild","useJSXItemsItemPlugin","parentContext","pluginContentRef","isMountedRef","ownerTokenRef","upsertJSXItem","mapLabelFromJSX","jsxItemsitemWrapper","TreeViewJSXItemsPlugin","itemOwners","ownerToken","currentOwner","existingMeta","hasChanges","newItemModelLookup","newMap","SimpleTreeViewStore","SimpleTreeViewRoot","useExtractSimpleTreeViewParameters","renderItems","IconComponent","SimpleTreeView","_ref$items","_ref$multiSelect","_ref$checkboxSelectio","_ref$disableSelection","_ref$expansionTrigger","_ref$disabledItemsFoc","_ref$itemChildrenInde","MuiSimpleTreeView","getRichTreeViewProUtilityClass","DataSourceCacheDefault","ttl","expiry","RequestStatus","NestedDataManager","pendingRequests","queuedRequests","settledRequests","lazyLoadingPlugin","maxConcurrentRequests","MAX_CONCURRENT_REQUESTS","processQueue","loopLength","fetchQueue","fetchPromises","fetchItemChildren","loadingIds","setRequestSettled","clearPendingRequest","getRequestStatus","PENDING","QUEUED","SETTLED","UNKNOWN","getActiveRequestsCount","TREE_VIEW_LAZY_LOADED_ITEMS_INITIAL_STATE","TreeViewLazyLoadingPlugin","nestedDataManager","dataSourceCache","dataSource","handleBeforeItemToggleExpansion","newlyExpandableItems","getExpandableItemsFromDataSource","fetchChildrenIfExpanded","parentIds","itemsToLazyLoad","fetchItems","fetchAllExpandedItems","setItemLoading","itemIdWithDefault","setItemError","updateItemChildren","forceRefresh","getTreeItems","cachedData","response","childrenFetchError","itemsReorderingSelectors","currentReorder","draggedItemProperties","targetItemId","targetDepth","newPosition","isDragging","draggedItemId","canItemBeReordered","isItemReorderable","isAncestor","itemIdA","itemIdB","useTreeViewItemsReorderingItemPlugin","validActionsRef","draggable","onDragStart","dataTransfer","effectAllowed","setDragImage","setData","itemsReordering","startDraggingItem","onDragOver","onDragEnd","dropEffect","completeDraggingItem","cancelDraggingItem","onDragEnter","getDroppingTargetValidActions","setDragTargetItem","validActions","targetHeight","cursorY","cursorX","contentElement","TreeViewItemsReorderingPlugin","canMoveItemToNewPosition","targetItemMeta","targetItemIndex","draggedItemMeta","draggedItemIndex","isTargetLastSibling","oldPosition","positionsAfterAction","positionAfterAction","checkIfPositionIsValid","itemToMoveId","itemToMoveMeta","oldParentId","newParentId","updatedChildren","updatedOldParentChildren","updatedNewParentChildren","itemChildrenIndexes","updateExpandable","itemToMoveDepth","updateItemDepth","moveItemInTree","onItemPositionChange","prevItemReorder","itemChildrenIndentationPx","pixelExec","tempElement","parseItemChildrenIndentation","chooseActionToApply","DEFAULT_IS_ITEM_REORDERABLE_WHEN_ENABLED","DEFAULT_IS_ITEM_REORDERABLE_WHEN_DISABLED","rawMapper","RichTreeViewProStore","lazyLoading","RichTreeViewProRoot","RichTreeViewPro","useExtractRichTreeViewProParameters","localTheme","outerTheme","mergeOuterLocalTheme","globalStyles","wrapGlobalLayer","upperTheme","resolvedTheme","styleArg","EMPTY_THEME","useThemeScoping","isPrivate","mergedTheme","upperPrivateTheme","engineTheme","privateTheme","rtlValue","layerOrder","styleElement","useLayerOrder","ThemeProviderNoVars","scopedTheme","DEFAULT_MODE_STORAGE_KEY","DEFAULT_COLOR_SCHEME_STORAGE_KEY","DEFAULT_ATTRIBUTE","storageWindow","localStorage","setItem","getSystemMode","processState","systemMode","defaultConfig","CssVarsProvider","InternalCssVarsProvider","useColorScheme","getInitColorSchemeScript","deprecatedGetInitColorSchemeScript","modeStorageKey","defaultModeStorageKey","colorSchemeStorageKey","defaultColorSchemeStorageKey","disableTransitionOnChange","designSystemTransitionOnChange","resolveTheme","defaultContext","allColorSchemes","darkColorScheme","lightColorScheme","setColorScheme","setMode","ColorSchemeContext","defaultColorSchemes","defaultComponents","defaultLightColorScheme","defaultDarkColorScheme","themeProp","storageManager","documentNode","colorSchemeNode","disableNestedContext","disableStyleSheetGeneration","defaultMode","initialMode","hasMounted","ctx","initialTheme","restThemeProp","joinedColorSchemes","stateMode","stateColorScheme","supportedColorSchemes","isMultiSchemes","modeStorage","lightStorage","darkStorage","isClient","setIsClient","getColorScheme","currentState","newMode","newLightColorScheme","newDarkColorScheme","handleMediaQuery","mediaListener","media","addListener","unsubscribeMode","unsubscribeLight","unsubscribeDark","useCurrentColorScheme","memoTheme","calculatedColorScheme","schemeKey","classList","shouldGenerateStyleSheet","initialAttribute","setter","suppressHydrationWarning","dangerouslySetInnerHTML","__html","InitColorSchemeScript","createCssVarsProvider","newTheme","noVarsTheme","clip","getNewValue","asc","findClosest","trackFinger","touchId","changedTouches","valueToPercent","setValueIndex","focusThumb","sliderRef","activeIndex","setActive","areValuesEqual","oldValue","array1","array2","itemComparer","axisProps","leap","Identity","cachedSupportsTouchActionNone","doesSupportTouchActionNone","CSS","supports","useSlider","ariaLabelledby","disableSwap","marksProp","onChangeCommitted","shiftStep","valueProp","setOpen","dragging","setDragging","moveCount","lastChangedValue","valueDerived","setValueState","handleChange","thumbIndex","clonedEvent","writable","marksValues","focusedThumbIndex","setFocusedThumbIndex","createHandleHiddenInputFocus","createHandleHiddenInputBlur","changeValue","valueInput","marksIndex","maxMarksValue","createHandleHiddenInputKeyDown","stepSize","currentMarkIndex","incrementKeys","getFingerNewValue","finger","percentToValue","nearest","num","parts","matissaDecimalPart","decimalPart","getDecimalPrecision","roundValueToStep","stopListening","trackOffset","trackLeap","createHandleMouseLeave","cssWritingMode","getHiddenInputProps","externalHandlers","ownEventHandlers","mergedEventHandlers","writingMode","getThumbProps","getThumbStyle","getSliderUtilityClass","SliderRoot","marked","trackInverted","trackFalse","SliderRail","rail","SliderTrack","SliderThumb","valueLabelOpen","valueLabelCircle","valueLabelLabel","useValueLabelClasses","valueLabel","SliderMark","markActive","SliderMarkLabel","markLabel","markLabelActive","Forward","ariaValuetext","getAriaLabel","getAriaValueText","valueLabelDisplay","valueLabelFormat","RailSlot","Rail","TrackSlot","Track","ThumbSlot","Thumb","ValueLabelSlot","ValueLabel","MarkSlot","MarkLabelSlot","MarkLabel","Input","railSlotProps","trackSlotProps","thumbSlotProps","valueLabelSlotProps","markSlotProps","markLabelSlotProps","Slot","railProps","trackProps","thumbProps","valueLabelProps","markProps","markLabelProps","inputSliderProps","ValueLabelComponent","Fade","defaultTimeout","webkitTransition","getBackdropUtilityClass","BackdropRoot","invisible","Backdrop","createChainedFunction","funcs","ariaHidden","hide","getPaddingRight","ariaHiddenSiblings","mountElement","currentElement","elementsToExclude","isNotExcludedElement","isNotForbiddenElement","isForbiddenTagName","isInputHidden","isAriaHiddenForbiddenOnElement","findIndexOf","manager","modals","containers","modalIndex","modalRef","hiddenSiblings","getHiddenSiblings","containerIndex","restore","containerInfo","restoreStyle","disableScrollLock","isOverflowing","scrollContainer","DocumentFragment","parentElement","containerWindow","removeProperty","handleContainer","ariaHiddenState","nextTop","isTopModal","getModalUtilityClass","ModalRoot","ModalBackdrop","backdrop","Modal","BackdropComponent","BackdropProps","closeAfterTransition","disableEscapeKeyDown","hideBackdrop","onBackdropClick","onTransitionEnter","onTransitionExited","propsWithDefaults","getBackdropProps","portalRef","hasTransition","mountNodeRef","getHasTransition","ariaHiddenProp","getModal","handleMounted","resolvedContainer","handlePortalRef","createHandleKeyDown","which","createHandleBackdropClick","propsEventHandlers","BackdropSlot","backdropProps","getPopoverUtilityClass","getOffsetTop","getOffsetLeft","getTransformOriginValue","PopoverRoot","PopoverPaper","Popover","anchorOrigin","anchorPosition","anchorReference","marginThreshold","PaperProps","PaperPropsProp","transitionDurationProp","paperRef","getAnchorOffset","anchorRect","getTransformOrigin","elemRect","getPositioningStyle","elemTransformOrigin","anchorOffset","heightThreshold","widthThreshold","isPositioned","setIsPositioned","setPositioningStyles","positioning","updatePosition","handleResize","rootSlotsProp","rootSlotPropsProp","PaperSlot","paperProps","getMenuUtilityClass","RTL_ORIGIN","LTR_ORIGIN","MenuRoot","MenuPaper","WebkitOverflowScrolling","MenuMenuList","disableAutoFocusItem","MenuListProps","PopoverClasses","menuListActionsRef","paperSlotProps","ListSlot","listSlotProps","readMantineScheme","lightTheme","createTheme","darkTheme","MANTINE_NAME_RE","ItemControlsContext","ItemLabelWithControls","_ctx$sliderValues","menuAnchor","setMenuAnchor","externalValue","sliderValues","initial","localValue","setLocalValue","isDraggingRef","controlsItemSet","sliderMin","sliderMax","sliderStep","sliderColor","onSliderChange","kebabMenuItems","onKebabAction","stopReact","blockNativeDrag","Menu","IconComp","ListItemIcon","ListItemText","EditableLabelInput","innerRef","restoreRef","setRefs","stopOnly","CustomTreeItem","TreeViewPro","setScheme","_ref2$items","itemsProp","_ref2$licenseKey","_ref2$getItemId","_ref2$getItemLabel","_ref2$getItemChildren","_ref2$multiSelect","_ref2$checkboxSelecti","_ref2$disableSelectio","_ref2$expansionTrigge","_ref2$isItemEditable","_ref2$disabledItemsFo","_ref2$itemChildrenInd","_ref2$itemsReordering","reorderableItems","_ref2$lazyLoading","lazyLoadedChildren","_ref2$showItemControl","showItemControls","controlsItems","_ref2$sliderMin","_ref2$sliderMax","_ref2$sliderStep","sync","obs","MutationObserver","attributeFilter","disconnect","mergeChildren","nodeList","nodeId","loadedKids","existingChildren","mergedChildren","_defineProperty","isItemReorderableFn","sliderValuesRef","handleSliderChange","committed","sliderChange","handleKebabAction","kebabAction","resolvedSliderColor","resolveSliderColor","controlsContextValue","findItem","targetId","found","lazyLoadRequest","orderedRef","handleItemPositionChange","updated","idField","childrenField","idK","childK","moved","removeFrom","kids","insertTo","applyReorder","itemPositionChanged","orderedItems","ThemeProvider","PickerAdapterContext","otherInProps","adapter","parentAdapter","utils","dateAdapter","DateAdapter","dateFormats","dateLibInstance","adapterLocale","isMUIAdapter","defaultDates","minDate","maxDate","localizedFormat","weekOfYear","advancedFormat","formatTokenMap","sectionType","contentType","dd","ddd","dddd","defaultFormats","monthShort","dayOfMonth","dayOfMonthFull","weekday","weekdayShort","hours24h","hours12h","fullDate","keyboardDate","shortDate","normalDate","normalDateWithWeekday","fullTime12h","fullTime24h","keyboardDateTime12h","keyboardDateTime24h","MISSING_UTC_PLUGIN","MISSING_TIMEZONE_PLUGIN","AdapterDayjs","isTimezoneCompatible","lib","escapedCharacters","setLocaleToValue","expectedLocale","getCurrentLocaleCode","hasUTCPlugin","hasTimezonePlugin","comparing","comparisonTemplate","comparingInValueTimezone","setTimezone","getTimezone","cleanTimezone","timezone","guess","createSystemDate","createUTCDate","createTZDate","keepLocalTime","tz","getLocaleFormats","locales","localeObject","adjustOffset","fixedValue","getInvalidDate","$timezone","isUTC","local","toJsDate","is12HourCycleInCurrentLocale","expandFormat","localeFormats","formatKey","formatByString","formatString","formatNumber","numberToFormat","isSameYear","isSameMonth","isSameDay","isSameHour","isAfterYear","isAfterDay","isBeforeYear","isBeforeDay","isWithinRange","startOfYear","startOfMonth","startOfWeek","startOfDay","endOfYear","endOfMonth","endOfWeek","endOfDay","addYears","amount","addMonths","addWeeks","addDays","addHours","addMinutes","addSeconds","getYear","setYear","setMinutes","setSeconds","setMilliseconds","getDaysInMonth","getWeekArray","nestedWeeks","weekNumber","getWeekNumber","getDayOfWeek","getYearRange","startDate","endDate","enUSPickers","previousMonth","nextMonth","openPreviousView","openNextView","calendarViewSwitchingButtonAriaLabel","view","endTime","cancelButtonLabel","clearButtonLabel","okButtonLabel","todayButtonLabel","nextStepButtonLabel","datePickerToolbarTitle","dateTimePickerToolbarTitle","timePickerToolbarTitle","dateRangePickerToolbarTitle","timeRangePickerToolbarTitle","clockLabelText","formattedTime","hoursClockNumberText","minutesClockNumberText","secondsClockNumberText","selectViewText","calendarWeekNumberHeaderLabel","calendarWeekNumberHeaderText","calendarWeekNumberAriaLabelText","calendarWeekNumberText","openDatePickerDialogue","formattedDate","openTimePickerDialogue","openRangePickerDialogue","formattedRange","fieldClearLabel","timeTableLabel","dateTableLabel","fieldYearPlaceholder","digitAmount","fieldMonthPlaceholder","fieldDayPlaceholder","fieldWeekDayPlaceholder","fieldHoursPlaceholder","fieldMinutesPlaceholder","fieldSecondsPlaceholder","fieldMeridiemPlaceholder","weekDay","empty","usePickerTranslations","ArrowLeftIcon","getPickersArrowSwitcherUtilityClass","PickerPrivateContext","isPickerDisabled","isPickerReadOnly","isPickerValueEmpty","isPickerOpen","pickerVariant","pickerOrientation","labelId","dismissViews","hasUIView","getCurrentViewMode","triggerElement","viewContainerRole","defaultActionBarActions","onPopperExited","usePickerPrivateContext","_excluded3","PickersArrowSwitcherRoot","PickersArrowSwitcherSpacer","PickersArrowSwitcherButton","isButtonHidden","PickersArrowSwitcher","isNextDisabled","isNextHidden","onGoToNext","nextLabel","isPreviousDisabled","isPreviousHidden","onGoToPrevious","previousLabel","spacer","previousIconButton","nextIconButton","leftArrowIcon","rightArrowIcon","isHidden","goTo","previousProps","PreviousIconButton","previousIconButtonProps","NextIconButton","nextIconButtonProps","LeftArrowIcon","leftArrowIconProps","RightArrowIcon","rightArrowIconProps","convertValueToMeridiem","ampm","getSecondsInDay","createIsAfterIgnoreDatePart","disableIgnoringDatePartForTimeValidation","dateLeft","dateRight","DEFAULT_STEP_NAVIGATION","hasNextStep","hasSeveralSteps","goToNextStep","areViewsInSameStep","PickerViewRoot","getTimeClockUtilityClass","clockCenter","CLOCK_WIDTH","getAngleValue","deg","getClockPointerUtilityClass","ClockPointerRoot","isClockPointerAnimated","ClockPointerThumb","isClockPointerBetweenTwoValues","ClockPointer","isBetweenTwoClockValues","isInner","viewValue","previousType","pickerOwnerState","getAngleStyle","getClockUtilityClass","mergeDateAndTime","dateParam","timeParam","mergedDate","getTodayDate","valueType","formatMeridiem","ClockRoot","ClockClock","ClockWrapper","ClockSquareMask","isClockDisabled","ClockPin","meridiemButtonCommonStyles","clockMeridiemMode","ClockAmButton","ClockPmButton","ClockMeridiemText","Clock","ampmInClock","handleMeridiemChange","isTimeDisabled","meridiemMode","minutesStep","selectedId","viewRange","minViewValue","maxViewValue","translations","isMoving","squareMask","pin","amButton","pmButton","meridiemText","isSelectedTimeDisabled","isPointerInner","handleValueChange","isFinish","newSelectedValue","angleStep","handleTouchSelection","isPointerBetweenTwoClockValues","keyboardControlStep","listboxRef","clampValue","circleValue","getClockNumberUtilityClass","clockNumberClasses","ClockNumberRoot","isClockNumberInInnerRing","ClockNumber","isClockNumberSelected","isClockNumberDisabled","getHourNumbers","getClockNumberText","currentHours","hourNumbers","endHour","getMinutesNumbers","numberValue","SECTION_TYPE_GRANULARITY","roundDate","roundedDate","singleItemValueManager","emptyValue","getTodayValue","getInitialReferenceValue","referenceDate","inGetTodayDate","minTime","maxTime","getDefaultReferenceDate","cleanValue","isSameError","defaultErrorState","TimeClockRoot","TimeClockArrowSwitcher","TIME_CLOCK_DEFAULT_VIEWS","referenceDateProp","disableFuture","disablePast","shouldDisableTime","showViewSwitcher","inView","views","openTo","onViewChange","focusedView","onFocusedViewChange","timezoneProp","onChangeProp","valueManager","valueWithInputTimezone","inputTimezone","setInputTimezone","timezoneToRender","otherParams","newValueWithInputTimezone","useControlledValue","valueOrReferenceDate","useClockReferenceDate","useNow","setView","previousView","nextView","setValueAndGoToNextView","inFocusedView","getStepNavigation","previousOpenTo","previousViews","defaultFocusedView","setFocusedView","stepNavigation","viewIndex","handleFocusedViewChange","viewToFocus","prevFocusedView","handleChangeView","newView","goToNextView","currentViewSelectionState","selectedView","isSelectionFinishedOnCurrentView","hasMoreViews","currentView","viewToNavigateTo","useViews","selectionState","cleanDate","getMeridiem","timeWithMeridiem","newHoursAmount","convertToMeridiem","useMeridiemMode","rawValue","viewType","shouldCheckPastEnd","containsValidTime","isValidValue","timeValue","valueWithMeridiem","dateWithNewHours","dateWithNewMinutes","dateWithNewSeconds","viewProps","handleHoursChange","hourValue","minutesValue","handleMinutesChange","minuteValue","secondsValue","handleSecondsChange","secondValue","arrowSwitcher","TIME_ONLY_RE","parseToDayjs","withTime","dayjs","TimeClock","dValue","dDefault","dMinTime","dMaxTime","newVal","timeData","formatted","handleViewChange","clockProps","LocalizationProvider","MuiTimeClock"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"dash_mui_charts.min.js","mappings":"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AiB,CACfxD,SAAU,UACVl9B,UAAWkgC,IAGb/7E,EAAG,CACDud,MAAOojC,IAETmgB,GAAI,CACFvjD,MAAOojC,IAET67B,GAAI,CACFj/D,MAAOojC,IAET87B,GAAI,CACFl/D,MAAOojC,IAET+7B,GAAI,CACFn/D,MAAOojC,IAETg8B,GAAI,CACFp/D,MAAOojC,IAETi8B,GAAI,CACFr/D,MAAOojC,IAETA,QAAS,CACPpjC,MAAOojC,IAETk8B,WAAY,CACVt/D,MAAOojC,IAETm8B,aAAc,CACZv/D,MAAOojC,IAETo8B,cAAe,CACbx/D,MAAOojC,IAETq8B,YAAa,CACXz/D,MAAOojC,IAET24B,SAAU,CACR/7D,MAAOojC,IAET44B,SAAU,CACRh8D,MAAOojC,IAETs8B,cAAe,CACb1/D,MAAOojC,IAETu8B,mBAAoB,CAClB3/D,MAAOojC,IAETw8B,iBAAkB,CAChB5/D,MAAOojC,IAETy8B,aAAc,CACZ7/D,MAAOojC,IAET08B,kBAAmB,CACjB9/D,MAAOojC,IAET28B,gBAAiB,CACf//D,MAAOojC,IAET9iD,EAAG,CACD0f,MAAO4M,IAETozD,GAAI,CACFhgE,MAAO4M,IAETqzD,GAAI,CACFjgE,MAAO4M,IAETszD,GAAI,CACFlgE,MAAO4M,IAETuzD,GAAI,CACFngE,MAAO4M,IAETwzD,GAAI,CACFpgE,MAAO4M,IAETyzD,GAAI,CACFrgE,MAAO4M,IAETA,OAAQ,CACN5M,MAAO4M,IAETC,UAAW,CACT7M,MAAO4M,IAETE,YAAa,CACX9M,MAAO4M,IAETG,aAAc,CACZ/M,MAAO4M,IAETI,WAAY,CACVhN,MAAO4M,IAETivD,QAAS,CACP77D,MAAO4M,IAETkvD,QAAS,CACP97D,MAAO4M,IAET0zD,aAAc,CACZtgE,MAAO4M,IAET2zD,kBAAmB,CACjBvgE,MAAO4M,IAET4zD,gBAAiB,CACfxgE,MAAO4M,IAET6zD,YAAa,CACXzgE,MAAO4M,IAET8zD,iBAAkB,CAChB1gE,MAAO4M,IAET+zD,eAAgB,CACd3gE,MAAO4M,IAGTg0D,aAAc,CACZrF,aAAa,EA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AAC,OAAQ6rF,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,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","sources":["webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/load script","webpack:///./node_modules/dayjs/plugin/customParseFormat.js","webpack:///./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack:///external window \"React\"","webpack:///./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","webpack:///./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/hoist-non-react-statics/node_modules/react-is/index.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/dayjs/dayjs.min.js","webpack:///./node_modules/react-is/cjs/react-is.production.js","webpack:///./node_modules/react/jsx-runtime.js","webpack:///./node_modules/dayjs/plugin/localizedFormat.js","webpack:///./node_modules/dayjs/plugin/advancedFormat.js","webpack:///./node_modules/dayjs/plugin/isBetween.js","webpack:///./node_modules/dayjs/plugin/weekOfYear.js","webpack:///./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","webpack:///./node_modules/use-sync-external-store/shim/with-selector.js","webpack:///./node_modules/bezier-easing/src/index.js","webpack:///./node_modules/use-sync-external-store/shim/index.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/compat","webpack:///webpack/runtime/jsonp chunk loading","webpack:///external window \"PropTypes\"","webpack:///./node_modules/@mui/utils/esm/ponyfillGlobal/ponyfillGlobal.js","webpack:///./node_modules/@mui/x-license/utils/licenseInfo.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-internals/esm/fastObjectShallowCompare/fastObjectShallowCompare.js","webpack:///./node_modules/@mui/x-telemetry/esm/index.js","webpack:///./node_modules/@mui/x-telemetry/esm/runtime/events.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/encoding/base64.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/encoding/md5.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/utils/licenseStatus.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/utils/plan.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/utils/licenseModel.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/verifyLicense/verifyLicense.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/utils/licenseInfo.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/utils/licenseErrorMessageUtils.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/Unstable_LicenseInfoProvider/MuiLicenseInfoContext.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/useLicenseVerifier/useLicenseVerifier.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-license/esm/Watermark/Watermark.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-internals/esm/fastMemo/fastMemo.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/useId/useId.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/reactMajor/index.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/store/useStore.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/store/Store.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/useEffectAfterFirstRender/useEffectAfterFirstRender.js","webpack:///./node_modules/@mui/x-charts/esm/constants/index.js","webpack:///./node_modules/reselect/dist/reselect.mjs","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/store/createSelector.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisLayout.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartAxisSize.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/defaultizeMargin.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartId/useChartId.utils.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartId/useChartId.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","webpack:///./node_modules/@mui/x-charts/esm/colorPalettes/categorical/rainbowSurge.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartSeries/processSeries.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartSeries/serializeIdentifier.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartSeries/useChartSeries.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/ActiveGesturesRegistry.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/KeyboardManager.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/PointerManager.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/GestureManager.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/utils/eventList.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/Gesture.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/PointerGesture.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/utils/calculateCentroid.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/utils/getDirection.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/utils/createEventName.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/gestures/PanGesture.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/utils/isDirectionAllowed.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/gestures/MoveGesture.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/gestures/TapGesture.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/gestures/PressGesture.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/utils/getDistance.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/utils/calculateAverageDistance.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/gestures/PinchGesture.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/utils/getPinchDirection.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/gestures/TurnWheelGesture.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/utils/preventDefault.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/gestures/TapAndDragGesture.js","webpack:///./node_modules/@mui/x-internal-gestures/esm/core/gestures/PressAndDragGesture.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartInteractionListener/useChartInteractionListener.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/corePlugins.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@mui/x-charts/esm/internals/store/extractPluginParamsFromProps.js","webpack:///./node_modules/@mui/x-charts/esm/internals/store/useCharts.js","webpack:///./node_modules/@mui/x-charts/esm/context/ChartProvider/ChartContext.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/useOnMount/useOnMount.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/store/useStoreEffect.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/useAssertModelConsistency/useAssertModelConsistency.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartSeries/useChartSeries.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/constants.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/defaultizeZoom.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/defaultizeAxis.js","webpack:///./node_modules/@mui/x-charts/esm/internals/defaultValueFormatters.js","webpack:///./node_modules/@mui/x-charts/esm/models/axis.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/descending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/threshold.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-interpolate/src/numberArray.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-scale/src/sequential.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/internmap/src/index.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/@mui/x-charts/esm/internals/colorScale.js","webpack:///./node_modules/@mui/x-charts/esm/internals/ticks.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-scale/src/log.js","webpack:///./node_modules/d3-scale/src/pow.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/ticks.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale/src/symlog.js","webpack:///./node_modules/@mui/x-charts/esm/internals/scales/scaleSymlog.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getScale.js","webpack:///./node_modules/d3-scale/src/utcTime.js","webpack:///./node_modules/@mui/x-charts/esm/internals/dateHelpers.js","webpack:///./node_modules/@mui/x-charts/esm/internals/configInit.js","webpack:///./node_modules/@mui/x-charts/esm/internals/isCartesian.js","webpack:///./node_modules/@mui/x-charts/esm/internals/scaleGuards.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisTriggerTooltip.js","webpack:///./node_modules/@mui/x-charts/esm/internals/isDefined.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/createAxisFilterMapper.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/createZoomLookup.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/scales/scaleBand.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/@mui/x-charts/esm/internals/scales/scalePoint.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisScale.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/zoom.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisExtrema.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/domain.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisDomainLimit.js","webpack:///./node_modules/flatqueue/index.js","webpack:///./node_modules/@mui/x-charts/esm/internals/Flatbush.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getSVGPoint.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/isDeepEqual/isDeepEqual.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartInteraction/checkHasInteractionPlugin.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/fastObjectShallowCompare/fastObjectShallowCompare.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartTooltip/useChartTooltip.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartZAxis/useChartZAxis.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.js","webpack:///./node_modules/@mui/x-charts/esm/internals/findMinMax.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/seriesConfig/bar/extremums.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/offset/none.js","webpack:///./node_modules/d3-shape/src/order/none.js","webpack:///./node_modules/d3-shape/src/stack.js","webpack:///./node_modules/d3-shape/src/order/appearance.js","webpack:///./node_modules/d3-shape/src/order/ascending.js","webpack:///./node_modules/@mui/x-charts/esm/internals/stacking/stackSeries.js","webpack:///./node_modules/d3-shape/src/order/descending.js","webpack:///./node_modules/d3-shape/src/order/insideOut.js","webpack:///./node_modules/d3-shape/src/order/reverse.js","webpack:///./node_modules/d3-shape/src/offset/expand.js","webpack:///./node_modules/@mui/x-charts/esm/internals/stacking/offset/offsetDiverging.js","webpack:///./node_modules/d3-shape/src/offset/silhouette.js","webpack:///./node_modules/d3-shape/src/offset/wiggle.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/seriesConfig/bar/seriesProcessor.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getLabel.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getSeriesColorFn.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/seriesConfig/bar/getColor.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNonEmptySeriesArray.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getPreviousNonEmptySeries.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNextNonEmptySeries.js","webpack:///./node_modules/@mui/x-charts/esm/internals/seriesHasData.js","webpack:///./node_modules/@mui/x-charts/esm/internals/commonNextFocusItem.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/seriesConfig/bar/keyboardFocusHandler.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getBandSize.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getBarDimensions.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/seriesConfig/bar/tooltipPosition.js","webpack:///./node_modules/@mui/x-charts/esm/internals/identifierSerializer.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/seriesConfig/index.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/seriesConfig/bar/legend.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/seriesConfig/bar/tooltip.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/seriesConfig/bar/getSeriesWithDefaultValues.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/keyboardFocusHandler.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/index.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/seriesProcessor.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/getColor.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/legend.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/tooltip.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/tooltipPosition.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/extremums.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/getSeriesWithDefaultValues.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/seriesConfig/getColor.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/seriesConfig/keyboardFocusHandler.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/seriesConfig/index.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/seriesConfig/seriesProcessor.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/seriesConfig/legend.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/seriesConfig/tooltip.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/seriesConfig/tooltipPosition.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/seriesConfig/extremums.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/seriesConfig/getSeriesWithDefaultValues.js","webpack:///./node_modules/d3-shape/src/descending.js","webpack:///./node_modules/d3-shape/src/identity.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/@mui/x-charts/esm/internals/angleConversion.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getPercentageValue.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/getPieCoordinates.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/seriesConfig/seriesLayout.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/seriesConfig/keyboardFocusHandler.js","webpack:///./node_modules/@mui/x-charts/esm/context/ChartProvider/ChartProvider.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/seriesConfig/index.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/seriesConfig/getColor.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/seriesConfig/seriesProcessor.js","webpack:///./node_modules/d3-shape/src/pie.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/seriesConfig/legend.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/seriesConfig/tooltip.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/seriesConfig/tooltipPosition.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/seriesConfig/getSeriesWithDefaultValues.js","webpack:///./node_modules/@mui/x-charts/esm/context/ChartsSlotsContext.js","webpack:///./node_modules/@mui/utils/esm/resolveProps/resolveProps.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","webpack:///./node_modules/@mui/utils/esm/deepmerge/deepmerge.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/createBreakpoints/createBreakpoints.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/cssContainerQueries/cssContainerQueries.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/createTheme/shape.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/breakpoints/breakpoints.js","webpack:///./node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","webpack:///./node_modules/@mui/utils/esm/capitalize/capitalize.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/style/style.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/merge/merge.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/spacing/spacing.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/memoize/memoize.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/createTheme/createSpacing.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/compose/compose.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/borders/borders.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/cssGrid/cssGrid.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/palette/palette.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/sizing/sizing.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/createTheme/applyStyles.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/createTheme/createTheme.js","webpack:///./node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","webpack:///./node_modules/stylis/src/Utility.js","webpack:///./node_modules/stylis/src/Tokenizer.js","webpack:///./node_modules/stylis/src/Enum.js","webpack:///./node_modules/stylis/src/Serializer.js","webpack:///./node_modules/stylis/src/Parser.js","webpack:///./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack:///./node_modules/stylis/src/Middleware.js","webpack:///./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack:///./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack:///./node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","webpack:///./node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack:///./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/useThemeWithoutDefault/useThemeWithoutDefault.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/useTheme/useTheme.js","webpack:///./node_modules/@mui/utils/esm/clamp/clamp.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/colorManipulator/colorManipulator.js","webpack:///./node_modules/@mui/material/colors/common.js","webpack:///./node_modules/@mui/material/colors/grey.js","webpack:///./node_modules/@mui/material/colors/purple.js","webpack:///./node_modules/@mui/material/colors/red.js","webpack:///./node_modules/@mui/material/colors/orange.js","webpack:///./node_modules/@mui/material/colors/blue.js","webpack:///./node_modules/@mui/material/colors/lightBlue.js","webpack:///./node_modules/@mui/material/colors/green.js","webpack:///./node_modules/@mui/material/styles/createPalette.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/cssVars/createGetCssVar.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/cssVars/prepareTypographyVars.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/cssVars/cssVarsParser.js","webpack:///./node_modules/@mui/material/styles/createTypography.js","webpack:///./node_modules/@mui/material/styles/shadows.js","webpack:///./node_modules/@mui/material/styles/createTransitions.js","webpack:///./node_modules/@mui/material/styles/zIndex.js","webpack:///./node_modules/@mui/material/styles/stringifyTheme.js","webpack:///./node_modules/@mui/material/styles/createThemeNoVars.js","webpack:///./node_modules/@mui/material/styles/createMixins.js","webpack:///./node_modules/@mui/material/styles/getOverlayAlpha.js","webpack:///./node_modules/@mui/material/styles/createColorScheme.js","webpack:///./node_modules/@mui/material/styles/shouldSkipGeneratingVar.js","webpack:///./node_modules/@mui/material/styles/excludeVariablesFromRoot.js","webpack:///./node_modules/@mui/material/styles/createGetSelector.js","webpack:///./node_modules/@mui/material/styles/createThemeWithVars.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/cssVars/prepareCssVars.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/cssVars/getColorSchemeSelector.js","webpack:///./node_modules/@mui/material/styles/createTheme.js","webpack:///./node_modules/@mui/material/styles/defaultTheme.js","webpack:///./node_modules/@mui/material/styles/identifier.js","webpack:///./node_modules/@mui/material/styles/useThemeProps.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","webpack:///./node_modules/@mui/x-charts/esm/locales/utils/imageMimeTypes.js","webpack:///./node_modules/@mui/x-charts/esm/locales/enUS.js","webpack:///./node_modules/@mui/x-charts/esm/locales/utils/getChartsLocalization.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLocalizationProvider/ChartsLocalizationProvider.js","webpack:///./node_modules/clsx/dist/clsx.mjs","webpack:///./node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","webpack:///./node_modules/@mui/utils/esm/useOnMount/useOnMount.js","webpack:///./node_modules/@mui/utils/esm/useTimeout/useTimeout.js","webpack:///./node_modules/@mui/utils/esm/composeClasses/composeClasses.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/RtlProvider/index.js","webpack:///./node_modules/@mui/utils/esm/isFocusVisible/isFocusVisible.js","webpack:///./node_modules/@mui/utils/esm/getReactElementRef/getReactElementRef.js","webpack:///./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","webpack:///./node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","webpack:///./node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","webpack:///./node_modules/@mui/material/node_modules/@mui/styled-engine/index.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/preprocessStyles.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/createStyled/createStyled.js","webpack:///./node_modules/@mui/material/styles/slotShouldForwardProp.js","webpack:///./node_modules/@mui/material/styles/rootShouldForwardProp.js","webpack:///./node_modules/@mui/material/styles/styled.js","webpack:///./node_modules/@mui/material/styles/useTheme.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/memoTheme.js","webpack:///./node_modules/@mui/material/utils/memoTheme.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/DefaultPropsProvider/DefaultPropsProvider.js","webpack:///./node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js","webpack:///./node_modules/@mui/material/utils/capitalize.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///external window \"ReactDOM\"","webpack:///./node_modules/react-transition-group/esm/config.js","webpack:///./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:///./node_modules/react-transition-group/esm/utils/reflow.js","webpack:///./node_modules/react-transition-group/esm/Transition.js","webpack:///./node_modules/@mui/material/transitions/utils.js","webpack:///./node_modules/@mui/utils/esm/useForkRef/useForkRef.js","webpack:///./node_modules/@mui/material/utils/useForkRef.js","webpack:///./node_modules/@mui/material/Grow/Grow.js","webpack:///./node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","webpack:///./node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack:///./node_modules/@popperjs/core/lib/utils/math.js","webpack:///./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack:///./node_modules/@popperjs/core/lib/enums.js","webpack:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack:///./node_modules/@popperjs/core/lib/createPopper.js","webpack:///./node_modules/@popperjs/core/lib/utils/debounce.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/within.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack:///./node_modules/@popperjs/core/lib/popper.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack:///./node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","webpack:///./node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","webpack:///./node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","webpack:///./node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","webpack:///./node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","webpack:///./node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","webpack:///./node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","webpack:///./node_modules/@mui/utils/esm/setRef/setRef.js","webpack:///./node_modules/@mui/material/Portal/Portal.js","webpack:///./node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","webpack:///./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","webpack:///./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","webpack:///./node_modules/@mui/material/Popper/popperClasses.js","webpack:///./node_modules/@mui/material/Popper/BasePopper.js","webpack:///./node_modules/@mui/material/Popper/Popper.js","webpack:///./node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","webpack:///./node_modules/@mui/material/utils/useEventCallback.js","webpack:///./node_modules/@mui/utils/esm/useId/useId.js","webpack:///./node_modules/@mui/material/utils/useId.js","webpack:///./node_modules/@mui/utils/esm/useControlled/useControlled.js","webpack:///./node_modules/@mui/material/utils/useControlled.js","webpack:///./node_modules/@mui/material/utils/useSlot.js","webpack:///./node_modules/@mui/material/Tooltip/tooltipClasses.js","webpack:///./node_modules/@mui/material/Tooltip/Tooltip.js","webpack:///./node_modules/@mui/material/utils/ownerDocument.js","webpack:///./node_modules/@mui/material/List/ListContext.js","webpack:///./node_modules/@mui/material/List/listClasses.js","webpack:///./node_modules/@mui/material/List/List.js","webpack:///./node_modules/@mui/utils/esm/getScrollbarSize/getScrollbarSize.js","webpack:///./node_modules/@mui/material/utils/getScrollbarSize.js","webpack:///./node_modules/@mui/material/utils/useEnhancedEffect.js","webpack:///./node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","webpack:///./node_modules/@mui/material/utils/ownerWindow.js","webpack:///./node_modules/@mui/material/MenuList/MenuList.js","webpack:///./node_modules/@mui/material/Divider/dividerClasses.js","webpack:///./node_modules/@mui/material/Divider/Divider.js","webpack:///./node_modules/@mui/material/utils/createSimplePaletteValueFilter.js","webpack:///./node_modules/@mui/material/useLazyRipple/useLazyRipple.js","webpack:///./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack:///./node_modules/react-transition-group/esm/TransitionGroup.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@emotion/react/dist/emotion-react.browser.esm.js","webpack:///./node_modules/@mui/material/ButtonBase/Ripple.js","webpack:///./node_modules/@mui/material/ButtonBase/touchRippleClasses.js","webpack:///./node_modules/@mui/material/ButtonBase/TouchRipple.js","webpack:///./node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","webpack:///./node_modules/@mui/material/ButtonBase/ButtonBase.js","webpack:///./node_modules/@mui/material/CircularProgress/circularProgressClasses.js","webpack:///./node_modules/@mui/material/CircularProgress/CircularProgress.js","webpack:///./node_modules/@mui/material/IconButton/iconButtonClasses.js","webpack:///./node_modules/@mui/material/IconButton/IconButton.js","webpack:///./node_modules/@mui/material/Button/buttonClasses.js","webpack:///./node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","webpack:///./node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js","webpack:///./node_modules/@mui/material/Button/Button.js","webpack:///./node_modules/@mui/x-charts/esm/internals/material/index.js","webpack:///./node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","webpack:///./node_modules/@mui/material/ListItemText/listItemTextClasses.js","webpack:///./node_modules/@mui/material/MenuItem/menuItemClasses.js","webpack:///./node_modules/@mui/material/MenuItem/MenuItem.js","webpack:///./node_modules/@mui/material/ListItemIcon/ListItemIcon.js","webpack:///./node_modules/@mui/material/Typography/typographyClasses.js","webpack:///./node_modules/@mui/material/Typography/Typography.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","webpack:///./node_modules/@mui/material/ListItemText/ListItemText.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/material/components/BaseMenuItem.js","webpack:///./node_modules/@mui/material/Unstable_TrapFocus/FocusTrap.js","webpack:///./node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","webpack:///./node_modules/@mui/material/Paper/paperClasses.js","webpack:///./node_modules/@mui/material/Paper/Paper.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/material/components/BasePopper.js","webpack:///./node_modules/@mui/material/SvgIcon/svgIconClasses.js","webpack:///./node_modules/@mui/material/SvgIcon/SvgIcon.js","webpack:///./node_modules/@mui/material/utils/createSvgIcon.js","webpack:///./node_modules/@mui/x-charts/esm/internals/createSvgIcon.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/material/icons.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/material/index.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartBrush/useChartBrush.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartBrush/useChartBrush.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartPolarAxis/defaultizeAxis.js","webpack:///./node_modules/@mui/x-charts/esm/internals/isPolar.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartPolarAxis/computeAxisValue.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartPolarAxis/getAxisTriggerTooltip.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartPolarAxis/getAxisExtremum.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartPolarAxis/coordinateTransformation.js","webpack:///./node_modules/@mui/x-charts/esm/internals/clampAngle.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartVisibilityManager/isIdentifierVisible.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-internals/esm/export/loadStyleSheets.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProExport/common.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","webpack:///./node_modules/@mui/x-charts/esm/Toolbar/chartToolbarClasses.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProExport/defaults.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProExport/useChartProExport.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProExport/print.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProExport/exportImage.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-internals/esm/isDeepEqual/isDeepEqual.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-internals/esm/rafThrottle/rafThrottle.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/gestureHooks/useZoom.utils.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-internals/esm/store/createSelector.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/ZoomInteractionConfig.selectors.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/gestureHooks/useZoomOnWheel.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/initializeZoomInteractionConfig.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/initializeZoomData.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/useChartProZoom.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-internals/esm/useEffectAfterFirstRender/useEffectAfterFirstRender.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/debounce/debounce.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/gestureHooks/usePanOnDrag.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/gestureHooks/usePanOnPressAndDrag.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/gestureHooks/usePanOnWheel.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/gestureHooks/useZoomOnPinch.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/gestureHooks/useZoomOnTapAndDrag.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/gestureHooks/useZoomOnBrush.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/gestureHooks/useZoomOnDoubleTapReset.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/useChartProZoom/calculateZoom.js","webpack:///./node_modules/@mui/x-charts-pro/esm/internals/plugins/allPlugins.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartClosestPoint/findClosestPoints.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartClosestPoint/useChartClosestPoint.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/allPlugins.js","webpack:///./node_modules/@mui/x-charts/esm/ChartDataProvider/useChartDataProviderProps.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartDataProviderPro/useChartDataProviderProProps.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartDataProviderPro/ChartDataProviderPro.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/useForkRef/useForkRef.js","webpack:///./node_modules/@mui/x-charts/esm/context/ChartProvider/useChartContext.js","webpack:///./node_modules/@mui/x-charts/esm/internals/store/useStore.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useDrawingArea.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useAxis.js","webpack:///./node_modules/@mui/x-charts/esm/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js","webpack:///./node_modules/@mui/x-charts/esm/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js","webpack:///./node_modules/@mui/x-charts/esm/internals/components/ChartsAxesGradients/ChartsContinuousGradientObjectBound.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartZAxis/useChartZAxis.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useZAxis.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartId/useChartId.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useChartId.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useChartGradientId.js","webpack:///./node_modules/@mui/x-charts/esm/internals/components/ChartsAxesGradients/ChartsAxesGradients.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useSvgRef.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.selectors.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsSurface/chartsSurfaceClasses.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsSurface/ChartsSurface.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useInteractionItemProps.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartHighlight/createIsHighlighted.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartHighlight/createIsFaded.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartHighlight/highlightStates.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useItemHighlighted.js","webpack:///./node_modules/@mui/x-charts/esm/internals/animation/animation.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/@mui/x-charts/esm/internals/animation/Transition.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/animation/useAnimate.js","webpack:///./node_modules/@mui/x-charts/esm/internals/animation/useAnimateInternal.js","webpack:///./node_modules/@mui/x-charts/esm/internals/shallowEqual.js","webpack:///./node_modules/@mui/x-charts/esm/internals/cleanId.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/AppearingMask.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/AnimatedArea.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/animation/useAnimateArea.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/AreaElement.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useSkipAnimation.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useInternalIsZoomInteracting.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-shape/src/path.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/area.js","webpack:///./node_modules/d3-shape/src/curve/cardinal.js","webpack:///./node_modules/d3-shape/src/curve/catmullRom.js","webpack:///./node_modules/d3-shape/src/curve/monotone.js","webpack:///./node_modules/d3-shape/src/curve/natural.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/d3-shape/src/curve/bump.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getCurve.js","webpack:///./node_modules/@mui/x-charts/esm/internals/seriesSelectorOfType.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useLineSeries.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useScale.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/useAreaPlotData.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/AreaPlot.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/AnimatedLine.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/animation/useAnimateLine.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/LineElement.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/useLinePlotData.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/LinePlot.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/markElementClasses.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/CircleMarkElement.js","webpack:///./node_modules/d3-shape/src/symbol/asterisk.js","webpack:///./node_modules/d3-shape/src/symbol/circle.js","webpack:///./node_modules/d3-shape/src/symbol/cross.js","webpack:///./node_modules/d3-shape/src/symbol/diamond.js","webpack:///./node_modules/d3-shape/src/symbol/square.js","webpack:///./node_modules/d3-shape/src/symbol/star.js","webpack:///./node_modules/d3-shape/src/symbol/triangle.js","webpack:///./node_modules/d3-shape/src/symbol/wye.js","webpack:///./node_modules/d3-shape/src/symbol/triangle2.js","webpack:///./node_modules/d3-shape/src/symbol.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getSymbol.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/MarkElement.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useItemHighlightedGetter.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianHighlight.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/MarkPlot.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/useMarkPlotData.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/warning/warning.js","webpack:///./node_modules/@mui/system/esm/RtlProvider/index.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useIsHydrated.js","webpack:///./node_modules/@mui/x-charts/esm/internals/isInfinity.js","webpack:///./node_modules/@mui/x-charts/esm/utils/timeTicks.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useTicks.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getGraphemeCount.js","webpack:///./node_modules/@mui/x-charts/esm/internals/sliceUntil.js","webpack:///./node_modules/@mui/x-charts/esm/internals/ellipsize.js","webpack:///./node_modules/@mui/x-charts/esm/internals/degToRad.js","webpack:///./node_modules/@mui/x-charts/esm/internals/domUtils.js","webpack:///./node_modules/@mui/x-charts/esm/internals/geometry.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsAxis/axisClasses.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsXAxis/utilities.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsText/ChartsText.js","webpack:///./node_modules/@mui/x-charts/esm/internals/getWordsByLines.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsText/defaultTextPlacement.js","webpack:///./node_modules/@mui/x-charts/esm/internals/invertTextAnchor.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsXAxis/useAxisTicksProps.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsXAxis/ChartsSingleXAxisTicks.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useMounted.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsXAxis/getVisibleLabels.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsXAxis/shortenLabels.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useTicksGrouped.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsXAxis/ChartsGroupedXAxisTicks.js","webpack:///./node_modules/@mui/x-charts/esm/internals/components/AxisSharedComponents.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsXAxis/ChartsXAxisImpl.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsXAxis/ChartsXAxis.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsYAxis/utilities.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsYAxis/useAxisTicksProps.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsYAxis/ChartsSingleYAxisTicks.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsYAxis/shortenLabels.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsYAxis/ChartsGroupedYAxisTicks.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsYAxis/ChartsYAxisImpl.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsYAxis/ChartsYAxis.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsGrid/chartsGridClasses.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsGrid/styledComponents.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsGrid/ChartsVerticalGrid.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsGrid/ChartsHorizontalGrid.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsGrid/ChartsGrid.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsTooltip/chartsTooltipClasses.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useSeries.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartTooltip/useChartTooltip.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsTooltip/useItemTooltip.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsTooltip/ChartsTooltipTable.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLabel/labelMarkClasses.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/utils/esm/resolveProps/resolveProps.js","webpack:///./node_modules/@mui/x-charts/esm/internals/consumeThemeProps.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLabel/ChartsLabelMark.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsTooltip/ChartsItemTooltipContent.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/useMediaQuery/useMediaQuery.js","webpack:///./node_modules/@mui/material/useMediaQuery/index.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsTooltip/utils.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsTooltip/useAxisTooltip.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsTooltip/useAxesTooltip.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartSeries/useColorProcessor.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsTooltip/ChartsAxisTooltipContent.js","webpack:///./node_modules/@mui/material/NoSsr/NoSsr.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsTooltip/ChartsTooltipContainer.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useAxisSystem.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/rafThrottle/rafThrottle.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsTooltip/ChartsTooltip.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsAxisHighlight/chartsAxisHighlightClasses.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsAxisHighlight/ChartsAxisHighlightPath.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsAxisHighlight/ChartsYAxisHighlight.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsAxisHighlight/ChartsXAxisHighlight.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsAxisHighlight/ChartsAxisHighlight.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useLegend.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLegend/chartsLegendClasses.js","webpack:///./node_modules/@mui/x-charts/esm/internals/consumeSlots.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLabel/labelClasses.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLabel/ChartsLabel.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLegend/ChartsLegend.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLegend/onClickContextBuilder.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsClipPath/ChartsClipPath.js","webpack:///./node_modules/@mui/system/node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","webpack:///./node_modules/@mui/system/esm/colorManipulator/colorManipulator.js","webpack:///./node_modules/@mui/system/node_modules/@mui/utils/esm/clamp/clamp.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/useId/useId.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPreview.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/checkBarChartScaleErrors.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useBarSeries.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/useBarPlotData.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/barElementClasses.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/animation/useAnimateBar.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/AnimatedBarElement.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BarElement.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useIsItemFocused.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/useScatterPlotData.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useScatterSeries.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/ScatterMarker.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/previews/ScatterPreviewPlot.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/previews/AreaPreviewPlot.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/previews/LinePreviewPlot.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/seriesPreviewPlotMap.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/previews/BarPreviewPlot.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/previews/LineAreaPreviewPlot.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/ChartAxisZoomSliderPreviewContent.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/ChartAxisZoomSliderPreview.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/constants.js","webpack:///./node_modules/@mui/styled-engine/esm/index.js","webpack:///./node_modules/@mui/system/node_modules/@mui/utils/esm/deepmerge/deepmerge.js","webpack:///./node_modules/@mui/system/esm/cssContainerQueries/cssContainerQueries.js","webpack:///./node_modules/@mui/system/esm/createTheme/shape.js","webpack:///./node_modules/@mui/system/esm/breakpoints/breakpoints.js","webpack:///./node_modules/@mui/system/node_modules/@mui/utils/esm/capitalize/capitalize.js","webpack:///./node_modules/@mui/system/esm/style/style.js","webpack:///./node_modules/@mui/system/esm/merge/merge.js","webpack:///./node_modules/@mui/system/esm/spacing/spacing.js","webpack:///./node_modules/@mui/system/esm/memoize/memoize.js","webpack:///./node_modules/@mui/system/esm/compose/compose.js","webpack:///./node_modules/@mui/system/esm/borders/borders.js","webpack:///./node_modules/@mui/system/esm/cssGrid/cssGrid.js","webpack:///./node_modules/@mui/system/esm/palette/palette.js","webpack:///./node_modules/@mui/system/esm/sizing/sizing.js","webpack:///./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","webpack:///./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","webpack:///./node_modules/@mui/system/esm/createTheme/applyStyles.js","webpack:///./node_modules/@mui/system/esm/createTheme/createTheme.js","webpack:///./node_modules/@mui/system/esm/createStyled/createStyled.js","webpack:///./node_modules/@mui/system/esm/createBreakpoints/createBreakpoints.js","webpack:///./node_modules/@mui/system/esm/createTheme/createSpacing.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/zoom-utils.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/chartAxisZoomSliderTrackClasses.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js","webpack:///./node_modules/@mui/x-charts/esm/internals/invertScale.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/useForkRef/useForkRef.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/chartAxisZoomSliderThumbClasses.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartZoomSlider/ChartZoomSlider.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsReferenceLine/chartsReferenceLineClasses.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsReferenceLine/common.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsReferenceLine/ChartsXReferenceLine.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsReferenceLine/ChartsYReferenceLine.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsReferenceLine/ChartsReferenceLine.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsBrushOverlay/ChartsBrushOverlay.classes.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsBrushOverlay/ChartsBrushOverlay.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/useComponentRenderer/useComponentRenderer.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/ToolbarContext/ToolbarContext.js","webpack:///./node_modules/@mui/x-charts/esm/Toolbar/ToolbarButton.js","webpack:///./node_modules/@mui/x-charts/node_modules/@mui/x-internals/esm/ToolbarContext/useRegisterToolbarButton.js","webpack:///./node_modules/@mui/x-charts/esm/Toolbar/Toolbar.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useChartsLocalization.js","webpack:///./node_modules/@mui/system/esm/styled/styled.js","webpack:///./node_modules/@mui/system/esm/preprocessStyles.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartsToolbarPro/internals/ChartsToolbarDivider.js","webpack:///./node_modules/@mui/x-charts/esm/internals/components/NotRendered.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartsToolbarPro/internals/ChartsMenu.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-internals/esm/useComponentRenderer/useComponentRenderer.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartsToolbarPro/ChartsToolbarZoomInTrigger.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartsToolbarPro/ChartsToolbarZoomOutTrigger.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-internals/esm/reactMajor/index.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/x-internals/esm/forwardRef/forwardRef.js","webpack:///./node_modules/@mui/x-charts-pro/esm/context/useChartProApiContext.js","webpack:///./node_modules/@mui/x-charts/esm/context/useChartApiContext.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartsToolbarPro/ChartsToolbarPro.js","webpack:///./src/lib/components/LineChart.react.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useBrush.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BarLabel/barLabelClasses.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/animation/useAnimateBarLabel.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BarLabel/BarLabel.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BarLabel/BarLabelItem.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BarLabel/getBarLabel.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BarLabel/BarLabelPlot.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/barClasses.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BarClipPath.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/IndividualBarPlot.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/internals/appendAtKey.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BatchBarPlot/useCreateBarPaths.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BatchBarPlot/BarGroup.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BatchBarPlot/BatchBarPlot.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/shared/useRegisterPointerInteractions.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/useRegisterItemClickHandlers.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BarPlot.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/LineHighlightElement.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/LineHighlightPlot.js","webpack:///./node_modules/@mui/x-charts/esm/ChartDataProvider/ChartDataProvider.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useFocusedItem.js","webpack:///./node_modules/@mui/x-charts/esm/LineChart/FocusedLineMark.js","webpack:///./node_modules/@mui/x-charts/esm/SparkLineChart/SparkLineChart.js","webpack:///./src/lib/components/SparklineChart.react.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsAxis/ChartsAxis.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsWrapper/ChartsWrapper.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useChartRootRef.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsOverlay/ChartsLoadingOverlay.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsOverlay/ChartsNoDataOverlay.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsOverlay/ChartsOverlay.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLabel/labelGradientClasses.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLabel/ChartsLabelGradient.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLegend/continuousColorLegendClasses.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLegend/ContinuousColorLegend.js","webpack:///./node_modules/@mui/x-charts/esm/ChartsLegend/useAxis.js","webpack:///./node_modules/@mui/x-charts-pro/esm/hooks/useHeatmapSeries.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/heatmapClasses.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/HeatmapItem.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","webpack:///./node_modules/@mui/x-charts-pro/node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/HeatmapPlot.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useColorScale.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/seriesConfig/extremums.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/seriesConfig/index.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/seriesConfig/seriesProcessor.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/seriesConfig/getColor.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/seriesConfig/tooltip.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/seriesConfig/tooltipPosition.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/seriesConfig/getSeriesWithDefaultValues.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/HeatmapTooltip/HeatmapTooltipAxesValue.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/HeatmapTooltip/HeatmapTooltipContent.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/Heatmap.plugins.js","webpack:///./node_modules/@mui/x-charts-pro/esm/Heatmap/Heatmap.js","webpack:///./src/lib/components/Heatmap.react.js","webpack:///./node_modules/d3-shape/src/arc.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/animation/useAnimatePieArc.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/PieArc.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/dataTransform/getModifiedArcProperties.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/dataTransform/useTransformData.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/useIsItemFocusedGetter.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/PieArcPlot.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/animation/useAnimatePieArcLabel.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/PieArcLabel.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/PieArcLabelPlot.js","webpack:///./node_modules/@mui/x-charts/esm/hooks/usePieSeries.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/pieClasses.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/PiePlot.js","webpack:///./node_modules/@mui/x-charts/esm/ChartContainer/useChartContainerProps.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/PieChart.plugins.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/FocusedPieArc.js","webpack:///./node_modules/@mui/x-charts/esm/PieChart/PieChart.js","webpack:///./src/lib/components/PieChart.react.js","webpack:///./node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartClosestPoint/useChartClosestPoint.selectors.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/scatterClasses.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/Scatter.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/BatchScatter.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/ScatterPlot.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/ScatterChart.plugins.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/useScatterChartProps.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/FocusedScatterMark.js","webpack:///./node_modules/@mui/x-charts/esm/ScatterChart/ScatterChart.js","webpack:///./src/lib/components/ScatterChart.react.js","webpack:///./src/lib/components/CompositeChart.react.js","webpack:///./src/lib/components/LiveTradingChart.react.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BarChart.plugins.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/useBarChartProps.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/FocusedBar.js","webpack:///./node_modules/@mui/x-charts/esm/BarChart/BarChart.js","webpack:///./node_modules/@mui/x-charts-pro/esm/ChartContainerPro/useChartContainerProProps.js","webpack:///./node_modules/@mui/x-charts-pro/esm/BarChartPro/BarChartPro.plugins.js","webpack:///./node_modules/@mui/x-charts-pro/esm/BarChartPro/BarChartPro.js","webpack:///./src/lib/components/BarChart.react.js","webpack:///./src/lib/components/CandlestickChart.react.js","webpack:///./node_modules/@base-ui/utils/esm/useRefWithInit.js","webpack:///./node_modules/@base-ui/utils/esm/useMergedRefs.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/x-internals/esm/reactMajor/index.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/x-internals/esm/store/useStore.js","webpack:///./node_modules/@mui/material/Alert/alertClasses.js","webpack:///./node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","webpack:///./node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","webpack:///./node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","webpack:///./node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","webpack:///./node_modules/@mui/material/internal/svg-icons/Close.js","webpack:///./node_modules/@mui/material/Alert/Alert.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/useForkRef/useForkRef.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","webpack:///./node_modules/@mui/x-tree-view/esm/RichTreeView/richTreeViewClasses.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/zero-styled/index.js","webpack:///./node_modules/@base-ui/utils/esm/empty.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/TreeViewProvider/TreeViewContext.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/TreeViewProvider/TreeViewStyleContext.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/TreeViewProvider/TreeViewProvider.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/TreeViewProvider/useTreeViewBuildContext.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/x-internals/esm/fastObjectShallowCompare/fastObjectShallowCompare.js","webpack:///./node_modules/@mui/material/Collapse/collapseClasses.js","webpack:///./node_modules/@mui/material/Collapse/Collapse.js","webpack:///./node_modules/@mui/material/FormControl/FormControlContext.js","webpack:///./node_modules/@mui/material/internal/switchBaseClasses.js","webpack:///./node_modules/@mui/material/internal/SwitchBase.js","webpack:///./node_modules/@mui/material/FormControl/useFormControl.js","webpack:///./node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","webpack:///./node_modules/@mui/material/internal/svg-icons/CheckBox.js","webpack:///./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","webpack:///./node_modules/@mui/material/Checkbox/checkboxClasses.js","webpack:///./node_modules/@mui/material/utils/mergeSlotProps.js","webpack:///./node_modules/@mui/material/Checkbox/Checkbox.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/x-internals/esm/store/createSelector.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/items/utils.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/items/selectors.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/expansion/selectors.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/selection/selectors.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/focus/selectors.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/lazyLoading/selectors.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/labelEditing/selectors.js","webpack:///./node_modules/@mui/x-tree-view/esm/hooks/useTreeItemUtils/useTreeItemUtils.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/utils/tree.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/id/selectors.js","webpack:///./node_modules/@mui/x-tree-view/esm/useTreeItem/useTreeItem.js","webpack:///./node_modules/@mui/x-tree-view/esm/TreeItem/treeItemClasses.js","webpack:///./node_modules/@mui/x-tree-view/esm/icons/icons.js","webpack:///./node_modules/@mui/x-tree-view/esm/TreeItemIcon/TreeItemIcon.js","webpack:///./node_modules/@mui/x-tree-view/esm/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js","webpack:///./node_modules/@mui/x-tree-view/esm/TreeItemProvider/TreeItemProvider.js","webpack:///./node_modules/@mui/x-tree-view/esm/TreeItemLabelInput/TreeItemLabelInput.js","webpack:///./node_modules/@mui/x-tree-view/esm/TreeItem/TreeItem.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/components/RichTreeViewItems.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/hooks/useTreeViewRootProps.js","webpack:///./node_modules/@mui/x-tree-view/esm/RichTreeView/useExtractRichTreeViewParameters.js","webpack:///./node_modules/@base-ui/utils/esm/useIsoLayoutEffect.js","webpack:///./node_modules/@base-ui/utils/esm/useOnMount.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/hooks/useTreeViewStore.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/labelEditing/itemPlugin.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/x-internals/esm/store/Store.js","webpack:///./node_modules/@mui/x-tree-view/node_modules/@mui/x-internals/esm/EventManager/EventManager.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/expansion/utils.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/items/TreeViewItemsPlugin.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/MinimalTreeViewStore/TimeoutManager.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/focus/TreeViewFocusPlugin.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/selection/itemPlugin.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/selection/TreeViewSelectionPlugin.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/expansion/TreeViewExpansionPlugin.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/MinimalTreeViewStore/TreeViewItemPluginManager.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/RichTreeViewStore/RichTreeViewStore.utils.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/RichTreeViewStore/RichTreeViewStore.js","webpack:///./node_modules/@mui/x-tree-view/esm/RichTreeView/RichTreeView.js","webpack:///./node_modules/@mui/icons-material/esm/ExpandMore.js","webpack:///./node_modules/@mui/icons-material/esm/ChevronRight.js","webpack:///./node_modules/@mui/icons-material/esm/Folder.js","webpack:///./node_modules/@mui/icons-material/esm/FolderOpen.js","webpack:///./node_modules/@mui/icons-material/esm/InsertDriveFile.js","webpack:///./node_modules/@mui/icons-material/esm/Remove.js","webpack:///./node_modules/@mui/icons-material/esm/Add.js","webpack:///./node_modules/@mui/icons-material/esm/ArrowDropDown.js","webpack:///./node_modules/@mui/icons-material/esm/ArrowRight.js","webpack:///./node_modules/@mui/icons-material/esm/AccountTree.js","webpack:///./node_modules/@mui/icons-material/esm/Description.js","webpack:///./node_modules/@mui/icons-material/esm/Code.js","webpack:///./node_modules/@mui/icons-material/esm/Image.js","webpack:///./node_modules/@mui/icons-material/esm/Settings.js","webpack:///./node_modules/@mui/icons-material/esm/Home.js","webpack:///./node_modules/@mui/icons-material/esm/Star.js","webpack:///./node_modules/@mui/icons-material/esm/Delete.js","webpack:///./node_modules/@mui/icons-material/esm/Edit.js","webpack:///./node_modules/@mui/icons-material/esm/Visibility.js","webpack:///./node_modules/@mui/icons-material/esm/Lock.js","webpack:///./node_modules/@mui/icons-material/esm/ShowChart.js","webpack:///./node_modules/@mui/icons-material/esm/BarChart.js","webpack:///./node_modules/@mui/icons-material/esm/PieChart.js","webpack:///./node_modules/@mui/icons-material/esm/ScatterPlot.js","webpack:///./node_modules/@mui/icons-material/esm/GridOn.js","webpack:///./node_modules/@mui/icons-material/esm/Timeline.js","webpack:///./node_modules/@mui/icons-material/esm/CandlestickChart.js","webpack:///./node_modules/@mui/icons-material/esm/Speed.js","webpack:///./node_modules/@mui/icons-material/esm/Layers.js","webpack:///./node_modules/@mui/icons-material/esm/TrendingUp.js","webpack:///./node_modules/@mui/icons-material/esm/History.js","webpack:///./node_modules/@mui/icons-material/esm/PlayArrow.js","webpack:///./node_modules/@mui/icons-material/esm/Tune.js","webpack:///./node_modules/@mui/icons-material/esm/Brush.js","webpack:///./node_modules/@mui/icons-material/esm/Highlight.js","webpack:///./node_modules/@mui/icons-material/esm/Sync.js","webpack:///./node_modules/@mui/icons-material/esm/ZoomIn.js","webpack:///./node_modules/@mui/icons-material/esm/TouchApp.js","webpack:///./node_modules/@mui/icons-material/esm/TableChart.js","webpack:///./node_modules/@mui/icons-material/esm/StackedBarChart.js","webpack:///./node_modules/@mui/icons-material/esm/Palette.js","webpack:///./node_modules/@mui/icons-material/esm/Rule.js","webpack:///./node_modules/@mui/icons-material/esm/Mouse.js","webpack:///./node_modules/@mui/icons-material/esm/CheckBox.js","webpack:///./node_modules/@mui/icons-material/esm/UnfoldMore.js","webpack:///./node_modules/@mui/icons-material/esm/Block.js","webpack:///./node_modules/@mui/icons-material/esm/Diamond.js","webpack:///./node_modules/@mui/icons-material/esm/AutoGraph.js","webpack:///./node_modules/@mui/icons-material/esm/ViewList.js","webpack:///./node_modules/@mui/icons-material/esm/GpsFixed.js","webpack:///./node_modules/@mui/icons-material/esm/ContentCopy.js","webpack:///./node_modules/@mui/icons-material/esm/PersonAdd.js","webpack:///./node_modules/@mui/icons-material/esm/CheckCircle.js","webpack:///./node_modules/@mui/icons-material/esm/Archive.js","webpack:///./node_modules/@mui/icons-material/esm/MoreVert.js","webpack:///./src/lib/fragments/iconResolver.js","webpack:///./src/lib/components/TreeView.react.js","webpack:///./node_modules/@mui/x-tree-view/esm/SimpleTreeView/simpleTreeViewClasses.js","webpack:///./node_modules/@mui/x-tree-view/esm/SimpleTreeView/useExtractSimpleTreeViewParameters.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/utils/utils.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/jsxItems/itemPlugin.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.js","webpack:///./node_modules/@mui/x-tree-view/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.js","webpack:///./node_modules/@mui/x-tree-view/esm/SimpleTreeView/SimpleTreeView.js","webpack:///./src/lib/components/SimpleTreeView.react.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/encoding/base64.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/encoding/md5.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/utils/licenseStatus.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/utils/plan.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/utils/licenseModel.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/verifyLicense/verifyLicense.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/utils/licenseInfo.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/utils/licenseErrorMessageUtils.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/Unstable_LicenseInfoProvider/MuiLicenseInfoContext.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/useLicenseVerifier/useLicenseVerifier.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-internals/esm/fastObjectShallowCompare/fastObjectShallowCompare.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-license/esm/Watermark/Watermark.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-internals/esm/fastMemo/fastMemo.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/RichTreeViewPro/richTreeViewProClasses.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/RichTreeViewPro/useExtractRichTreeViewProParameters.js","webpack:///./node_modules/@mui/x-tree-view/esm/utils/cache.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/internals/plugins/lazyLoading/utils.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/internals/plugins/lazyLoading/TreeViewLazyLoadingPlugin.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-internals/esm/store/createSelector.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/internals/plugins/itemsReordering/selectors.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/internals/plugins/itemsReordering/utils.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-internals/esm/store/useStore.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/x-internals/esm/reactMajor/index.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/internals/plugins/itemsReordering/itemPlugin.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/internals/plugins/itemsReordering/TreeViewItemsReorderingPlugin.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/internals/RichTreeViewProStore/RichTreeViewProStore.utils.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/internals/RichTreeViewProStore/RichTreeViewProStore.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/RichTreeViewPro/RichTreeViewPro.js","webpack:///./node_modules/@mui/x-tree-view-pro/esm/internals/zero-styled/index.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/useForkRef/useForkRef.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","webpack:///./node_modules/@mui/x-tree-view-pro/node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","webpack:///./node_modules/@mui/material/node_modules/@mui/private-theming/useTheme/ThemeContext.js","webpack:///./node_modules/@mui/material/node_modules/@mui/private-theming/useTheme/useTheme.js","webpack:///./node_modules/@mui/material/node_modules/@mui/private-theming/ThemeProvider/nested.js","webpack:///./node_modules/@mui/material/node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","webpack:///./node_modules/@mui/material/node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/ThemeProvider/useLayerOrder.js","webpack:///./node_modules/@mui/material/styles/ThemeProviderNoVars.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/InitColorSchemeScript/InitColorSchemeScript.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/cssVars/localStorageManager.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/cssVars/useCurrentColorScheme.js","webpack:///./node_modules/@mui/material/InitColorSchemeScript/InitColorSchemeScript.js","webpack:///./node_modules/@mui/material/styles/ThemeProviderWithVars.js","webpack:///./node_modules/@mui/material/node_modules/@mui/system/esm/cssVars/createCssVarsProvider.js","webpack:///./node_modules/@mui/material/styles/ThemeProvider.js","webpack:///./node_modules/@mui/utils/esm/visuallyHidden/visuallyHidden.js","webpack:///./node_modules/@mui/material/Slider/useSlider.js","webpack:///./node_modules/@mui/material/utils/areArraysEqual.js","webpack:///./node_modules/@mui/material/utils/isHostComponent.js","webpack:///./node_modules/@mui/material/Slider/sliderClasses.js","webpack:///./node_modules/@mui/material/Slider/Slider.js","webpack:///./node_modules/@mui/material/Slider/SliderValueLabel.js","webpack:///./node_modules/@mui/material/utils/shouldSpreadAdditionalProps.js","webpack:///./node_modules/@mui/material/Fade/Fade.js","webpack:///./node_modules/@mui/material/Backdrop/backdropClasses.js","webpack:///./node_modules/@mui/material/Backdrop/Backdrop.js","webpack:///./node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js","webpack:///./node_modules/@mui/material/Modal/ModalManager.js","webpack:///./node_modules/@mui/material/Modal/useModal.js","webpack:///./node_modules/@mui/material/Modal/modalClasses.js","webpack:///./node_modules/@mui/material/Modal/Modal.js","webpack:///./node_modules/@mui/material/Popover/popoverClasses.js","webpack:///./node_modules/@mui/material/Popover/Popover.js","webpack:///./node_modules/@mui/utils/esm/debounce/debounce.js","webpack:///./node_modules/@mui/material/Menu/menuClasses.js","webpack:///./node_modules/@mui/material/Menu/Menu.js","webpack:///./src/lib/components/TreeViewPro.react.js","webpack:///./node_modules/@mui/x-date-pickers/esm/LocalizationProvider/LocalizationProvider.js","webpack:///./node_modules/@mui/x-date-pickers/esm/AdapterDayjs/AdapterDayjs.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useId/useId.js","webpack:///./node_modules/@mui/x-date-pickers/esm/locales/utils/getPickersLocalization.js","webpack:///./node_modules/@mui/x-date-pickers/esm/locales/enUS.js","webpack:///./node_modules/@mui/x-date-pickers/esm/hooks/usePickerAdapter.js","webpack:///./node_modules/@mui/x-date-pickers/esm/hooks/usePickerTranslations.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useForkRef/useForkRef.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","webpack:///./node_modules/@mui/x-date-pickers/esm/icons/index.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/components/PickerProvider.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/hooks/usePickerPrivateContext.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/utils/time-utils.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","webpack:///./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useControlled/useControlled.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/utils/createStepNavigation.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/constants/dimensions.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/components/PickerViewRoot/PickerViewRoot.js","webpack:///./node_modules/@mui/x-date-pickers/esm/TimeClock/timeClockClasses.js","webpack:///./node_modules/@mui/x-date-pickers/esm/TimeClock/shared.js","webpack:///./node_modules/@mui/x-date-pickers/esm/TimeClock/clockPointerClasses.js","webpack:///./node_modules/@mui/x-date-pickers/esm/TimeClock/ClockPointer.js","webpack:///./node_modules/@mui/x-date-pickers/esm/TimeClock/clockClasses.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/utils/date-utils.js","webpack:///./node_modules/@mui/x-date-pickers/esm/TimeClock/Clock.js","webpack:///./node_modules/@mui/x-date-pickers/esm/TimeClock/clockNumberClasses.js","webpack:///./node_modules/@mui/x-date-pickers/esm/TimeClock/ClockNumber.js","webpack:///./node_modules/@mui/x-date-pickers/esm/TimeClock/ClockNumbers.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/utils/getDefaultReferenceDate.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/utils/valueManagers.js","webpack:///./node_modules/@mui/x-date-pickers/esm/TimeClock/TimeClock.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/hooks/useControlledValue.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/hooks/useClockReferenceDate.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/hooks/useUtils.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/hooks/useViews.js","webpack:///./node_modules/@mui/x-date-pickers/esm/internals/hooks/date-helpers-hooks.js","webpack:///./src/lib/components/TimeClock.react.js"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"dash_mui_charts:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"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:!0,ref:!0,__self:!0,__source:!0};\nfunction 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}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","module.exports = window[\"React\"];","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';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?\nSymbol.for(\"react.suspense_list\"):60120,r=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;\nfunction 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 r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.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===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1) { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".dash_mui_charts.min.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var getCurrentScript = function() {\n var script = document.currentScript;\n if (!script) {\n /* Shim for IE11 and below */\n /* Do not take into account async scripts and inline scripts */\n\n var doc_scripts = document.getElementsByTagName('script');\n var scripts = [];\n\n for (var i = 0; i < doc_scripts.length; i++) {\n scripts.push(doc_scripts[i]);\n }\n\n scripts = scripts.filter(function(s) { return !s.async && !s.text && !s.textContent; });\n script = scripts.slice(-1)[0];\n }\n\n return script;\n};\n\nvar isLocalScript = function(script) {\n return /\\/_dash-component-suites\\//.test(script.src);\n};\n\nObject.defineProperty(__webpack_require__, 'p', {\n get: (function () {\n var script = getCurrentScript();\n\n var url = script.src.split('/').slice(0, -1).join('/') + '/';\n\n return function() {\n return url;\n };\n })()\n});\n\nif (typeof jsonpScriptSrc !== 'undefined') {\n var __jsonpScriptSrc__ = jsonpScriptSrc;\n jsonpScriptSrc = function(chunkId) {\n var script = getCurrentScript();\n var isLocal = isLocalScript(script);\n\n var src = __jsonpScriptSrc__(chunkId);\n\n if(!isLocal) {\n return src;\n }\n\n var srcFragments = src.split('/');\n var fileFragments = srcFragments.slice(-1)[0].split('.');\n\n fileFragments.splice(1, 0, \"v1_4_0m1784923777\");\n srcFragments.splice(-1, 1, fileFragments.join('.'))\n\n return srcFragments.join('/');\n };\n}\n","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t57: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdash_mui_charts\"] = self[\"webpackChunkdash_mui_charts\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"PropTypes\"];","/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nexport default typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();","import { ponyfillGlobal } from '@mui/utils';\n\n/**\n * @ignore - do not document.\n */\n\n// Store the license information in a global, so it can be shared\n// when module duplication occurs. The duplication of the modules can happen\n// if using multiple version of MUI X at the same time of the bundler\n// decide to duplicate to improve the size of the chunks.\n// eslint-disable-next-line no-underscore-dangle\nponyfillGlobal.__MUI_LICENSE_INFO__ = ponyfillGlobal.__MUI_LICENSE_INFO__ || {\n key: undefined\n};\nexport class LicenseInfo {\n static getLicenseInfo() {\n // eslint-disable-next-line no-underscore-dangle\n return ponyfillGlobal.__MUI_LICENSE_INFO__;\n }\n static getLicenseKey() {\n return LicenseInfo.getLicenseInfo().key;\n }\n static setLicenseKey(key) {\n const licenseInfo = LicenseInfo.getLicenseInfo();\n licenseInfo.key = key;\n }\n}","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","const is = Object.is;\n\n/**\n * Fast shallow compare for objects.\n * @returns true if objects are equal.\n */\nexport function fastObjectShallowCompare(a, b) {\n if (a === b) {\n return true;\n }\n if (!(a instanceof Object) || !(b instanceof Object)) {\n return false;\n }\n let aLength = 0;\n let bLength = 0;\n\n /* eslint-disable guard-for-in */\n for (const key in a) {\n aLength += 1;\n if (!is(a[key], b[key])) {\n return false;\n }\n if (!(key in b)) {\n return false;\n }\n }\n\n /* eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unused-vars */\n for (const _ in b) {\n bLength += 1;\n }\n return aLength === bLength;\n}","/**\n * @mui/x-telemetry v8.20.0\n *\n * @license SEE LICENSE IN LICENSE\n * This source code is licensed under the SEE LICENSE IN LICENSE license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport muiXTelemetryEvents from \"./runtime/events.js\";\nimport sendMuiXTelemetryEventOriginal from \"./runtime/sender.js\";\nimport muiXTelemetrySettingsOriginal from \"./runtime/settings.js\";\nconst noop = () => {};\n\n// To cut unused imports in production as early as possible\nconst sendMuiXTelemetryEvent = process.env.NODE_ENV === 'production' ? noop : sendMuiXTelemetryEventOriginal;\n\n// To cut unused imports in production as early as possible\nconst muiXTelemetrySettings = process.env.NODE_ENV === 'production' ? {\n enableDebug: noop,\n enableTelemetry: noop,\n disableTelemetry: noop\n} : muiXTelemetrySettingsOriginal;\nexport { muiXTelemetryEvents, sendMuiXTelemetryEvent, muiXTelemetrySettings };","const noop = () => null;\nconst muiXTelemetryEvents = {\n licenseVerification: process.env.NODE_ENV === 'production' ? noop : (context, payload) => ({\n eventName: 'licenseVerification',\n payload,\n context\n })\n};\nexport default muiXTelemetryEvents;","/* eslint-disable */\nconst _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nfunction utf8Encode(str) {\n for (let n = 0; n < str.length; n++) {\n const c = str.charCodeAt(n);\n if (c >= 128) {\n throw new Error('ASCII only support');\n }\n }\n return str;\n}\nexport const base64Decode = input => {\n let output = '';\n let chr1, chr2, chr3;\n let enc1, enc2, enc3, enc4;\n let i = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n while (i < input.length) {\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n output = output + String.fromCharCode(chr1);\n if (enc3 != 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 != 64) {\n output = output + String.fromCharCode(chr3);\n }\n }\n return output;\n};\nexport const base64Encode = input => {\n let output = '';\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0;\n input = utf8Encode(input);\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);\n }\n return output;\n};","/* eslint-disable */\n// See \"precomputation\" in notes\nconst k = [];\nlet i = 0;\nfor (; i < 64;) {\n k[i] = 0 | Math.sin(++i % Math.PI) * 4294967296;\n // k[i] = 0 | (Math.abs(Math.sin(++i)) * 4294967296);\n}\nexport function md5(s) {\n const words = [];\n let b,\n c,\n d,\n j = unescape(encodeURI(s)) + '\\x80',\n a = j.length;\n const h = [b = 0x67452301, c = 0xefcdab89, ~b, ~c];\n s = --a / 4 + 2 | 15;\n\n // See \"Length bits\" in notes\n words[--s] = a * 8;\n for (; ~a;) {\n // a !== -1\n words[a >> 2] |= j.charCodeAt(a) << 8 * a--;\n }\n for (i = j = 0; i < s; i += 16) {\n a = h;\n for (; j < 64; a = [d = a[3], b + ((d = a[0] + [b & c | ~b & d, d & b | ~d & c, b ^ c ^ d, c ^ (b | ~d)][a = j >> 4] + k[j] + ~~words[i | [j, 5 * j + 1, 3 * j + 5, 7 * j][a] & 15]) << (a = [7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21][4 * a + j++ % 4]) | d >>> -a), b, c]) {\n b = a[1] | 0;\n c = a[2];\n }\n\n // See \"Integer safety\" in notes\n for (j = 4; j;) h[--j] += a[j];\n\n // j === 0\n }\n for (s = ''; j < 32;) {\n s += (h[j >> 3] >> (1 ^ j++) * 4 & 15).toString(16);\n // s += ((h[j >> 3] >> (4 ^ 4 * j++)) & 15).toString(16);\n }\n return s;\n}","// eslint-disable-next-line @typescript-eslint/naming-convention\nexport let LICENSE_STATUS = /*#__PURE__*/function (LICENSE_STATUS) {\n LICENSE_STATUS[\"NotFound\"] = \"NotFound\";\n LICENSE_STATUS[\"Invalid\"] = \"Invalid\";\n LICENSE_STATUS[\"ExpiredAnnual\"] = \"ExpiredAnnual\";\n LICENSE_STATUS[\"ExpiredAnnualGrace\"] = \"ExpiredAnnualGrace\";\n LICENSE_STATUS[\"ExpiredVersion\"] = \"ExpiredVersion\";\n LICENSE_STATUS[\"Valid\"] = \"Valid\";\n LICENSE_STATUS[\"OutOfScope\"] = \"OutOfScope\";\n LICENSE_STATUS[\"NotAvailableInInitialProPlan\"] = \"NotAvailableInInitialProPlan\";\n return LICENSE_STATUS;\n}({});","export const PLAN_SCOPES = ['pro', 'premium'];\nexport const PLAN_VERSIONS = ['initial', 'Q3-2024'];","export const LICENSE_MODELS = [\n/**\n * A license is outdated if the current version of the software was released after the expiry date of the license.\n * But the license can be used indefinitely with an older version of the software.\n */\n'perpetual',\n/**\n * On development, a license is outdated if the expiry date has been reached\n * On production, a license is outdated if the current version of the software was released after the expiry date of the license (see \"perpetual\")\n */\n'annual',\n/**\n * Legacy. The previous name for 'annual'.\n * Can be removed once old license keys generated with 'subscription' are no longer supported.\n * To support for a while. We need more years of backward support and we sell multi year licenses.\n */\n'subscription'];","import { base64Decode, base64Encode } from \"../encoding/base64.js\";\nimport { md5 } from \"../encoding/md5.js\";\nimport { LICENSE_STATUS } from \"../utils/licenseStatus.js\";\nimport { PLAN_SCOPES } from \"../utils/plan.js\";\nimport { LICENSE_MODELS } from \"../utils/licenseModel.js\";\nconst getDefaultReleaseDate = () => {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return today;\n};\nexport function generateReleaseInfo(releaseDate = getDefaultReleaseDate()) {\n return base64Encode(releaseDate.getTime().toString());\n}\nfunction isPlanScopeSufficient(packageName, planScope) {\n let acceptedScopes;\n if (packageName.includes('-pro')) {\n acceptedScopes = ['pro', 'premium'];\n } else if (packageName.includes('-premium')) {\n acceptedScopes = ['premium'];\n } else {\n acceptedScopes = [];\n }\n return acceptedScopes.includes(planScope);\n}\nconst expiryReg = /^.*EXPIRY=([0-9]+),.*$/;\nconst orderReg = /^.*ORDER:([0-9]+),.*$/;\nconst PRO_PACKAGES_AVAILABLE_IN_INITIAL_PRO_PLAN = ['x-data-grid-pro', 'x-date-pickers-pro'];\n\n/**\n * Format: ORDER:${orderNumber},EXPIRY=${expiryTimestamp},KEYVERSION=1\n */\nfunction decodeLicenseVersion1(license) {\n let expiryTimestamp;\n let orderId;\n try {\n expiryTimestamp = parseInt(license.match(expiryReg)[1], 10);\n if (!expiryTimestamp || Number.isNaN(expiryTimestamp)) {\n expiryTimestamp = null;\n }\n orderId = parseInt(license.match(orderReg)[1], 10);\n if (!orderId || Number.isNaN(orderId)) {\n orderId = null;\n }\n } catch (err) {\n expiryTimestamp = null;\n orderId = null;\n }\n return {\n version: 1,\n licenseModel: 'perpetual',\n planScope: 'pro',\n planVersion: 'initial',\n expiryTimestamp,\n expiryDate: expiryTimestamp ? new Date(expiryTimestamp) : null,\n orderId\n };\n}\n\n/**\n * Format: O=${orderNumber},E=${expiryTimestamp},S=${planScope},LM=${licenseModel},PV=${planVersion},KV=2`;\n */\nfunction decodeLicenseVersion2(license) {\n const licenseInfo = {\n version: 2,\n licenseModel: null,\n planScope: null,\n planVersion: 'initial',\n expiryTimestamp: null,\n expiryDate: null,\n orderId: null\n };\n license.split(',').map(token => token.split('=')).filter(el => el.length === 2).forEach(([key, value]) => {\n if (key === 'S') {\n licenseInfo.planScope = value;\n }\n if (key === 'LM') {\n licenseInfo.licenseModel = value;\n }\n if (key === 'E') {\n const expiryTimestamp = parseInt(value, 10);\n if (expiryTimestamp && !Number.isNaN(expiryTimestamp)) {\n licenseInfo.expiryTimestamp = expiryTimestamp;\n licenseInfo.expiryDate = new Date(expiryTimestamp);\n }\n }\n if (key === 'PV') {\n licenseInfo.planVersion = value;\n }\n if (key === 'O') {\n const orderNum = parseInt(value, 10);\n if (orderNum && !Number.isNaN(orderNum)) {\n licenseInfo.orderId = orderNum;\n }\n }\n });\n return licenseInfo;\n}\n\n/**\n * Decode the license based on its key version and return a version-agnostic `MuiLicense` object.\n */\nfunction decodeLicense(encodedLicense) {\n const license = base64Decode(encodedLicense);\n if (license.includes('KEYVERSION=1')) {\n return decodeLicenseVersion1(license);\n }\n if (license.includes('KV=2')) {\n return decodeLicenseVersion2(license);\n }\n return null;\n}\nexport function verifyLicense({\n releaseInfo,\n licenseKey,\n packageName\n}) {\n // Gets replaced at build time\n // @ts-ignore\n if (false) {\n return {\n status: LICENSE_STATUS.Valid\n };\n }\n if (!releaseInfo) {\n throw new Error('MUI X: The release information is missing. Not able to validate license.');\n }\n if (!licenseKey) {\n return {\n status: LICENSE_STATUS.NotFound\n };\n }\n const hash = licenseKey.substr(0, 32);\n const encoded = licenseKey.substr(32);\n if (hash !== md5(encoded)) {\n return {\n status: LICENSE_STATUS.Invalid\n };\n }\n const license = decodeLicense(encoded);\n if (license == null) {\n console.error('MUI X: Error checking license. Key version not found!');\n return {\n status: LICENSE_STATUS.Invalid\n };\n }\n if (license.licenseModel == null || !LICENSE_MODELS.includes(license.licenseModel)) {\n console.error('MUI X: Error checking license. License model not found or invalid!');\n return {\n status: LICENSE_STATUS.Invalid\n };\n }\n if (license.expiryTimestamp == null) {\n console.error('MUI X: Error checking license. Expiry timestamp not found or invalid!');\n return {\n status: LICENSE_STATUS.Invalid\n };\n }\n if (license.licenseModel === 'perpetual' || process.env.NODE_ENV === 'production') {\n const pkgTimestamp = parseInt(base64Decode(releaseInfo), 10);\n if (Number.isNaN(pkgTimestamp)) {\n throw new Error('MUI X: The release information is invalid. Not able to validate license.');\n }\n if (license.expiryTimestamp < pkgTimestamp) {\n return {\n status: LICENSE_STATUS.ExpiredVersion\n };\n }\n } else if (license.licenseModel === 'subscription' || license.licenseModel === 'annual') {\n if (new Date().getTime() > license.expiryTimestamp) {\n if (\n // 30 days grace\n new Date().getTime() < license.expiryTimestamp + 1000 * 3600 * 24 * 30 || process.env.NODE_ENV !== 'development') {\n return {\n status: LICENSE_STATUS.ExpiredAnnualGrace,\n meta: {\n expiryTimestamp: license.expiryTimestamp,\n licenseKey\n }\n };\n }\n return {\n status: LICENSE_STATUS.ExpiredAnnual,\n meta: {\n expiryTimestamp: license.expiryTimestamp,\n licenseKey\n }\n };\n }\n }\n if (license.planScope == null || !PLAN_SCOPES.includes(license.planScope)) {\n console.error('MUI X: Error checking license. planScope not found or invalid!');\n return {\n status: LICENSE_STATUS.Invalid\n };\n }\n if (!isPlanScopeSufficient(packageName, license.planScope)) {\n return {\n status: LICENSE_STATUS.OutOfScope\n };\n }\n\n // 'charts-pro' or 'tree-view-pro' can only be used with a newer Pro license\n if (license.planVersion === 'initial' && license.planScope === 'pro' && !PRO_PACKAGES_AVAILABLE_IN_INITIAL_PRO_PLAN.includes(packageName)) {\n return {\n status: LICENSE_STATUS.NotAvailableInInitialProPlan\n };\n }\n return {\n status: LICENSE_STATUS.Valid\n };\n}","/**\n * @ignore - do not document.\n */\n\n// Store the license information in a global, so it can be shared\n// when module duplication occurs. The duplication of the modules can happen\n// if using multiple version of MUI X at the same time of the bundler\n// decide to duplicate to improve the size of the chunks.\n// eslint-disable-next-line no-underscore-dangle\nglobalThis.__MUI_LICENSE_INFO__ = globalThis.__MUI_LICENSE_INFO__ || {\n key: undefined\n};\nexport class LicenseInfo {\n static getLicenseInfo() {\n // eslint-disable-next-line no-underscore-dangle\n return globalThis.__MUI_LICENSE_INFO__;\n }\n static getLicenseKey() {\n return LicenseInfo.getLicenseInfo().key;\n }\n static setLicenseKey(key) {\n const licenseInfo = LicenseInfo.getLicenseInfo();\n licenseInfo.key = key;\n }\n}","/**\n * Workaround for the codesadbox preview error.\n *\n * Once these issues are resolved\n * https://github.com/mui/mui-x/issues/15765\n * https://github.com/codesandbox/codesandbox-client/issues/8673\n *\n * `showError` can simply use `console.error` again.\n */\nconst isCodeSandbox = typeof window !== 'undefined' && window.location.hostname.endsWith('.csb.app');\nfunction showError(message) {\n // eslint-disable-next-line no-console\n const logger = isCodeSandbox ? console.log : console.error;\n logger(['*************************************************************', '', ...message, '', '*************************************************************'].join('\\n'));\n}\nexport function showInvalidLicenseKeyError() {\n showError(['MUI X: Invalid license key.', '', \"Your MUI X license key format isn't valid. It could be because the license key is missing a character or has a typo.\", '', 'To solve the issue, you need to double check that `setLicenseKey()` is called with the right argument', 'Please check the license key installation https://mui.com/r/x-license-key-installation.']);\n}\nexport function showLicenseKeyPlanMismatchError({\n packageName\n}) {\n const rootPackageName = packageName.replace(/-(premium|pro)$/, '');\n showError(['MUI X: License key plan mismatch.', '', 'Your use of MUI X is not compatible with the plan of your license key. The feature you are trying to use is not included in the plan of your license key. This happens if you try to use Data Grid Premium with a license key for the Pro plan.', '', 'To solve the issue, you can upgrade your plan from Pro to Premium at https://mui.com/r/x-get-license?scope=premium.', `Or if you didn't intend to use Premium features, you can replace the import of \\`${rootPackageName}-premium\\` with \\`${rootPackageName}-pro\\`.`]);\n}\nexport function showNotAvailableInInitialProPlanError() {\n showError(['MUI X: Component not included in your license.', '', 'The component you are trying to use is not included in the Pro Plan you purchased.', '', 'Your license is from an old version of the Pro Plan that is only compatible with the `@mui/x-data-grid-pro` and `@mui/x-date-pickers-pro` commercial packages.', '', 'To start using another Pro package, please consider reaching to our sales team to upgrade your license or visit https://mui.com/r/x-get-license to get a new license key.']);\n}\nexport function showMissingLicenseKeyError({\n plan,\n packageName\n}) {\n showError(['MUI X: Missing license key.', '', `The license key is missing. You might not be allowed to use \\`${packageName}\\` which is part of MUI X ${plan}.`, '', 'To solve the issue, you can check the free trial conditions: https://mui.com/r/x-license-trial.', 'If you are eligible no actions are required. If you are not eligible to the free trial, you need to purchase a license https://mui.com/r/x-get-license or stop using the software immediately.']);\n}\nexport function showExpiredPackageVersionError({\n packageName\n}) {\n showError(['MUI X: Expired package version.', '', `You have installed a version of \\`${packageName}\\` that is outside of the maintenance plan of your license key. By default, commercial licenses provide access to new versions released during the first year after the purchase.`, '', 'To solve the issue, you can renew your license https://mui.com/r/x-get-license or install an older version of the npm package that is compatible with your license key.']);\n}\nexport function showExpiredAnnualGraceLicenseKeyError({\n plan,\n licenseKey,\n expiryTimestamp\n}) {\n showError(['MUI X: Expired license key.', '', `Your annual license key to use MUI X ${plan} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${plan} component (more details in https://mui.com/r/x-license-annual).`, '', 'To solve the problem you can either:', '', '- Renew your license https://mui.com/r/x-get-license and use the new key', `- Stop making changes to code depending directly or indirectly on MUI X ${plan}'s APIs`, '', 'Note that your license is perpetual in production environments with any version released before your license term ends.', '', `- License key expiry timestamp: ${new Date(expiryTimestamp)}`, `- Installed license key: ${licenseKey}`, '']);\n}\nexport function showExpiredAnnualLicenseKeyError({\n plan,\n licenseKey,\n expiryTimestamp\n}) {\n throw new Error(['MUI X: Expired license key.', '', `Your annual license key to use MUI X ${plan} in non-production environments has expired. If you are seeing this development console message, you might be close to breach the license terms by making direct or indirect changes to the frontend of an app that render a MUI X ${plan} component (more details in https://mui.com/r/x-license-annual).`, '', 'To solve the problem you can either:', '', '- Renew your license https://mui.com/r/x-get-license and use the new key', `- Stop making changes to code depending directly or indirectly on MUI X ${plan}'s APIs`, '', 'Note that your license is perpetual in production environments with any version released before your license term ends.', '', `- License key expiry timestamp: ${new Date(expiryTimestamp)}`, `- Installed license key: ${licenseKey}`, ''].join('\\n'));\n}","'use client';\n\nimport * as React from 'react';\nconst MuiLicenseInfoContext = /*#__PURE__*/React.createContext({\n key: undefined\n});\nif (process.env.NODE_ENV !== \"production\") MuiLicenseInfoContext.displayName = \"MuiLicenseInfoContext\";\nexport default MuiLicenseInfoContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { sendMuiXTelemetryEvent, muiXTelemetryEvents } from '@mui/x-telemetry';\nimport { verifyLicense } from \"../verifyLicense/verifyLicense.js\";\nimport { LicenseInfo } from \"../utils/licenseInfo.js\";\nimport { showExpiredAnnualGraceLicenseKeyError, showExpiredAnnualLicenseKeyError, showInvalidLicenseKeyError, showMissingLicenseKeyError, showLicenseKeyPlanMismatchError, showExpiredPackageVersionError, showNotAvailableInInitialProPlanError } from \"../utils/licenseErrorMessageUtils.js\";\nimport { LICENSE_STATUS } from \"../utils/licenseStatus.js\";\nimport MuiLicenseInfoContext from \"../Unstable_LicenseInfoProvider/MuiLicenseInfoContext.js\";\nexport const sharedLicenseStatuses = {};\n\n/**\n * Clears the license status cache for all packages.\n * This should not be used in production code, but can be useful for testing purposes.\n */\nexport function clearLicenseStatusCache() {\n for (const packageName in sharedLicenseStatuses) {\n if (Object.prototype.hasOwnProperty.call(sharedLicenseStatuses, packageName)) {\n delete sharedLicenseStatuses[packageName];\n }\n }\n}\nexport function useLicenseVerifier(packageName, releaseInfo) {\n const {\n key: contextKey\n } = React.useContext(MuiLicenseInfoContext);\n return React.useMemo(() => {\n const licenseKey = contextKey ?? LicenseInfo.getLicenseKey();\n\n // Cache the response to not trigger the error twice.\n if (sharedLicenseStatuses[packageName] && sharedLicenseStatuses[packageName].key === licenseKey) {\n return sharedLicenseStatuses[packageName].licenseVerifier;\n }\n const plan = packageName.includes('premium') ? 'Premium' : 'Pro';\n const licenseStatus = verifyLicense({\n releaseInfo,\n licenseKey,\n packageName\n });\n const fullPackageName = `@mui/${packageName}`;\n sendMuiXTelemetryEvent(muiXTelemetryEvents.licenseVerification({\n licenseKey\n }, {\n packageName,\n packageReleaseInfo: releaseInfo,\n licenseStatus: licenseStatus?.status\n }));\n if (licenseStatus.status === LICENSE_STATUS.Valid) {\n // Skip\n } else if (licenseStatus.status === LICENSE_STATUS.Invalid) {\n showInvalidLicenseKeyError();\n } else if (licenseStatus.status === LICENSE_STATUS.NotAvailableInInitialProPlan) {\n showNotAvailableInInitialProPlanError();\n } else if (licenseStatus.status === LICENSE_STATUS.OutOfScope) {\n showLicenseKeyPlanMismatchError({\n packageName: fullPackageName\n });\n } else if (licenseStatus.status === LICENSE_STATUS.NotFound) {\n showMissingLicenseKeyError({\n plan,\n packageName: fullPackageName\n });\n } else if (licenseStatus.status === LICENSE_STATUS.ExpiredAnnualGrace) {\n showExpiredAnnualGraceLicenseKeyError(_extends({\n plan\n }, licenseStatus.meta));\n } else if (licenseStatus.status === LICENSE_STATUS.ExpiredAnnual) {\n showExpiredAnnualLicenseKeyError(_extends({\n plan\n }, licenseStatus.meta));\n } else if (licenseStatus.status === LICENSE_STATUS.ExpiredVersion) {\n showExpiredPackageVersionError({\n packageName: fullPackageName\n });\n } else if (process.env.NODE_ENV !== 'production') {\n throw new Error('missing status handler');\n }\n sharedLicenseStatuses[packageName] = {\n key: licenseKey,\n licenseVerifier: licenseStatus\n };\n return licenseStatus;\n }, [packageName, releaseInfo, contextKey]);\n}","import { fastMemo } from '@mui/x-internals/fastMemo';\nimport { useLicenseVerifier } from \"../useLicenseVerifier/index.js\";\nimport { LICENSE_STATUS } from \"../utils/licenseStatus.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getLicenseErrorMessage(licenseStatus) {\n switch (licenseStatus) {\n case LICENSE_STATUS.ExpiredAnnualGrace:\n case LICENSE_STATUS.ExpiredAnnual:\n return 'MUI X Expired license key';\n case LICENSE_STATUS.ExpiredVersion:\n return 'MUI X Expired package version';\n case LICENSE_STATUS.Invalid:\n return 'MUI X Invalid license key';\n case LICENSE_STATUS.OutOfScope:\n return 'MUI X License key plan mismatch';\n case LICENSE_STATUS.NotAvailableInInitialProPlan:\n return 'MUI X Product not covered by plan';\n case LICENSE_STATUS.NotFound:\n return 'MUI X Missing license key';\n default:\n throw new Error('Unhandled MUI X license status.');\n }\n}\nfunction Watermark(props) {\n const {\n packageName,\n releaseInfo\n } = props;\n const licenseStatus = useLicenseVerifier(packageName, releaseInfo);\n if (licenseStatus.status === LICENSE_STATUS.Valid) {\n return null;\n }\n return /*#__PURE__*/_jsx(\"div\", {\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n color: '#8282829e',\n zIndex: 100000,\n width: '100%',\n textAlign: 'center',\n bottom: '50%',\n right: 0,\n letterSpacing: 5,\n fontSize: 24\n },\n children: getLicenseErrorMessage(licenseStatus.status)\n });\n}\nconst MemoizedWatermark = fastMemo(Watermark);\nexport { MemoizedWatermark as Watermark };","import * as React from 'react';\nimport { fastObjectShallowCompare } from \"../fastObjectShallowCompare/index.js\";\nexport function fastMemo(component) {\n return /*#__PURE__*/React.memo(component, fastObjectShallowCompare);\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// See https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379 for why\nconst safeReact = {\n ...React\n};\nconst maybeReactUseId = safeReact.useId;\n\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n // React.useId() is only available from React 17.0.0.\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride ?? reactId;\n }\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","import * as React from 'react';\nexport default parseInt(React.version, 10);","import * as React from 'react';\n/* We need to import the shim because React 17 does not support the `useSyncExternalStore` API.\n * More info: https://github.com/mui/mui-x/issues/18303#issuecomment-2958392341 */\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport reactMajor from \"../reactMajor/index.js\";\n/* Some tests fail in R18 with the raw useSyncExternalStore. It may be possible to make it work\n * but for now we only enable it for R19+. */\nconst canUseRawUseSyncExternalStore = reactMajor >= 19;\nconst useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreR19 : useStoreLegacy;\nexport function useStore(store, selector, a1, a2, a3) {\n return useStoreImplementation(store, selector, a1, a2, a3);\n}\nfunction useStoreR19(store, selector, a1, a2, a3) {\n const getSelection = React.useCallback(() => selector(store.getSnapshot(), a1, a2, a3), [store, selector, a1, a2, a3]);\n return useSyncExternalStore(store.subscribe, getSelection, getSelection);\n}\nfunction useStoreLegacy(store, selector, a1, a2, a3) {\n return useSyncExternalStoreWithSelector(store.subscribe, store.getSnapshot, store.getSnapshot, state => selector(state, a1, a2, a3));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useStore } from \"./useStore.js\";\n/* eslint-disable no-cond-assign */\n\nexport class Store {\n // HACK: `any` fixes adding listeners that accept partial state.\n\n // Internal state to handle recursive `setState()` calls\n\n static create(state) {\n return new Store(state);\n }\n constructor(state) {\n this.state = state;\n this.listeners = new Set();\n this.updateTick = 0;\n }\n subscribe = fn => {\n this.listeners.add(fn);\n return () => {\n this.listeners.delete(fn);\n };\n };\n\n /**\n * Returns the current state snapshot. Meant for usage with `useSyncExternalStore`.\n * If you want to access the state, use the `state` property instead.\n */\n getSnapshot = () => {\n return this.state;\n };\n setState(newState) {\n this.state = newState;\n this.updateTick += 1;\n const currentTick = this.updateTick;\n const it = this.listeners.values();\n let result;\n while (result = it.next(), !result.done) {\n if (currentTick !== this.updateTick) {\n // If the tick has changed, a recursive `setState` call has been made,\n // and it has already notified all listeners.\n return;\n }\n const listener = result.value;\n listener(newState);\n }\n }\n update(changes) {\n for (const key in changes) {\n if (!Object.is(this.state[key], changes[key])) {\n this.setState(_extends({}, this.state, changes));\n return;\n }\n }\n }\n set(key, value) {\n if (!Object.is(this.state[key], value)) {\n this.setState(_extends({}, this.state, {\n [key]: value\n }));\n }\n }\n use = (() => (selector, a1, a2, a3) => {\n return useStore(this, selector, a1, a2, a3);\n })();\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport const useChartAnimation = ({\n params,\n store\n}) => {\n React.useEffect(() => {\n store.set('animation', _extends({}, store.state.animation, {\n skip: params.skipAnimation\n }));\n }, [store, params.skipAnimation]);\n const disableAnimation = React.useCallback(() => {\n let disableCalled = false;\n store.set('animation', _extends({}, store.state.animation, {\n skipAnimationRequests: store.state.animation.skipAnimationRequests + 1\n }));\n return () => {\n if (disableCalled) {\n return;\n }\n disableCalled = true;\n store.set('animation', _extends({}, store.state.animation, {\n skipAnimationRequests: store.state.animation.skipAnimationRequests - 1\n }));\n };\n }, [store]);\n useEnhancedEffect(() => {\n // Skip animation test/jsdom\n const isAnimationDisabledEnvironment = typeof window === 'undefined' || !window?.matchMedia;\n if (isAnimationDisabledEnvironment) {\n return undefined;\n }\n let disableAnimationCleanup;\n const handleMediaChange = event => {\n if (event.matches) {\n disableAnimationCleanup = disableAnimation();\n } else {\n disableAnimationCleanup?.();\n }\n };\n const mql = window.matchMedia('(prefers-reduced-motion)');\n handleMediaChange(mql);\n mql.addEventListener('change', handleMediaChange);\n return () => {\n mql.removeEventListener('change', handleMediaChange);\n };\n }, [disableAnimation, store]);\n return {\n instance: {\n disableAnimation\n }\n };\n};\nuseChartAnimation.params = {\n skipAnimation: true\n};\nuseChartAnimation.getDefaultizedParams = ({\n params\n}) => _extends({}, params, {\n skipAnimation: params.skipAnimation ?? false\n});\nuseChartAnimation.getInitialState = ({\n skipAnimation\n}) => {\n const isAnimationDisabledEnvironment = typeof window === 'undefined' || !window?.matchMedia;\n\n // We use the value of `isAnimationDisabledEnvironment` as the initial value of `skipAnimation` to avoid\n // re-rendering the component on environments where matchMedia is not supported, hence skipAnimation will always be true.\n const disableAnimations = process.env.NODE_ENV === 'test' ? isAnimationDisabledEnvironment : false;\n return {\n animation: {\n skip: skipAnimation,\n // By initializing the skipAnimationRequests to 1, we ensure that the animation is always skipped\n skipAnimationRequests: disableAnimations ? 1 : 0\n }\n };\n};","'use client';\n\nimport * as React from 'react';\n\n/**\n * Run an effect only after the first render.\n *\n * @param effect The effect to run after the first render\n * @param deps The dependencies for the effect\n */\nexport function useEffectAfterFirstRender(effect, deps) {\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return undefined;\n }\n return effect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}","export const DEFAULT_X_AXIS_KEY = 'DEFAULT_X_AXIS_KEY';\nexport const DEFAULT_Y_AXIS_KEY = 'DEFAULT_Y_AXIS_KEY';\nexport const DEFAULT_ROTATION_AXIS_KEY = 'DEFAULT_ROTATION_AXIS_KEY';\nexport const DEFAULT_RADIUS_AXIS_KEY = 'DEFAULT_RADIUS_AXIS_KEY';\nexport const DEFAULT_MARGINS = {\n top: 20,\n bottom: 20,\n left: 20,\n right: 20\n};\nexport const DEFAULT_AXIS_SIZE_WIDTH = 45;\nexport const DEFAULT_AXIS_SIZE_HEIGHT = 25;\n\n// How many pixels to add to the default axis size if that axis has a label\nexport const AXIS_LABEL_DEFAULT_HEIGHT = 20;","// src/devModeChecks/identityFunctionCheck.ts\nvar runIdentityFunctionCheck = (resultFunc, inputSelectorsResults, outputSelectorResult) => {\n if (inputSelectorsResults.length === 1 && inputSelectorsResults[0] === outputSelectorResult) {\n let isInputSameAsOutput = false;\n try {\n const emptyObject = {};\n if (resultFunc(emptyObject) === emptyObject)\n isInputSameAsOutput = true;\n } catch {\n }\n if (isInputSameAsOutput) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"The result function returned its own inputs without modification. e.g\\n`createSelector([state => state.todos], todos => todos)`\\nThis could lead to inefficient memoization and unnecessary re-renders.\\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.\",\n { stack }\n );\n }\n }\n};\n\n// src/devModeChecks/inputStabilityCheck.ts\nvar runInputStabilityCheck = (inputSelectorResultsObject, options, inputSelectorArgs) => {\n const { memoize, memoizeOptions } = options;\n const { inputSelectorResults, inputSelectorResultsCopy } = inputSelectorResultsObject;\n const createAnEmptyObject = memoize(() => ({}), ...memoizeOptions);\n const areInputSelectorResultsEqual = createAnEmptyObject.apply(null, inputSelectorResults) === createAnEmptyObject.apply(null, inputSelectorResultsCopy);\n if (!areInputSelectorResultsEqual) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"An input selector returned a different result when passed same arguments.\\nThis means your output selector will likely run more frequently than intended.\\nAvoid returning a new reference inside your input selector, e.g.\\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`\",\n {\n arguments: inputSelectorArgs,\n firstInputs: inputSelectorResults,\n secondInputs: inputSelectorResultsCopy,\n stack\n }\n );\n }\n};\n\n// src/devModeChecks/setGlobalDevModeChecks.ts\nvar globalDevModeChecks = {\n inputStabilityCheck: \"once\",\n identityFunctionCheck: \"once\"\n};\nvar setGlobalDevModeChecks = (devModeChecks) => {\n Object.assign(globalDevModeChecks, devModeChecks);\n};\n\n// src/utils.ts\nvar NOT_FOUND = /* @__PURE__ */ Symbol(\"NOT_FOUND\");\nfunction assertIsFunction(func, errorMessage = `expected a function, instead received ${typeof func}`) {\n if (typeof func !== \"function\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsObject(object, errorMessage = `expected an object, instead received ${typeof object}`) {\n if (typeof object !== \"object\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsArrayOfFunctions(array, errorMessage = `expected all items to be functions, instead received the following types: `) {\n if (!array.every((item) => typeof item === \"function\")) {\n const itemTypes = array.map(\n (item) => typeof item === \"function\" ? `function ${item.name || \"unnamed\"}()` : typeof item\n ).join(\", \");\n throw new TypeError(`${errorMessage}[${itemTypes}]`);\n }\n}\nvar ensureIsArray = (item) => {\n return Array.isArray(item) ? item : [item];\n};\nfunction getDependencies(createSelectorArgs) {\n const dependencies = Array.isArray(createSelectorArgs[0]) ? createSelectorArgs[0] : createSelectorArgs;\n assertIsArrayOfFunctions(\n dependencies,\n `createSelector expects all input-selectors to be functions, but received the following types: `\n );\n return dependencies;\n}\nfunction collectInputSelectorResults(dependencies, inputSelectorArgs) {\n const inputSelectorResults = [];\n const { length } = dependencies;\n for (let i = 0; i < length; i++) {\n inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs));\n }\n return inputSelectorResults;\n}\nvar getDevModeChecksExecutionInfo = (firstRun, devModeChecks) => {\n const { identityFunctionCheck, inputStabilityCheck } = {\n ...globalDevModeChecks,\n ...devModeChecks\n };\n return {\n identityFunctionCheck: {\n shouldRun: identityFunctionCheck === \"always\" || identityFunctionCheck === \"once\" && firstRun,\n run: runIdentityFunctionCheck\n },\n inputStabilityCheck: {\n shouldRun: inputStabilityCheck === \"always\" || inputStabilityCheck === \"once\" && firstRun,\n run: runInputStabilityCheck\n }\n };\n};\n\n// src/autotrackMemoize/autotracking.ts\nvar $REVISION = 0;\nvar CURRENT_TRACKER = null;\nvar Cell = class {\n revision = $REVISION;\n _value;\n _lastValue;\n _isEqual = tripleEq;\n constructor(initialValue, isEqual = tripleEq) {\n this._value = this._lastValue = initialValue;\n this._isEqual = isEqual;\n }\n // Whenever a storage value is read, it'll add itself to the current tracker if\n // one exists, entangling its state with that cache.\n get value() {\n CURRENT_TRACKER?.add(this);\n return this._value;\n }\n // Whenever a storage value is updated, we bump the global revision clock,\n // assign the revision for this storage to the new value, _and_ we schedule a\n // rerender. This is important, and it's what makes autotracking _pull_\n // based. We don't actively tell the caches which depend on the storage that\n // anything has happened. Instead, we recompute the caches when needed.\n set value(newValue) {\n if (this.value === newValue)\n return;\n this._value = newValue;\n this.revision = ++$REVISION;\n }\n};\nfunction tripleEq(a, b) {\n return a === b;\n}\nvar TrackingCache = class {\n _cachedValue;\n _cachedRevision = -1;\n _deps = [];\n hits = 0;\n fn;\n constructor(fn) {\n this.fn = fn;\n }\n clear() {\n this._cachedValue = void 0;\n this._cachedRevision = -1;\n this._deps = [];\n this.hits = 0;\n }\n get value() {\n if (this.revision > this._cachedRevision) {\n const { fn } = this;\n const currentTracker = /* @__PURE__ */ new Set();\n const prevTracker = CURRENT_TRACKER;\n CURRENT_TRACKER = currentTracker;\n this._cachedValue = fn();\n CURRENT_TRACKER = prevTracker;\n this.hits++;\n this._deps = Array.from(currentTracker);\n this._cachedRevision = this.revision;\n }\n CURRENT_TRACKER?.add(this);\n return this._cachedValue;\n }\n get revision() {\n return Math.max(...this._deps.map((d) => d.revision), 0);\n }\n};\nfunction getValue(cell) {\n if (!(cell instanceof Cell)) {\n console.warn(\"Not a valid cell! \", cell);\n }\n return cell.value;\n}\nfunction setValue(storage, value) {\n if (!(storage instanceof Cell)) {\n throw new TypeError(\n \"setValue must be passed a tracked store created with `createStorage`.\"\n );\n }\n storage.value = storage._lastValue = value;\n}\nfunction createCell(initialValue, isEqual = tripleEq) {\n return new Cell(initialValue, isEqual);\n}\nfunction createCache(fn) {\n assertIsFunction(\n fn,\n \"the first parameter to `createCache` must be a function\"\n );\n return new TrackingCache(fn);\n}\n\n// src/autotrackMemoize/tracking.ts\nvar neverEq = (a, b) => false;\nfunction createTag() {\n return createCell(null, neverEq);\n}\nfunction dirtyTag(tag, value) {\n setValue(tag, value);\n}\nvar consumeCollection = (node) => {\n let tag = node.collectionTag;\n if (tag === null) {\n tag = node.collectionTag = createTag();\n }\n getValue(tag);\n};\nvar dirtyCollection = (node) => {\n const tag = node.collectionTag;\n if (tag !== null) {\n dirtyTag(tag, null);\n }\n};\n\n// src/autotrackMemoize/proxy.ts\nvar REDUX_PROXY_LABEL = Symbol();\nvar nextId = 0;\nvar proto = Object.getPrototypeOf({});\nvar ObjectTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy(this, objectProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar objectProxyHandler = {\n get(node, key) {\n function calculateResult() {\n const { value } = node;\n const childValue = Reflect.get(value, key);\n if (typeof key === \"symbol\") {\n return childValue;\n }\n if (key in proto) {\n return childValue;\n }\n if (typeof childValue === \"object\" && childValue !== null) {\n let childNode = node.children[key];\n if (childNode === void 0) {\n childNode = node.children[key] = createNode(childValue);\n }\n if (childNode.tag) {\n getValue(childNode.tag);\n }\n return childNode.proxy;\n } else {\n let tag = node.tags[key];\n if (tag === void 0) {\n tag = node.tags[key] = createTag();\n tag.value = childValue;\n }\n getValue(tag);\n return childValue;\n }\n }\n const res = calculateResult();\n return res;\n },\n ownKeys(node) {\n consumeCollection(node);\n return Reflect.ownKeys(node.value);\n },\n getOwnPropertyDescriptor(node, prop) {\n return Reflect.getOwnPropertyDescriptor(node.value, prop);\n },\n has(node, prop) {\n return Reflect.has(node.value, prop);\n }\n};\nvar ArrayTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy([this], arrayProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar arrayProxyHandler = {\n get([node], key) {\n if (key === \"length\") {\n consumeCollection(node);\n }\n return objectProxyHandler.get(node, key);\n },\n ownKeys([node]) {\n return objectProxyHandler.ownKeys(node);\n },\n getOwnPropertyDescriptor([node], prop) {\n return objectProxyHandler.getOwnPropertyDescriptor(node, prop);\n },\n has([node], prop) {\n return objectProxyHandler.has(node, prop);\n }\n};\nfunction createNode(value) {\n if (Array.isArray(value)) {\n return new ArrayTreeNode(value);\n }\n return new ObjectTreeNode(value);\n}\nfunction updateNode(node, newValue) {\n const { value, tags, children } = node;\n node.value = newValue;\n if (Array.isArray(value) && Array.isArray(newValue) && value.length !== newValue.length) {\n dirtyCollection(node);\n } else {\n if (value !== newValue) {\n let oldKeysSize = 0;\n let newKeysSize = 0;\n let anyKeysAdded = false;\n for (const _key in value) {\n oldKeysSize++;\n }\n for (const key in newValue) {\n newKeysSize++;\n if (!(key in value)) {\n anyKeysAdded = true;\n break;\n }\n }\n const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize;\n if (isDifferent) {\n dirtyCollection(node);\n }\n }\n }\n for (const key in tags) {\n const childValue = value[key];\n const newChildValue = newValue[key];\n if (childValue !== newChildValue) {\n dirtyCollection(node);\n dirtyTag(tags[key], newChildValue);\n }\n if (typeof newChildValue === \"object\" && newChildValue !== null) {\n delete tags[key];\n }\n }\n for (const key in children) {\n const childNode = children[key];\n const newChildValue = newValue[key];\n const childValue = childNode.value;\n if (childValue === newChildValue) {\n continue;\n } else if (typeof newChildValue === \"object\" && newChildValue !== null) {\n updateNode(childNode, newChildValue);\n } else {\n deleteNode(childNode);\n delete children[key];\n }\n }\n}\nfunction deleteNode(node) {\n if (node.tag) {\n dirtyTag(node.tag, null);\n }\n dirtyCollection(node);\n for (const key in node.tags) {\n dirtyTag(node.tags[key], null);\n }\n for (const key in node.children) {\n deleteNode(node.children[key]);\n }\n}\n\n// src/lruMemoize.ts\nfunction createSingletonCache(equals) {\n let entry;\n return {\n get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n return NOT_FOUND;\n },\n put(key, value) {\n entry = { key, value };\n },\n getEntries() {\n return entry ? [entry] : [];\n },\n clear() {\n entry = void 0;\n }\n };\n}\nfunction createLruCache(maxSize, equals) {\n let entries = [];\n function get(key) {\n const cacheIndex = entries.findIndex((entry) => equals(key, entry.key));\n if (cacheIndex > -1) {\n const entry = entries[cacheIndex];\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n return entry.value;\n }\n return NOT_FOUND;\n }\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n entries.unshift({ key, value });\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n function getEntries() {\n return entries;\n }\n function clear() {\n entries = [];\n }\n return { get, put, getEntries, clear };\n}\nvar referenceEqualityCheck = (a, b) => a === b;\nfunction createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n const { length } = prev;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n return true;\n };\n}\nfunction lruMemoize(func, equalityCheckOrOptions) {\n const providedOptions = typeof equalityCheckOrOptions === \"object\" ? equalityCheckOrOptions : { equalityCheck: equalityCheckOrOptions };\n const {\n equalityCheck = referenceEqualityCheck,\n maxSize = 1,\n resultEqualityCheck\n } = providedOptions;\n const comparator = createCacheKeyComparator(equalityCheck);\n let resultsCount = 0;\n const cache = maxSize <= 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);\n function memoized() {\n let value = cache.get(arguments);\n if (value === NOT_FOUND) {\n value = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const entries = cache.getEntries();\n const matchingEntry = entries.find(\n (entry) => resultEqualityCheck(entry.value, value)\n );\n if (matchingEntry) {\n value = matchingEntry.value;\n resultsCount !== 0 && resultsCount--;\n }\n }\n cache.put(arguments, value);\n }\n return value;\n }\n memoized.clearCache = () => {\n cache.clear();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/autotrackMemoize/autotrackMemoize.ts\nfunction autotrackMemoize(func) {\n const node = createNode(\n []\n );\n let lastArgs = null;\n const shallowEqual = createCacheKeyComparator(referenceEqualityCheck);\n const cache = createCache(() => {\n const res = func.apply(null, node.proxy);\n return res;\n });\n function memoized() {\n if (!shallowEqual(lastArgs, arguments)) {\n updateNode(node, arguments);\n lastArgs = arguments;\n }\n return cache.value;\n }\n memoized.clearCache = () => {\n return cache.clear();\n };\n return memoized;\n}\n\n// src/weakMapMemoize.ts\nvar StrongRef = class {\n constructor(value) {\n this.value = value;\n }\n deref() {\n return this.value;\n }\n};\nvar Ref = typeof WeakRef !== \"undefined\" ? WeakRef : StrongRef;\nvar UNTERMINATED = 0;\nvar TERMINATED = 1;\nfunction createCacheNode() {\n return {\n s: UNTERMINATED,\n v: void 0,\n o: null,\n p: null\n };\n}\nfunction weakMapMemoize(func, options = {}) {\n let fnNode = createCacheNode();\n const { resultEqualityCheck } = options;\n let lastResult;\n let resultsCount = 0;\n function memoized() {\n let cacheNode = fnNode;\n const { length } = arguments;\n for (let i = 0, l = length; i < l; i++) {\n const arg = arguments[i];\n if (typeof arg === \"function\" || typeof arg === \"object\" && arg !== null) {\n let objectCache = cacheNode.o;\n if (objectCache === null) {\n cacheNode.o = objectCache = /* @__PURE__ */ new WeakMap();\n }\n const objectNode = objectCache.get(arg);\n if (objectNode === void 0) {\n cacheNode = createCacheNode();\n objectCache.set(arg, cacheNode);\n } else {\n cacheNode = objectNode;\n }\n } else {\n let primitiveCache = cacheNode.p;\n if (primitiveCache === null) {\n cacheNode.p = primitiveCache = /* @__PURE__ */ new Map();\n }\n const primitiveNode = primitiveCache.get(arg);\n if (primitiveNode === void 0) {\n cacheNode = createCacheNode();\n primitiveCache.set(arg, cacheNode);\n } else {\n cacheNode = primitiveNode;\n }\n }\n }\n const terminatedNode = cacheNode;\n let result;\n if (cacheNode.s === TERMINATED) {\n result = cacheNode.v;\n } else {\n result = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const lastResultValue = lastResult?.deref?.() ?? lastResult;\n if (lastResultValue != null && resultEqualityCheck(lastResultValue, result)) {\n result = lastResultValue;\n resultsCount !== 0 && resultsCount--;\n }\n const needsWeakRef = typeof result === \"object\" && result !== null || typeof result === \"function\";\n lastResult = needsWeakRef ? new Ref(result) : result;\n }\n }\n terminatedNode.s = TERMINATED;\n terminatedNode.v = result;\n return result;\n }\n memoized.clearCache = () => {\n fnNode = createCacheNode();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/createSelectorCreator.ts\nfunction createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {\n const createSelectorCreatorOptions = typeof memoizeOrOptions === \"function\" ? {\n memoize: memoizeOrOptions,\n memoizeOptions: memoizeOptionsFromArgs\n } : memoizeOrOptions;\n const createSelector2 = (...createSelectorArgs) => {\n let recomputations = 0;\n let dependencyRecomputations = 0;\n let lastResult;\n let directlyPassedOptions = {};\n let resultFunc = createSelectorArgs.pop();\n if (typeof resultFunc === \"object\") {\n directlyPassedOptions = resultFunc;\n resultFunc = createSelectorArgs.pop();\n }\n assertIsFunction(\n resultFunc,\n `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\n );\n const combinedOptions = {\n ...createSelectorCreatorOptions,\n ...directlyPassedOptions\n };\n const {\n memoize,\n memoizeOptions = [],\n argsMemoize = weakMapMemoize,\n argsMemoizeOptions = [],\n devModeChecks = {}\n } = combinedOptions;\n const finalMemoizeOptions = ensureIsArray(memoizeOptions);\n const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions);\n const dependencies = getDependencies(createSelectorArgs);\n const memoizedResultFunc = memoize(function recomputationWrapper() {\n recomputations++;\n return resultFunc.apply(\n null,\n arguments\n );\n }, ...finalMemoizeOptions);\n let firstRun = true;\n const selector = argsMemoize(function dependenciesChecker() {\n dependencyRecomputations++;\n const inputSelectorResults = collectInputSelectorResults(\n dependencies,\n arguments\n );\n lastResult = memoizedResultFunc.apply(null, inputSelectorResults);\n if (process.env.NODE_ENV !== \"production\") {\n const { identityFunctionCheck, inputStabilityCheck } = getDevModeChecksExecutionInfo(firstRun, devModeChecks);\n if (identityFunctionCheck.shouldRun) {\n identityFunctionCheck.run(\n resultFunc,\n inputSelectorResults,\n lastResult\n );\n }\n if (inputStabilityCheck.shouldRun) {\n const inputSelectorResultsCopy = collectInputSelectorResults(\n dependencies,\n arguments\n );\n inputStabilityCheck.run(\n { inputSelectorResults, inputSelectorResultsCopy },\n { memoize, memoizeOptions: finalMemoizeOptions },\n arguments\n );\n }\n if (firstRun)\n firstRun = false;\n }\n return lastResult;\n }, ...finalArgsMemoizeOptions);\n return Object.assign(selector, {\n resultFunc,\n memoizedResultFunc,\n dependencies,\n dependencyRecomputations: () => dependencyRecomputations,\n resetDependencyRecomputations: () => {\n dependencyRecomputations = 0;\n },\n lastResult: () => lastResult,\n recomputations: () => recomputations,\n resetRecomputations: () => {\n recomputations = 0;\n },\n memoize,\n argsMemoize\n });\n };\n Object.assign(createSelector2, {\n withTypes: () => createSelector2\n });\n return createSelector2;\n}\nvar createSelector = /* @__PURE__ */ createSelectorCreator(weakMapMemoize);\n\n// src/createStructuredSelector.ts\nvar createStructuredSelector = Object.assign(\n (inputSelectorsObject, selectorCreator = createSelector) => {\n assertIsObject(\n inputSelectorsObject,\n `createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof inputSelectorsObject}`\n );\n const inputSelectorKeys = Object.keys(inputSelectorsObject);\n const dependencies = inputSelectorKeys.map(\n (key) => inputSelectorsObject[key]\n );\n const structuredSelector = selectorCreator(\n dependencies,\n (...inputSelectorResults) => {\n return inputSelectorResults.reduce((composition, value, index) => {\n composition[inputSelectorKeys[index]] = value;\n return composition;\n }, {});\n }\n );\n return structuredSelector;\n },\n { withTypes: () => createStructuredSelector }\n);\nexport {\n createSelector,\n createSelectorCreator,\n createStructuredSelector,\n lruMemoize,\n referenceEqualityCheck,\n setGlobalDevModeChecks,\n autotrackMemoize as unstable_autotrackMemoize,\n weakMapMemoize\n};\n//# sourceMappingURL=reselect.mjs.map","import { lruMemoize, createSelectorCreator } from 'reselect';\n/* eslint-disable no-underscore-dangle */ // __cacheKey__\n\nconst reselectCreateSelector = createSelectorCreator({\n memoize: lruMemoize,\n memoizeOptions: {\n maxSize: 1,\n equalityCheck: Object.is\n }\n});\n/* eslint-disable id-denylist */\nexport const createSelector = (a, b, c, d, e, f, g, h, ...other) => {\n if (other.length > 0) {\n throw new Error('Unsupported number of selectors');\n }\n let selector;\n if (a && b && c && d && e && f && g && h) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n const vc = c(state, a1, a2, a3);\n const vd = d(state, a1, a2, a3);\n const ve = e(state, a1, a2, a3);\n const vf = f(state, a1, a2, a3);\n const vg = g(state, a1, a2, a3);\n return h(va, vb, vc, vd, ve, vf, vg, a1, a2, a3);\n };\n } else if (a && b && c && d && e && f && g) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n const vc = c(state, a1, a2, a3);\n const vd = d(state, a1, a2, a3);\n const ve = e(state, a1, a2, a3);\n const vf = f(state, a1, a2, a3);\n return g(va, vb, vc, vd, ve, vf, a1, a2, a3);\n };\n } else if (a && b && c && d && e && f) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n const vc = c(state, a1, a2, a3);\n const vd = d(state, a1, a2, a3);\n const ve = e(state, a1, a2, a3);\n return f(va, vb, vc, vd, ve, a1, a2, a3);\n };\n } else if (a && b && c && d && e) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n const vc = c(state, a1, a2, a3);\n const vd = d(state, a1, a2, a3);\n return e(va, vb, vc, vd, a1, a2, a3);\n };\n } else if (a && b && c && d) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n const vc = c(state, a1, a2, a3);\n return d(va, vb, vc, a1, a2, a3);\n };\n } else if (a && b && c) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n const vb = b(state, a1, a2, a3);\n return c(va, vb, a1, a2, a3);\n };\n } else if (a && b) {\n selector = (state, a1, a2, a3) => {\n const va = a(state, a1, a2, a3);\n return b(va, a1, a2, a3);\n };\n } else if (a) {\n selector = a;\n } else {\n throw new Error('Missing arguments');\n }\n return selector;\n};\n/* eslint-enable id-denylist */\n\nexport const createSelectorMemoizedWithOptions = options => (...inputs) => {\n const cache = new WeakMap();\n let nextCacheId = 1;\n const combiner = inputs[inputs.length - 1];\n const nSelectors = inputs.length - 1 || 1;\n // (s1, s2, ..., sN, a1, a2, a3) => { ... }\n const argsLength = Math.max(combiner.length - nSelectors, 0);\n if (argsLength > 3) {\n throw new Error('Unsupported number of arguments');\n }\n\n // prettier-ignore\n const selector = (state, a1, a2, a3) => {\n let cacheKey = state.__cacheKey__;\n if (!cacheKey) {\n cacheKey = {\n id: nextCacheId\n };\n state.__cacheKey__ = cacheKey;\n nextCacheId += 1;\n }\n let fn = cache.get(cacheKey);\n if (!fn) {\n const selectors = inputs.length === 1 ? [x => x, combiner] : inputs;\n let reselectArgs = inputs;\n const selectorArgs = [undefined, undefined, undefined];\n switch (argsLength) {\n case 0:\n break;\n case 1:\n {\n reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], combiner];\n break;\n }\n case 2:\n {\n reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], () => selectorArgs[1], combiner];\n break;\n }\n case 3:\n {\n reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], () => selectorArgs[1], () => selectorArgs[2], combiner];\n break;\n }\n default:\n throw new Error('Unsupported number of arguments');\n }\n if (options) {\n reselectArgs = [...reselectArgs, options];\n }\n fn = reselectCreateSelector(...reselectArgs);\n fn.selectorArgs = selectorArgs;\n cache.set(cacheKey, fn);\n }\n\n /* eslint-disable no-fallthrough */\n\n switch (argsLength) {\n case 3:\n fn.selectorArgs[2] = a3;\n case 2:\n fn.selectorArgs[1] = a2;\n case 1:\n fn.selectorArgs[0] = a1;\n case 0:\n default:\n }\n switch (argsLength) {\n case 0:\n return fn(state);\n case 1:\n return fn(state, a1);\n case 2:\n return fn(state, a1, a2);\n case 3:\n return fn(state, a1, a2, a3);\n default:\n throw new Error('unreachable');\n }\n };\n return selector;\n};\nexport const createSelectorMemoized = createSelectorMemoizedWithOptions();","export const selectorChartCartesianAxisState = state => state.cartesianAxis;\nexport const selectorChartRawXAxis = state => state.cartesianAxis?.x;\nexport const selectorChartRawYAxis = state => state.cartesianAxis?.y;","import { createSelector, createSelectorMemoized } from '@mui/x-internals/store';\nimport { selectorChartRawXAxis, selectorChartRawYAxis } from \"./useChartCartesianAxisLayout.selectors.js\";\nexport const selectorChartLeftAxisSize = createSelector(selectorChartRawYAxis, function selectorChartLeftAxisSize(yAxis) {\n return (yAxis ?? []).reduce((acc, axis) => axis.position === 'left' ? acc + (axis.width || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0);\n});\nexport const selectorChartRightAxisSize = createSelector(selectorChartRawYAxis, function selectorChartRightAxisSize(yAxis) {\n return (yAxis ?? []).reduce((acc, axis) => axis.position === 'right' ? acc + (axis.width || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0);\n});\nexport const selectorChartTopAxisSize = createSelector(selectorChartRawXAxis, function selectorChartTopAxisSize(xAxis) {\n return (xAxis ?? []).reduce((acc, axis) => axis.position === 'top' ? acc + (axis.height || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0);\n});\nexport const selectorChartBottomAxisSize = createSelector(selectorChartRawXAxis, function selectorChartBottomAxisSize(xAxis) {\n return (xAxis ?? []).reduce((acc, axis) => axis.position === 'bottom' ? acc + (axis.height || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0);\n});\nexport const selectorChartAxisSizes = createSelectorMemoized(selectorChartLeftAxisSize, selectorChartRightAxisSize, selectorChartTopAxisSize, selectorChartBottomAxisSize, function selectorChartAxisSizes(left, right, top, bottom) {\n return {\n left,\n right,\n top,\n bottom\n };\n});","import { createSelector, createSelectorMemoized } from '@mui/x-internals/store';\nimport { selectorChartAxisSizes } from \"../../featurePlugins/useChartCartesianAxis/useChartAxisSize.selectors.js\";\nexport const selectorChartDimensionsState = state => state.dimensions;\nexport const selectorChartMargin = state => state.dimensions.margin;\nexport const selectorChartDrawingArea = createSelectorMemoized(selectorChartDimensionsState, selectorChartMargin, selectorChartAxisSizes, function selectorChartDrawingArea({\n width,\n height\n}, {\n top: marginTop,\n right: marginRight,\n bottom: marginBottom,\n left: marginLeft\n}, {\n left: axisSizeLeft,\n right: axisSizeRight,\n top: axisSizeTop,\n bottom: axisSizeBottom\n}) {\n return {\n width: width - marginLeft - marginRight - axisSizeLeft - axisSizeRight,\n left: marginLeft + axisSizeLeft,\n right: marginRight + axisSizeRight,\n height: height - marginTop - marginBottom - axisSizeTop - axisSizeBottom,\n top: marginTop + axisSizeTop,\n bottom: marginBottom + axisSizeBottom\n };\n});\nexport const selectorChartSvgWidth = createSelector(selectorChartDimensionsState, dimensionsState => dimensionsState.width);\nexport const selectorChartSvgHeight = createSelector(selectorChartDimensionsState, dimensionsState => dimensionsState.height);\nexport const selectorChartPropsWidth = createSelector(selectorChartDimensionsState, dimensionsState => dimensionsState.propsWidth);\nexport const selectorChartPropsHeight = createSelector(selectorChartDimensionsState, dimensionsState => dimensionsState.propsHeight);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function defaultizeMargin(input, defaultMargin) {\n if (typeof input === 'number') {\n return {\n top: input,\n bottom: input,\n left: input,\n right: input\n };\n }\n if (defaultMargin) {\n return _extends({}, defaultMargin, input);\n }\n return input;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useEffectAfterFirstRender } from '@mui/x-internals/useEffectAfterFirstRender';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport ownerWindow from '@mui/utils/ownerWindow';\nimport { DEFAULT_MARGINS } from \"../../../../constants/index.js\";\nimport { selectorChartDrawingArea } from \"./useChartDimensions.selectors.js\";\nimport { defaultizeMargin } from \"../../../defaultizeMargin.js\";\nconst MAX_COMPUTE_RUN = 10;\nexport const useChartDimensions = ({\n params,\n store,\n svgRef\n}) => {\n const hasInSize = params.width !== undefined && params.height !== undefined;\n const stateRef = React.useRef({\n displayError: false,\n initialCompute: true,\n computeRun: 0\n });\n // States only used for the initialization of the size.\n const [innerWidth, setInnerWidth] = React.useState(0);\n const [innerHeight, setInnerHeight] = React.useState(0);\n const computeSize = React.useCallback(() => {\n const mainEl = svgRef?.current;\n if (!mainEl) {\n return {};\n }\n const win = ownerWindow(mainEl);\n const computedStyle = win.getComputedStyle(mainEl);\n const newHeight = Math.floor(parseFloat(computedStyle.height)) || 0;\n const newWidth = Math.floor(parseFloat(computedStyle.width)) || 0;\n if (store.state.dimensions.width !== newWidth || store.state.dimensions.height !== newHeight) {\n store.set('dimensions', {\n margin: {\n top: params.margin.top,\n right: params.margin.right,\n bottom: params.margin.bottom,\n left: params.margin.left\n },\n width: params.width ?? newWidth,\n height: params.height ?? newHeight,\n propsWidth: params.width,\n propsHeight: params.height\n });\n }\n return {\n height: newHeight,\n width: newWidth\n };\n }, [store, svgRef, params.height, params.width,\n // Margin is an object, so we need to include all the properties to prevent infinite loops.\n params.margin.left, params.margin.right, params.margin.top, params.margin.bottom]);\n useEffectAfterFirstRender(() => {\n const width = params.width ?? store.state.dimensions.width;\n const height = params.height ?? store.state.dimensions.height;\n store.set('dimensions', {\n margin: {\n top: params.margin.top,\n right: params.margin.right,\n bottom: params.margin.bottom,\n left: params.margin.left\n },\n width,\n height,\n propsHeight: params.height,\n propsWidth: params.width\n });\n }, [store, params.height, params.width,\n // Margin is an object, so we need to include all the properties to prevent infinite loops.\n params.margin.left, params.margin.right, params.margin.top, params.margin.bottom]);\n React.useEffect(() => {\n // Ensure the error detection occurs after the first rendering.\n stateRef.current.displayError = true;\n }, []);\n\n // This effect is used to compute the size of the container on the initial render.\n // It is not bound to the raf loop to avoid an unwanted \"resize\" event.\n // https://github.com/mui/mui-x/issues/13477#issuecomment-2336634785\n useEnhancedEffect(() => {\n // computeRun is used to avoid infinite loops.\n if (hasInSize || !stateRef.current.initialCompute || stateRef.current.computeRun > MAX_COMPUTE_RUN) {\n return;\n }\n const computedSize = computeSize();\n if (computedSize.width !== innerWidth || computedSize.height !== innerHeight) {\n stateRef.current.computeRun += 1;\n if (computedSize.width !== undefined) {\n setInnerWidth(computedSize.width);\n }\n if (computedSize.height !== undefined) {\n setInnerHeight(computedSize.height);\n }\n } else if (stateRef.current.initialCompute) {\n stateRef.current.initialCompute = false;\n }\n }, [innerHeight, innerWidth, computeSize, hasInSize]);\n useEnhancedEffect(() => {\n if (hasInSize) {\n return () => {};\n }\n computeSize();\n const elementToObserve = svgRef.current;\n if (typeof ResizeObserver === 'undefined') {\n return () => {};\n }\n let animationFrame;\n const observer = new ResizeObserver(() => {\n // See https://github.com/mui/mui-x/issues/8733\n animationFrame = requestAnimationFrame(() => {\n computeSize();\n });\n });\n if (elementToObserve) {\n observer.observe(elementToObserve);\n }\n return () => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame);\n }\n if (elementToObserve) {\n observer.unobserve(elementToObserve);\n }\n };\n }, [computeSize, hasInSize, svgRef]);\n if (process.env.NODE_ENV !== 'production') {\n if (stateRef.current.displayError && params.width === undefined && innerWidth === 0) {\n console.error(`MUI X Charts: ChartContainer does not have \\`width\\` prop, and its container has no \\`width\\` defined.`);\n stateRef.current.displayError = false;\n }\n if (stateRef.current.displayError && params.height === undefined && innerHeight === 0) {\n console.error(`MUI X Charts: ChartContainer does not have \\`height\\` prop, and its container has no \\`height\\` defined.`);\n stateRef.current.displayError = false;\n }\n }\n const drawingArea = store.use(selectorChartDrawingArea);\n const isXInside = React.useCallback(x => x >= drawingArea.left - 1 && x <= drawingArea.left + drawingArea.width, [drawingArea.left, drawingArea.width]);\n const isYInside = React.useCallback(y => y >= drawingArea.top - 1 && y <= drawingArea.top + drawingArea.height, [drawingArea.height, drawingArea.top]);\n const isPointInside = React.useCallback((x, y, targetElement) => {\n // For element allowed to overflow, wrapping them in make them fully part of the drawing area.\n if (targetElement && 'closest' in targetElement && targetElement.closest('[data-drawing-container]')) {\n return true;\n }\n return isXInside(x) && isYInside(y);\n }, [isXInside, isYInside]);\n return {\n instance: {\n isPointInside,\n isXInside,\n isYInside\n }\n };\n};\nuseChartDimensions.params = {\n width: true,\n height: true,\n margin: true\n};\nuseChartDimensions.getDefaultizedParams = ({\n params\n}) => _extends({}, params, {\n margin: defaultizeMargin(params.margin, DEFAULT_MARGINS)\n});\nuseChartDimensions.getInitialState = ({\n width,\n height,\n margin\n}) => {\n return {\n dimensions: {\n margin,\n width: width ?? 0,\n height: height ?? 0,\n propsWidth: width,\n propsHeight: height\n }\n };\n};","import ownerDocument from \"../ownerDocument/index.js\";\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","'use client';\n\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport const useChartExperimentalFeatures = ({\n params,\n store\n}) => {\n useEnhancedEffect(() => {\n store.set('experimentalFeatures', params.experimentalFeatures);\n }, [store, params.experimentalFeatures]);\n return {};\n};\nuseChartExperimentalFeatures.params = {\n experimentalFeatures: true\n};\nuseChartExperimentalFeatures.getInitialState = ({\n experimentalFeatures\n}) => {\n return {\n experimentalFeatures\n };\n};","let globalChartDefaultId = 0;\nexport const createChartDefaultId = () => {\n globalChartDefaultId += 1;\n return `mui-chart-${globalChartDefaultId}`;\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { createChartDefaultId } from \"./useChartId.utils.js\";\nexport const useChartId = ({\n params,\n store\n}) => {\n React.useEffect(() => {\n if (params.id === undefined || params.id === store.state.id.providedChartId && store.state.id.chartId !== undefined) {\n return;\n }\n store.set('id', _extends({}, store.state.id, {\n chartId: params.id ?? createChartDefaultId()\n }));\n }, [store, params.id]);\n return {};\n};\nuseChartId.params = {\n id: true\n};\nuseChartId.getInitialState = ({\n id\n}) => ({\n id: {\n chartId: id,\n providedChartId: id\n }\n});","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from \"../useEnhancedEffect/index.js\";\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","export const rainbowSurgePaletteLight = ['#4254FB', '#FFB422', '#FA4F58', '#0DBEFF', '#22BF75', '#FA83B4', '#FF7511'];\nexport const rainbowSurgePaletteDark = ['#495AFB', '#FFC758', '#F35865', '#30C8FF', '#44CE8D', '#F286B3', '#FF8C39'];\nexport const rainbowSurgePalette = mode => mode === 'dark' ? rainbowSurgePaletteDark : rainbowSurgePaletteLight;","/**\n * This method groups series by type and adds defaultized values such as the ids and colors.\n * It does NOT apply the series processors - that happens in a selector.\n * @param series The array of series provided by the developer\n * @param colors The color palette used to defaultize series colors\n * @returns An object structuring all the series by type with default values.\n */\nexport const defaultizeSeries = ({\n series,\n colors,\n seriesConfig\n}) => {\n // Group series by type\n const seriesGroups = {};\n series.forEach((seriesData, seriesIndex) => {\n const seriesWithDefaultValues = seriesConfig[seriesData.type].getSeriesWithDefaultValues(seriesData, seriesIndex, colors);\n const id = seriesWithDefaultValues.id;\n if (seriesGroups[seriesData.type] === undefined) {\n seriesGroups[seriesData.type] = {\n series: {},\n seriesOrder: []\n };\n }\n if (seriesGroups[seriesData.type]?.series[id] !== undefined) {\n throw new Error(`MUI X Charts: series' id \"${id}\" is not unique.`);\n }\n seriesGroups[seriesData.type].series[id] = seriesWithDefaultValues;\n seriesGroups[seriesData.type].seriesOrder.push(id);\n });\n return seriesGroups;\n};\n\n/**\n * Applies series processors to the defaultized series groups.\n * This should be called in a selector to compute processed series on-demand.\n * @param defaultizedSeries The defaultized series groups\n * @param seriesConfig The series configuration\n * @param dataset The optional dataset\n * @returns Processed series with all transformations applied\n */\nexport const applySeriesProcessors = (defaultizedSeries, seriesConfig, dataset) => {\n const processedSeries = {};\n\n // Apply formatter on a type group\n Object.keys(seriesConfig).forEach(type => {\n const group = defaultizedSeries[type];\n if (group !== undefined) {\n processedSeries[type] = seriesConfig[type]?.seriesProcessor?.(group, dataset) ?? group;\n }\n });\n return processedSeries;\n};\n\n/**\n * Applies series processors with drawing area to series if defined.\n * @param processedSeries The processed series groups\n * @param seriesConfig The series configuration\n * @param drawingArea The drawing area\n * @returns Processed series with all transformations applied\n */\nexport const applySeriesLayout = (processedSeries, seriesConfig, drawingArea) => {\n let processingDetected = false;\n const seriesLayout = {};\n\n // Apply processors on series type per group\n Object.keys(processedSeries).forEach(type => {\n const processor = seriesConfig[type]?.seriesLayout;\n const thisSeries = processedSeries[type];\n if (processor !== undefined && thisSeries !== undefined) {\n const newValue = processor(thisSeries, drawingArea);\n if (newValue && newValue !== processedSeries[type]) {\n processingDetected = true;\n seriesLayout[type] = newValue;\n }\n }\n });\n if (!processingDetected) {\n return {};\n }\n return seriesLayout;\n};","/**\n * Serializes a series item identifier into a unique string using the appropriate serializer\n * from the provided series configuration.\n *\n * @param {ChartSeriesConfig} seriesConfig - The configuration object for chart series.\n * @param {SeriesItemIdentifier} identifier - The series item identifier to serialize.\n * @returns {string} A unique string representation of the identifier.\n * @throws Will throw an error if no serializer is found for the given series type.\n */\nexport const serializeIdentifier = (seriesConfig, identifier) => {\n const serializer = seriesConfig[identifier.type]?.identifierSerializer;\n if (!serializer) {\n throw new Error(`MUI X Charts: No identifier serializer found for series type \"${identifier.type}\".`);\n }\n // @ts-expect-error identifierSerializer expects the full object,\n // but this function accepts a partial one in order be able to serialize all identifiers.\n return serializer(identifier);\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useEffectAfterFirstRender } from '@mui/x-internals/useEffectAfterFirstRender';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { rainbowSurgePalette } from \"../../../../colorPalettes/index.js\";\nimport { defaultizeSeries } from \"./processSeries.js\";\nimport { serializeIdentifier as serializeIdentifierFn } from \"./serializeIdentifier.js\";\nexport const useChartSeries = ({\n params,\n store,\n seriesConfig\n}) => {\n const {\n series,\n dataset,\n theme,\n colors\n } = params;\n\n // The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartSeries`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n useEffectAfterFirstRender(() => {\n store.set('series', _extends({}, store.state.series, {\n defaultizedSeries: defaultizeSeries({\n series,\n colors: typeof colors === 'function' ? colors(theme) : colors,\n seriesConfig\n }),\n dataset\n }));\n }, [colors, dataset, series, theme, seriesConfig, store]);\n const serializeIdentifier = useEventCallback(identifier => serializeIdentifierFn(seriesConfig, identifier));\n return {\n instance: {\n serializeIdentifier\n }\n };\n};\nuseChartSeries.params = {\n dataset: true,\n series: true,\n colors: true,\n theme: true\n};\nconst EMPTY_ARRAY = [];\nuseChartSeries.getDefaultizedParams = ({\n params\n}) => _extends({}, params, {\n series: params.series?.length ? params.series : EMPTY_ARRAY,\n colors: params.colors ?? rainbowSurgePalette,\n theme: params.theme ?? 'light'\n});\nuseChartSeries.getInitialState = ({\n series = [],\n colors,\n theme,\n dataset\n}, _, seriesConfig) => {\n return {\n series: {\n seriesConfig,\n defaultizedSeries: defaultizeSeries({\n series,\n colors: typeof colors === 'function' ? colors(theme) : colors,\n seriesConfig\n }),\n dataset\n }\n };\n};","/**\n * ActiveGesturesRegistry - Centralized registry for tracking which gestures are active on elements\n *\n * This singleton class keeps track of all gesture instances that are currently in their active state,\n * allowing both the system and applications to query which gestures are active on specific elements.\n */\n\n/**\n * Type for entries in the active gestures registry\n */\n\n/**\n * Registry that maintains a record of all currently active gestures across elements\n */\nexport class ActiveGesturesRegistry {\n /** Map of elements to their active gestures */\n activeGestures = (() => new Map())();\n\n /**\n * Register a gesture as active on an element\n *\n * @param element - The DOM element on which the gesture is active\n * @param gesture - The gesture instance that is active\n */\n registerActiveGesture(element, gesture) {\n if (!this.activeGestures.has(element)) {\n this.activeGestures.set(element, new Set());\n }\n const elementGestures = this.activeGestures.get(element);\n const entry = {\n gesture,\n element\n };\n elementGestures.add(entry);\n }\n\n /**\n * Remove a gesture from the active registry\n *\n * @param element - The DOM element on which the gesture was active\n * @param gesture - The gesture instance to deactivate\n */\n unregisterActiveGesture(element, gesture) {\n const elementGestures = this.activeGestures.get(element);\n if (!elementGestures) {\n return;\n }\n\n // Find and remove the specific gesture entry\n elementGestures.forEach(entry => {\n if (entry.gesture === gesture) {\n elementGestures.delete(entry);\n }\n });\n\n // Remove the element from the map if it no longer has any active gestures\n if (elementGestures.size === 0) {\n this.activeGestures.delete(element);\n }\n }\n\n /**\n * Get all active gestures for a specific element\n *\n * @param element - The DOM element to query\n * @returns Array of active gesture names\n */\n getActiveGestures(element) {\n const elementGestures = this.activeGestures.get(element);\n if (!elementGestures) {\n return {};\n }\n return Array.from(elementGestures).reduce((acc, entry) => {\n acc[entry.gesture.name] = true;\n return acc;\n }, {});\n }\n\n /**\n * Check if a specific gesture is active on an element\n *\n * @param element - The DOM element to check\n * @param gesture - The gesture instance to check\n * @returns True if the gesture is active on the element, false otherwise\n */\n isGestureActive(element, gesture) {\n const elementGestures = this.activeGestures.get(element);\n if (!elementGestures) {\n return false;\n }\n return Array.from(elementGestures).some(entry => entry.gesture === gesture);\n }\n\n /**\n * Clear all active gestures from the registry\n */\n destroy() {\n this.activeGestures.clear();\n }\n\n /**\n * Clear all active gestures for a specific element\n *\n * @param element - The DOM element to clear\n */\n unregisterElement(element) {\n this.activeGestures.delete(element);\n }\n}","/**\n * KeyboardManager - Manager for keyboard events in the gesture recognition system\n *\n * This class tracks keyboard state:\n * 1. Capturing and tracking all pressed keys\n * 2. Providing methods to check if specific keys are pressed\n */\n\n/**\n * Type definition for keyboard keys\n */\n\n/**\n * Class responsible for tracking keyboard state\n */\nexport class KeyboardManager {\n pressedKeys = (() => new Set())();\n\n /**\n * Create a new KeyboardManager instance\n */\n constructor() {\n this.initialize();\n }\n\n /**\n * Initialize the keyboard event listeners\n */\n initialize() {\n if (typeof window === 'undefined') {\n return;\n }\n\n // Add keyboard event listeners\n window.addEventListener('keydown', this.handleKeyDown);\n window.addEventListener('keyup', this.handleKeyUp);\n // Reset keys when window loses focus\n window.addEventListener('blur', this.clearKeys);\n }\n\n /**\n * Handle keydown events\n */\n handleKeyDown = event => {\n this.pressedKeys.add(event.key);\n };\n\n /**\n * Handle keyup events\n */\n handleKeyUp = event => {\n this.pressedKeys.delete(event.key);\n };\n\n /**\n * Clear all pressed keys\n */\n clearKeys = () => {\n this.pressedKeys.clear();\n };\n\n /**\n * Check if a set of keys are all currently pressed\n * @param keys The keys to check\n * @returns True if all specified keys are pressed, false otherwise\n */\n areKeysPressed(keys) {\n if (!keys || keys.length === 0) {\n return true; // No keys required means the condition is satisfied\n }\n return keys.every(key => {\n if (key === 'ControlOrMeta') {\n // May be \"deprecated\" on types, but it is still the best option for cross-platform detection\n // https://stackoverflow.com/a/71785253/24269134\n return navigator.platform.includes('Mac') ? this.pressedKeys.has('Meta') : this.pressedKeys.has('Control');\n }\n return this.pressedKeys.has(key);\n });\n }\n\n /**\n * Cleanup method to remove event listeners\n */\n destroy() {\n if (typeof window !== 'undefined') {\n window.removeEventListener('keydown', this.handleKeyDown);\n window.removeEventListener('keyup', this.handleKeyUp);\n window.removeEventListener('blur', this.clearKeys);\n }\n this.clearKeys();\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PointerManager - Centralized manager for pointer events in the gesture recognition system\n *\n * This singleton class abstracts the complexity of working with pointer events by:\n * 1. Capturing and tracking all active pointers (touch, mouse, pen)\n * 2. Normalizing pointer data into a consistent format\n * 3. Managing pointer capture for proper tracking across elements\n * 4. Distributing events to registered gesture recognizers\n */\n\n/**\n * Normalized representation of a pointer, containing all relevant information\n * from the original PointerEvent plus additional tracking data.\n *\n * This data structure encapsulates everything gesture recognizers need to know\n * about a pointer's current state.\n */\n\n/**\n * Configuration options for initializing the PointerManager.\n */\n\n/**\n * Manager for handling pointer events across the application.\n *\n * PointerManager serves as the foundational layer for gesture recognition,\n * providing a centralized system for tracking active pointers and distributing\n * pointer events to gesture recognizers.\n *\n * It normalizes browser pointer events into a consistent format and simplifies\n * multi-touch handling by managing pointer capture and tracking multiple\n * simultaneous pointers.\n */\nexport class PointerManager {\n /** Root element where pointer events are captured */\n\n /** CSS touch-action property value applied to the root element */\n\n /** Whether to use passive event listeners */\n\n /** Whether to prevent interrupt events like blur or contextmenu */\n preventEventInterruption = true;\n\n /** Map of all currently active pointers by their pointerId */\n pointers = (() => new Map())();\n\n /** Set of registered gesture handlers that receive pointer events */\n gestureHandlers = (() => new Set())();\n constructor(options) {\n this.root =\n // User provided root element\n options.root ??\n // Fallback to document root or body, this fixes shadow DOM scenarios\n document.getRootNode({\n composed: true\n }) ??\n // Fallback to document body, for some testing environments\n document.body;\n this.touchAction = options.touchAction || 'auto';\n this.passive = options.passive ?? false;\n this.preventEventInterruption = options.preventEventInterruption ?? true;\n this.setupEventListeners();\n }\n\n /**\n * Register a handler function to receive pointer events.\n *\n * The handler will be called whenever pointer events occur within the root element.\n * It receives the current map of all active pointers and the original event.\n *\n * @param {Function} handler - Function to receive pointer events and current pointer state\n * @returns {Function} An unregister function that removes this handler when called\n */\n registerGestureHandler(handler) {\n this.gestureHandlers.add(handler);\n\n // Return unregister function\n return () => {\n this.gestureHandlers.delete(handler);\n };\n }\n\n /**\n * Get a copy of the current active pointers map.\n *\n * Returns a new Map containing all currently active pointers.\n * Modifying the returned map will not affect the internal pointers state.\n *\n * @returns A new Map containing all active pointers\n */\n getPointers() {\n return new Map(this.pointers);\n }\n\n /**\n * Set up event listeners for pointer events on the root element.\n *\n * This method attaches all necessary event listeners and configures\n * the CSS touch-action property on the root element.\n */\n setupEventListeners() {\n // Set touch-action CSS property\n if (this.touchAction !== 'auto') {\n this.root.style.touchAction = this.touchAction;\n }\n\n // Add event listeners\n this.root.addEventListener('pointerdown', this.handlePointerEvent, {\n passive: this.passive\n });\n this.root.addEventListener('pointermove', this.handlePointerEvent, {\n passive: this.passive\n });\n this.root.addEventListener('pointerup', this.handlePointerEvent, {\n passive: this.passive\n });\n this.root.addEventListener('pointercancel', this.handlePointerEvent, {\n passive: this.passive\n });\n // @ts-expect-error, forceCancel is not a standard event, but used for custom handling\n this.root.addEventListener('forceCancel', this.handlePointerEvent, {\n passive: this.passive\n });\n\n // Add blur and contextmenu event listeners to interrupt all gestures\n this.root.addEventListener('blur', this.handleInterruptEvents);\n this.root.addEventListener('contextmenu', this.handleInterruptEvents);\n }\n\n /**\n * Handle events that should interrupt all gestures.\n * This clears all active pointers and notifies handlers with a pointercancel-like event.\n *\n * @param event - The event that triggered the interruption (blur or contextmenu)\n */\n handleInterruptEvents = event => {\n if (this.preventEventInterruption && 'pointerType' in event && event.pointerType === 'touch') {\n event.preventDefault();\n return;\n }\n\n // Create a synthetic pointer cancel event\n const cancelEvent = new PointerEvent('forceCancel', {\n bubbles: false,\n cancelable: false\n });\n const firstPointer = this.pointers.values().next().value;\n if (this.pointers.size > 0 && firstPointer) {\n // If there are active pointers, use the first one as a template for coordinates\n\n // Update the synthetic event with the pointer's coordinates\n Object.defineProperties(cancelEvent, {\n clientX: {\n value: firstPointer.clientX\n },\n clientY: {\n value: firstPointer.clientY\n },\n pointerId: {\n value: firstPointer.pointerId\n },\n pointerType: {\n value: firstPointer.pointerType\n }\n });\n\n // Force update of all pointers to have type 'forceCancel'\n for (const [pointerId, pointer] of this.pointers.entries()) {\n const updatedPointer = _extends({}, pointer, {\n type: 'forceCancel'\n });\n this.pointers.set(pointerId, updatedPointer);\n }\n }\n\n // Notify all handlers about the interruption\n this.notifyHandlers(cancelEvent);\n\n // Clear all pointers\n this.pointers.clear();\n };\n\n /**\n * Event handler for all pointer events.\n *\n * This method:\n * 1. Updates the internal pointers map based on the event type\n * 2. Manages pointer capture for tracking pointers outside the root element\n * 3. Notifies all registered handlers with the current state\n *\n * @param event - The original pointer event from the browser\n */\n handlePointerEvent = event => {\n const {\n type,\n pointerId\n } = event;\n\n // Create or update pointer data\n if (type === 'pointerdown' || type === 'pointermove') {\n this.pointers.set(pointerId, this.createPointerData(event));\n }\n // Remove pointer data on up or cancel\n else if (type === 'pointerup' || type === 'pointercancel' || type === 'forceCancel') {\n // Update one last time before removing\n this.pointers.set(pointerId, this.createPointerData(event));\n\n // Notify handlers with current state\n this.notifyHandlers(event);\n\n // Then remove the pointer\n this.pointers.delete(pointerId);\n return;\n }\n this.notifyHandlers(event);\n };\n\n /**\n * Notify all registered gesture handlers about a pointer event.\n *\n * Each handler receives the current map of active pointers and the original event.\n *\n * @param event - The original pointer event that triggered this notification\n */\n notifyHandlers(event) {\n this.gestureHandlers.forEach(handler => handler(this.pointers, event));\n }\n\n /**\n * Create a normalized PointerData object from a browser PointerEvent.\n *\n * This method extracts all relevant information from the original event\n * and formats it in a consistent way for gesture recognizers to use.\n *\n * @param event - The original browser pointer event\n * @returns A new PointerData object representing this pointer\n */\n createPointerData(event) {\n return {\n pointerId: event.pointerId,\n clientX: event.clientX,\n clientY: event.clientY,\n pageX: event.pageX,\n pageY: event.pageY,\n target: event.target,\n timeStamp: event.timeStamp,\n type: event.type,\n isPrimary: event.isPrimary,\n pressure: event.pressure,\n width: event.width,\n height: event.height,\n pointerType: event.pointerType,\n srcEvent: event\n };\n }\n\n /**\n * Clean up all event listeners and reset the PointerManager state.\n *\n * This method should be called when the PointerManager is no longer needed\n * to prevent memory leaks. It removes all event listeners, clears the\n * internal state, and resets the singleton instance.\n */\n destroy() {\n this.root.removeEventListener('pointerdown', this.handlePointerEvent);\n this.root.removeEventListener('pointermove', this.handlePointerEvent);\n this.root.removeEventListener('pointerup', this.handlePointerEvent);\n this.root.removeEventListener('pointercancel', this.handlePointerEvent);\n // @ts-expect-error, forceCancel is not a standard event, but used for custom handling\n this.root.removeEventListener('forceCancel', this.handlePointerEvent);\n this.root.removeEventListener('blur', this.handleInterruptEvents);\n this.root.removeEventListener('contextmenu', this.handleInterruptEvents);\n this.pointers.clear();\n this.gestureHandlers.clear();\n }\n}","import { ActiveGesturesRegistry } from \"./ActiveGesturesRegistry.js\";\nimport { KeyboardManager } from \"./KeyboardManager.js\";\nimport { PointerManager } from \"./PointerManager.js\";\n\n/**\n * Configuration options for initializing the GestureManager\n */\n\n/**\n * The primary class responsible for setting up and managing gestures across multiple elements.\n *\n * GestureManager maintains a collection of gesture templates that can be instantiated for\n * specific DOM elements. It handles lifecycle management, event dispatching, and cleanup.\n *\n * @example\n * ```typescript\n * // Basic setup with default gestures\n * const manager = new GestureManager({\n * root: document.body,\n * touchAction: 'none',\n * gestures: [\n * new PanGesture({ name: 'pan' }),\n * ],\n * });\n *\n * // Register pan gestures on an element\n * const element = manager.registerElement('pan', document.querySelector('.draggable'));\n *\n * // Add event listeners with proper typing\n * element.addEventListener('panStart', (event) => {\n * console.log('Pan started');\n * });\n *\n * element.addEventListener('pan', (event) => {\n * console.log(`Pan delta: ${event.deltaX}, ${event.deltaY}`);\n * });\n *\n * // Custom gesture types\n * interface MyGestureEvents {\n * custom: { x: number, y: number }\n * }\n * const customManager = new GestureManager({\n * root: document.body\n * gestures: [\n * new CustomGesture({ name: 'custom' }),\n * ],\n * });\n * ```\n */\nexport class GestureManager {\n /** Repository of gesture templates that can be cloned for specific elements */\n gestureTemplates = (() => new Map())();\n\n /** Maps DOM elements to their active gesture instances */\n elementGestureMap = (() => new Map())();\n activeGesturesRegistry = (() => new ActiveGesturesRegistry())();\n keyboardManager = (() => new KeyboardManager())();\n\n /**\n * Create a new GestureManager instance to coordinate gesture recognition\n *\n * @param options - Configuration options for the gesture manager\n */\n constructor(options) {\n // Initialize the PointerManager\n this.pointerManager = new PointerManager({\n root: options.root,\n touchAction: options.touchAction,\n passive: options.passive\n });\n\n // Add initial gestures as templates if provided\n if (options.gestures && options.gestures.length > 0) {\n options.gestures.forEach(gesture => {\n this.addGestureTemplate(gesture);\n });\n }\n }\n\n /**\n * Add a gesture template to the manager's template registry.\n * Templates serve as prototypes that can be cloned for individual elements.\n *\n * @param gesture - The gesture instance to use as a template\n */\n addGestureTemplate(gesture) {\n if (this.gestureTemplates.has(gesture.name)) {\n console.warn(`Gesture template with name \"${gesture.name}\" already exists. It will be overwritten.`);\n }\n this.gestureTemplates.set(gesture.name, gesture);\n }\n\n /**\n * Updates the options for a specific gesture on a given element and emits a change event.\n *\n * @param gestureName - Name of the gesture whose options should be updated\n * @param element - The DOM element where the gesture is attached\n * @param options - New options to apply to the gesture\n * @returns True if the options were successfully updated, false if the gesture wasn't found\n *\n * @example\n * ```typescript\n * // Update pan gesture sensitivity on the fly\n * manager.setGestureOptions('pan', element, { threshold: 5 });\n * ```\n */\n setGestureOptions(gestureName, element, options) {\n const elementGestures = this.elementGestureMap.get(element);\n if (!elementGestures || !elementGestures.has(gestureName)) {\n console.error(`Gesture \"${gestureName}\" not found on the provided element.`);\n return;\n }\n const event = new CustomEvent(`${gestureName}ChangeOptions`, {\n detail: options,\n bubbles: false,\n cancelable: false,\n composed: false\n });\n element.dispatchEvent(event);\n }\n\n /**\n * Updates the state for a specific gesture on a given element and emits a change event.\n *\n * @param gestureName - Name of the gesture whose state should be updated\n * @param element - The DOM element where the gesture is attached\n * @param state - New state to apply to the gesture\n * @returns True if the state was successfully updated, false if the gesture wasn't found\n *\n * @example\n * ```typescript\n * // Update total delta for a turnWheel gesture\n * manager.setGestureState('turnWheel', element, { totalDeltaX: 10 });\n * ```\n */\n setGestureState(gestureName, element, state) {\n const elementGestures = this.elementGestureMap.get(element);\n if (!elementGestures || !elementGestures.has(gestureName)) {\n console.error(`Gesture \"${gestureName}\" not found on the provided element.`);\n return;\n }\n const event = new CustomEvent(`${gestureName}ChangeState`, {\n detail: state,\n bubbles: false,\n cancelable: false,\n composed: false\n });\n element.dispatchEvent(event);\n }\n\n /**\n * Register an element to recognize one or more gestures.\n *\n * This method clones the specified gesture template(s) and creates\n * gesture recognizer instance(s) specifically for the provided element.\n * The element is returned with enhanced TypeScript typing for gesture events.\n *\n * @param gestureNames - Name(s) of the gesture(s) to register (must match template names)\n * @param element - The DOM element to attach the gesture(s) to\n * @param options - Optional map of gesture-specific options to override when registering\n * @returns The same element with properly typed event listeners\n *\n * @example\n * ```typescript\n * // Register multiple gestures\n * const element = manager.registerElement(['pan', 'pinch'], myDiv);\n *\n * // Register a single gesture\n * const draggable = manager.registerElement('pan', dragHandle);\n *\n * // Register with customized options for each gesture\n * const customElement = manager.registerElement(\n * ['pan', 'pinch', 'rotate'],\n * myElement,\n * {\n * pan: { threshold: 20, direction: ['left', 'right'] },\n * pinch: { threshold: 0.1 }\n * }\n * );\n * ```\n */\n registerElement(gestureNames, element, options) {\n // Handle array of gesture names\n if (!Array.isArray(gestureNames)) {\n gestureNames = [gestureNames];\n }\n gestureNames.forEach(name => {\n const gestureOptions = options?.[name];\n this.registerSingleGesture(name, element, gestureOptions);\n });\n return element;\n }\n\n /**\n * Internal method to register a single gesture on an element.\n *\n * @param gestureName - Name of the gesture to register\n * @param element - DOM element to attach the gesture to\n * @param options - Optional options to override the gesture template configuration\n * @returns True if the registration was successful, false otherwise\n */\n registerSingleGesture(gestureName, element, options) {\n // Find the gesture template\n const gestureTemplate = this.gestureTemplates.get(gestureName);\n if (!gestureTemplate) {\n console.error(`Gesture template \"${gestureName}\" not found.`);\n return false;\n }\n\n // Create element's gesture map if it doesn't exist\n if (!this.elementGestureMap.has(element)) {\n this.elementGestureMap.set(element, new Map());\n }\n\n // Check if this element already has this gesture registered\n const elementGestures = this.elementGestureMap.get(element);\n if (elementGestures.has(gestureName)) {\n console.warn(`Element already has gesture \"${gestureName}\" registered. It will be replaced.`);\n // Unregister the existing gesture first\n this.unregisterElement(gestureName, element);\n }\n\n // Clone the gesture template and create a new instance with optional overrides\n // This allows each element to have its own state, event listeners, and configuration\n const gestureInstance = gestureTemplate.clone(options);\n gestureInstance.init(element, this.pointerManager, this.activeGesturesRegistry, this.keyboardManager);\n\n // Store the gesture in the element's gesture map\n elementGestures.set(gestureName, gestureInstance);\n return true;\n }\n\n /**\n * Unregister a specific gesture from an element.\n * This removes the gesture recognizer and stops event emission for that gesture.\n *\n * @param gestureName - Name of the gesture to unregister\n * @param element - The DOM element to remove the gesture from\n * @returns True if the gesture was found and removed, false otherwise\n */\n unregisterElement(gestureName, element) {\n const elementGestures = this.elementGestureMap.get(element);\n if (!elementGestures || !elementGestures.has(gestureName)) {\n return false;\n }\n\n // Destroy the gesture instance\n const gesture = elementGestures.get(gestureName);\n gesture.destroy();\n\n // Remove from the map\n elementGestures.delete(gestureName);\n this.activeGesturesRegistry.unregisterElement(element);\n\n // Remove the element from the map if it no longer has any gestures\n if (elementGestures.size === 0) {\n this.elementGestureMap.delete(element);\n }\n return true;\n }\n\n /**\n * Unregister all gestures from an element.\n * Completely removes the element from the gesture system.\n *\n * @param element - The DOM element to remove all gestures from\n */\n unregisterAllGestures(element) {\n const elementGestures = this.elementGestureMap.get(element);\n if (elementGestures) {\n // Unregister all gestures for this element\n for (const [, gesture] of elementGestures) {\n gesture.destroy();\n this.activeGesturesRegistry.unregisterElement(element);\n }\n\n // Clear the map\n this.elementGestureMap.delete(element);\n }\n }\n\n /**\n * Clean up all gestures and event listeners.\n * Call this method when the GestureManager is no longer needed to prevent memory leaks.\n */\n destroy() {\n // Unregister all element gestures\n for (const [element] of this.elementGestureMap) {\n this.unregisterAllGestures(element);\n }\n\n // Clear all templates\n this.gestureTemplates.clear();\n this.elementGestureMap.clear();\n this.activeGesturesRegistry.destroy();\n this.keyboardManager.destroy();\n this.pointerManager.destroy();\n }\n}","export const eventList = {\n abort: true,\n animationcancel: true,\n animationend: true,\n animationiteration: true,\n animationstart: true,\n auxclick: true,\n beforeinput: true,\n beforetoggle: true,\n blur: true,\n cancel: true,\n canplay: true,\n canplaythrough: true,\n change: true,\n click: true,\n close: true,\n compositionend: true,\n compositionstart: true,\n compositionupdate: true,\n contextlost: true,\n contextmenu: true,\n contextrestored: true,\n copy: true,\n cuechange: true,\n cut: true,\n dblclick: true,\n drag: true,\n dragend: true,\n dragenter: true,\n dragleave: true,\n dragover: true,\n dragstart: true,\n drop: true,\n durationchange: true,\n emptied: true,\n ended: true,\n error: true,\n focus: true,\n focusin: true,\n focusout: true,\n formdata: true,\n gotpointercapture: true,\n input: true,\n invalid: true,\n keydown: true,\n keypress: true,\n keyup: true,\n load: true,\n loadeddata: true,\n loadedmetadata: true,\n loadstart: true,\n lostpointercapture: true,\n mousedown: true,\n mouseenter: true,\n mouseleave: true,\n mousemove: true,\n mouseout: true,\n mouseover: true,\n mouseup: true,\n paste: true,\n pause: true,\n play: true,\n playing: true,\n pointercancel: true,\n pointerdown: true,\n pointerenter: true,\n pointerleave: true,\n pointermove: true,\n pointerout: true,\n pointerover: true,\n pointerup: true,\n progress: true,\n ratechange: true,\n reset: true,\n resize: true,\n scroll: true,\n scrollend: true,\n securitypolicyviolation: true,\n seeked: true,\n seeking: true,\n select: true,\n selectionchange: true,\n selectstart: true,\n slotchange: true,\n stalled: true,\n submit: true,\n suspend: true,\n timeupdate: true,\n toggle: true,\n touchcancel: true,\n touchend: true,\n touchmove: true,\n touchstart: true,\n transitioncancel: true,\n transitionend: true,\n transitionrun: true,\n transitionstart: true,\n volumechange: true,\n waiting: true,\n webkitanimationend: true,\n webkitanimationiteration: true,\n webkitanimationstart: true,\n webkittransitionend: true,\n wheel: true,\n beforematch: true,\n pointerrawupdate: true\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Base Gesture module that provides common functionality for all gesture implementations\n */\n\nimport { eventList } from \"./utils/eventList.js\";\n\n/**\n * The possible phases of a gesture during its lifecycle.\n *\n * - 'start': The gesture has been recognized and is beginning\n * - 'ongoing': The gesture is in progress (e.g., a finger is moving)\n * - 'end': The gesture has completed successfully\n * - 'cancel': The gesture was interrupted or terminated abnormally\n */\n\n/**\n * Core data structure passed to gesture event handlers.\n * Contains all relevant information about a gesture event.\n */\n\n/**\n * Defines the types of pointers that can trigger a gesture.\n */\n\n/**\n * Base configuration options that can be overridden per pointer mode.\n */\n\n/**\n * Configuration options for creating a gesture instance.\n */\n\n// eslint-disable-next-line no-underscore-dangle, @typescript-eslint/naming-convention\n\n/**\n * Type for the state of a gesture recognizer.\n */\n\n/**\n * Base abstract class for all gestures. This class provides the fundamental structure\n * and functionality for handling gestures, including registering and unregistering\n * gesture handlers, creating emitters, and managing gesture state.\n *\n * Gesture is designed as an extensible base for implementing specific gesture recognizers.\n * Concrete gesture implementations should extend this class or one of its subclasses.\n *\n * To implement:\n * - Non-pointer gestures (like wheel events): extend this Gesture class directly\n * - Pointer-based gestures: extend the PointerGesture class instead\n *\n * @example\n * ```ts\n * import { Gesture } from './Gesture';\n *\n * class CustomGesture extends Gesture {\n * constructor(options) {\n * super(options);\n * }\n *\n * clone(overrides) {\n * return new CustomGesture({\n * name: this.name,\n * // ... other options\n * ...overrides,\n * });\n * }\n * }\n * ```\n */\nexport class Gesture {\n /** Unique name identifying this gesture type */\n\n /** Whether to prevent default browser action for gesture events */\n\n /** Whether to stop propagation of gesture events */\n\n /**\n * List of gesture names that should prevent this gesture from activating when they are active.\n */\n\n /**\n * Array of keyboard keys that must be pressed for the gesture to be recognized.\n */\n\n /**\n * KeyboardManager instance for tracking key presses\n */\n\n /**\n * List of pointer types that can trigger this gesture.\n * If undefined, all pointer types are allowed.\n */\n\n /**\n * Pointer mode-specific configuration overrides.\n */\n\n /**\n * User-mutable data object for sharing state between gesture events\n * This object is included in all events emitted by this gesture\n */\n customData = {};\n\n /** Reference to the singleton PointerManager instance */\n\n /** Reference to the singleton ActiveGesturesRegistry instance */\n\n /** The DOM element this gesture is attached to */\n\n /** Stores the active gesture state */\n\n /** @internal For types. If false enables phases (xStart, x, xEnd) */\n\n /** @internal For types. The event type this gesture is associated with */\n\n /** @internal For types. The options type for this gesture */\n\n /** @internal For types. The options that can be changed at runtime */\n\n /** @internal For types. The state that can be changed at runtime */\n\n /**\n * Create a new gesture instance with the specified options\n *\n * @param options - Configuration options for this gesture\n */\n constructor(options) {\n if (!options || !options.name) {\n throw new Error('Gesture must be initialized with a valid name.');\n }\n if (options.name in eventList) {\n throw new Error(`Gesture can't be created with a native event name. Tried to use \"${options.name}\". Please use a custom name instead.`);\n }\n this.name = options.name;\n this.preventDefault = options.preventDefault ?? false;\n this.stopPropagation = options.stopPropagation ?? false;\n this.preventIf = options.preventIf ?? [];\n this.requiredKeys = options.requiredKeys ?? [];\n this.pointerMode = options.pointerMode ?? [];\n this.pointerOptions = options.pointerOptions ?? {};\n }\n\n /**\n * Initialize the gesture by acquiring the pointer manager and gestures registry\n * Must be called before the gesture can be used\n */\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n this.element = element;\n this.pointerManager = pointerManager;\n this.gesturesRegistry = gestureRegistry;\n this.keyboardManager = keyboardManager;\n const changeOptionsEventName = `${this.name}ChangeOptions`;\n this.element.addEventListener(changeOptionsEventName, this.handleOptionsChange);\n const changeStateEventName = `${this.name}ChangeState`;\n this.element.addEventListener(changeStateEventName, this.handleStateChange);\n }\n\n /**\n * Handle option change events\n * @param event Custom event with new options in the detail property\n */\n handleOptionsChange = event => {\n if (event && event.detail) {\n this.updateOptions(event.detail);\n }\n };\n\n /**\n * Update the gesture options with new values\n * @param options Object containing properties to update\n */\n updateOptions(options) {\n // Update common options\n this.preventDefault = options.preventDefault ?? this.preventDefault;\n this.stopPropagation = options.stopPropagation ?? this.stopPropagation;\n this.preventIf = options.preventIf ?? this.preventIf;\n this.requiredKeys = options.requiredKeys ?? this.requiredKeys;\n this.pointerMode = options.pointerMode ?? this.pointerMode;\n this.pointerOptions = options.pointerOptions ?? this.pointerOptions;\n }\n\n /**\n * Get the default configuration for the pointer specific options.\n * Change this function in child classes to provide different defaults.\n */\n getBaseConfig() {\n return {\n requiredKeys: this.requiredKeys\n };\n }\n\n /**\n * Get the effective configuration for a specific pointer mode.\n * This merges the base configuration with pointer mode-specific overrides.\n *\n * @param pointerType - The pointer type to get configuration for\n * @returns The effective configuration object\n */\n getEffectiveConfig(pointerType, baseConfig) {\n if (pointerType !== 'mouse' && pointerType !== 'touch' && pointerType !== 'pen') {\n // Unknown pointer type, return base config\n return baseConfig;\n }\n\n // Apply pointer mode-specific overrides\n const pointerModeOverrides = this.pointerOptions[pointerType];\n if (pointerModeOverrides) {\n return _extends({}, baseConfig, pointerModeOverrides);\n }\n return baseConfig;\n }\n\n /**\n * Handle state change events\n * @param event Custom event with new state values in the detail property\n */\n handleStateChange = event => {\n if (event && event.detail) {\n this.updateState(event.detail);\n }\n };\n\n /**\n * Update the gesture state with new values\n * @param stateChanges Object containing state properties to update\n */\n updateState(stateChanges) {\n // This is a base implementation - concrete gesture classes should override\n // to handle specific state updates based on their state structure\n Object.assign(this.state, stateChanges);\n }\n\n /**\n * Create a deep clone of this gesture for a new element\n *\n * @param overrides - Optional configuration options that override the defaults\n * @returns A new instance of this gesture with the same configuration and any overrides applied\n */\n\n /**\n * Check if the event's target is or is contained within any of our registered elements\n *\n * @param event - The browser event to check\n * @returns The matching element or null if no match is found\n */\n getTargetElement(event) {\n if (this.isActive || this.element === event.target || 'contains' in this.element && this.element.contains(event.target) || 'getRootNode' in this.element && this.element.getRootNode() instanceof ShadowRoot && event.composedPath().includes(this.element)) {\n return this.element;\n }\n return null;\n }\n\n /** Whether the gesture is currently active */\n set isActive(isActive) {\n if (isActive) {\n this.gesturesRegistry.registerActiveGesture(this.element, this);\n } else {\n this.gesturesRegistry.unregisterActiveGesture(this.element, this);\n }\n }\n\n /** Whether the gesture is currently active */\n get isActive() {\n return this.gesturesRegistry.isGestureActive(this.element, this) ?? false;\n }\n\n /**\n * Checks if this gesture should be prevented from activating.\n *\n * @param element - The DOM element to check against\n * @param pointerType - The type of pointer triggering the gesture\n * @returns true if the gesture should be prevented, false otherwise\n */\n shouldPreventGesture(element, pointerType) {\n // Get effective configuration for this pointer type\n const effectiveConfig = this.getEffectiveConfig(pointerType, this.getBaseConfig());\n\n // First check if required keyboard keys are pressed\n if (!this.keyboardManager.areKeysPressed(effectiveConfig.requiredKeys)) {\n return true; // Prevent the gesture if required keys are not pressed\n }\n if (this.preventIf.length === 0) {\n return false; // No prevention rules, allow the gesture\n }\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Check if any of the gestures that would prevent this one are active\n return this.preventIf.some(gestureName => activeGestures[gestureName]);\n }\n\n /**\n * Checks if the given pointer type is allowed for this gesture based on the pointerMode setting.\n *\n * @param pointerType - The type of pointer to check.\n * @returns true if the pointer type is allowed, false otherwise.\n */\n isPointerTypeAllowed(pointerType) {\n // If no pointer mode is specified, all pointer types are allowed\n if (!this.pointerMode || this.pointerMode.length === 0) {\n return true;\n }\n\n // Check if the pointer type is in the allowed types list\n return this.pointerMode.includes(pointerType);\n }\n\n /**\n * Clean up the gesture and unregister any listeners\n * Call this method when the gesture is no longer needed to prevent memory leaks\n */\n destroy() {\n const changeOptionsEventName = `${this.name}ChangeOptions`;\n this.element.removeEventListener(changeOptionsEventName, this.handleOptionsChange);\n const changeStateEventName = `${this.name}ChangeState`;\n this.element.removeEventListener(changeStateEventName, this.handleStateChange);\n }\n\n /**\n * Reset the gesture state to its initial values\n */\n}","import { Gesture } from \"./Gesture.js\";\n\n/**\n * Base configuration options that can be overridden per pointer mode.\n */\n\n/**\n * Configuration options for pointer-based gestures, extending the base GestureOptions.\n *\n * These options provide fine-grained control over how pointer events are interpreted\n * and when the gesture should be recognized.\n */\n\n/**\n * Base class for all pointer-based gestures.\n *\n * This class extends the base Gesture class with specialized functionality for\n * handling pointer events via the PointerManager. It provides common logic for\n * determining when a gesture should activate, tracking pointer movements, and\n * managing pointer thresholds.\n *\n * All pointer-based gesture implementations should extend this class rather than\n * the base Gesture class.\n *\n * @example\n * ```ts\n * import { PointerGesture } from './PointerGesture';\n *\n * class CustomGesture extends PointerGesture {\n * constructor(options) {\n * super(options);\n * }\n *\n * clone(overrides) {\n * return new CustomGesture({\n * name: this.name,\n * // ... other options\n * ...overrides,\n * });\n * }\n *\n * handlePointerEvent = (pointers, event) => {\n * // Handle pointer events here\n * }\n * }\n * ```\n */\nexport class PointerGesture extends Gesture {\n /** Function to unregister from the PointerManager when destroying this gesture */\n unregisterHandler = null;\n\n /** The original target element when the gesture began, used to prevent limbo state if target is removed */\n originalTarget = null;\n\n /**\n * Minimum number of simultaneous pointers required to activate the gesture.\n * The gesture will not start until at least this many pointers are active.\n */\n\n /**\n * Maximum number of simultaneous pointers allowed for this gesture.\n * If more than this many pointers are detected, the gesture may be canceled.\n */\n\n constructor(options) {\n super(options);\n this.minPointers = options.minPointers ?? 1;\n this.maxPointers = options.maxPointers ?? Infinity;\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.unregisterHandler = this.pointerManager.registerGestureHandler(this.handlePointerEvent);\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.minPointers = options.minPointers ?? this.minPointers;\n this.maxPointers = options.maxPointers ?? this.maxPointers;\n }\n getBaseConfig() {\n return {\n requiredKeys: this.requiredKeys,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers\n };\n }\n isWithinPointerCount(pointers, pointerMode) {\n const config = this.getEffectiveConfig(pointerMode, this.getBaseConfig());\n return pointers.length >= config.minPointers && pointers.length <= config.maxPointers;\n }\n\n /**\n * Handler for pointer events from the PointerManager.\n * Concrete gesture implementations must override this method to provide\n * gesture-specific logic for recognizing and tracking the gesture.\n *\n * @param pointers - Map of active pointers by pointer ID\n * @param event - The original pointer event from the browser\n */\n\n /**\n * Calculate the target element for the gesture based on the active pointers.\n *\n * It takes into account the original target element.\n *\n * @param pointers - Map of active pointers by pointer ID\n * @param calculatedTarget - The target element calculated from getTargetElement\n * @returns A list of relevant pointers for this gesture\n */\n getRelevantPointers(pointers, calculatedTarget) {\n return pointers.filter(pointer => this.isPointerTypeAllowed(pointer.pointerType) && (calculatedTarget === pointer.target || pointer.target === this.originalTarget || calculatedTarget === this.originalTarget || 'contains' in calculatedTarget && calculatedTarget.contains(pointer.target)) || 'getRootNode' in calculatedTarget && calculatedTarget.getRootNode() instanceof ShadowRoot && pointer.srcEvent.composedPath().includes(calculatedTarget));\n }\n destroy() {\n if (this.unregisterHandler) {\n this.unregisterHandler();\n this.unregisterHandler = null;\n }\n super.destroy();\n }\n}","/**\n * Calculate the centroid (average position) of multiple pointers\n */\nexport function calculateCentroid(pointers) {\n if (pointers.length === 0) {\n return {\n x: 0,\n y: 0\n };\n }\n const sum = pointers.reduce((acc, pointer) => {\n acc.x += pointer.clientX;\n acc.y += pointer.clientY;\n return acc;\n }, {\n x: 0,\n y: 0\n });\n return {\n x: sum.x / pointers.length,\n y: sum.y / pointers.length\n };\n}","const MAIN_THRESHOLD = 0.00001;\nconst ANGLE_THRESHOLD = 0.00001;\nconst SECONDARY_THRESHOLD = 0.15;\n\n/**\n * Get the direction of movement based on the current and previous positions\n */\nexport function getDirection(previous, current) {\n const deltaX = current.x - previous.x;\n const deltaY = current.y - previous.y;\n const direction = {\n vertical: null,\n horizontal: null,\n mainAxis: null\n };\n const isDiagonal = isDiagonalMovement(current, previous);\n const mainMovement = Math.abs(deltaX) > Math.abs(deltaY) ? 'horizontal' : 'vertical';\n\n // eslint-disable-next-line no-nested-ternary\n const horizontalThreshold = isDiagonal ? MAIN_THRESHOLD : mainMovement === 'horizontal' ? MAIN_THRESHOLD : SECONDARY_THRESHOLD;\n // eslint-disable-next-line no-nested-ternary\n const verticalThreshold = isDiagonal ? MAIN_THRESHOLD : mainMovement === 'horizontal' ? SECONDARY_THRESHOLD : MAIN_THRESHOLD;\n\n // Set horizontal direction if there's a significant movement horizontally\n if (Math.abs(deltaX) > horizontalThreshold) {\n // Small threshold to avoid noise\n direction.horizontal = deltaX > 0 ? 'right' : 'left';\n }\n\n // Set vertical direction if there's a significant movement vertically\n if (Math.abs(deltaY) > verticalThreshold) {\n // Small threshold to avoid noise\n direction.vertical = deltaY > 0 ? 'down' : 'up';\n }\n direction.mainAxis = isDiagonal ? 'diagonal' : mainMovement;\n return direction;\n}\nfunction isDiagonalMovement(previous, current) {\n const deltaX = current.x - previous.x;\n const deltaY = current.y - previous.y;\n\n // Calculate the angle of movement\n const angle = Math.atan2(deltaY, deltaX) * 180 / Math.PI;\n\n // Check if the angle is within the diagonal range\n return angle >= -45 + ANGLE_THRESHOLD && angle <= -22.5 + ANGLE_THRESHOLD || angle >= 22.5 + ANGLE_THRESHOLD && angle <= 45 + ANGLE_THRESHOLD || angle >= 135 + ANGLE_THRESHOLD && angle <= 157.5 + ANGLE_THRESHOLD || angle >= -157.5 + ANGLE_THRESHOLD && angle <= -135 + ANGLE_THRESHOLD;\n}","/**\n * Creates the event name for a specific gesture and phase\n */\nexport function createEventName(gesture, phase) {\n return `${gesture}${phase === 'ongoing' ? '' : phase.charAt(0).toUpperCase() + phase.slice(1)}`;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PanGesture - Detects panning (dragging) movements\n *\n * This gesture tracks pointer dragging movements across elements, firing events when:\n * - The drag movement begins and passes the threshold distance (start)\n * - The drag movement continues (ongoing)\n * - The drag movement ends (end)\n *\n * The gesture can be configured to recognize movement only in specific directions.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName, getDirection, isDirectionAllowed } from \"../utils/index.js\";\n\n/**\n * Configuration options for PanGesture\n * Extends PointerGestureOptions with direction constraints\n */\n\n/**\n * Event data specific to pan gesture events\n * Contains information about movement distance, direction, and velocity\n */\n\n/**\n * Type definition for the CustomEvent created by PanGesture\n */\n\n/**\n * State tracking for the PanGesture\n */\n\n/**\n * PanGesture class for handling panning/dragging interactions\n *\n * This gesture detects when users drag across elements with one or more pointers,\n * and dispatches directional movement events with delta and velocity information.\n */\nexport class PanGesture extends PointerGesture {\n state = (() => ({\n startPointers: new Map(),\n startCentroid: null,\n lastCentroid: null,\n movementThresholdReached: false,\n totalDeltaX: 0,\n totalDeltaY: 0,\n activeDeltaX: 0,\n activeDeltaY: 0,\n lastDirection: {\n vertical: null,\n horizontal: null,\n mainAxis: null\n },\n lastDeltas: null\n }))();\n\n /**\n * Movement threshold in pixels that must be exceeded before the gesture activates.\n * Higher values reduce false positive gesture detection for small movements.\n */\n\n /**\n * Allowed directions for the pan gesture\n * Default allows all directions\n */\n\n constructor(options) {\n super(options);\n this.direction = options.direction || ['up', 'down', 'left', 'right'];\n this.threshold = options.threshold || 0;\n }\n clone(overrides) {\n return new PanGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n threshold: this.threshold,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n direction: [...this.direction],\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n destroy() {\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.direction = options.direction || this.direction;\n this.threshold = options.threshold ?? this.threshold;\n }\n resetState() {\n this.isActive = false;\n this.state = _extends({}, this.state, {\n startPointers: new Map(),\n startCentroid: null,\n lastCentroid: null,\n lastDeltas: null,\n activeDeltaX: 0,\n activeDeltaY: 0,\n movementThresholdReached: false,\n lastDirection: {\n vertical: null,\n horizontal: null,\n mainAxis: null\n }\n });\n }\n\n /**\n * Handle pointer events for the pan gesture\n */\n handlePointerEvent = (pointers, event) => {\n const pointersArray = Array.from(pointers.values());\n\n // Check for our forceCancel event to handle interrupted gestures (from contextmenu, blur)\n if (event.type === 'forceCancel') {\n // Reset all active pan gestures when we get a force reset event\n this.cancel(event.target, pointersArray, event);\n return;\n }\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(targetElement, event.pointerType)) {\n // If the gesture was active but now should be prevented, cancel it gracefully\n this.cancel(targetElement, pointersArray, event);\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n if (!this.isWithinPointerCount(relevantPointers, event.pointerType)) {\n // Cancel or end the gesture if it was active\n this.cancel(targetElement, relevantPointers, event);\n return;\n }\n switch (event.type) {\n case 'pointerdown':\n if (!this.isActive && !this.state.startCentroid) {\n // Store initial pointers\n relevantPointers.forEach(pointer => {\n this.state.startPointers.set(pointer.pointerId, pointer);\n });\n\n // Store the original target element\n this.originalTarget = targetElement;\n\n // Calculate and store the starting centroid\n this.state.startCentroid = calculateCentroid(relevantPointers);\n this.state.lastCentroid = _extends({}, this.state.startCentroid);\n } else if (this.state.startCentroid && this.state.lastCentroid) {\n // A new pointer was added during an active gesture\n // Adjust the start centroid to prevent jumping\n const oldCentroid = this.state.lastCentroid;\n const newCentroid = calculateCentroid(relevantPointers);\n\n // Calculate the offset that the new pointer would cause\n const offsetX = newCentroid.x - oldCentroid.x;\n const offsetY = newCentroid.y - oldCentroid.y;\n\n // Adjust start centroid to compensate for the new pointer\n this.state.startCentroid = {\n x: this.state.startCentroid.x + offsetX,\n y: this.state.startCentroid.y + offsetY\n };\n this.state.lastCentroid = newCentroid;\n\n // Add the new pointer to tracked pointers\n relevantPointers.forEach(pointer => {\n if (!this.state.startPointers.has(pointer.pointerId)) {\n this.state.startPointers.set(pointer.pointerId, pointer);\n }\n });\n }\n break;\n case 'pointermove':\n if (this.state.startCentroid && this.isWithinPointerCount(pointersArray, event.pointerType)) {\n // Calculate current centroid\n const currentCentroid = calculateCentroid(relevantPointers);\n\n // Calculate delta from start\n const distanceDeltaX = currentCentroid.x - this.state.startCentroid.x;\n const distanceDeltaY = currentCentroid.y - this.state.startCentroid.y;\n\n // Calculate movement distance\n const distance = Math.sqrt(distanceDeltaX * distanceDeltaX + distanceDeltaY * distanceDeltaY);\n\n // Determine movement direction\n const moveDirection = getDirection(this.state.lastCentroid ?? this.state.startCentroid, currentCentroid);\n\n // Calculate change in position since last move\n const lastDeltaX = this.state.lastCentroid ? currentCentroid.x - this.state.lastCentroid.x : 0;\n const lastDeltaY = this.state.lastCentroid ? currentCentroid.y - this.state.lastCentroid.y : 0;\n\n // Check if movement passes the threshold and is in an allowed direction\n if (!this.state.movementThresholdReached && distance >= this.threshold && isDirectionAllowed(moveDirection, this.direction)) {\n this.state.movementThresholdReached = true;\n this.isActive = true;\n\n // Update total accumulated delta\n this.state.lastDeltas = {\n x: lastDeltaX,\n y: lastDeltaY\n };\n this.state.totalDeltaX += lastDeltaX;\n this.state.totalDeltaY += lastDeltaY;\n this.state.activeDeltaX += lastDeltaX;\n this.state.activeDeltaY += lastDeltaY;\n\n // Emit start event\n this.emitPanEvent(targetElement, 'start', relevantPointers, event, currentCentroid);\n this.emitPanEvent(targetElement, 'ongoing', relevantPointers, event, currentCentroid);\n }\n // If we've already crossed the threshold, continue tracking\n else if (this.state.movementThresholdReached && this.isActive) {\n // Update total accumulated delta\n this.state.lastDeltas = {\n x: lastDeltaX,\n y: lastDeltaY\n };\n this.state.totalDeltaX += lastDeltaX;\n this.state.totalDeltaY += lastDeltaY;\n this.state.activeDeltaX += lastDeltaX;\n this.state.activeDeltaY += lastDeltaY;\n\n // Emit ongoing event\n this.emitPanEvent(targetElement, 'ongoing', relevantPointers, event, currentCentroid);\n }\n\n // Update last centroid\n this.state.lastCentroid = currentCentroid;\n this.state.lastDirection = moveDirection;\n }\n break;\n case 'pointerup':\n case 'pointercancel':\n case 'forceCancel':\n // If the gesture was active (threshold was reached), emit end event\n if (this.isActive && this.state.movementThresholdReached) {\n const remainingPointers = relevantPointers.filter(p => p.type !== 'pointerup' && p.type !== 'pointercancel');\n\n // If we no longer meet the pointer count requirements, end the gesture\n if (!this.isWithinPointerCount(remainingPointers, event.pointerType)) {\n // End the gesture\n const currentCentroid = this.state.lastCentroid || this.state.startCentroid;\n if (event.type === 'pointercancel') {\n this.emitPanEvent(targetElement, 'cancel', relevantPointers, event, currentCentroid);\n }\n this.emitPanEvent(targetElement, 'end', relevantPointers, event, currentCentroid);\n this.resetState();\n } else if (remainingPointers.length >= 1 && this.state.lastCentroid) {\n // If we still have enough pointers, adjust the centroid\n // to prevent jumping when a finger is lifted\n const newCentroid = calculateCentroid(remainingPointers);\n\n // Calculate the offset that removing the pointer would cause\n const offsetX = newCentroid.x - this.state.lastCentroid.x;\n const offsetY = newCentroid.y - this.state.lastCentroid.y;\n\n // Adjust start centroid to compensate\n this.state.startCentroid = {\n x: this.state.startCentroid.x + offsetX,\n y: this.state.startCentroid.y + offsetY\n };\n this.state.lastCentroid = newCentroid;\n\n // Remove the pointer from tracked pointers\n const removedPointerId = relevantPointers.find(p => p.type === 'pointerup' || p.type === 'pointercancel')?.pointerId;\n if (removedPointerId !== undefined) {\n this.state.startPointers.delete(removedPointerId);\n }\n }\n } else {\n this.resetState();\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * Emit pan-specific events with additional data\n */\n emitPanEvent(element, phase, pointers, event, currentCentroid) {\n if (!this.state.startCentroid) {\n return;\n }\n const deltaX = this.state.lastDeltas?.x ?? 0;\n const deltaY = this.state.lastDeltas?.y ?? 0;\n\n // Calculate velocity - time difference in seconds\n const firstPointer = this.state.startPointers.values().next().value;\n const timeElapsed = firstPointer ? (event.timeStamp - firstPointer.timeStamp) / 1000 : 0;\n const velocityX = timeElapsed > 0 ? deltaX / timeElapsed : 0;\n const velocityY = timeElapsed > 0 ? deltaY / timeElapsed : 0;\n const velocity = Math.sqrt(velocityX * velocityX + velocityY * velocityY);\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n initialCentroid: this.state.startCentroid,\n centroid: currentCentroid,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n deltaX,\n deltaY,\n direction: this.state.lastDirection,\n velocityX,\n velocityY,\n velocity,\n totalDeltaX: this.state.totalDeltaX,\n totalDeltaY: this.state.totalDeltaY,\n activeDeltaX: this.state.activeDeltaX,\n activeDeltaY: this.state.activeDeltaY,\n activeGestures,\n customData: this.customData\n };\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n\n // Apply preventDefault/stopPropagation if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n /**\n * Cancel the current gesture\n */\n cancel(element, pointers, event) {\n if (this.isActive) {\n const el = element ?? this.element;\n this.emitPanEvent(el, 'cancel', pointers, event, this.state.lastCentroid);\n this.emitPanEvent(el, 'end', pointers, event, this.state.lastCentroid);\n }\n this.resetState();\n }\n}","/**\n * Check if a direction matches one of the allowed directions\n */\nexport function isDirectionAllowed(direction, allowedDirections) {\n if (!direction.vertical && !direction.horizontal) {\n return false;\n }\n if (allowedDirections.length === 0) {\n return true;\n }\n\n // Check if the vertical direction is allowed (if it exists)\n const verticalAllowed = direction.vertical === null || allowedDirections.includes(direction.vertical);\n\n // Check if the horizontal direction is allowed (if it exists)\n const horizontalAllowed = direction.horizontal === null || allowedDirections.includes(direction.horizontal);\n\n // Both directions must be allowed\n return verticalAllowed && horizontalAllowed;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * MoveGesture - Detects when a pointer enters, moves within, and leaves an element\n *\n * This gesture tracks pointer movements over an element, firing events when:\n * - A pointer enters the element (start)\n * - A pointer moves within the element (ongoing)\n * - A pointer leaves the element (end)\n *\n * Unlike other gestures which often require specific actions to trigger,\n * the move gesture fires automatically when pointers interact with the target element.\n *\n * This gesture only works with mouse pointers, not touch or pen.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for the MoveGesture\n * Extends the base PointerGestureOptions\n */\n\n/**\n * Event data specific to move gesture events\n * Includes the source pointer event and standard gesture data\n */\n\n/**\n * Type definition for the CustomEvent created by MoveGesture\n */\n\n/**\n * State tracking for the MoveGesture\n */\n\n/**\n * MoveGesture class for handling pointer movement over elements\n *\n * This gesture detects when pointers enter, move within, or leave target elements,\n * and dispatches corresponding custom events.\n *\n * This gesture only works with hovering mouse pointers, not touch.\n */\nexport class MoveGesture extends PointerGesture {\n state = {\n lastPosition: null\n };\n\n /**\n * Movement threshold in pixels that must be exceeded before the gesture activates.\n * Higher values reduce false positive gesture detection for small movements.\n */\n\n constructor(options) {\n super(options);\n this.threshold = options.threshold || 0;\n }\n clone(overrides) {\n return new MoveGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n threshold: this.threshold,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n\n // Add event listeners for entering and leaving elements\n // These are different from pointer events handled by PointerManager\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener('pointerenter', this.handleElementEnter);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener('pointerleave', this.handleElementLeave);\n }\n destroy() {\n // Remove event listeners using the same function references\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener('pointerenter', this.handleElementEnter);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener('pointerleave', this.handleElementLeave);\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n // Call parent method to handle common options\n super.updateOptions(options);\n }\n resetState() {\n this.isActive = false;\n this.state = {\n lastPosition: null\n };\n }\n\n /**\n * Handle pointer enter events for a specific element\n * @param event The original pointer event\n */\n handleElementEnter = event => {\n if (event.pointerType !== 'mouse' && event.pointerType !== 'pen') {\n return;\n }\n\n // Get pointers from the PointerManager\n const pointers = this.pointerManager.getPointers() || new Map();\n const pointersArray = Array.from(pointers.values());\n\n // Only activate if we're within pointer count constraints\n if (this.isWithinPointerCount(pointersArray, event.pointerType)) {\n this.isActive = true;\n const currentPosition = {\n x: event.clientX,\n y: event.clientY\n };\n this.state.lastPosition = currentPosition;\n\n // Emit start event\n this.emitMoveEvent(this.element, 'start', pointersArray, event);\n this.emitMoveEvent(this.element, 'ongoing', pointersArray, event);\n }\n };\n\n /**\n * Handle pointer leave events for a specific element\n * @param event The original pointer event\n */\n handleElementLeave = event => {\n if (event.pointerType !== 'mouse' && event.pointerType !== 'pen') {\n return;\n }\n if (!this.isActive) {\n return;\n }\n\n // Get pointers from the PointerManager\n const pointers = this.pointerManager.getPointers() || new Map();\n const pointersArray = Array.from(pointers.values());\n\n // Emit end event and reset state\n this.emitMoveEvent(this.element, 'end', pointersArray, event);\n this.resetState();\n };\n\n /**\n * Handle pointer events for the move gesture (only handles move events now)\n * @param pointers Map of active pointers\n * @param event The original pointer event\n */\n handlePointerEvent = (pointers, event) => {\n if (event.type !== 'pointermove' || event.pointerType !== 'mouse' && event.pointerType !== 'pen') {\n return;\n }\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n const pointersArray = Array.from(pointers.values());\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n if (!this.isWithinPointerCount(pointersArray, event.pointerType)) {\n return;\n }\n if (this.shouldPreventGesture(targetElement, event.pointerType)) {\n if (!this.isActive) {\n return;\n }\n this.resetState();\n this.emitMoveEvent(targetElement, 'end', pointersArray, event);\n return;\n }\n\n // Update position\n const currentPosition = {\n x: event.clientX,\n y: event.clientY\n };\n this.state.lastPosition = currentPosition;\n if (!this.isActive) {\n this.isActive = true;\n this.emitMoveEvent(targetElement, 'start', pointersArray, event);\n }\n // Emit ongoing event\n this.emitMoveEvent(targetElement, 'ongoing', pointersArray, event);\n };\n\n /**\n * Emit move-specific events\n * @param element The DOM element the event is related to\n * @param phase The current phase of the gesture (start, ongoing, end)\n * @param pointers Array of active pointers\n * @param event The original pointer event\n */\n emitMoveEvent(element, phase, pointers, event) {\n const currentPosition = this.state.lastPosition || calculateCentroid(pointers);\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n centroid: currentPosition,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n activeGestures,\n customData: this.customData\n };\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * TapGesture - Detects tap (quick touch without movement) gestures\n *\n * This gesture tracks simple tap interactions on elements, firing a single event when:\n * - A complete tap is detected (pointerup after brief touch without excessive movement)\n * - The tap is canceled (event.g., moved too far or held too long)\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for TapGesture\n * Extends PointerGestureOptions with tap-specific settings\n */\n\n/**\n * Event data specific to tap gesture events\n * Contains information about the tap location and counts\n */\n\n/**\n * Type definition for the CustomEvent created by TapGesture\n */\n\n/**\n * State tracking for the TapGesture\n */\n\n/**\n * TapGesture class for handling tap interactions\n *\n * This gesture detects when users tap on elements without significant movement,\n * and can recognize single taps, double taps, or other multi-tap sequences.\n */\nexport class TapGesture extends PointerGesture {\n state = {\n startCentroid: null,\n currentTapCount: 0,\n lastTapTime: 0,\n lastPosition: null\n };\n\n /**\n * Maximum distance a pointer can move for a gesture to still be considered a tap\n */\n\n /**\n * Number of consecutive taps to detect\n */\n\n constructor(options) {\n super(options);\n this.maxDistance = options.maxDistance ?? 10;\n this.taps = options.taps ?? 1;\n }\n clone(overrides) {\n return new TapGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n maxDistance: this.maxDistance,\n taps: this.taps,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n destroy() {\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.maxDistance = options.maxDistance ?? this.maxDistance;\n this.taps = options.taps ?? this.taps;\n }\n resetState() {\n this.isActive = false;\n this.state = {\n startCentroid: null,\n currentTapCount: 0,\n lastTapTime: 0,\n lastPosition: null\n };\n }\n\n /**\n * Handle pointer events for the tap gesture\n */\n handlePointerEvent = (pointers, event) => {\n const pointersArray = Array.from(pointers.values());\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n if (this.shouldPreventGesture(targetElement, event.pointerType) || !this.isWithinPointerCount(relevantPointers, event.pointerType)) {\n if (this.isActive) {\n // Cancel the gesture if it was active\n this.cancelTap(targetElement, relevantPointers, event);\n }\n return;\n }\n switch (event.type) {\n case 'pointerdown':\n if (!this.isActive) {\n // Calculate and store the starting centroid\n this.state.startCentroid = calculateCentroid(relevantPointers);\n this.state.lastPosition = _extends({}, this.state.startCentroid);\n this.isActive = true;\n\n // Store the original target element\n this.originalTarget = targetElement;\n }\n break;\n case 'pointermove':\n if (this.isActive && this.state.startCentroid) {\n // Calculate current position\n const currentPosition = calculateCentroid(relevantPointers);\n this.state.lastPosition = currentPosition;\n\n // Calculate distance from start position\n const deltaX = currentPosition.x - this.state.startCentroid.x;\n const deltaY = currentPosition.y - this.state.startCentroid.y;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n // If moved too far, cancel the tap gesture\n if (distance > this.maxDistance) {\n this.cancelTap(targetElement, relevantPointers, event);\n }\n }\n break;\n case 'pointerup':\n if (this.isActive) {\n // For valid tap: increment tap count\n this.state.currentTapCount += 1;\n\n // Make sure we have a valid position before firing the tap event\n const position = this.state.lastPosition || this.state.startCentroid;\n if (!position) {\n this.cancelTap(targetElement, relevantPointers, event);\n return;\n }\n\n // Check if we've reached the desired number of taps\n if (this.state.currentTapCount >= this.taps) {\n // The complete tap sequence has been detected - fire the tap event\n this.fireTapEvent(targetElement, relevantPointers, event, position);\n\n // Reset state after successful tap\n this.resetState();\n } else {\n // Store the time of this tap for multi-tap detection\n this.state.lastTapTime = event.timeStamp;\n\n // Reset active state but keep the tap count for multi-tap detection\n this.isActive = false;\n\n // For multi-tap detection: keep track of the last tap position\n // but clear the start centroid to prepare for next tap\n this.state.startCentroid = null;\n\n // Start a timeout to reset the tap count if the next tap doesn't come soon enough\n setTimeout(() => {\n if (this.state && this.state.currentTapCount > 0 && this.state.currentTapCount < this.taps) {\n this.state.currentTapCount = 0;\n }\n }, 300); // 300ms is a typical double-tap detection window\n }\n }\n break;\n case 'pointercancel':\n case 'forceCancel':\n // Cancel the gesture\n this.cancelTap(targetElement, relevantPointers, event);\n break;\n default:\n break;\n }\n };\n\n /**\n * Fire the main tap event when a valid tap is detected\n */\n fireTapEvent(element, pointers, event, position) {\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data for the tap event\n const customEventData = {\n gestureName: this.name,\n centroid: position,\n target: event.target,\n srcEvent: event,\n phase: 'end',\n // The tap is complete, so we use 'end' state for the event data\n pointers,\n timeStamp: event.timeStamp,\n x: position.x,\n y: position.y,\n tapCount: this.state.currentTapCount,\n activeGestures,\n customData: this.customData\n };\n\n // Dispatch a single 'tap' event (not 'tapStart', 'tapEnd', etc.)\n const domEvent = new CustomEvent(this.name, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n\n // Apply preventDefault/stopPropagation if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n /**\n * Cancel the current tap gesture\n */\n cancelTap(element, pointers, event) {\n if (this.state.startCentroid || this.state.lastPosition) {\n const position = this.state.lastPosition || this.state.startCentroid;\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data for the cancel event\n const customEventData = {\n gestureName: this.name,\n centroid: position,\n target: event.target,\n srcEvent: event,\n phase: 'cancel',\n pointers,\n timeStamp: event.timeStamp,\n x: position.x,\n y: position.y,\n tapCount: this.state.currentTapCount,\n activeGestures,\n customData: this.customData\n };\n\n // Dispatch a 'tapCancel' event\n const eventName = createEventName(this.name, 'cancel');\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n }\n this.resetState();\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PressGesture - Detects press and hold interactions\n *\n * This gesture tracks when users press and hold on an element for a specified duration, firing events when:\n * - The press begins and passes the holding threshold time (start, ongoing)\n * - The press ends (end)\n * - The press is canceled by movement beyond threshold (cancel)\n *\n * This gesture is commonly used for contextual menus, revealing additional options, or alternate actions.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for PressGesture\n * Extends PointerGestureOptions with press-specific options\n */\n\n/**\n * Event data specific to press gesture events\n * Contains information about the press location and duration\n */\n\n/**\n * Type definition for the CustomEvent created by PressGesture\n */\n\n/**\n * State tracking for the PressGesture\n */\n\n/**\n * PressGesture class for handling press/hold interactions\n *\n * This gesture detects when users press and hold on an element for a specified duration,\n * and dispatches press-related events when the user holds long enough.\n *\n * The `start` and `ongoing` events are dispatched at the same time once the press threshold is reached.\n * If the press is canceled (event.g., by moving too far), a `cancel` event is dispatched before the `end` event.\n */\nexport class PressGesture extends PointerGesture {\n state = {\n startCentroid: null,\n lastPosition: null,\n timerId: null,\n startTime: 0,\n pressThresholdReached: false\n };\n\n /**\n * Duration in milliseconds required to hold before the press gesture is recognized\n */\n\n /**\n * Maximum distance a pointer can move for a gesture to still be considered a press\n */\n\n constructor(options) {\n super(options);\n this.duration = options.duration ?? 500;\n this.maxDistance = options.maxDistance ?? 10;\n }\n clone(overrides) {\n return new PressGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n duration: this.duration,\n maxDistance: this.maxDistance,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n destroy() {\n this.clearPressTimer();\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.duration = options.duration ?? this.duration;\n this.maxDistance = options.maxDistance ?? this.maxDistance;\n }\n resetState() {\n this.clearPressTimer();\n this.isActive = false;\n this.state = _extends({}, this.state, {\n startCentroid: null,\n lastPosition: null,\n timerId: null,\n startTime: 0,\n pressThresholdReached: false\n });\n }\n\n /**\n * Clear the press timer if it's active\n */\n clearPressTimer() {\n if (this.state.timerId !== null) {\n clearTimeout(this.state.timerId);\n this.state.timerId = null;\n }\n }\n\n /**\n * Handle pointer events for the press gesture\n */\n handlePointerEvent = (pointers, event) => {\n const pointersArray = Array.from(pointers.values());\n\n // Check for our forceCancel event to handle interrupted gestures (from contextmenu, blur)\n if (event.type === 'forceCancel') {\n // Reset all active press gestures when we get a force reset event\n this.cancelPress(event.target, pointersArray, event);\n return;\n }\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(targetElement, event.pointerType)) {\n if (this.isActive) {\n // If the gesture was active but now should be prevented, cancel it gracefully\n this.cancelPress(targetElement, pointersArray, event);\n }\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n if (!this.isWithinPointerCount(relevantPointers, event.pointerType)) {\n if (this.isActive) {\n // Cancel or end the gesture if it was active\n this.cancelPress(targetElement, relevantPointers, event);\n }\n return;\n }\n switch (event.type) {\n case 'pointerdown':\n if (!this.isActive && !this.state.startCentroid) {\n // Calculate and store the starting centroid\n this.state.startCentroid = calculateCentroid(relevantPointers);\n this.state.lastPosition = _extends({}, this.state.startCentroid);\n this.state.startTime = event.timeStamp;\n this.isActive = true;\n\n // Store the original target element\n this.originalTarget = targetElement;\n\n // Start the timer for press recognition\n this.clearPressTimer(); // Clear any existing timer first\n this.state.timerId = setTimeout(() => {\n if (this.isActive && this.state.startCentroid) {\n this.state.pressThresholdReached = true;\n const lastPosition = this.state.lastPosition;\n\n // Emit press start event\n this.emitPressEvent(targetElement, 'start', relevantPointers, event, lastPosition);\n this.emitPressEvent(targetElement, 'ongoing', relevantPointers, event, lastPosition);\n }\n }, this.duration);\n }\n break;\n case 'pointermove':\n if (this.isActive && this.state.startCentroid) {\n // Calculate current position\n const currentPosition = calculateCentroid(relevantPointers);\n this.state.lastPosition = currentPosition;\n\n // Calculate distance from start position\n const deltaX = currentPosition.x - this.state.startCentroid.x;\n const deltaY = currentPosition.y - this.state.startCentroid.y;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n // If moved too far, cancel the press gesture\n if (distance > this.maxDistance) {\n this.cancelPress(targetElement, relevantPointers, event);\n }\n }\n break;\n case 'pointerup':\n if (this.isActive) {\n if (this.state.pressThresholdReached) {\n // Complete the press gesture if we've held long enough\n const position = this.state.lastPosition || this.state.startCentroid;\n this.emitPressEvent(targetElement, 'end', relevantPointers, event, position);\n }\n\n // Reset state\n this.resetState();\n }\n break;\n case 'pointercancel':\n case 'forceCancel':\n // Cancel the gesture\n this.cancelPress(targetElement, relevantPointers, event);\n break;\n default:\n break;\n }\n };\n\n /**\n * Emit press-specific events with additional data\n */\n emitPressEvent(element, phase, pointers, event, position) {\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Calculate current duration of the press\n const currentDuration = event.timeStamp - this.state.startTime;\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n centroid: position,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n x: position.x,\n y: position.y,\n duration: currentDuration,\n activeGestures,\n customData: this.customData\n };\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n\n // Apply preventDefault/stopPropagation if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n /**\n * Cancel the current press gesture\n */\n cancelPress(element, pointers, event) {\n if (this.isActive && this.state.pressThresholdReached) {\n const position = this.state.lastPosition || this.state.startCentroid;\n this.emitPressEvent(element ?? this.element, 'cancel', pointers, event, position);\n this.emitPressEvent(element ?? this.element, 'end', pointers, event, position);\n }\n this.resetState();\n }\n}","/**\n * Calculate the distance between two points\n */\nexport function getDistance(pointA, pointB) {\n const deltaX = pointB.x - pointA.x;\n const deltaY = pointB.y - pointA.y;\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n}","import { getDistance } from \"./getDistance.js\";\n\n/**\n * Calculate the average distance between all pairs of pointers\n */\nexport function calculateAverageDistance(pointers) {\n if (pointers.length < 2) {\n return 0;\n }\n let totalDistance = 0;\n let pairCount = 0;\n\n // Calculate distance between each pair of pointers\n for (let i = 0; i < pointers.length; i += 1) {\n for (let j = i + 1; j < pointers.length; j += 1) {\n totalDistance += getDistance({\n x: pointers[i].clientX,\n y: pointers[i].clientY\n }, {\n x: pointers[j].clientX,\n y: pointers[j].clientY\n });\n pairCount += 1;\n }\n }\n\n // Return average distance\n return pairCount > 0 ? totalDistance / pairCount : 0;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PinchGesture - Detects pinch (zoom) movements with two or more pointers\n *\n * This gesture tracks when multiple pointers move toward or away from each other, firing events when:\n * - Two or more pointers begin moving (start)\n * - The pointers continue changing distance (ongoing)\n * - One or more pointers are released or lifted (end)\n *\n * This gesture is commonly used to implement zoom functionality in touch interfaces.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateAverageDistance, calculateCentroid, createEventName, getPinchDirection } from \"../utils/index.js\";\n\n/**\n * Configuration options for the PinchGesture\n * Uses the same options as the base PointerGesture\n */\n\n/**\n * Event data specific to pinch gesture events\n * Contains information about scale, distance, and velocity\n */\n\n/**\n * Type definition for the CustomEvent created by PinchGesture\n */\n\n/**\n * State tracking for the PinchGesture\n */\n\n/**\n * PinchGesture class for handling pinch/zoom interactions\n *\n * This gesture detects when users move multiple pointers toward or away from each other,\n * and dispatches scale-related events with distance and velocity information.\n */\nexport class PinchGesture extends PointerGesture {\n state = {\n startDistance: 0,\n lastDistance: 0,\n lastScale: 1,\n lastTime: 0,\n velocity: 0,\n totalScale: 1,\n deltaScale: 0\n };\n\n /**\n * Movement threshold in pixels that must be exceeded before the gesture activates.\n * Higher values reduce false positive gesture detection for small movements.\n */\n\n constructor(options) {\n super(_extends({}, options, {\n minPointers: options.minPointers ?? 2\n }));\n this.threshold = options.threshold ?? 0;\n }\n clone(overrides) {\n return new PinchGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n threshold: this.threshold,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n destroy() {\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n }\n resetState() {\n this.isActive = false;\n this.state = _extends({}, this.state, {\n startDistance: 0,\n lastDistance: 0,\n lastScale: 1,\n lastTime: 0,\n velocity: 0,\n deltaScale: 0\n });\n }\n\n /**\n * Handle pointer events for the pinch gesture\n */\n handlePointerEvent = (pointers, event) => {\n const pointersArray = Array.from(pointers.values());\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(targetElement, event.pointerType)) {\n if (this.isActive) {\n // If the gesture was active but now should be prevented, end it gracefully\n this.emitPinchEvent(targetElement, 'cancel', pointersArray, event);\n this.resetState();\n }\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n switch (event.type) {\n case 'pointerdown':\n if (relevantPointers.length >= 2 && !this.isActive) {\n // Calculate and store the starting distance between pointers\n const initialDistance = calculateAverageDistance(relevantPointers);\n this.state.startDistance = initialDistance;\n this.state.lastDistance = initialDistance;\n this.state.lastTime = event.timeStamp;\n\n // Store the original target element\n this.originalTarget = targetElement;\n } else if (this.isActive && relevantPointers.length >= 2) {\n // A new pointer was added during an active gesture\n // Adjust the start distance to prevent jumping (similar to pointer removal logic)\n const newDistance = calculateAverageDistance(relevantPointers);\n // Adjust startDistance so that the current scale is preserved\n this.state.startDistance = newDistance / this.state.lastScale;\n this.state.lastDistance = newDistance;\n this.state.lastTime = event.timeStamp;\n }\n break;\n case 'pointermove':\n if (this.state.startDistance && this.isWithinPointerCount(relevantPointers, event.pointerType)) {\n // Calculate current distance between pointers\n const currentDistance = calculateAverageDistance(relevantPointers);\n\n // Calculate absolute distance change\n const distanceChange = Math.abs(currentDistance - this.state.lastDistance);\n\n // Only proceed if the distance between pointers has changed enough\n if (distanceChange !== 0 && distanceChange >= this.threshold) {\n // Calculate scale relative to starting distance\n const scale = this.state.startDistance ? currentDistance / this.state.startDistance : 1;\n\n // Calculate the relative scale change since last event\n const scaleChange = scale / this.state.lastScale;\n // Apply this change to the total accumulated scale\n this.state.totalScale *= scaleChange;\n // Calculate velocity (change in scale over time)\n const deltaTime = (event.timeStamp - this.state.lastTime) / 1000; // convert to seconds\n if (this.state.lastDistance) {\n const deltaDistance = currentDistance - this.state.lastDistance;\n const result = deltaDistance / deltaTime;\n this.state.velocity = Number.isNaN(result) ? 0 : result;\n }\n\n // Update state\n this.state.lastDistance = currentDistance;\n this.state.deltaScale = scale - this.state.lastScale;\n this.state.lastScale = scale;\n this.state.lastTime = event.timeStamp;\n if (!this.isActive) {\n // Mark gesture as active\n this.isActive = true;\n\n // Emit start event\n this.emitPinchEvent(targetElement, 'start', relevantPointers, event);\n this.emitPinchEvent(targetElement, 'ongoing', relevantPointers, event);\n } else {\n // Emit ongoing event\n this.emitPinchEvent(targetElement, 'ongoing', relevantPointers, event);\n }\n }\n }\n break;\n case 'pointerup':\n case 'pointercancel':\n case 'forceCancel':\n if (this.isActive) {\n const remainingPointers = relevantPointers.filter(p => p.type !== 'pointerup' && p.type !== 'pointercancel');\n\n // If we no longer meet the pointer count requirements, end the gesture\n if (!this.isWithinPointerCount(remainingPointers, event.pointerType)) {\n if (event.type === 'pointercancel') {\n this.emitPinchEvent(targetElement, 'cancel', relevantPointers, event);\n }\n this.emitPinchEvent(targetElement, 'end', relevantPointers, event);\n\n // Reset state\n this.resetState();\n } else if (remainingPointers.length >= 2) {\n // If we still have enough pointers, update the start distance\n // to prevent jumping when a finger is lifted\n const newDistance = calculateAverageDistance(remainingPointers);\n this.state.startDistance = newDistance / this.state.lastScale;\n this.state.lastDistance = newDistance;\n this.state.lastTime = event.timeStamp;\n }\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * Emit pinch-specific events with additional data\n */\n emitPinchEvent(element, phase, pointers, event) {\n // Calculate current centroid\n const centroid = calculateCentroid(pointers);\n\n // Create custom event data\n const distance = this.state.lastDistance;\n const scale = this.state.lastScale;\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n const customEventData = {\n gestureName: this.name,\n centroid,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n scale,\n deltaScale: this.state.deltaScale,\n totalScale: this.state.totalScale,\n distance,\n velocity: this.state.velocity,\n activeGestures,\n direction: getPinchDirection(this.state.velocity),\n customData: this.customData\n };\n\n // Handle default event behavior\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n }\n}","const DIRECTION_THRESHOLD = 0;\nexport const getPinchDirection = velocity => {\n if (velocity > DIRECTION_THRESHOLD) {\n return 1; // Zooming in\n }\n if (velocity < -DIRECTION_THRESHOLD) {\n return -1; // Zooming out\n }\n return 0; // No significant movement\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * TurnWheelGesture - Detects wheel events on an element\n *\n * This gesture tracks mouse wheel or touchpad scroll events on elements, firing events when:\n * - The user scrolls/wheels on the element (ongoing)\n *\n * Unlike other gestures which may have start/ongoing/end states,\n * wheel gestures are always considered \"ongoing\" since they are discrete events.\n */\n\nimport { Gesture } from \"../Gesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for the TurnWheelGesture\n * Uses the base gesture options with additional wheel-specific options\n */\n\n/**\n * Event data specific to wheel gesture events\n * Contains information about scroll delta amounts and mode\n */\n\n/**\n * Type definition for the CustomEvent created by TurnWheelGesture\n */\n\n/**\n * State tracking for the TurnWheelGesture\n */\n\n/**\n * TurnWheelGesture class for handling wheel/scroll interactions\n *\n * This gesture detects when users scroll or use the mouse wheel on elements,\n * and dispatches corresponding scroll events with delta information.\n * Unlike most gestures, it extends directly from Gesture rather than PointerGesture.\n */\nexport class TurnWheelGesture extends Gesture {\n state = {\n totalDeltaX: 0,\n totalDeltaY: 0,\n totalDeltaZ: 0\n };\n\n /**\n * Scaling factor for delta values\n * Values > 1 increase sensitivity, values < 1 decrease sensitivity\n */\n\n /**\n * Maximum value for totalDelta values\n * Limits how large the accumulated wheel deltas can be\n */\n\n /**\n * Minimum value for totalDelta values\n * Sets a lower bound for accumulated wheel deltas\n */\n\n /**\n * Initial value for totalDelta values\n * Sets the starting value for delta trackers\n */\n\n /**\n * Whether to invert the direction of delta changes\n * When true, reverses the sign of deltaX, deltaY, and deltaZ values\n */\n\n constructor(options) {\n super(options);\n this.sensitivity = options.sensitivity ?? 1;\n this.max = options.max ?? Number.MAX_SAFE_INTEGER;\n this.min = options.min ?? Number.MIN_SAFE_INTEGER;\n this.initialDelta = options.initialDelta ?? 0;\n this.invert = options.invert ?? false;\n this.state.totalDeltaX = this.initialDelta;\n this.state.totalDeltaY = this.initialDelta;\n this.state.totalDeltaZ = this.initialDelta;\n }\n clone(overrides) {\n return new TurnWheelGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n sensitivity: this.sensitivity,\n max: this.max,\n min: this.min,\n initialDelta: this.initialDelta,\n invert: this.invert,\n requiredKeys: [...this.requiredKeys],\n preventIf: [...this.preventIf]\n }, overrides));\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n\n // Add event listener directly to the element\n // @ts-expect-error, WheelEvent is correct.\n this.element.addEventListener('wheel', this.handleWheelEvent);\n }\n destroy() {\n // Remove the element-specific event listener\n // @ts-expect-error, WheelEvent is correct.\n this.element.removeEventListener('wheel', this.handleWheelEvent);\n this.resetState();\n super.destroy();\n }\n resetState() {\n this.isActive = false;\n this.state = {\n totalDeltaX: 0,\n totalDeltaY: 0,\n totalDeltaZ: 0\n };\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.sensitivity = options.sensitivity ?? this.sensitivity;\n this.max = options.max ?? this.max;\n this.min = options.min ?? this.min;\n this.initialDelta = options.initialDelta ?? this.initialDelta;\n this.invert = options.invert ?? this.invert;\n }\n\n /**\n * Handle wheel events for a specific element\n * @param element The element that received the wheel event\n * @param event The original wheel event\n */\n handleWheelEvent = event => {\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(this.element, 'mouse')) {\n return;\n }\n\n // Get pointers from the PointerManager to use for centroid calculation\n const pointers = this.pointerManager.getPointers() || new Map();\n const pointersArray = Array.from(pointers.values());\n\n // Update total deltas with scaled values\n this.state.totalDeltaX += event.deltaX * this.sensitivity * (this.invert ? -1 : 1);\n this.state.totalDeltaY += event.deltaY * this.sensitivity * (this.invert ? -1 : 1);\n this.state.totalDeltaZ += event.deltaZ * this.sensitivity * (this.invert ? -1 : 1);\n\n // Apply proper min/max clamping for each axis\n // Ensure values stay between min and max bounds\n ['totalDeltaX', 'totalDeltaY', 'totalDeltaZ'].forEach(axis => {\n // First clamp at the minimum bound\n if (this.state[axis] < this.min) {\n this.state[axis] = this.min;\n }\n\n // Then clamp at the maximum bound\n if (this.state[axis] > this.max) {\n this.state[axis] = this.max;\n }\n });\n\n // Emit the wheel event\n this.emitWheelEvent(pointersArray, event);\n };\n\n /**\n * Emit wheel-specific events\n * @param pointers The current pointers on the element\n * @param event The original wheel event\n */\n emitWheelEvent(pointers, event) {\n // Calculate centroid - either from existing pointers or from the wheel event position\n const centroid = pointers.length > 0 ? calculateCentroid(pointers) : {\n x: event.clientX,\n y: event.clientY\n };\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(this.element);\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n centroid,\n target: event.target,\n srcEvent: event,\n phase: 'ongoing',\n // Wheel events are always in \"ongoing\" state\n pointers,\n timeStamp: event.timeStamp,\n deltaX: event.deltaX * this.sensitivity * (this.invert ? -1 : 1),\n deltaY: event.deltaY * this.sensitivity * (this.invert ? -1 : 1),\n deltaZ: event.deltaZ * this.sensitivity * (this.invert ? -1 : 1),\n deltaMode: event.deltaMode,\n totalDeltaX: this.state.totalDeltaX,\n totalDeltaY: this.state.totalDeltaY,\n totalDeltaZ: this.state.totalDeltaZ,\n activeGestures,\n customData: this.customData\n };\n\n // Apply default event behavior if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n\n // Event names to trigger\n const eventName = createEventName(this.name, 'ongoing');\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: customEventData\n });\n this.element.dispatchEvent(domEvent);\n }\n}","export const preventDefault = event => {\n if (event.cancelable) {\n event.preventDefault();\n }\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * TapAndDragGesture - Detects tap followed by drag gestures using composition\n *\n * This gesture uses internal TapGesture and PanGesture instances to:\n * 1. First, detect a tap (quick touch without movement)\n * 2. Then, track drag movements on the next pointer down\n *\n * The gesture fires events when:\n * - A tap is completed (tap phase)\n * - Drag movement begins and passes threshold (dragStart)\n * - Drag movement continues (drag)\n * - Drag movement ends (dragEnd)\n * - The gesture is canceled at any point\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { createEventName, preventDefault } from \"../utils/index.js\";\nimport { PanGesture } from \"./PanGesture.js\";\nimport { TapGesture } from \"./TapGesture.js\";\n\n/**\n * Configuration options for TapAndDragGesture\n * Extends PointerGestureOptions with tap and drag specific settings\n */\n\n/**\n * Event data specific to tap and drag gesture events\n * Contains information about the gesture state, position, and movement\n */\n\n/**\n * Type definition for the CustomEvent created by TapAndDragGesture\n */\n\n/**\n * Represents the current phase of the TapAndDrag gesture\n */\n\n/**\n * State tracking for the TapAndDragGesture\n */\n\n/**\n * TapAndDragGesture class for handling tap followed by drag interactions\n *\n * This gesture composes tap and drag logic patterns from TapGesture and PanGesture\n * into a single coordinated gesture that handles tap-then-drag interactions.\n */\nexport class TapAndDragGesture extends PointerGesture {\n state = {\n phase: 'waitingForTap',\n dragTimeoutId: null\n };\n\n /**\n * Maximum distance a pointer can move during tap for it to still be considered a tap\n * (Following TapGesture pattern)\n */\n\n /**\n * Maximum time between tap completion and drag start\n */\n\n /**\n * Movement threshold for drag activation\n */\n\n /**\n * Allowed directions for the drag gesture\n */\n\n constructor(options) {\n super(options);\n this.tapMaxDistance = options.tapMaxDistance ?? 10;\n this.dragTimeout = options.dragTimeout ?? 1000;\n this.dragThreshold = options.dragThreshold ?? 0;\n this.dragDirection = options.dragDirection || ['up', 'down', 'left', 'right'];\n this.tapGesture = new TapGesture({\n name: `${this.name}-tap`,\n maxDistance: this.tapMaxDistance,\n maxPointers: this.maxPointers,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n });\n this.panGesture = new PanGesture({\n name: `${this.name}-pan`,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n threshold: this.dragThreshold,\n direction: this.dragDirection,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n });\n }\n clone(overrides) {\n return new TapAndDragGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n tapMaxDistance: this.tapMaxDistance,\n dragTimeout: this.dragTimeout,\n dragThreshold: this.dragThreshold,\n dragDirection: [...this.dragDirection],\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.tapGesture.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.panGesture.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.element.addEventListener(this.tapGesture.name, this.tapHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}Start`, this.dragStartHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(this.panGesture.name, this.dragMoveHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}End`, this.dragEndHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}Cancel`, this.dragEndHandler);\n }\n destroy() {\n this.resetState();\n this.tapGesture.destroy();\n this.panGesture.destroy();\n this.element.removeEventListener(this.tapGesture.name, this.tapHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}Start`, this.dragStartHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(this.panGesture.name, this.dragMoveHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}End`, this.dragEndHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}Cancel`, this.dragEndHandler);\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.tapMaxDistance = options.tapMaxDistance ?? this.tapMaxDistance;\n this.dragTimeout = options.dragTimeout ?? this.dragTimeout;\n this.dragThreshold = options.dragThreshold ?? this.dragThreshold;\n this.dragDirection = options.dragDirection || this.dragDirection;\n this.element.dispatchEvent(new CustomEvent(`${this.panGesture.name}ChangeOptions`, {\n detail: {\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n threshold: this.dragThreshold,\n direction: this.dragDirection,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n }\n }));\n this.element.dispatchEvent(new CustomEvent(`${this.tapGesture.name}ChangeOptions`, {\n detail: {\n maxDistance: this.tapMaxDistance,\n maxPointers: this.maxPointers,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n }\n }));\n }\n resetState() {\n if (this.state.dragTimeoutId !== null) {\n clearTimeout(this.state.dragTimeoutId);\n }\n this.restoreTouchAction();\n this.isActive = false;\n this.state = {\n phase: 'waitingForTap',\n dragTimeoutId: null\n };\n }\n\n /**\n * This can be empty because the TapAndDragGesture relies on TapGesture and PanGesture to handle pointer events\n * The internal gestures will manage their own state and events, while this class coordinates between them\n */\n handlePointerEvent() {}\n tapHandler = () => {\n if (this.state.phase !== 'waitingForTap') {\n return;\n }\n this.state.phase = 'tapDetected';\n this.setTouchAction();\n\n // Start timeout to wait for drag start\n this.state.dragTimeoutId = setTimeout(() => {\n // Timeout expired, reset gesture\n this.resetState();\n }, this.dragTimeout);\n };\n dragStartHandler = event => {\n if (this.state.phase !== 'tapDetected') {\n return;\n }\n\n // Clear the drag timeout as drag has started\n if (this.state.dragTimeoutId !== null) {\n clearTimeout(this.state.dragTimeoutId);\n this.state.dragTimeoutId = null;\n }\n this.restoreTouchAction();\n this.state.phase = 'dragging';\n this.isActive = true;\n\n // Fire start event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n dragMoveHandler = event => {\n if (this.state.phase !== 'dragging') {\n return;\n }\n\n // Fire move event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n dragEndHandler = event => {\n if (this.state.phase !== 'dragging') {\n return;\n }\n this.resetState();\n\n // Fire end event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n setTouchAction() {\n this.element.addEventListener('touchstart', preventDefault, {\n passive: false\n });\n }\n restoreTouchAction() {\n this.element.removeEventListener('touchstart', preventDefault);\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PressAndDragGesture - Detects press followed by drag gestures using composition\n *\n * This gesture uses internal PressGesture and PanGesture instances to:\n * 1. First, detect a press (hold for specified duration without movement)\n * 2. Then, track drag movements from the press position\n *\n * The gesture fires events when:\n * - A press is completed (press phase)\n * - Drag movement begins and passes threshold (dragStart)\n * - Drag movement continues (drag)\n * - Drag movement ends (dragEnd)\n * - The gesture is canceled at any point\n *\n * This is ideal for panning operations where you want to hold first, then drag.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { createEventName, preventDefault } from \"../utils/index.js\";\nimport { PanGesture } from \"./PanGesture.js\";\nimport { PressGesture } from \"./PressGesture.js\";\n\n/**\n * Configuration options for PressAndDragGesture\n * Extends PointerGestureOptions with press and drag specific settings\n */\n\n/**\n * Event data specific to press and drag gesture events\n * Contains information about the gesture state, position, and movement\n */\n\n/**\n * Type definition for the CustomEvent created by PressAndDragGesture\n */\n\n/**\n * Represents the current phase of the PressAndDrag gesture\n */\n\n/**\n * State tracking for the PressAndDragGesture\n */\n\n/**\n * PressAndDragGesture class for handling press followed by drag interactions\n *\n * This gesture composes press and drag logic patterns from PressGesture and PanGesture\n * into a single coordinated gesture that handles press-then-drag interactions.\n */\nexport class PressAndDragGesture extends PointerGesture {\n state = {\n phase: 'waitingForPress',\n dragTimeoutId: null\n };\n\n /**\n * Duration required for press recognition\n */\n\n /**\n * Maximum distance a pointer can move during press for it to still be considered a press\n */\n\n /**\n * Maximum time between press completion and drag start\n */\n\n /**\n * Movement threshold for drag activation\n */\n\n /**\n * Allowed directions for the drag gesture\n */\n\n constructor(options) {\n super(options);\n this.pressDuration = options.pressDuration ?? 500;\n this.pressMaxDistance = options.pressMaxDistance ?? 10;\n this.dragTimeout = options.dragTimeout ?? 1000;\n this.dragThreshold = options.dragThreshold ?? 0;\n this.dragDirection = options.dragDirection || ['up', 'down', 'left', 'right'];\n this.pressGesture = new PressGesture({\n name: `${this.name}-press`,\n duration: this.pressDuration,\n maxDistance: this.pressMaxDistance,\n maxPointers: this.maxPointers,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n });\n this.panGesture = new PanGesture({\n name: `${this.name}-pan`,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n threshold: this.dragThreshold,\n direction: this.dragDirection,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n });\n }\n clone(overrides) {\n return new PressAndDragGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n pressDuration: this.pressDuration,\n pressMaxDistance: this.pressMaxDistance,\n dragTimeout: this.dragTimeout,\n dragThreshold: this.dragThreshold,\n dragDirection: [...this.dragDirection],\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf],\n pointerOptions: structuredClone(this.pointerOptions)\n }, overrides));\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.pressGesture.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.panGesture.init(element, pointerManager, gestureRegistry, keyboardManager);\n\n // Listen to press gesture events\n this.element.addEventListener(this.pressGesture.name, this.pressHandler);\n\n // Listen to pan gesture events for dragging\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}Start`, this.dragStartHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(this.panGesture.name, this.dragMoveHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}End`, this.dragEndHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener(`${this.panGesture.name}Cancel`, this.dragEndHandler);\n }\n destroy() {\n this.resetState();\n this.pressGesture.destroy();\n this.panGesture.destroy();\n this.element.removeEventListener(this.pressGesture.name, this.pressHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}Start`, this.dragStartHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(this.panGesture.name, this.dragMoveHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}End`, this.dragEndHandler);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener(`${this.panGesture.name}Cancel`, this.dragEndHandler);\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.pressDuration = options.pressDuration ?? this.pressDuration;\n this.pressMaxDistance = options.pressMaxDistance ?? this.pressMaxDistance;\n this.dragTimeout = options.dragTimeout ?? this.dragTimeout;\n this.dragThreshold = options.dragThreshold ?? this.dragThreshold;\n this.dragDirection = options.dragDirection || this.dragDirection;\n\n // Update internal gesture options\n this.element.dispatchEvent(new CustomEvent(`${this.panGesture.name}ChangeOptions`, {\n detail: {\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n threshold: this.dragThreshold,\n direction: this.dragDirection,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n }\n }));\n this.element.dispatchEvent(new CustomEvent(`${this.pressGesture.name}ChangeOptions`, {\n detail: {\n duration: this.pressDuration,\n maxDistance: this.pressMaxDistance,\n maxPointers: this.maxPointers,\n pointerMode: this.pointerMode,\n requiredKeys: this.requiredKeys,\n preventIf: this.preventIf,\n pointerOptions: structuredClone(this.pointerOptions)\n }\n }));\n }\n resetState() {\n if (this.state.dragTimeoutId !== null) {\n clearTimeout(this.state.dragTimeoutId);\n }\n this.restoreTouchAction();\n this.isActive = false;\n this.state = {\n phase: 'waitingForPress',\n dragTimeoutId: null\n };\n }\n\n /**\n * This can be empty because the PressAndDragGesture relies on PressGesture and PanGesture to handle pointer events\n * The internal gestures will manage their own state and events, while this class coordinates between them\n */\n handlePointerEvent() {}\n pressHandler = () => {\n if (this.state.phase !== 'waitingForPress') {\n return;\n }\n this.state.phase = 'pressDetected';\n this.setTouchAction();\n\n // Start timeout to wait for drag start\n this.state.dragTimeoutId = setTimeout(() => {\n // Timeout expired, reset gesture\n this.resetState();\n }, this.dragTimeout);\n };\n dragStartHandler = event => {\n if (this.state.phase !== 'pressDetected') {\n return;\n }\n\n // Clear the drag timeout as drag has started\n if (this.state.dragTimeoutId !== null) {\n clearTimeout(this.state.dragTimeoutId);\n this.state.dragTimeoutId = null;\n }\n\n // Restore touch action since we're now dragging\n this.restoreTouchAction();\n this.state.phase = 'dragging';\n this.isActive = true;\n\n // Fire start event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n dragMoveHandler = event => {\n if (this.state.phase !== 'dragging') {\n return;\n }\n\n // Fire move event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n dragEndHandler = event => {\n if (this.state.phase !== 'dragging') {\n return;\n }\n this.resetState();\n\n // Fire end event\n this.element.dispatchEvent(new CustomEvent(createEventName(this.name, event.detail.phase), event));\n };\n setTouchAction() {\n this.element.addEventListener('touchstart', preventDefault, {\n passive: false\n });\n this.element.addEventListener('touchmove', preventDefault, {\n passive: false\n });\n this.element.addEventListener('touchend', preventDefault, {\n passive: false\n });\n }\n restoreTouchAction() {\n this.element.removeEventListener('touchstart', preventDefault);\n this.element.removeEventListener('touchmove', preventDefault);\n this.element.removeEventListener('touchend', preventDefault);\n }\n}","'use client';\n\nimport * as React from 'react';\nimport { GestureManager, MoveGesture, PanGesture, PinchGesture, PressAndDragGesture, PressGesture, TapAndDragGesture, TapGesture, TurnWheelGesture } from '@mui/x-internal-gestures/core';\nconst preventDefault = event => event.preventDefault();\nexport const useChartInteractionListener = ({\n svgRef\n}) => {\n const gestureManagerRef = React.useRef(null);\n React.useEffect(() => {\n const svg = svgRef.current;\n if (!gestureManagerRef.current) {\n gestureManagerRef.current = new GestureManager({\n gestures: [\n // We separate the zoom gestures from the gestures that are not zoom related\n // This allows us to configure the zoom gestures based on the zoom configuration.\n new PanGesture({\n name: 'pan',\n threshold: 0,\n maxPointers: 1\n }), new MoveGesture({\n name: 'move',\n preventIf: ['pan', 'zoomPinch', 'zoomPan']\n }), new TapGesture({\n name: 'tap',\n preventIf: ['pan', 'zoomPinch', 'zoomPan']\n }), new PressGesture({\n name: 'quickPress',\n duration: 50\n }), new PanGesture({\n name: 'brush',\n threshold: 0,\n maxPointers: 1\n }),\n // Zoom gestures\n new PanGesture({\n name: 'zoomPan',\n threshold: 0,\n preventIf: ['zoomTapAndDrag', 'zoomPressAndDrag']\n }), new PinchGesture({\n name: 'zoomPinch',\n threshold: 5\n }), new TurnWheelGesture({\n name: 'zoomTurnWheel',\n sensitivity: 0.01,\n initialDelta: 1\n }), new TurnWheelGesture({\n name: 'panTurnWheel',\n sensitivity: 0.5\n }), new TapAndDragGesture({\n name: 'zoomTapAndDrag',\n dragThreshold: 10\n }), new PressAndDragGesture({\n name: 'zoomPressAndDrag',\n dragThreshold: 10,\n preventIf: ['zoomPinch']\n }), new TapGesture({\n name: 'zoomDoubleTapReset',\n taps: 2\n })]\n });\n }\n\n // Assign gesture manager after initialization\n const gestureManager = gestureManagerRef.current;\n if (!svg || !gestureManager) {\n return undefined;\n }\n gestureManager.registerElement(['pan', 'move', 'zoomPinch', 'zoomPan', 'zoomTurnWheel', 'panTurnWheel', 'tap', 'quickPress', 'zoomTapAndDrag', 'zoomPressAndDrag', 'zoomDoubleTapReset', 'brush'], svg);\n return () => {\n // Cleanup gesture manager\n gestureManager.unregisterAllGestures(svg);\n };\n }, [svgRef, gestureManagerRef]);\n const addInteractionListener = React.useCallback((interaction, callback, options) => {\n // Forcefully cast the svgRef to any, it is annoying to fix the types.\n const svg = svgRef.current;\n svg?.addEventListener(interaction, callback, options);\n return {\n cleanup: () => svg?.removeEventListener(interaction, callback)\n };\n }, [svgRef]);\n const updateZoomInteractionListeners = React.useCallback((interaction, options) => {\n const svg = svgRef.current;\n const gestureManager = gestureManagerRef.current;\n if (!gestureManager || !svg) {\n return;\n }\n gestureManager.setGestureOptions(interaction, svg, options ?? {});\n }, [svgRef, gestureManagerRef]);\n React.useEffect(() => {\n const svg = svgRef.current;\n\n // Disable gesture on safari\n // https://use-gesture.netlify.app/docs/gestures/#about-the-pinch-gesture\n svg?.addEventListener('gesturestart', preventDefault);\n svg?.addEventListener('gesturechange', preventDefault);\n svg?.addEventListener('gestureend', preventDefault);\n return () => {\n svg?.removeEventListener('gesturestart', preventDefault);\n svg?.removeEventListener('gesturechange', preventDefault);\n svg?.removeEventListener('gestureend', preventDefault);\n };\n }, [svgRef]);\n return {\n instance: {\n addInteractionListener,\n updateZoomInteractionListeners\n }\n };\n};\nuseChartInteractionListener.params = {};\nuseChartInteractionListener.getInitialState = () => {\n return {};\n};","import { useChartAnimation } from \"./useChartAnimation/index.js\";\nimport { useChartDimensions } from \"./useChartDimensions/index.js\";\nimport { useChartExperimentalFeatures } from \"./useChartExperimentalFeature/index.js\";\nimport { useChartId } from \"./useChartId/index.js\";\nimport { useChartSeries } from \"./useChartSeries/index.js\";\nimport { useChartInteractionListener } from \"./useChartInteractionListener/index.js\";\n\n/**\n * Internal plugins that create the tools used by the other plugins.\n * These plugins are used by the Charts components.\n */\nexport const CHART_CORE_PLUGINS = [useChartId, useChartExperimentalFeatures, useChartDimensions, useChartSeries, useChartInteractionListener, useChartAnimation];","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"apiRef\"];\nexport const extractPluginParamsFromProps = _ref => {\n let {\n plugins\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref.props, _excluded);\n const paramsLookup = {};\n plugins.forEach(plugin => {\n Object.assign(paramsLookup, plugin.params);\n });\n const pluginParams = {};\n Object.keys(props).forEach(propName => {\n const prop = props[propName];\n if (paramsLookup[propName]) {\n pluginParams[propName] = prop;\n }\n });\n const defaultizedPluginParams = plugins.reduce((acc, plugin) => {\n if (plugin.getDefaultizedParams) {\n return plugin.getDefaultizedParams({\n params: acc\n });\n }\n return acc;\n }, pluginParams);\n return defaultizedPluginParams;\n};","import * as React from 'react';\nimport useId from '@mui/utils/useId';\nimport { Store } from '@mui/x-internals/store';\nimport { CHART_CORE_PLUGINS } from \"../plugins/corePlugins/index.js\";\nimport { extractPluginParamsFromProps } from \"./extractPluginParamsFromProps.js\";\nlet globalId = 0;\n\n/**\n * This is the main hook that setups the plugin system for the chart.\n *\n * It manages the data used to create the charts.\n *\n * @param inPlugins All the plugins that will be used in the chart.\n * @param props The props passed to the chart.\n * @param seriesConfig The set of helpers used for series-specific computation.\n */\nexport function useCharts(inPlugins, props, seriesConfig) {\n const chartId = useId();\n const plugins = React.useMemo(() => [...CHART_CORE_PLUGINS, ...inPlugins], [inPlugins]);\n const pluginParams = extractPluginParamsFromProps({\n plugins,\n props\n });\n pluginParams.id = pluginParams.id ?? chartId;\n const instanceRef = React.useRef({});\n const instance = instanceRef.current;\n const publicAPI = useChartApiInitialization(props.apiRef);\n const innerChartRootRef = React.useRef(null);\n const innerSvgRef = React.useRef(null);\n const storeRef = React.useRef(null);\n if (storeRef.current == null) {\n // eslint-disable-next-line react-compiler/react-compiler\n globalId += 1;\n const initialState = {\n cacheKey: {\n id: globalId\n }\n };\n plugins.forEach(plugin => {\n if (plugin.getInitialState) {\n Object.assign(initialState, plugin.getInitialState(pluginParams, initialState, seriesConfig));\n }\n });\n storeRef.current = new Store(initialState);\n }\n const runPlugin = plugin => {\n const pluginResponse = plugin({\n instance,\n params: pluginParams,\n plugins: plugins,\n store: storeRef.current,\n svgRef: innerSvgRef,\n chartRootRef: innerChartRootRef,\n seriesConfig\n });\n if (pluginResponse.publicAPI) {\n Object.assign(publicAPI.current, pluginResponse.publicAPI);\n }\n if (pluginResponse.instance) {\n Object.assign(instance, pluginResponse.instance);\n }\n };\n plugins.forEach(runPlugin);\n const contextValue = React.useMemo(() => ({\n store: storeRef.current,\n publicAPI: publicAPI.current,\n instance,\n svgRef: innerSvgRef,\n chartRootRef: innerChartRootRef\n }), [instance, publicAPI]);\n return {\n contextValue\n };\n}\nfunction initializeInputApiRef(inputApiRef) {\n if (inputApiRef.current == null) {\n inputApiRef.current = {};\n }\n return inputApiRef;\n}\nexport function useChartApiInitialization(inputApiRef) {\n const fallbackPublicApiRef = React.useRef({});\n if (inputApiRef) {\n return initializeInputApiRef(inputApiRef);\n }\n return fallbackPublicApiRef;\n}","'use client';\n\nimport * as React from 'react';\n/**\n * @ignore - internal component.\n */\nexport const ChartContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") ChartContext.displayName = \"ChartContext\";","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- no need to put `fn` in the dependency array\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","import useLazyRef from '@mui/utils/useLazyRef';\nimport useOnMount from '@mui/utils/useOnMount';\nconst noop = () => {};\n\n/**\n * An Effect implementation for the Store. This should be used for side-effects only. To\n * compute and store derived state, use `createSelectorMemoized` instead.\n */\nexport function useStoreEffect(store, selector, effect) {\n const instance = useLazyRef(initialize, {\n store,\n selector\n }).current;\n instance.effect = effect;\n useOnMount(instance.onMount);\n}\n\n// `useLazyRef` typings are incorrect, `params` should not be optional\nfunction initialize(params) {\n const {\n store,\n selector\n } = params;\n let previousState = selector(store.state);\n const instance = {\n effect: noop,\n dispose: null,\n // We want a single subscription done right away and cleared on unmount only,\n // but React triggers `useOnMount` multiple times in dev, so we need to manage\n // the subscription anyway.\n subscribe: () => {\n instance.dispose ??= store.subscribe(state => {\n const nextState = selector(state);\n if (!Object.is(previousState, nextState)) {\n const prev = previousState;\n previousState = nextState;\n instance.effect(prev, nextState);\n }\n });\n },\n onMount: () => {\n instance.subscribe();\n return () => {\n instance.dispose?.();\n instance.dispose = null;\n };\n }\n };\n instance.subscribe();\n return instance;\n}","'use client';\n\nimport * as React from 'react';\nimport { warnOnce } from \"../warning/index.js\";\n\n/**\n * Make sure a controlled prop is used correctly.\n * Logs errors if the prop either:\n *\n * - switch between controlled and uncontrolled\n * - modify it's default value\n * @param parameters\n */\nfunction useAssertModelConsistencyOutsideOfProduction(parameters) {\n const {\n componentName,\n propName,\n controlled,\n defaultValue,\n warningPrefix = 'MUI X'\n } = parameters;\n const [{\n initialDefaultValue,\n isControlled\n }] = React.useState({\n initialDefaultValue: defaultValue,\n isControlled: controlled !== undefined\n });\n if (isControlled !== (controlled !== undefined)) {\n warnOnce([`${warningPrefix}: A component is changing the ${isControlled ? '' : 'un'}controlled ${propName} state of ${componentName} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${propName} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'], 'error');\n }\n if (JSON.stringify(initialDefaultValue) !== JSON.stringify(defaultValue)) {\n warnOnce([`${warningPrefix}: A component is changing the default ${propName} state of an uncontrolled ${componentName} after being initialized. ` + `To suppress this warning opt to use a controlled ${componentName}.`], 'error');\n }\n}\nexport const useAssertModelConsistency = process.env.NODE_ENV === 'production' ? () => {} : useAssertModelConsistencyOutsideOfProduction;","import { createSelectorMemoized, createSelector } from '@mui/x-internals/store';\nimport { applySeriesLayout, applySeriesProcessors } from \"./processSeries.js\";\nimport { selectorChartDrawingArea } from \"../useChartDimensions/useChartDimensions.selectors.js\";\nexport const selectorChartSeriesState = state => state.series;\nexport const selectorChartDefaultizedSeries = createSelector(selectorChartSeriesState, seriesState => seriesState.defaultizedSeries);\nexport const selectorChartSeriesConfig = createSelector(selectorChartSeriesState, seriesState => seriesState.seriesConfig);\n\n/**\n * Get the dataset from the series state.\n * @returns {DatasetType | undefined} The dataset.\n */\nexport const selectorChartDataset = createSelector(selectorChartSeriesState, seriesState => seriesState.dataset);\n\n/**\n * Get the processed series after applying series processors.\n * This selector computes the processed series on-demand from the defaultized series.\n * @returns {ProcessedSeries} The processed series.\n */\nexport const selectorChartSeriesProcessed = createSelectorMemoized(selectorChartDefaultizedSeries, selectorChartSeriesConfig, selectorChartDataset, function selectorChartSeriesProcessed(defaultizedSeries, seriesConfig, dataset) {\n return applySeriesProcessors(defaultizedSeries, seriesConfig, dataset);\n});\n\n/**\n * Get the processed series after applying series processors.\n * This selector computes the processed series on-demand from the defaultized series.\n * @returns {ProcessedSeries} The processed series.\n */\nexport const selectorChartSeriesLayout = createSelectorMemoized(selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartDrawingArea, function selectorChartSeriesLayout(processedSeries, seriesConfig, drawingArea) {\n return applySeriesLayout(processedSeries, seriesConfig, drawingArea);\n});","/** Margin in the opposite direction of the axis, i.e., horizontal if the axis is vertical and vice versa. */\nexport const ZOOM_SLIDER_MARGIN = 4;\n\n/** Size of the zoom slider preview. */\nexport const ZOOM_SLIDER_PREVIEW_SIZE = 40;\n\n/** Size reserved for the zoom slider. The actual size of the slider might be smaller. */\nexport const DEFAULT_ZOOM_SLIDER_SIZE = 20 + 2 * ZOOM_SLIDER_MARGIN;\nexport const DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE = 40 + 2 * ZOOM_SLIDER_MARGIN;\nexport const DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP = 'hover';\n\n/** Default margin for pie charts. */\nexport const DEFAULT_PIE_CHART_MARGIN = {\n top: 5,\n bottom: 5,\n left: 5,\n right: 5\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE, DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP, DEFAULT_ZOOM_SLIDER_SIZE } from \"../../../constants.js\";\nexport const defaultZoomOptions = {\n minStart: 0,\n maxEnd: 100,\n step: 5,\n minSpan: 10,\n maxSpan: 100,\n panning: true,\n filterMode: 'keep',\n reverse: false,\n slider: {\n enabled: false,\n preview: false,\n size: DEFAULT_ZOOM_SLIDER_SIZE,\n showTooltip: DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP\n }\n};\nexport const defaultizeZoom = (zoom, axisId, axisDirection, reverse) => {\n if (!zoom) {\n return undefined;\n }\n if (zoom === true) {\n return _extends({\n axisId,\n axisDirection\n }, defaultZoomOptions, {\n reverse: reverse ?? false\n });\n }\n return _extends({\n axisId,\n axisDirection\n }, defaultZoomOptions, {\n reverse: reverse ?? false\n }, zoom, {\n slider: _extends({}, defaultZoomOptions.slider, {\n size: zoom.slider?.preview ?? defaultZoomOptions.slider.preview ? DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE : DEFAULT_ZOOM_SLIDER_SIZE\n }, zoom.slider)\n });\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { defaultizeZoom } from \"./defaultizeZoom.js\";\nimport { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY, DEFAULT_AXIS_SIZE_HEIGHT, DEFAULT_AXIS_SIZE_WIDTH, AXIS_LABEL_DEFAULT_HEIGHT } from \"../../../../constants/index.js\";\nexport function defaultizeXAxis(inAxes, dataset) {\n const offsets = {\n top: 0,\n bottom: 0,\n none: 0\n };\n const inputAxes = inAxes && inAxes.length > 0 ? inAxes : [{\n id: DEFAULT_X_AXIS_KEY,\n scaleType: 'linear'\n }];\n const parsedAxes = inputAxes.map((axisConfig, index) => {\n const dataKey = axisConfig.dataKey;\n\n // The first x-axis is defaultized to the bottom\n const defaultPosition = index === 0 ? 'bottom' : 'none';\n const position = axisConfig.position ?? defaultPosition;\n const defaultHeight = DEFAULT_AXIS_SIZE_HEIGHT + (axisConfig.label ? AXIS_LABEL_DEFAULT_HEIGHT : 0);\n const id = axisConfig.id ?? `defaultized-x-axis-${index}`;\n const sharedConfig = _extends({\n offset: offsets[position]\n }, axisConfig, {\n id,\n position,\n height: axisConfig.height ?? defaultHeight,\n zoom: defaultizeZoom(axisConfig.zoom, id, 'x', axisConfig.reverse)\n });\n\n // Increment the offset for the next axis\n if (position !== 'none') {\n offsets[position] += sharedConfig.height;\n if (sharedConfig.zoom?.slider.enabled) {\n offsets[position] += sharedConfig.zoom.slider.size;\n }\n }\n\n // If `dataKey` is NOT provided\n if (dataKey === undefined || axisConfig.data !== undefined) {\n return sharedConfig;\n }\n if (dataset === undefined) {\n throw new Error(`MUI X Charts: x-axis uses \\`dataKey\\` but no \\`dataset\\` is provided.`);\n }\n\n // If `dataKey` is provided\n return _extends({}, sharedConfig, {\n data: dataset.map(d => d[dataKey])\n });\n });\n return parsedAxes;\n}\nexport function defaultizeYAxis(inAxes, dataset) {\n const offsets = {\n right: 0,\n left: 0,\n none: 0\n };\n const inputAxes = inAxes && inAxes.length > 0 ? inAxes : [{\n id: DEFAULT_Y_AXIS_KEY,\n scaleType: 'linear'\n }];\n const parsedAxes = inputAxes.map((axisConfig, index) => {\n const dataKey = axisConfig.dataKey;\n\n // The first y-axis is defaultized to the left\n const defaultPosition = index === 0 ? 'left' : 'none';\n const position = axisConfig.position ?? defaultPosition;\n const defaultWidth = DEFAULT_AXIS_SIZE_WIDTH + (axisConfig.label ? AXIS_LABEL_DEFAULT_HEIGHT : 0);\n const id = axisConfig.id ?? `defaultized-y-axis-${index}`;\n const sharedConfig = _extends({\n offset: offsets[position]\n }, axisConfig, {\n id,\n position,\n width: axisConfig.width ?? defaultWidth,\n zoom: defaultizeZoom(axisConfig.zoom, id, 'y', axisConfig.reverse)\n });\n\n // Increment the offset for the next axis\n if (position !== 'none') {\n offsets[position] += sharedConfig.width;\n if (sharedConfig.zoom?.slider.enabled) {\n offsets[position] += sharedConfig.zoom.slider.size;\n }\n }\n\n // If `dataKey` is NOT provided\n if (dataKey === undefined || axisConfig.data !== undefined) {\n return sharedConfig;\n }\n if (dataset === undefined) {\n throw new Error(`MUI X Charts: y-axis uses \\`dataKey\\` but no \\`dataset\\` is provided.`);\n }\n\n // If `dataKey` is provided\n return _extends({}, sharedConfig, {\n data: dataset.map(d => d[dataKey])\n });\n });\n return parsedAxes;\n}","/**\n * Creates a default formatter function for continuous scales (e.g., linear, sqrt, log).\n * @returns A formatter function for continuous values.\n */\nexport function createScalarFormatter(tickNumber, zoomScale) {\n return function defaultScalarValueFormatter(value, context) {\n if (context.location === 'tick') {\n const domain = context.scale.domain();\n const zeroSizeDomain = domain[0] === domain[1];\n if (zeroSizeDomain) {\n return context.scale.tickFormat(1)(value);\n }\n return context.scale.tickFormat(tickNumber)(value);\n }\n if (context.location === 'zoom-slider-tooltip') {\n return zoomScale.tickFormat(2)(value);\n }\n return `${value}`;\n };\n}","/**\n * Use this type instead of `AxisScaleConfig` when the values\n * shouldn't be provided by the user.\n */\n\n/**\n * Config that is shared between cartesian and polar axes.\n */\n\n/**\n * Use this type for advanced typing. For basic usage, use `XAxis`, `YAxis`, `RotationAxis` or `RadiusAxis`.\n */\n\nexport function isBandScaleConfig(scaleConfig) {\n return scaleConfig.scaleType === 'band';\n}\nexport function isPointScaleConfig(scaleConfig) {\n return scaleConfig.scaleType === 'point';\n}\nexport function isContinuousScaleConfig(scaleConfig) {\n return scaleConfig.scaleType !== 'point' && scaleConfig.scaleType !== 'band';\n}\nexport function isSymlogScaleConfig(scaleConfig) {\n return scaleConfig.scaleType === 'symlog';\n}\n\n/**\n * The data format returned by onAxisClick.\n */\n\n/**\n * Identifies a data point within an axis.\n */\n\n/**\n * The axis configuration with missing values filled with default values.\n */\n\n/**\n * The x-axis configuration with missing values filled with default values.\n */\n\n/**\n * The y-axis configuration with missing values filled with default values.\n */","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import { scaleOrdinal, scaleThreshold, scaleSequential } from '@mui/x-charts-vendor/d3-scale';\nexport function getSequentialColorScale(config) {\n if (config.type === 'piecewise') {\n return scaleThreshold(config.thresholds, config.colors);\n }\n return scaleSequential([config.min ?? 0, config.max ?? 100], config.color);\n}\nexport function getOrdinalColorScale(config) {\n if (config.values) {\n return scaleOrdinal(config.values, config.colors).unknown(config.unknownColor ?? null);\n }\n return scaleOrdinal(config.colors.map((_, index) => index), config.colors).unknown(config.unknownColor ?? null);\n}\nexport function getColorScale(config) {\n return config.type === 'ordinal' ? getOrdinalColorScale(config) : getSequentialColorScale(config);\n}","export function getTickNumber(params, domain, defaultTickNumber) {\n const {\n tickMaxStep,\n tickMinStep,\n tickNumber\n } = params;\n const maxTicks = tickMinStep === undefined ? 999 : Math.floor(Math.abs(domain[1] - domain[0]) / tickMinStep);\n const minTicks = tickMaxStep === undefined ? 2 : Math.ceil(Math.abs(domain[1] - domain[0]) / tickMaxStep);\n const defaultizedTickNumber = tickNumber ?? defaultTickNumber;\n return Math.min(maxTicks, Math.max(minTicks, defaultizedTickNumber));\n}\nexport function scaleTickNumberByRange(tickNumber, range) {\n const rangeGap = range[1] - range[0];\n\n /* If the range start and end are the same, `tickNumber` will become infinity, so we default to 1. */\n if (rangeGap === 0) {\n return 1;\n }\n return tickNumber / ((range[1] - range[0]) / 100);\n}\nexport function getDefaultTickNumber(dimension) {\n return Math.floor(Math.abs(dimension) / 50);\n}","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import { scaleSymlog as originalScaleSymlog, scaleLog, scaleLinear } from '@mui/x-charts-vendor/d3-scale';\n\n/**\n * Constructs a new continuous scale with the specified range, the constant 1, the default interpolator and clamping disabled.\n * The domain defaults to [0, 1].\n * If range is not specified, it defaults to [0, 1].\n *\n * The first generic corresponds to the data type of the range elements.\n * The second generic corresponds to the data type of the output elements generated by the scale.\n * The third generic corresponds to the data type of the unknown value.\n *\n * If range element and output element type differ, the interpolator factory used with the scale must match this behavior and\n * convert the interpolated range element to a corresponding output element.\n *\n * The range must be set in accordance with the range element type.\n *\n * The interpolator factory may be set using the interpolate(...) method of the scale.\n *\n * @param range Array of range values.\n */\n\n/**\n * Constructs a new continuous scale with the specified domain and range, the constant 1, the default interpolator and clamping disabled.\n *\n * The first generic corresponds to the data type of the range elements.\n * The second generic corresponds to the data type of the output elements generated by the scale.\n * The third generic corresponds to the data type of the unknown value.\n *\n * If range element and output element type differ, the interpolator factory used with the scale must match this behavior and\n * convert the interpolated range element to a corresponding output element.\n *\n * The range must be set in accordance with the range element type.\n *\n * The interpolator factory may be set using the interpolate(...) method of the scale.\n *\n * @param domain Array of numeric domain values.\n * @param range Array of range values.\n */\n\nexport function scaleSymlog(...args) {\n const scale = originalScaleSymlog(...args);\n const originalTicks = scale.ticks;\n const {\n negativeScale,\n linearScale,\n positiveScale\n } = generateScales(scale);\n\n // Workaround for https://github.com/d3/d3-scale/issues/162\n scale.ticks = count => {\n const ticks = originalTicks(count);\n const constant = scale.constant();\n let negativeLogTickCount = 0;\n let linearTickCount = 0;\n let positiveLogTickCount = 0;\n ticks.forEach(tick => {\n if (tick > -constant && tick < constant) {\n linearTickCount += 1;\n }\n if (tick <= -constant) {\n negativeLogTickCount += 1;\n }\n if (tick >= constant) {\n positiveLogTickCount += 1;\n }\n });\n const finalTicks = [];\n if (negativeLogTickCount > 0) {\n finalTicks.push(...negativeScale.ticks(negativeLogTickCount));\n }\n if (linearTickCount > 0) {\n const linearTicks = linearScale.ticks(linearTickCount);\n if (finalTicks.at(-1) === linearTicks[0]) {\n finalTicks.push(...linearTicks.slice(1));\n } else {\n finalTicks.push(...linearTicks);\n }\n }\n if (positiveLogTickCount > 0) {\n const positiveTicks = positiveScale.ticks(positiveLogTickCount);\n if (finalTicks.at(-1) === positiveTicks[0]) {\n finalTicks.push(...positiveTicks.slice(1));\n } else {\n finalTicks.push(...positiveTicks);\n }\n }\n return finalTicks;\n };\n scale.tickFormat = (count = 10, specifier) => {\n // Calculates the proportion of the domain that each scale occupies, and use that ratio to determine the number of ticks for each scale.\n const constant = scale.constant();\n const [start, end] = scale.domain();\n const extent = end - start;\n const negativeScaleDomain = negativeScale.domain();\n const negativeScaleExtent = negativeScaleDomain[1] - negativeScaleDomain[0];\n const negativeScaleRatio = extent === 0 ? 0 : negativeScaleExtent / extent;\n const negativeScaleTickCount = negativeScaleRatio * count;\n const linearScaleDomain = linearScale.domain();\n const linearScaleExtent = linearScaleDomain[1] - linearScaleDomain[0];\n const linearScaleRatio = extent === 0 ? 0 : linearScaleExtent / extent;\n const linearScaleTickCount = linearScaleRatio * count;\n const positiveScaleDomain = positiveScale.domain();\n const positiveScaleExtent = positiveScaleDomain[1] - positiveScaleDomain[0];\n const positiveScaleRatio = extent === 0 ? 0 : positiveScaleExtent / extent;\n const positiveScaleTickCount = positiveScaleRatio * count;\n const negativeTickFormat = negativeScale.tickFormat(negativeScaleTickCount, specifier);\n const linearTickFormat = linearScale.tickFormat(linearScaleTickCount, specifier);\n const positiveTickFormat = positiveScale.tickFormat(positiveScaleTickCount, specifier);\n return tick => {\n const tickFormat =\n // eslint-disable-next-line no-nested-ternary\n tick.valueOf() <= -constant ? negativeTickFormat : tick.valueOf() >= constant ? positiveTickFormat : linearTickFormat;\n return tickFormat(tick);\n };\n };\n\n /* Adaptation of https://github.com/d3/d3-scale/blob/d6904a4bde09e16005e0ad8ca3e25b10ce54fa0d/src/symlog.js#L30 */\n scale.copy = () => {\n return scaleSymlog(scale.domain(), scale.range()).constant(scale.constant());\n };\n return scale;\n}\nfunction generateScales(scale) {\n const constant = scale.constant();\n const domain = scale.domain();\n const negativeDomain = [domain[0], Math.min(domain[1], -constant)];\n const negativeLogScale = scaleLog(negativeDomain, scale.range());\n const linearDomain = [Math.max(domain[0], -constant), Math.min(domain[1], constant)];\n const linearScale = scaleLinear(linearDomain, scale.range());\n const positiveDomain = [Math.max(domain[0], constant), domain[1]];\n const positiveLogScale = scaleLog(positiveDomain, scale.range());\n return {\n negativeScale: negativeLogScale,\n linearScale,\n positiveScale: positiveLogScale\n };\n}","import { scaleLog, scalePow, scaleSqrt, scaleTime, scaleUtc, scaleLinear } from '@mui/x-charts-vendor/d3-scale';\nimport { scaleSymlog } from \"./scales/index.js\";\nexport function getScale(scaleType, domain, range) {\n switch (scaleType) {\n case 'log':\n return scaleLog(domain, range);\n case 'pow':\n return scalePow(domain, range);\n case 'sqrt':\n return scaleSqrt(domain, range);\n case 'time':\n return scaleTime(domain, range);\n case 'utc':\n return scaleUtc(domain, range);\n case 'symlog':\n return scaleSymlog(domain, range);\n default:\n return scaleLinear(domain, range);\n }\n}","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import { scaleTime } from '@mui/x-charts-vendor/d3-scale';\n/**\n * Checks if the provided data array contains Date objects.\n * @param data The data array to check.\n * @returns A type predicate indicating if the data is an array of Date objects.\n */\nexport const isDateData = data => data?.[0] instanceof Date;\n\n/**\n * Creates a formatter function for date values.\n * @param data The data array containing Date or NumberValue objects.\n * @param range The range for the time scale.\n * @param tickNumber (Optional) The number of ticks for formatting.\n * @returns A formatter function for date values.\n */\nexport function createDateFormatter(data, range, tickNumber) {\n const timeScale = scaleTime(data, range);\n return (v, {\n location\n }) => location === 'tick' ? timeScale.tickFormat(tickNumber)(v) : `${v.toLocaleString()}`;\n}","let cartesianInstance;\nlet polarInstance;\nclass CartesianSeriesTypes {\n types = (() => new Set())();\n constructor() {\n if (cartesianInstance) {\n throw new Error('You can only create one instance!');\n }\n cartesianInstance = this.types;\n }\n addType(value) {\n this.types.add(value);\n }\n getTypes() {\n return this.types;\n }\n}\nclass PolarSeriesTypes {\n types = (() => new Set())();\n constructor() {\n if (polarInstance) {\n throw new Error('You can only create one instance!');\n }\n polarInstance = this.types;\n }\n addType(value) {\n this.types.add(value);\n }\n getTypes() {\n return this.types;\n }\n}\nexport const cartesianSeriesTypes = new CartesianSeriesTypes();\ncartesianSeriesTypes.addType('bar');\ncartesianSeriesTypes.addType('line');\ncartesianSeriesTypes.addType('scatter');\nexport const polarSeriesTypes = new PolarSeriesTypes();\npolarSeriesTypes.addType('radar');","import { cartesianSeriesTypes } from \"./configInit.js\";\nexport function isCartesianSeriesType(seriesType) {\n return cartesianSeriesTypes.getTypes().has(seriesType);\n}\nexport function isCartesianSeries(series) {\n return isCartesianSeriesType(series.type);\n}","export function isOrdinalScale(scale) {\n return scale.bandwidth !== undefined;\n}\nexport function isBandScale(scale) {\n return isOrdinalScale(scale) && scale.paddingOuter !== undefined;\n}\nexport function isPointScale(scale) {\n return isOrdinalScale(scale) && !('paddingOuter' in scale);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createScalarFormatter } from \"../../../defaultValueFormatters.js\";\nimport { isBandScaleConfig, isPointScaleConfig } from \"../../../../models/axis.js\";\nimport { getColorScale, getOrdinalColorScale, getSequentialColorScale } from \"../../../colorScale.js\";\nimport { scaleTickNumberByRange } from \"../../../ticks.js\";\nimport { getScale } from \"../../../getScale.js\";\nimport { isDateData, createDateFormatter } from \"../../../dateHelpers.js\";\nimport { getAxisTriggerTooltip } from \"./getAxisTriggerTooltip.js\";\nimport { isBandScale, isOrdinalScale } from \"../../../scaleGuards.js\";\nfunction getRange(drawingArea, axisDirection,\n// | 'rotation' | 'radius',\nreverse) {\n const range = axisDirection === 'x' ? [drawingArea.left, drawingArea.left + drawingArea.width] : [drawingArea.top + drawingArea.height, drawingArea.top];\n return reverse ? [range[1], range[0]] : range;\n}\nfunction shouldIgnoreGapRatios(scale, categoryGapRatio) {\n const step = scale.step();\n const paddingPx = step * categoryGapRatio;\n\n /* If the padding is less than 0.1px, we consider it negligible and ignore it.\n * This prevents issues where very small gaps cause rendering artifacts or unexpected layouts.\n * A threshold of 0.1px is chosen as it's generally below the perceptible limit for most displays.\n */\n return paddingPx < 0.1;\n}\nconst DEFAULT_CATEGORY_GAP_RATIO = 0.2;\nconst DEFAULT_BAR_GAP_RATIO = 0.1;\nexport function computeAxisValue({\n scales,\n drawingArea,\n formattedSeries,\n axis: allAxis,\n seriesConfig,\n axisDirection,\n zoomMap,\n domains\n}) {\n if (allAxis === undefined) {\n return {\n axis: {},\n axisIds: []\n };\n }\n const axisIdsTriggeringTooltip = getAxisTriggerTooltip(axisDirection, seriesConfig, formattedSeries, allAxis[0].id);\n const completeAxis = {};\n allAxis.forEach(eachAxis => {\n const axis = eachAxis;\n const scale = scales[axis.id];\n const zoom = zoomMap?.get(axis.id);\n const zoomRange = zoom ? [zoom.start, zoom.end] : [0, 100];\n const range = getRange(drawingArea, axisDirection, axis.reverse ?? false);\n const rawTickNumber = domains[axis.id].tickNumber;\n const triggerTooltip = !axis.ignoreTooltip && axisIdsTriggeringTooltip.has(axis.id);\n const tickNumber = scaleTickNumberByRange(rawTickNumber, zoomRange);\n const data = axis.data ?? [];\n if (isOrdinalScale(scale)) {\n // Reverse range because ordinal scales are presented from top to bottom on y-axis\n const scaleRange = axisDirection === 'y' ? [range[1], range[0]] : range;\n if (isBandScale(scale) && isBandScaleConfig(axis)) {\n const desiredCategoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;\n const ignoreGapRatios = shouldIgnoreGapRatios(scale, desiredCategoryGapRatio);\n const categoryGapRatio = ignoreGapRatios ? 0 : desiredCategoryGapRatio;\n const barGapRatio = ignoreGapRatios ? 0 : axis.barGapRatio ?? DEFAULT_BAR_GAP_RATIO;\n completeAxis[axis.id] = _extends({\n offset: 0,\n height: 0,\n categoryGapRatio,\n barGapRatio,\n triggerTooltip\n }, axis, {\n data,\n /* Doing this here is technically wrong, but acceptable in practice.\n * In theory, this should be done in the normalized scale selector, but then we'd need that selector to depend\n * on the zoom range, which would void its goal (which is to be independent of zoom).\n * Since we only ignore gap ratios when they're practically invisible, the small errors caused by this\n * discrepancy will hopefully not be noticeable. */\n scale: ignoreGapRatios ? scale.copy().padding(0) : scale,\n tickNumber,\n colorScale: axis.colorMap && (axis.colorMap.type === 'ordinal' ? getOrdinalColorScale(_extends({\n values: axis.data\n }, axis.colorMap)) : getColorScale(axis.colorMap))\n });\n }\n if (isPointScaleConfig(axis)) {\n completeAxis[axis.id] = _extends({\n offset: 0,\n height: 0,\n triggerTooltip\n }, axis, {\n data,\n scale,\n tickNumber,\n colorScale: axis.colorMap && (axis.colorMap.type === 'ordinal' ? getOrdinalColorScale(_extends({\n values: axis.data\n }, axis.colorMap)) : getColorScale(axis.colorMap))\n });\n }\n if (isDateData(axis.data)) {\n const dateFormatter = createDateFormatter(axis.data, scaleRange, axis.tickNumber);\n completeAxis[axis.id].valueFormatter = axis.valueFormatter ?? dateFormatter;\n }\n return;\n }\n if (axis.scaleType === 'band' || axis.scaleType === 'point') {\n // Could be merged with the two previous \"if conditions\" but then TS does not get that `axis.scaleType` can't be `band` or `point`.\n return;\n }\n const continuousAxis = axis;\n const scaleType = continuousAxis.scaleType ?? 'linear';\n completeAxis[axis.id] = _extends({\n offset: 0,\n height: 0,\n triggerTooltip\n }, continuousAxis, {\n data,\n scaleType,\n scale,\n tickNumber,\n colorScale: continuousAxis.colorMap && getSequentialColorScale(continuousAxis.colorMap),\n valueFormatter: axis.valueFormatter ?? createScalarFormatter(tickNumber, getScale(scaleType, range.map(v => scale.invert(v)), range))\n });\n });\n return {\n axis: completeAxis,\n axisIds: allAxis.map(({\n id\n }) => id)\n };\n}","import { isCartesianSeriesType } from \"../../../isCartesian.js\";\nexport const getAxisTriggerTooltip = (axisDirection, seriesConfig, formattedSeries, defaultAxisId) => {\n const tooltipAxesIds = new Set();\n const chartTypes = Object.keys(seriesConfig).filter(isCartesianSeriesType);\n chartTypes.forEach(chartType => {\n const series = formattedSeries[chartType]?.series ?? {};\n const tooltipAxes = seriesConfig[chartType].axisTooltipGetter?.(series);\n if (tooltipAxes === undefined) {\n return;\n }\n tooltipAxes.forEach(({\n axisId,\n direction\n }) => {\n if (direction === axisDirection) {\n tooltipAxesIds.add(axisId ?? defaultAxisId);\n }\n });\n });\n return tooltipAxesIds;\n};","export function isDefined(value) {\n return value !== null && value !== undefined;\n}","import { isDefined } from \"../../../isDefined.js\";\nexport function createDiscreteScaleGetAxisFilter(axisData, zoomStart, zoomEnd, direction) {\n const maxIndex = axisData?.length ?? 0;\n const minVal = Math.floor(zoomStart * maxIndex / 100);\n const maxVal = Math.ceil(zoomEnd * maxIndex / 100);\n return function filterAxis(value, dataIndex) {\n const val = value[direction] ?? axisData?.[dataIndex];\n if (val == null) {\n // If the value does not exist because of missing data point, or out of range index, we just ignore.\n return true;\n }\n return dataIndex >= minVal && dataIndex < maxVal;\n };\n}\nexport function createContinuousScaleGetAxisFilter(domain, zoomStart, zoomEnd, direction, axisData) {\n const min = domain[0].valueOf();\n const max = domain[1].valueOf();\n const minVal = min + zoomStart * (max - min) / 100;\n const maxVal = min + zoomEnd * (max - min) / 100;\n return function filterAxis(value, dataIndex) {\n const val = value[direction] ?? axisData?.[dataIndex];\n if (val == null) {\n // If the value does not exist because of missing data point, or out of range index, we just ignore.\n return true;\n }\n return val >= minVal && val <= maxVal;\n };\n}\nexport const createGetAxisFilters = filters => ({\n currentAxisId,\n seriesXAxisId,\n seriesYAxisId,\n isDefaultAxis\n}) => {\n return (value, dataIndex) => {\n const axisId = currentAxisId === seriesXAxisId ? seriesYAxisId : seriesXAxisId;\n if (!axisId || isDefaultAxis) {\n return Object.values(filters ?? {})[0]?.(value, dataIndex) ?? true;\n }\n const data = [seriesYAxisId, seriesXAxisId].filter(id => id !== currentAxisId).map(id => filters[id ?? '']).filter(isDefined);\n return data.every(f => f(value, dataIndex));\n };\n};","import { defaultizeZoom } from \"./defaultizeZoom.js\";\nexport const createZoomLookup = axisDirection => (axes = []) => axes.reduce((acc, v) => {\n // @ts-ignore\n const {\n zoom,\n id: axisId,\n reverse\n } = v;\n const defaultizedZoom = defaultizeZoom(zoom, axisId, axisDirection, reverse);\n if (defaultizedZoom) {\n acc[axisId] = defaultizedZoom;\n }\n return acc;\n}, {});","import { createSelector } from '@mui/x-internals/store';\nexport const selectorChartExperimentalFeaturesState = state => state.experimentalFeatures;\nexport const selectorPreferStrictDomainInLineCharts = createSelector(selectorChartExperimentalFeaturesState, features => Boolean(features?.preferStrictDomainInLineCharts));","/* eslint-disable func-names */\n// Adapted from d3-scale v4.0.2\n// https://github.com/d3/d3-scale/blob/d6904a4bde09e16005e0ad8ca3e25b10ce54fa0d/src/band.js\nimport { InternMap, range as sequence } from '@mui/x-charts-vendor/d3-array';\nexport function keyof(value) {\n if (Array.isArray(value)) {\n return JSON.stringify(value);\n }\n if (typeof value === 'object' && value !== null) {\n return value.valueOf();\n }\n return value;\n}\n\n/**\n * Constructs a new band scale with the specified range, no padding, no rounding and center alignment.\n * The domain defaults to the empty domain.\n * If range is not specified, it defaults to the unit range [0, 1].\n *\n * The generic corresponds to the data type of domain elements.\n *\n * @param range A two-element array of numeric values.\n */\n\n/**\n * Constructs a new band scale with the specified domain and range, no padding, no rounding and center alignment.\n *\n * The generic corresponds to the data type of domain elements.\n *\n * @param domain Array of domain values.\n * @param range A two-element array of numeric values.\n */\n\nexport function scaleBand(...args) {\n // @ts-expect-error, InternMap accepts two arguments, but its types are set as Map, which doesn't.\n let index = new InternMap(undefined, keyof);\n let domain = [];\n let ordinalRange = [];\n let r0 = 0;\n let r1 = 1;\n let step;\n let bandwidth;\n let isRound = false;\n let paddingInner = 0;\n let paddingOuter = 0;\n let align = 0.5;\n const scale = d => {\n const i = index.get(d);\n if (i === undefined) {\n return undefined;\n }\n return ordinalRange[i % ordinalRange.length];\n };\n const rescale = () => {\n const n = domain.length;\n const reverse = r1 < r0;\n const start = reverse ? r1 : r0;\n const stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (isRound) {\n step = Math.floor(step);\n }\n const adjustedStart = start + (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n const finalStart = isRound ? Math.round(adjustedStart) : adjustedStart;\n const finalBandwidth = isRound ? Math.round(bandwidth) : bandwidth;\n bandwidth = finalBandwidth;\n const values = sequence(n).map(i => finalStart + step * i);\n ordinalRange = reverse ? values.reverse() : values;\n return scale;\n };\n scale.domain = function (_) {\n if (!arguments.length) {\n return domain.slice();\n }\n domain = [];\n // @ts-expect-error, InternMap accepts two arguments.\n index = new InternMap(undefined, keyof);\n for (const value of _) {\n if (index.has(value)) {\n continue;\n }\n index.set(value, domain.push(value) - 1);\n }\n return rescale();\n };\n scale.range = function (_) {\n if (!arguments.length) {\n return [r0, r1];\n }\n const [v0, v1] = _;\n r0 = +v0;\n r1 = +v1;\n return rescale();\n };\n scale.rangeRound = function (_) {\n const [v0, v1] = _;\n r0 = +v0;\n r1 = +v1;\n isRound = true;\n return rescale();\n };\n scale.bandwidth = function () {\n return bandwidth;\n };\n scale.step = function () {\n return step;\n };\n scale.round = function (_) {\n if (!arguments.length) {\n return isRound;\n }\n isRound = !!_;\n return rescale();\n };\n scale.padding = function (_) {\n if (!arguments.length) {\n return paddingInner;\n }\n paddingInner = Math.min(1, paddingOuter = +_);\n return rescale();\n };\n scale.paddingInner = function (_) {\n if (!arguments.length) {\n return paddingInner;\n }\n paddingInner = Math.min(1, _);\n return rescale();\n };\n scale.paddingOuter = function (_) {\n if (!arguments.length) {\n return paddingOuter;\n }\n paddingOuter = +_;\n return rescale();\n };\n scale.align = function (_) {\n if (!arguments.length) {\n return align;\n }\n align = Math.max(0, Math.min(1, _));\n return rescale();\n };\n scale.copy = () => {\n return scaleBand(domain, [r0, r1]).round(isRound).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n };\n\n // Initialize from arguments\n const [arg0, arg1] = args;\n if (args.length > 1) {\n scale.domain(arg0);\n scale.range(arg1);\n } else if (arg0) {\n scale.range(arg0);\n } else {\n rescale();\n }\n return scale;\n}","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import { scaleBand } from \"./scaleBand.js\";\n\n/**\n * Constructs a new point scale with the specified range, no padding, no rounding and center alignment.\n * The domain defaults to the empty domain.\n * If range is not specified, it defaults to the unit range [0, 1].\n *\n * The generic corresponds to the data type of domain elements.\n *\n * @param range A two-element array of numeric values.\n */\n\n/**\n * Constructs a new point scale with the specified domain and range, no padding, no rounding and center alignment.\n * The domain defaults to the empty domain.\n *\n * The generic corresponds to the data type of domain elements.\n *\n * @param domain Array of domain values.\n * @param range A two-element array of numeric values.\n */\n\nexport function scalePoint(...args) {\n // ScalePoint is essentially ScaleBand with paddingInner(1)\n const scale = scaleBand(...args).paddingInner(1);\n\n // Remove paddingInner method and make padding alias to paddingOuter\n const originalCopy = scale.copy;\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n scale.copy = () => {\n const copied = originalCopy();\n copied.padding = copied.paddingOuter;\n delete copied.paddingInner;\n delete copied.paddingOuter;\n copied.copy = scale.copy;\n return copied;\n };\n return scale;\n}","import { isBandScaleConfig, isPointScaleConfig, isSymlogScaleConfig } from \"../../../../models/axis.js\";\nimport { getScale } from \"../../../getScale.js\";\nimport { scaleBand, scalePoint } from \"../../../scales/index.js\";\nconst DEFAULT_CATEGORY_GAP_RATIO = 0.2;\nexport function getRange(drawingArea, axisDirection, axis) {\n const range = axisDirection === 'x' ? [drawingArea.left, drawingArea.left + drawingArea.width] : [drawingArea.top + drawingArea.height, drawingArea.top];\n return axis.reverse ? [range[1], range[0]] : range;\n}\nexport function getNormalizedAxisScale(axis, domain) {\n const range = [0, 1];\n if (isBandScaleConfig(axis)) {\n const categoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;\n return scaleBand(domain, range).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2);\n }\n if (isPointScaleConfig(axis)) {\n return scalePoint(domain, range);\n }\n const scaleType = axis.scaleType ?? 'linear';\n const scale = getScale(scaleType, domain, range);\n if (isSymlogScaleConfig(axis) && axis.constant != null) {\n scale.constant(axis.constant);\n }\n return scale;\n}","/**\n * Applies the zoom into the scale range.\n * It changes the screen coordinates that the scale covers.\n * Not the data that is displayed.\n *\n * @param scaleRange the original range in real screen coordinates.\n * @param zoomRange the zoom range in percentage.\n * @returns zoomed range in real screen coordinates.\n */\nexport const zoomScaleRange = (scaleRange, zoomRange) => {\n const rangeGap = scaleRange[1] - scaleRange[0];\n const zoomGap = zoomRange[1] - zoomRange[0];\n\n // If current zoom show the scale between p1 and p2 percents\n // The range should be extended by adding [0, p1] and [p2, 100] segments\n const min = scaleRange[0] - zoomRange[0] * rangeGap / zoomGap;\n const max = scaleRange[1] + (100 - zoomRange[1]) * rangeGap / zoomGap;\n return [min, max];\n};","import { isCartesianSeriesType } from \"../../../isCartesian.js\";\nconst axisExtremumCallback = (chartType, axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters) => {\n const getter = axisDirection === 'x' ? seriesConfig[chartType].xExtremumGetter : seriesConfig[chartType].yExtremumGetter;\n const series = formattedSeries[chartType]?.series ?? {};\n return getter?.({\n series,\n axis,\n axisIndex,\n isDefaultAxis: axisIndex === 0,\n getFilters\n }) ?? [Infinity, -Infinity];\n};\nexport function getAxisExtrema(axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters) {\n const cartesianChartTypes = Object.keys(seriesConfig).filter(isCartesianSeriesType);\n let extrema = [Infinity, -Infinity];\n for (const chartType of cartesianChartTypes) {\n const [min, max] = axisExtremumCallback(chartType, axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters);\n extrema = [Math.min(extrema[0], min), Math.max(extrema[1], max)];\n }\n if (Number.isNaN(extrema[0]) || Number.isNaN(extrema[1])) {\n return [Infinity, -Infinity];\n }\n return extrema;\n}","import { getScale } from \"../../../getScale.js\";\nimport { getAxisDomainLimit } from \"./getAxisDomainLimit.js\";\nimport { getTickNumber } from \"../../../ticks.js\";\nfunction niceDomain(scaleType, domain, tickNumber) {\n return getScale(scaleType ?? 'linear', domain, [0, 1]).nice(tickNumber).domain();\n}\n\n/**\n * Calculates the initial domain and tick number for a given axis.\n * The domain should still run through the zoom filterMode after this step.\n */\nexport function calculateInitialDomainAndTickNumber(axis, axisDirection, axisIndex, formattedSeries, [minData, maxData], defaultTickNumber, preferStrictDomainInLineCharts) {\n const domainLimit = getDomainLimit(axis, axisDirection, axisIndex, formattedSeries, preferStrictDomainInLineCharts);\n let axisExtrema = getActualAxisExtrema(axis, minData, maxData);\n if (typeof domainLimit === 'function') {\n const {\n min,\n max\n } = domainLimit(minData.valueOf(), maxData.valueOf());\n axisExtrema[0] = min;\n axisExtrema[1] = max;\n }\n const tickNumber = getTickNumber(axis, axisExtrema, defaultTickNumber);\n if (domainLimit === 'nice') {\n axisExtrema = niceDomain(axis.scaleType, axisExtrema, tickNumber);\n }\n axisExtrema = ['min' in axis ? axis.min ?? axisExtrema[0] : axisExtrema[0], 'max' in axis ? axis.max ?? axisExtrema[1] : axisExtrema[1]];\n return {\n domain: axisExtrema,\n tickNumber\n };\n}\n\n/**\n * Calculates the final domain for an axis.\n * After this step, the domain can be used to create the axis scale.\n */\nexport function calculateFinalDomain(axis, axisDirection, axisIndex, formattedSeries, [minData, maxData], tickNumber, preferStrictDomainInLineCharts) {\n const domainLimit = getDomainLimit(axis, axisDirection, axisIndex, formattedSeries, preferStrictDomainInLineCharts);\n let axisExtrema = getActualAxisExtrema(axis, minData, maxData);\n if (typeof domainLimit === 'function') {\n const {\n min,\n max\n } = domainLimit(minData.valueOf(), maxData.valueOf());\n axisExtrema[0] = min;\n axisExtrema[1] = max;\n }\n if (domainLimit === 'nice') {\n axisExtrema = niceDomain(axis.scaleType, axisExtrema, tickNumber);\n }\n return [axis.min ?? axisExtrema[0], axis.max ?? axisExtrema[1]];\n}\nfunction getDomainLimit(axis, axisDirection, axisIndex, formattedSeries, preferStrictDomainInLineCharts) {\n return preferStrictDomainInLineCharts ? getAxisDomainLimit(axis, axisDirection, axisIndex, formattedSeries) : axis.domainLimit ?? 'nice';\n}\n\n/**\n * Get the actual axis extrema considering the user defined min and max values.\n * @param axisExtrema User defined axis extrema.\n * @param minData Minimum value from the data.\n * @param maxData Maximum value from the data.\n */\nfunction getActualAxisExtrema(axisExtrema, minData, maxData) {\n let min = minData;\n let max = maxData;\n if ('max' in axisExtrema && axisExtrema.max != null && axisExtrema.max < minData) {\n min = axisExtrema.max;\n }\n if ('min' in axisExtrema && axisExtrema.min != null && axisExtrema.min > minData) {\n max = axisExtrema.min;\n }\n if (!('min' in axisExtrema) && !('max' in axisExtrema)) {\n return [min, max];\n }\n return [axisExtrema.min ?? min, axisExtrema.max ?? max];\n}","export const getAxisDomainLimit = (axis, axisDirection, axisIndex, formattedSeries) => {\n if (axis.domainLimit !== undefined) {\n return axis.domainLimit;\n }\n if (axisDirection === 'x') {\n for (const seriesId of formattedSeries.line?.seriesOrder ?? []) {\n const series = formattedSeries.line.series[seriesId];\n if (series.xAxisId === axis.id || series.xAxisId === undefined && axisIndex === 0) {\n return 'strict';\n }\n }\n }\n return 'nice';\n};","\n/** @template T */\nexport default class FlatQueue {\n\n constructor() {\n /** @type T[] */\n this.ids = [];\n\n /** @type number[] */\n this.values = [];\n\n /** Number of items in the queue. */\n this.length = 0;\n }\n\n /** Removes all items from the queue. */\n clear() {\n this.length = 0;\n }\n\n /**\n * Adds `item` to the queue with the specified `priority`.\n *\n * `priority` must be a number. Items are sorted and returned from low to high priority. Multiple items\n * with the same priority value can be added to the queue, but there is no guaranteed order between these items.\n *\n * @param {T} item\n * @param {number} priority\n */\n push(item, priority) {\n let pos = this.length++;\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const parentValue = this.values[parent];\n if (priority >= parentValue) break;\n this.ids[pos] = this.ids[parent];\n this.values[pos] = parentValue;\n pos = parent;\n }\n\n this.ids[pos] = item;\n this.values[pos] = priority;\n }\n\n /**\n * Removes and returns the item from the head of this queue, which is one of\n * the items with the lowest priority. If this queue is empty, returns `undefined`.\n */\n pop() {\n if (this.length === 0) return undefined;\n\n const ids = this.ids,\n values = this.values,\n top = ids[0],\n last = --this.length;\n\n if (last > 0) {\n const id = ids[last];\n const value = values[last];\n let pos = 0;\n const halfLen = last >> 1;\n\n while (pos < halfLen) {\n const left = (pos << 1) + 1;\n const right = left + 1;\n const child = left + (+(right < last) & +(values[right] < values[left]));\n if (values[child] >= value) break;\n ids[pos] = ids[child];\n values[pos] = values[child];\n pos = child;\n }\n\n ids[pos] = id;\n values[pos] = value;\n }\n\n return top;\n }\n\n /** Returns the item from the head of this queue without removing it. If this queue is empty, returns `undefined`. */\n peek() {\n return this.length > 0 ? this.ids[0] : undefined;\n }\n\n /**\n * Returns the priority value of the item at the head of this queue without\n * removing it. If this queue is empty, returns `undefined`.\n */\n peekValue() {\n return this.length > 0 ? this.values[0] : undefined;\n }\n\n /**\n * Shrinks the internal arrays to `this.length`.\n *\n * `pop()` and `clear()` calls don't free memory automatically to avoid unnecessary resize operations.\n * This also means that items that have been added to the queue can't be garbage collected until\n * a new item is pushed in their place, or this method is called.\n */\n shrink() {\n this.ids.length = this.values.length = this.length;\n }\n}\n","// @ts-nocheck\n/* eslint-disable */\nimport FlatQueue from '@mui/x-charts-vendor/flatqueue';\nconst ARRAY_TYPES = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];\nconst VERSION = 3; // serialized format version\n\nexport class Flatbush {\n /**\n * Recreate a Flatbush index from raw `ArrayBuffer` or `SharedArrayBuffer` data.\n * @param {ArrayBufferLike} data\n * @param {number} [byteOffset=0] byte offset to the start of the Flatbush buffer in the referenced ArrayBuffer.\n * @returns {Flatbush} index\n */\n static from(data, byteOffset = 0) {\n if (byteOffset % 8 !== 0) {\n throw new Error('byteOffset must be 8-byte aligned.');\n }\n\n // @ts-expect-error duck typing array buffers\n if (!data || data.byteLength === undefined || data.buffer) {\n throw new Error('Data must be an instance of ArrayBuffer or SharedArrayBuffer.');\n }\n const [magic, versionAndType] = new Uint8Array(data, byteOffset + 0, 2);\n if (magic !== 0xfb) {\n throw new Error('Data does not appear to be in a Flatbush format.');\n }\n const version = versionAndType >> 4;\n if (version !== VERSION) {\n throw new Error(`Got v${version} data when expected v${VERSION}.`);\n }\n const ArrayType = ARRAY_TYPES[versionAndType & 0x0f];\n if (!ArrayType) {\n throw new Error('Unrecognized array type.');\n }\n const [nodeSize] = new Uint16Array(data, byteOffset + 2, 1);\n const [numItems] = new Uint32Array(data, byteOffset + 4, 1);\n return new Flatbush(numItems, nodeSize, ArrayType, undefined, data, byteOffset);\n }\n\n /**\n * Create a Flatbush index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=16] Size of the tree node (16 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBufferConstructor | SharedArrayBufferConstructor} [ArrayBufferType=ArrayBuffer] The array buffer type used to store data (`ArrayBuffer` by default).\n * @param {ArrayBufferLike} [data] (Only used internally)\n * @param {number} [byteOffset=0] (Only used internally)\n */\n constructor(numItems, nodeSize = 16, ArrayType = Float64Array, ArrayBufferType = ArrayBuffer, data, byteOffset = 0) {\n if (numItems === undefined) {\n throw new Error('Missing required argument: numItems.');\n }\n if (isNaN(numItems) || numItems <= 0) {\n throw new Error(`Unexpected numItems value: ${numItems}.`);\n }\n this.numItems = +numItems;\n this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535);\n this.byteOffset = byteOffset;\n\n // calculate the total number of nodes in the R-tree to allocate space for\n // and the index of each tree level (used in search later)\n let n = numItems;\n let numNodes = n;\n this._levelBounds = [n * 4];\n do {\n n = Math.ceil(n / this.nodeSize);\n numNodes += n;\n this._levelBounds.push(numNodes * 4);\n } while (n !== 1);\n this.ArrayType = ArrayType;\n this.IndexArrayType = numNodes < 16384 ? Uint16Array : Uint32Array;\n const arrayTypeIndex = ARRAY_TYPES.indexOf(ArrayType);\n const nodesByteSize = numNodes * 4 * ArrayType.BYTES_PER_ELEMENT;\n if (arrayTypeIndex < 0) {\n throw new Error(`Unexpected typed array class: ${ArrayType}.`);\n }\n if (data) {\n this.data = data;\n this._boxes = new ArrayType(data, byteOffset + 8, numNodes * 4);\n this._indices = new this.IndexArrayType(data, byteOffset + 8 + nodesByteSize, numNodes);\n this._pos = numNodes * 4;\n this.minX = this._boxes[this._pos - 4];\n this.minY = this._boxes[this._pos - 3];\n this.maxX = this._boxes[this._pos - 2];\n this.maxY = this._boxes[this._pos - 1];\n } else {\n const data = this.data = new ArrayBufferType(8 + nodesByteSize + numNodes * this.IndexArrayType.BYTES_PER_ELEMENT);\n this._boxes = new ArrayType(data, 8, numNodes * 4);\n this._indices = new this.IndexArrayType(data, 8 + nodesByteSize, numNodes);\n this._pos = 0;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = -Infinity;\n this.maxY = -Infinity;\n new Uint8Array(data, 0, 2).set([0xfb, (VERSION << 4) + arrayTypeIndex]);\n new Uint16Array(data, 2, 1)[0] = nodeSize;\n new Uint32Array(data, 4, 1)[0] = numItems;\n }\n\n // a priority queue for k-nearest-neighbors queries\n /** @type FlatQueue */\n this._queue = new FlatQueue();\n }\n\n /**\n * Add a given rectangle to the index.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number} A zero-based, incremental number that represents the newly added rectangle.\n */\n add(minX, minY, maxX = minX, maxY = minY) {\n const index = this._pos >> 2;\n const boxes = this._boxes;\n this._indices[index] = index;\n boxes[this._pos++] = minX;\n boxes[this._pos++] = minY;\n boxes[this._pos++] = maxX;\n boxes[this._pos++] = maxY;\n if (minX < this.minX) {\n this.minX = minX;\n }\n if (minY < this.minY) {\n this.minY = minY;\n }\n if (maxX > this.maxX) {\n this.maxX = maxX;\n }\n if (maxY > this.maxY) {\n this.maxY = maxY;\n }\n return index;\n }\n\n /** Perform indexing of the added rectangles. */\n finish() {\n if (this._pos >> 2 !== this.numItems) {\n throw new Error(`Added ${this._pos >> 2} items when expected ${this.numItems}.`);\n }\n const boxes = this._boxes;\n if (this.numItems <= this.nodeSize) {\n // only one node, skip sorting and just fill the root box\n boxes[this._pos++] = this.minX;\n boxes[this._pos++] = this.minY;\n boxes[this._pos++] = this.maxX;\n boxes[this._pos++] = this.maxY;\n return;\n }\n const width = this.maxX - this.minX || 1;\n const height = this.maxY - this.minY || 1;\n const hilbertValues = new Uint32Array(this.numItems);\n const hilbertMax = (1 << 16) - 1;\n\n // map item centers into Hilbert coordinate space and calculate Hilbert values\n for (let i = 0, pos = 0; i < this.numItems; i++) {\n const minX = boxes[pos++];\n const minY = boxes[pos++];\n const maxX = boxes[pos++];\n const maxY = boxes[pos++];\n const x = Math.floor(hilbertMax * ((minX + maxX) / 2 - this.minX) / width);\n const y = Math.floor(hilbertMax * ((minY + maxY) / 2 - this.minY) / height);\n hilbertValues[i] = hilbert(x, y);\n }\n\n // sort items by their Hilbert value (for packing later)\n sort(hilbertValues, boxes, this._indices, 0, this.numItems - 1, this.nodeSize);\n\n // generate nodes at each tree level, bottom-up\n for (let i = 0, pos = 0; i < this._levelBounds.length - 1; i++) {\n const end = this._levelBounds[i];\n\n // generate a parent node for each block of consecutive nodes\n while (pos < end) {\n const nodeIndex = pos;\n\n // calculate bbox for the new node\n let nodeMinX = boxes[pos++];\n let nodeMinY = boxes[pos++];\n let nodeMaxX = boxes[pos++];\n let nodeMaxY = boxes[pos++];\n for (let j = 1; j < this.nodeSize && pos < end; j++) {\n nodeMinX = Math.min(nodeMinX, boxes[pos++]);\n nodeMinY = Math.min(nodeMinY, boxes[pos++]);\n nodeMaxX = Math.max(nodeMaxX, boxes[pos++]);\n nodeMaxY = Math.max(nodeMaxY, boxes[pos++]);\n }\n\n // add the new node to the tree data\n this._indices[this._pos >> 2] = nodeIndex;\n boxes[this._pos++] = nodeMinX;\n boxes[this._pos++] = nodeMinY;\n boxes[this._pos++] = nodeMaxX;\n boxes[this._pos++] = nodeMaxY;\n }\n }\n }\n\n /**\n * Search the index by a bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @param {(index: number) => boolean} [filterFn] An optional function for filtering the results.\n * @returns {number[]} An array containing the index, the x coordinate and the y coordinate of the points intersecting or touching the given bounding box.\n */\n search(minX, minY, maxX, maxY, filterFn) {\n if (this._pos !== this._boxes.length) {\n throw new Error('Data not yet indexed - call index.finish().');\n }\n\n /** @type number | undefined */\n let nodeIndex = this._boxes.length - 4;\n const queue = [];\n const results = [];\n while (nodeIndex !== undefined) {\n // find the end index of the node\n const end = Math.min(nodeIndex + this.nodeSize * 4, upperBound(nodeIndex, this._levelBounds));\n\n // search through child nodes\n for (let /** @type number */pos = nodeIndex; pos < end; pos += 4) {\n // check if node bbox intersects with query bbox\n if (maxX < this._boxes[pos]) {\n continue;\n } // maxX < nodeMinX\n if (maxY < this._boxes[pos + 1]) {\n continue;\n } // maxY < nodeMinY\n if (minX > this._boxes[pos + 2]) {\n continue;\n } // minX > nodeMaxX\n if (minY > this._boxes[pos + 3]) {\n continue;\n } // minY > nodeMaxY\n\n const index = this._indices[pos >> 2] | 0;\n if (nodeIndex >= this.numItems * 4) {\n queue.push(index); // node; add it to the search queue\n } else if (filterFn === undefined || filterFn(index)) {\n results.push(index);\n results.push(this._boxes[pos]); // leaf item\n results.push(this._boxes[pos + 1]);\n }\n }\n nodeIndex = queue.pop();\n }\n return results;\n }\n\n /**\n * Search items in order of distance from the given point.\n * @param x\n * @param y\n * @param [maxResults=Infinity]\n * @param maxDistSq\n * @param [filterFn] An optional function for filtering the results.\n * @param [sqDistFn] An optional function to calculate squared distance from the point to the item.\n * @returns {number[]} An array of indices of items found.\n */\n neighbors(x, y, maxResults = Infinity, maxDistSq = Infinity, filterFn, sqDistFn = sqDist) {\n if (this._pos !== this._boxes.length) {\n throw new Error('Data not yet indexed - call index.finish().');\n }\n\n /** @type number | undefined */\n let nodeIndex = this._boxes.length - 4;\n const q = this._queue;\n const results = [];\n\n /* eslint-disable no-labels */\n outer: while (nodeIndex !== undefined) {\n // find the end index of the node\n const end = Math.min(nodeIndex + this.nodeSize * 4, upperBound(nodeIndex, this._levelBounds));\n\n // add child nodes to the queue\n for (let pos = nodeIndex; pos < end; pos += 4) {\n const index = this._indices[pos >> 2] | 0;\n const minX = this._boxes[pos];\n const minY = this._boxes[pos + 1];\n const maxX = this._boxes[pos + 2];\n const maxY = this._boxes[pos + 3];\n const dx = x < minX ? minX - x : x > maxX ? x - maxX : 0;\n const dy = y < minY ? minY - y : y > maxY ? y - maxY : 0;\n const dist = sqDistFn(dx, dy);\n if (dist > maxDistSq) {\n continue;\n }\n if (nodeIndex >= this.numItems * 4) {\n q.push(index << 1, dist); // node (use even id)\n } else if (filterFn === undefined || filterFn(index)) {\n q.push((index << 1) + 1, dist); // leaf item (use odd id)\n }\n }\n\n // pop items from the queue\n // @ts-expect-error q.length check eliminates undefined values\n while (q.length && q.peek() & 1) {\n const dist = q.peekValue();\n\n // @ts-expect-error\n if (dist > maxDistSq) {\n break outer;\n }\n // @ts-expect-error\n results.push(q.pop() >> 1);\n if (results.length === maxResults) {\n break outer;\n }\n }\n\n // @ts-expect-error\n nodeIndex = q.length ? q.pop() >> 1 : undefined;\n }\n q.clear();\n return results;\n }\n}\nfunction sqDist(dx, dy) {\n return dx * dx + dy * dy;\n}\n\n/**\n * Binary search for the first value in the array bigger than the given.\n * @param {number} value\n * @param {number[]} arr\n */\nfunction upperBound(value, arr) {\n let i = 0;\n let j = arr.length - 1;\n while (i < j) {\n const m = i + j >> 1;\n if (arr[m] > value) {\n j = m;\n } else {\n i = m + 1;\n }\n }\n return arr[i];\n}\n\n/**\n * Custom quicksort that partially sorts bbox data alongside the hilbert values.\n * @param {Uint32Array} values\n * @param {InstanceType} boxes\n * @param {Uint16Array | Uint32Array} indices\n * @param {number} left\n * @param {number} right\n * @param {number} nodeSize\n */\nfunction sort(values, boxes, indices, left, right, nodeSize) {\n if (Math.floor(left / nodeSize) >= Math.floor(right / nodeSize)) {\n return;\n }\n\n // apply median of three method\n const start = values[left];\n const mid = values[left + right >> 1];\n const end = values[right];\n let pivot = end;\n const x = Math.max(start, mid);\n if (end > x) {\n pivot = x;\n } else if (x === start) {\n pivot = Math.max(mid, end);\n } else if (x === mid) {\n pivot = Math.max(start, end);\n }\n let i = left - 1;\n let j = right + 1;\n while (true) {\n do {\n i++;\n } while (values[i] < pivot);\n do {\n j--;\n } while (values[j] > pivot);\n if (i >= j) {\n break;\n }\n swap(values, boxes, indices, i, j);\n }\n sort(values, boxes, indices, left, j, nodeSize);\n sort(values, boxes, indices, j + 1, right, nodeSize);\n}\n\n/**\n * Swap two values and two corresponding boxes.\n * @param {Uint32Array} values\n * @param {InstanceType} boxes\n * @param {Uint16Array | Uint32Array} indices\n * @param {number} i\n * @param {number} j\n */\nfunction swap(values, boxes, indices, i, j) {\n const temp = values[i];\n values[i] = values[j];\n values[j] = temp;\n const k = 4 * i;\n const m = 4 * j;\n const a = boxes[k];\n const b = boxes[k + 1];\n const c = boxes[k + 2];\n const d = boxes[k + 3];\n boxes[k] = boxes[m];\n boxes[k + 1] = boxes[m + 1];\n boxes[k + 2] = boxes[m + 2];\n boxes[k + 3] = boxes[m + 3];\n boxes[m] = a;\n boxes[m + 1] = b;\n boxes[m + 2] = c;\n boxes[m + 3] = d;\n const e = indices[i];\n indices[i] = indices[j];\n indices[j] = e;\n}\n\n/**\n * Fast Hilbert curve algorithm by http://threadlocalmutex.com/\n * Ported from C++ https://github.com/rawrunprotected/hilbert_curves (public domain)\n * @param {number} x\n * @param {number} y\n */\nfunction hilbert(x, y) {\n let a = x ^ y;\n let b = 0xffff ^ a;\n let c = 0xffff ^ (x | y);\n let d = x & (y ^ 0xffff);\n let A = a | b >> 1;\n let B = a >> 1 ^ a;\n let C = c >> 1 ^ b & d >> 1 ^ c;\n let D = a & c >> 1 ^ d >> 1 ^ d;\n a = A;\n b = B;\n c = C;\n d = D;\n A = a & a >> 2 ^ b & b >> 2;\n B = a & b >> 2 ^ b & (a ^ b) >> 2;\n C ^= a & c >> 2 ^ b & d >> 2;\n D ^= b & c >> 2 ^ (a ^ b) & d >> 2;\n a = A;\n b = B;\n c = C;\n d = D;\n A = a & a >> 4 ^ b & b >> 4;\n B = a & b >> 4 ^ b & (a ^ b) >> 4;\n C ^= a & c >> 4 ^ b & d >> 4;\n D ^= b & c >> 4 ^ (a ^ b) & d >> 4;\n a = A;\n b = B;\n c = C;\n d = D;\n C ^= a & c >> 8 ^ b & d >> 8;\n D ^= b & c >> 8 ^ (a ^ b) & d >> 8;\n a = C ^ C >> 1;\n b = D ^ D >> 1;\n let i0 = x ^ y;\n let i1 = b | 0xffff ^ (i0 | a);\n i0 = (i0 | i0 << 8) & 0x00ff00ff;\n i0 = (i0 | i0 << 4) & 0x0f0f0f0f;\n i0 = (i0 | i0 << 2) & 0x33333333;\n i0 = (i0 | i0 << 1) & 0x55555555;\n i1 = (i1 | i1 << 8) & 0x00ff00ff;\n i1 = (i1 | i1 << 4) & 0x0f0f0f0f;\n i1 = (i1 | i1 << 2) & 0x33333333;\n i1 = (i1 | i1 << 1) & 0x55555555;\n return (i1 << 1 | i0) >>> 0;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createSelector, createSelectorMemoized } from '@mui/x-internals/store';\nimport { selectorChartDrawingArea } from \"../../corePlugins/useChartDimensions/index.js\";\nimport { selectorChartSeriesConfig, selectorChartSeriesProcessed } from \"../../corePlugins/useChartSeries/index.js\";\nimport { computeAxisValue } from \"./computeAxisValue.js\";\nimport { createContinuousScaleGetAxisFilter, createDiscreteScaleGetAxisFilter, createGetAxisFilters } from \"./createAxisFilterMapper.js\";\nimport { createZoomLookup } from \"./createZoomLookup.js\";\nimport { isBandScaleConfig, isPointScaleConfig } from \"../../../../models/axis.js\";\nimport { selectorChartRawXAxis, selectorChartRawYAxis } from \"./useChartCartesianAxisLayout.selectors.js\";\nimport { selectorPreferStrictDomainInLineCharts } from \"../../corePlugins/useChartExperimentalFeature/index.js\";\nimport { getDefaultTickNumber, getTickNumber } from \"../../../ticks.js\";\nimport { getNormalizedAxisScale, getRange } from \"./getAxisScale.js\";\nimport { isOrdinalScale } from \"../../../scaleGuards.js\";\nimport { zoomScaleRange } from \"./zoom.js\";\nimport { getAxisExtrema } from \"./getAxisExtrema.js\";\nimport { calculateFinalDomain, calculateInitialDomainAndTickNumber } from \"./domain.js\";\nimport { Flatbush } from \"../../../Flatbush.js\";\nexport const createZoomMap = zoom => {\n const zoomItemMap = new Map();\n zoom.forEach(zoomItem => {\n zoomItemMap.set(zoomItem.axisId, zoomItem);\n });\n return zoomItemMap;\n};\nconst selectorChartZoomState = state => state.zoom;\nexport const selectorChartHasZoom = createSelector(selectorChartRawXAxis, selectorChartRawYAxis, (xAxes, yAxes) => xAxes?.some(axis => Boolean(axis.zoom)) || yAxes?.some(axis => Boolean(axis.zoom)) || false);\n\n/**\n * Following selectors are not exported because they exist in the MIT chart only to ba able to reuse the Zoom state from the pro.\n */\n\nexport const selectorChartZoomIsInteracting = createSelector(selectorChartZoomState, zoom => zoom?.isInteracting);\nexport const selectorChartZoomMap = createSelectorMemoized(selectorChartZoomState, function selectorChartZoomMap(zoom) {\n return zoom?.zoomData && createZoomMap(zoom?.zoomData);\n});\nexport const selectorChartAxisZoomData = createSelector(selectorChartZoomMap, (zoomMap, axisId) => zoomMap?.get(axisId));\nexport const selectorChartZoomOptionsLookup = createSelectorMemoized(selectorChartRawXAxis, selectorChartRawYAxis, function selectorChartZoomOptionsLookup(xAxis, yAxis) {\n return _extends({}, createZoomLookup('x')(xAxis), createZoomLookup('y')(yAxis));\n});\nexport const selectorChartAxisZoomOptionsLookup = createSelector(selectorChartZoomOptionsLookup, (axisLookup, axisId) => axisLookup[axisId]);\nexport const selectorDefaultXAxisTickNumber = createSelector(selectorChartDrawingArea, function selectorDefaultXAxisTickNumber(drawingArea) {\n return getDefaultTickNumber(drawingArea.width);\n});\nexport const selectorDefaultYAxisTickNumber = createSelector(selectorChartDrawingArea, function selectorDefaultYAxisTickNumber(drawingArea) {\n return getDefaultTickNumber(drawingArea.height);\n});\nexport const selectorChartXAxisWithDomains = createSelectorMemoized(selectorChartRawXAxis, selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorPreferStrictDomainInLineCharts, selectorDefaultXAxisTickNumber, function selectorChartXAxisWithDomains(axes, formattedSeries, seriesConfig, preferStrictDomainInLineCharts, defaultTickNumber) {\n const axisDirection = 'x';\n const domains = {};\n axes?.forEach((eachAxis, axisIndex) => {\n const axis = eachAxis;\n if (isBandScaleConfig(axis) || isPointScaleConfig(axis)) {\n domains[axis.id] = {\n domain: axis.data\n };\n if (axis.ordinalTimeTicks !== undefined) {\n domains[axis.id].tickNumber = getTickNumber(axis, [axis.data?.find(d => d !== null), axis.data?.findLast(d => d !== null)], defaultTickNumber);\n }\n return;\n }\n const axisExtrema = getAxisExtrema(axis, axisDirection, seriesConfig, axisIndex, formattedSeries);\n domains[axis.id] = calculateInitialDomainAndTickNumber(axis, 'x', axisIndex, formattedSeries, axisExtrema, defaultTickNumber, preferStrictDomainInLineCharts);\n });\n return {\n axes,\n domains\n };\n});\nexport const selectorChartYAxisWithDomains = createSelectorMemoized(selectorChartRawYAxis, selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorPreferStrictDomainInLineCharts, selectorDefaultYAxisTickNumber, function selectorChartYAxisWithDomains(axes, formattedSeries, seriesConfig, preferStrictDomainInLineCharts, defaultTickNumber) {\n const axisDirection = 'y';\n const domains = {};\n axes?.forEach((eachAxis, axisIndex) => {\n const axis = eachAxis;\n if (isBandScaleConfig(axis) || isPointScaleConfig(axis)) {\n domains[axis.id] = {\n domain: axis.data\n };\n if (axis.ordinalTimeTicks !== undefined) {\n domains[axis.id].tickNumber = getTickNumber(axis, [axis.data?.find(d => d !== null), axis.data?.findLast(d => d !== null)], defaultTickNumber);\n }\n return;\n }\n const axisExtrema = getAxisExtrema(axis, axisDirection, seriesConfig, axisIndex, formattedSeries);\n domains[axis.id] = calculateInitialDomainAndTickNumber(axis, 'y', axisIndex, formattedSeries, axisExtrema, defaultTickNumber, preferStrictDomainInLineCharts);\n });\n return {\n axes,\n domains\n };\n});\nexport const selectorChartZoomAxisFilters = createSelectorMemoized(selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartXAxisWithDomains, selectorChartYAxisWithDomains, function selectorChartZoomAxisFilters(zoomMap, zoomOptions, {\n axes: xAxis,\n domains: xDomains\n}, {\n axes: yAxis,\n domains: yDomains\n}) {\n if (!zoomMap || !zoomOptions) {\n return undefined;\n }\n let hasFilter = false;\n const filters = {};\n const axes = [...(xAxis ?? []), ...(yAxis ?? [])];\n for (let i = 0; i < axes.length; i += 1) {\n const axis = axes[i];\n if (!zoomOptions[axis.id] || zoomOptions[axis.id].filterMode !== 'discard') {\n continue;\n }\n const zoom = zoomMap.get(axis.id);\n if (zoom === undefined || zoom.start <= 0 && zoom.end >= 100) {\n // No zoom, or zoom with all data visible\n continue;\n }\n const axisDirection = i < (xAxis?.length ?? 0) ? 'x' : 'y';\n if (axis.scaleType === 'band' || axis.scaleType === 'point') {\n filters[axis.id] = createDiscreteScaleGetAxisFilter(axis.data, zoom.start, zoom.end, axisDirection);\n } else {\n const {\n domain\n } = axisDirection === 'x' ? xDomains[axis.id] : yDomains[axis.id];\n filters[axis.id] = createContinuousScaleGetAxisFilter(\n // For continuous scales, the domain is always a two-value array.\n domain, zoom.start, zoom.end, axisDirection, axis.data);\n }\n hasFilter = true;\n }\n if (!hasFilter) {\n return undefined;\n }\n return createGetAxisFilters(filters);\n});\nexport const selectorChartFilteredXDomains = createSelectorMemoized(selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartZoomAxisFilters, selectorPreferStrictDomainInLineCharts, selectorChartXAxisWithDomains, function selectorChartFilteredXDomains(formattedSeries, seriesConfig, zoomMap, zoomOptions, getFilters, preferStrictDomainInLineCharts, {\n axes,\n domains\n}) {\n const filteredDomains = {};\n axes?.forEach((axis, axisIndex) => {\n const domain = domains[axis.id].domain;\n if (isBandScaleConfig(axis) || isPointScaleConfig(axis)) {\n filteredDomains[axis.id] = domain;\n return;\n }\n const zoom = zoomMap?.get(axis.id);\n const zoomOption = zoomOptions?.[axis.id];\n const filter = zoom === undefined && !zoomOption ? getFilters : undefined; // Do not apply filtering if zoom is already defined.\n\n if (!filter) {\n filteredDomains[axis.id] = domain;\n return;\n }\n const rawTickNumber = domains[axis.id].tickNumber;\n const axisExtrema = getAxisExtrema(axis, 'x', seriesConfig, axisIndex, formattedSeries, filter);\n filteredDomains[axis.id] = calculateFinalDomain(axis, 'x', axisIndex, formattedSeries, axisExtrema, rawTickNumber, preferStrictDomainInLineCharts);\n });\n return filteredDomains;\n});\nexport const selectorChartFilteredYDomains = createSelectorMemoized(selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartZoomAxisFilters, selectorPreferStrictDomainInLineCharts, selectorChartYAxisWithDomains, function selectorChartFilteredYDomains(formattedSeries, seriesConfig, zoomMap, zoomOptions, getFilters, preferStrictDomainInLineCharts, {\n axes,\n domains\n}) {\n const filteredDomains = {};\n axes?.forEach((axis, axisIndex) => {\n const domain = domains[axis.id].domain;\n if (isBandScaleConfig(axis) || isPointScaleConfig(axis)) {\n filteredDomains[axis.id] = domain;\n return;\n }\n const zoom = zoomMap?.get(axis.id);\n const zoomOption = zoomOptions?.[axis.id];\n const filter = zoom === undefined && !zoomOption ? getFilters : undefined; // Do not apply filtering if zoom is already defined.\n\n if (!filter) {\n filteredDomains[axis.id] = domain;\n return;\n }\n const rawTickNumber = domains[axis.id].tickNumber;\n const axisExtrema = getAxisExtrema(axis, 'y', seriesConfig, axisIndex, formattedSeries, filter);\n filteredDomains[axis.id] = calculateFinalDomain(axis, 'y', axisIndex, formattedSeries, axisExtrema, rawTickNumber, preferStrictDomainInLineCharts);\n });\n return filteredDomains;\n});\nexport const selectorChartNormalizedXScales = createSelectorMemoized(selectorChartRawXAxis, selectorChartFilteredXDomains, function selectorChartNormalizedXScales(axes, filteredDomains) {\n const scales = {};\n axes?.forEach(eachAxis => {\n const axis = eachAxis;\n const domain = filteredDomains[axis.id];\n scales[axis.id] = getNormalizedAxisScale(axis, domain);\n });\n return scales;\n});\nexport const selectorChartNormalizedYScales = createSelectorMemoized(selectorChartRawYAxis, selectorChartFilteredYDomains, function selectorChartNormalizedYScales(axes, filteredDomains) {\n const scales = {};\n axes?.forEach(eachAxis => {\n const axis = eachAxis;\n const domain = filteredDomains[axis.id];\n scales[axis.id] = getNormalizedAxisScale(axis, domain);\n });\n return scales;\n});\nexport const selectorChartXScales = createSelectorMemoized(selectorChartRawXAxis, selectorChartNormalizedXScales, selectorChartDrawingArea, selectorChartZoomMap, function selectorChartXScales(axes, normalizedScales, drawingArea, zoomMap) {\n const scales = {};\n axes?.forEach(eachAxis => {\n const axis = eachAxis;\n const zoom = zoomMap?.get(axis.id);\n const zoomRange = zoom ? [zoom.start, zoom.end] : [0, 100];\n const range = getRange(drawingArea, 'x', axis);\n const scale = normalizedScales[axis.id].copy();\n const zoomedRange = zoomScaleRange(range, zoomRange);\n scale.range(zoomedRange);\n scales[axis.id] = scale;\n });\n return scales;\n});\nexport const selectorChartYScales = createSelectorMemoized(selectorChartRawYAxis, selectorChartNormalizedYScales, selectorChartDrawingArea, selectorChartZoomMap, function selectorChartYScales(axes, normalizedScales, drawingArea, zoomMap) {\n const scales = {};\n axes?.forEach(eachAxis => {\n const axis = eachAxis;\n const zoom = zoomMap?.get(axis.id);\n const zoomRange = zoom ? [zoom.start, zoom.end] : [0, 100];\n const range = getRange(drawingArea, 'y', axis);\n const scale = normalizedScales[axis.id].copy();\n const scaleRange = isOrdinalScale(scale) ? range.reverse() : range;\n const zoomedRange = zoomScaleRange(scaleRange, zoomRange);\n scale.range(zoomedRange);\n scales[axis.id] = scale;\n });\n return scales;\n});\n\n/**\n * The only interesting selectors that merge axis data and zoom if provided.\n */\n\nexport const selectorChartXAxis = createSelectorMemoized(selectorChartDrawingArea, selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartZoomMap, selectorChartXAxisWithDomains, selectorChartXScales, function selectorChartXAxis(drawingArea, formattedSeries, seriesConfig, zoomMap, {\n axes,\n domains\n}, scales) {\n return computeAxisValue({\n scales,\n drawingArea,\n formattedSeries,\n axis: axes,\n seriesConfig,\n axisDirection: 'x',\n zoomMap,\n domains\n });\n});\nexport const selectorChartYAxis = createSelectorMemoized(selectorChartDrawingArea, selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartZoomMap, selectorChartYAxisWithDomains, selectorChartYScales, function selectorChartYAxis(drawingArea, formattedSeries, seriesConfig, zoomMap, {\n axes,\n domains\n}, scales) {\n return computeAxisValue({\n scales,\n drawingArea,\n formattedSeries,\n axis: axes,\n seriesConfig,\n axisDirection: 'y',\n zoomMap,\n domains\n });\n});\nexport const selectorChartAxis = createSelector(selectorChartXAxis, selectorChartYAxis, (xAxes, yAxes, axisId) => xAxes?.axis[axisId] ?? yAxes?.axis[axisId]);\nexport const selectorChartRawAxis = createSelector(selectorChartRawXAxis, selectorChartRawYAxis, (xAxes, yAxes, axisId) => {\n const axis = xAxes?.find(a => a.id === axisId) ?? yAxes?.find(a => a.id === axisId) ?? null;\n if (!axis) {\n return undefined;\n }\n return axis;\n});\nexport const selectorChartDefaultXAxisId = createSelector(selectorChartRawXAxis, xAxes => xAxes[0].id);\nexport const selectorChartDefaultYAxisId = createSelector(selectorChartRawYAxis, yAxes => yAxes[0].id);\nconst EMPTY_MAP = new Map();\nexport const selectorChartSeriesEmptyFlatbushMap = () => EMPTY_MAP;\nexport const selectorChartSeriesFlatbushMap = createSelectorMemoized(selectorChartSeriesProcessed, selectorChartNormalizedXScales, selectorChartNormalizedYScales, selectorChartDefaultXAxisId, selectorChartDefaultYAxisId, function selectChartSeriesFlatbushMap(allSeries, xAxesScaleMap, yAxesScaleMap, defaultXAxisId, defaultYAxisId) {\n // FIXME: Do we want to support non-scatter series here?\n const validSeries = allSeries.scatter;\n const flatbushMap = new Map();\n if (!validSeries) {\n return flatbushMap;\n }\n validSeries.seriesOrder.forEach(seriesId => {\n const {\n data,\n xAxisId = defaultXAxisId,\n yAxisId = defaultYAxisId\n } = validSeries.series[seriesId];\n const flatbush = new Flatbush(data.length);\n const originalXScale = xAxesScaleMap[xAxisId];\n const originalYScale = yAxesScaleMap[yAxisId];\n for (const datum of data) {\n // Add the points using a [0, 1] range so that we don't need to recreate the Flatbush structure when zooming.\n // This doesn't happen in practice, though, because currently the scales depend on the drawing area.\n flatbush.add(originalXScale(datum.x), originalYScale(datum.y));\n }\n flatbush.finish();\n flatbushMap.set(seriesId, flatbush);\n });\n return flatbushMap;\n});","import { isOrdinalScale } from \"../../../scaleGuards.js\";\nfunction getAsANumber(value) {\n return value instanceof Date ? value.getTime() : value;\n}\n\n/**\n * For a pointer coordinate, this function returns the dataIndex associated.\n * Returns `-1` if no dataIndex matches.\n */\nexport function getAxisIndex(axisConfig, pointerValue) {\n const {\n scale,\n data: axisData,\n reverse\n } = axisConfig;\n if (!isOrdinalScale(scale)) {\n const value = scale.invert(pointerValue);\n if (axisData === undefined) {\n return -1;\n }\n const valueAsNumber = getAsANumber(value);\n const closestIndex = axisData?.findIndex((pointValue, index) => {\n const v = getAsANumber(pointValue);\n if (v > valueAsNumber) {\n if (index === 0 || Math.abs(valueAsNumber - v) <= Math.abs(valueAsNumber - getAsANumber(axisData[index - 1]))) {\n return true;\n }\n }\n if (v <= valueAsNumber) {\n if (index === axisData.length - 1 || Math.abs(getAsANumber(value) - v) < Math.abs(getAsANumber(value) - getAsANumber(axisData[index + 1]))) {\n return true;\n }\n }\n return false;\n });\n return closestIndex;\n }\n const dataIndex = scale.bandwidth() === 0 ? Math.floor((pointerValue - Math.min(...scale.range()) + scale.step() / 2) / scale.step()) : Math.floor((pointerValue - Math.min(...scale.range())) / scale.step());\n if (dataIndex < 0 || dataIndex >= axisData.length) {\n return -1;\n }\n return reverse ? axisData.length - 1 - dataIndex : dataIndex;\n}\n\n/**\n * For a pointer coordinate, this function returns the value associated.\n * Returns `null` if the coordinate has no value associated.\n */\nexport function getAxisValue(scale, axisData, pointerValue, dataIndex) {\n if (!isOrdinalScale(scale)) {\n if (dataIndex === null) {\n const invertedValue = scale.invert(pointerValue);\n return Number.isNaN(invertedValue) ? null : invertedValue;\n }\n return axisData[dataIndex];\n }\n if (dataIndex === null || dataIndex < 0 || dataIndex >= axisData.length) {\n return null;\n }\n return axisData[dataIndex];\n}","/**\n * Transform mouse event position to coordinates inside the SVG.\n * @param svg The SVG element\n * @param event The mouseEvent to transform\n */\nexport function getSVGPoint(svg, event) {\n const pt = svg.createSVGPoint();\n pt.x = event.clientX;\n pt.y = event.clientY;\n return pt.matrixTransform(svg.getScreenCTM().inverse());\n}","import { createSelector } from '@mui/x-internals/store';\nconst selectInteraction = state => state.interaction;\nexport const selectorChartsInteractionIsInitialized = createSelector(selectInteraction, interaction => interaction !== undefined);\nexport const selectorChartsInteractionPointer = createSelector(selectInteraction, interaction => interaction?.pointer ?? null);\nexport const selectorChartsInteractionPointerX = createSelector(selectorChartsInteractionPointer, pointer => pointer && pointer.x);\nexport const selectorChartsInteractionPointerY = createSelector(selectorChartsInteractionPointer, pointer => pointer && pointer.y);\nexport const selectorChartsLastInteraction = createSelector(selectInteraction, interaction => interaction?.lastUpdate);","/**\n * Based on `fast-deep-equal`\n *\n * MIT License\n *\n * Copyright (c) 2017 Evgeny Poberezkin\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Check if two values are deeply equal.\n */\n\nexport function isDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (Array.isArray(a)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (!isDeepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) {\n return false;\n }\n const entriesA = Array.from(a.entries());\n for (let i = 0; i < entriesA.length; i += 1) {\n if (!b.has(entriesA[i][0])) {\n return false;\n }\n }\n for (let i = 0; i < entriesA.length; i += 1) {\n const entryA = entriesA[i];\n if (!isDeepEqual(entryA[1], b.get(entryA[0]))) {\n return false;\n }\n }\n return true;\n }\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) {\n return false;\n }\n const entries = Array.from(a.entries());\n for (let i = 0; i < entries.length; i += 1) {\n if (!b.has(entries[i][0])) {\n return false;\n }\n }\n return true;\n }\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf();\n }\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString();\n }\n const keys = Object.keys(a);\n const length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (let i = 0; i < length; i += 1) {\n const key = keys[i];\n if (!isDeepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n\n // true if both NaN, false otherwise\n // eslint-disable-next-line no-self-compare\n return a !== a && b !== b;\n}","import { isDeepEqual } from '@mui/x-internals/isDeepEqual';\nimport { createSelector, createSelectorMemoizedWithOptions } from '@mui/x-internals/store';\nimport { selectorChartsInteractionPointerX, selectorChartsInteractionPointerY } from \"../useChartInteraction/useChartInteraction.selectors.js\";\nimport { getAxisIndex, getAxisValue } from \"./getAxisValue.js\";\nimport { selectorChartXAxis, selectorChartYAxis } from \"./useChartCartesianAxisRendering.selectors.js\";\n\n/**\n * Get interaction indexes\n */\n\nfunction indexGetter(value, axes, ids = axes.axisIds[0]) {\n return Array.isArray(ids) ? ids.map(id => getAxisIndex(axes.axis[id], value)) : getAxisIndex(axes.axis[ids], value);\n}\nexport const selectChartsInteractionAxisIndex = (value, axes, id) => {\n if (value === null) {\n return null;\n }\n const index = indexGetter(value, axes, id);\n return index === -1 ? null : index;\n};\nexport const selectorChartsInteractionXAxisIndex = createSelector(selectorChartsInteractionPointerX, selectorChartXAxis, selectChartsInteractionAxisIndex);\nexport const selectorChartsInteractionYAxisIndex = createSelector(selectorChartsInteractionPointerY, selectorChartYAxis, selectChartsInteractionAxisIndex);\nexport const selectorChartAxisInteraction = createSelector(selectorChartsInteractionPointerX, selectorChartsInteractionPointerY, selectorChartXAxis, selectorChartYAxis, (x, y, xAxis, yAxis) => [...(x === null ? [] : xAxis.axisIds.map(axisId => ({\n axisId,\n dataIndex: indexGetter(x, xAxis, axisId)\n}))), ...(y === null ? [] : yAxis.axisIds.map(axisId => ({\n axisId,\n dataIndex: indexGetter(y, yAxis, axisId)\n})))].filter(item => item.dataIndex !== null && item.dataIndex >= 0));\n\n/**\n * Get interaction values\n */\n\nfunction valueGetter(value, axes, indexes, ids = axes.axisIds[0]) {\n return Array.isArray(ids) ? ids.map((id, axisIndex) => {\n const axis = axes.axis[id];\n return getAxisValue(axis.scale, axis.data, value, indexes[axisIndex]);\n }) : getAxisValue(axes.axis[ids].scale, axes.axis[ids].data, value, indexes);\n}\nexport const selectorChartsInteractionXAxisValue = createSelector(selectorChartsInteractionPointerX, selectorChartXAxis, selectorChartsInteractionXAxisIndex, (x, xAxes, xIndex, id) => {\n if (x === null || xAxes.axisIds.length === 0) {\n return null;\n }\n return valueGetter(x, xAxes, xIndex, id);\n});\nexport const selectorChartsInteractionYAxisValue = createSelector(selectorChartsInteractionPointerY, selectorChartYAxis, selectorChartsInteractionYAxisIndex, (y, yAxes, yIndex, id) => {\n if (y === null || yAxes.axisIds.length === 0) {\n return null;\n }\n return valueGetter(y, yAxes, yIndex, id);\n});\nconst EMPTY_ARRAY = [];\n\n/**\n * Get x-axis ids and corresponding data index that should be display in the tooltip.\n */\nexport const selectorChartsInteractionTooltipXAxes = createSelectorMemoizedWithOptions({\n memoizeOptions: {\n // Keep the same reference if array content is the same.\n // If possible, avoid this pattern by creating selectors that\n // uses string/number as arguments.\n resultEqualityCheck: isDeepEqual\n }\n})(selectorChartsInteractionPointerX, selectorChartXAxis, (value, axes) => {\n if (value === null) {\n return EMPTY_ARRAY;\n }\n return axes.axisIds.filter(id => axes.axis[id].triggerTooltip).map(axisId => ({\n axisId,\n dataIndex: getAxisIndex(axes.axis[axisId], value)\n })).filter(({\n dataIndex\n }) => dataIndex >= 0);\n});\n\n/**\n * Get y-axis ids and corresponding data index that should be display in the tooltip.\n */\nexport const selectorChartsInteractionTooltipYAxes = createSelectorMemoizedWithOptions({\n memoizeOptions: {\n // Keep the same reference if array content is the same.\n // If possible, avoid this pattern by creating selectors that\n // uses string/number as arguments.\n resultEqualityCheck: isDeepEqual\n }\n})(selectorChartsInteractionPointerY, selectorChartYAxis, (value, axes) => {\n if (value === null) {\n return EMPTY_ARRAY;\n }\n return axes.axisIds.filter(id => axes.axis[id].triggerTooltip).map(axisId => ({\n axisId,\n dataIndex: getAxisIndex(axes.axis[axisId], value)\n })).filter(({\n dataIndex\n }) => dataIndex >= 0);\n});\n\n/**\n * Return `true` if the axis tooltip has something to display.\n */\nexport const selectorChartsInteractionAxisTooltip = createSelector(selectorChartsInteractionTooltipXAxes, selectorChartsInteractionTooltipYAxes, (xTooltip, yTooltip) => xTooltip.length > 0 || yTooltip.length > 0);","export function checkHasInteractionPlugin(instance) {\n return instance.setPointerCoordinate !== undefined;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { useStoreEffect } from '@mui/x-internals/store';\nimport { useAssertModelConsistency } from '@mui/x-internals/useAssertModelConsistency';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { rainbowSurgePalette } from \"../../../../colorPalettes/index.js\";\nimport { selectorChartDrawingArea } from \"../../corePlugins/useChartDimensions/useChartDimensions.selectors.js\";\nimport { selectorChartSeriesProcessed } from \"../../corePlugins/useChartSeries/useChartSeries.selectors.js\";\nimport { defaultizeXAxis, defaultizeYAxis } from \"./defaultizeAxis.js\";\nimport { selectorChartXAxis, selectorChartYAxis } from \"./useChartCartesianAxisRendering.selectors.js\";\nimport { getAxisIndex } from \"./getAxisValue.js\";\nimport { getSVGPoint } from \"../../../getSVGPoint.js\";\nimport { selectorChartsInteractionIsInitialized } from \"../useChartInteraction/index.js\";\nimport { selectorChartAxisInteraction } from \"./useChartCartesianInteraction.selectors.js\";\nimport { checkHasInteractionPlugin } from \"../useChartInteraction/checkHasInteractionPlugin.js\";\nconst AXIS_CLICK_SERIES_TYPES = new Set(['bar', 'rangeBar', 'line']);\nexport const useChartCartesianAxis = ({\n params,\n store,\n seriesConfig,\n svgRef,\n instance\n}) => {\n const {\n xAxis,\n yAxis,\n dataset,\n onHighlightedAxisChange\n } = params;\n if (process.env.NODE_ENV !== 'production') {\n const ids = [...(xAxis ?? []), ...(yAxis ?? [])].filter(axis => axis.id).map(axis => axis.id);\n const duplicates = new Set(ids.filter((id, index) => ids.indexOf(id) !== index));\n if (duplicates.size > 0) {\n warnOnce([`MUI X Charts: The following axis ids are duplicated: ${Array.from(duplicates).join(', ')}.`, `Please make sure that each axis has a unique id.`].join('\\n'), 'error');\n }\n }\n const drawingArea = store.use(selectorChartDrawingArea);\n const processedSeries = store.use(selectorChartSeriesProcessed);\n const isInteractionEnabled = store.use(selectorChartsInteractionIsInitialized);\n const {\n axis: xAxisWithScale,\n axisIds: xAxisIds\n } = store.use(selectorChartXAxis);\n const {\n axis: yAxisWithScale,\n axisIds: yAxisIds\n } = store.use(selectorChartYAxis);\n useAssertModelConsistency({\n warningPrefix: 'MUI X Charts',\n componentName: 'Chart',\n propName: 'highlightedAxis',\n controlled: params.highlightedAxis,\n defaultValue: undefined\n });\n useEnhancedEffect(() => {\n if (params.highlightedAxis !== undefined) {\n store.set('controlledCartesianAxisHighlight', params.highlightedAxis);\n }\n }, [store, params.highlightedAxis]);\n\n // The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartCartesianAxis`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n store.set('cartesianAxis', {\n x: defaultizeXAxis(xAxis, dataset),\n y: defaultizeYAxis(yAxis, dataset)\n });\n }, [seriesConfig, drawingArea, xAxis, yAxis, dataset, store]);\n const usedXAxis = xAxisIds[0];\n const usedYAxis = yAxisIds[0];\n useStoreEffect(store, selectorChartAxisInteraction, (prevAxisInteraction, nextAxisInteraction) => {\n if (!onHighlightedAxisChange) {\n return;\n }\n if (Object.is(prevAxisInteraction, nextAxisInteraction)) {\n return;\n }\n if (prevAxisInteraction.length !== nextAxisInteraction.length) {\n onHighlightedAxisChange(nextAxisInteraction);\n return;\n }\n if (prevAxisInteraction?.some(({\n axisId,\n dataIndex\n }, itemIndex) => nextAxisInteraction[itemIndex].axisId !== axisId || nextAxisInteraction[itemIndex].dataIndex !== dataIndex)) {\n onHighlightedAxisChange(nextAxisInteraction);\n }\n });\n const hasInteractionPlugin = checkHasInteractionPlugin(instance);\n React.useEffect(() => {\n const element = svgRef.current;\n if (!isInteractionEnabled || !hasInteractionPlugin || !element || params.disableAxisListener) {\n return () => {};\n }\n\n // Clean the interaction when the mouse leaves the chart.\n const moveEndHandler = instance.addInteractionListener('moveEnd', event => {\n if (!event.detail.activeGestures.pan) {\n instance.cleanInteraction();\n }\n });\n const panEndHandler = instance.addInteractionListener('panEnd', event => {\n if (!event.detail.activeGestures.move) {\n instance.cleanInteraction();\n }\n });\n const pressEndHandler = instance.addInteractionListener('quickPressEnd', event => {\n if (!event.detail.activeGestures.move && !event.detail.activeGestures.pan) {\n instance.cleanInteraction();\n }\n });\n const gestureHandler = event => {\n const srvEvent = event.detail.srcEvent;\n const target = event.detail.target;\n const svgPoint = getSVGPoint(element, srvEvent);\n\n // Release the pointer capture if we are panning, as this would cause the tooltip to\n // be locked to the first \"section\" it touches.\n if (event.detail.srcEvent.buttons >= 1 && target?.hasPointerCapture(event.detail.srcEvent.pointerId) && !target?.closest('[data-charts-zoom-slider]')) {\n target?.releasePointerCapture(event.detail.srcEvent.pointerId);\n }\n if (!instance.isPointInside(svgPoint.x, svgPoint.y, target)) {\n instance.cleanInteraction?.();\n return;\n }\n instance.setPointerCoordinate(svgPoint);\n };\n const moveHandler = instance.addInteractionListener('move', gestureHandler);\n const panHandler = instance.addInteractionListener('pan', gestureHandler);\n const pressHandler = instance.addInteractionListener('quickPress', gestureHandler);\n return () => {\n moveHandler.cleanup();\n moveEndHandler.cleanup();\n panHandler.cleanup();\n panEndHandler.cleanup();\n pressHandler.cleanup();\n pressEndHandler.cleanup();\n };\n }, [svgRef, store, xAxisWithScale, usedXAxis, yAxisWithScale, usedYAxis, instance, params.disableAxisListener, isInteractionEnabled, hasInteractionPlugin]);\n React.useEffect(() => {\n const element = svgRef.current;\n const onAxisClick = params.onAxisClick;\n if (element === null || !onAxisClick) {\n return () => {};\n }\n const axisClickHandler = instance.addInteractionListener('tap', event => {\n let dataIndex = null;\n let isXAxis = false;\n const svgPoint = getSVGPoint(element, event.detail.srcEvent);\n const xIndex = getAxisIndex(xAxisWithScale[usedXAxis], svgPoint.x);\n isXAxis = xIndex !== -1;\n dataIndex = isXAxis ? xIndex : getAxisIndex(yAxisWithScale[usedYAxis], svgPoint.y);\n const USED_AXIS_ID = isXAxis ? xAxisIds[0] : yAxisIds[0];\n if (dataIndex == null || dataIndex === -1) {\n return;\n }\n\n // The .data exist because otherwise the dataIndex would be null or -1.\n const axisValue = (isXAxis ? xAxisWithScale : yAxisWithScale)[USED_AXIS_ID].data[dataIndex];\n const seriesValues = {};\n Object.keys(processedSeries).filter(seriesType => AXIS_CLICK_SERIES_TYPES.has(seriesType)).forEach(seriesType => {\n // @ts-ignore\n const seriesTypeConfig = processedSeries[seriesType];\n seriesTypeConfig?.seriesOrder.forEach(seriesId => {\n const seriesItem = seriesTypeConfig.series[seriesId];\n const providedXAxisId = seriesItem.xAxisId;\n const providedYAxisId = seriesItem.yAxisId;\n const axisKey = isXAxis ? providedXAxisId : providedYAxisId;\n if (axisKey === undefined || axisKey === USED_AXIS_ID) {\n // @ts-ignore This is safe because users need to opt in to use range bar series.\n // In that case, they should import the module augmentation from `x-charts-pro/moduleAugmentation/rangeBarOnClick`\n // Which adds the proper type to the series data.\n // TODO(v9): Remove this ts-ignore when we can make the breaking change to ChartsAxisData.\n seriesValues[seriesId] = seriesItem.data[dataIndex];\n }\n });\n });\n onAxisClick(event.detail.srcEvent, {\n dataIndex,\n axisValue,\n seriesValues\n });\n });\n return () => {\n axisClickHandler.cleanup();\n };\n }, [params.onAxisClick, processedSeries, svgRef, xAxisWithScale, xAxisIds, yAxisWithScale, yAxisIds, usedXAxis, usedYAxis, instance]);\n return {};\n};\nuseChartCartesianAxis.params = {\n xAxis: true,\n yAxis: true,\n dataset: true,\n onAxisClick: true,\n disableAxisListener: true,\n onHighlightedAxisChange: true,\n highlightedAxis: true\n};\nuseChartCartesianAxis.getDefaultizedParams = ({\n params\n}) => {\n return _extends({}, params, {\n colors: params.colors ?? rainbowSurgePalette,\n theme: params.theme ?? 'light',\n defaultizedXAxis: defaultizeXAxis(params.xAxis, params.dataset),\n defaultizedYAxis: defaultizeYAxis(params.yAxis, params.dataset)\n });\n};\nuseChartCartesianAxis.getInitialState = params => _extends({\n cartesianAxis: {\n x: params.defaultizedXAxis,\n y: params.defaultizedYAxis\n }\n}, params.highlightedAxis === undefined ? {} : {\n controlledCartesianAxisHighlight: params.highlightedAxis\n});","const is = Object.is;\n\n/**\n * Fast shallow compare for objects.\n * @returns true if objects are equal.\n */\nexport function fastObjectShallowCompare(a, b) {\n if (a === b) {\n return true;\n }\n if (!(a instanceof Object) || !(b instanceof Object)) {\n return false;\n }\n let aLength = 0;\n let bLength = 0;\n\n /* eslint-disable guard-for-in */\n for (const key in a) {\n aLength += 1;\n if (!is(a[key], b[key])) {\n return false;\n }\n if (!(key in b)) {\n return false;\n }\n }\n\n /* eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unused-vars */\n for (const _ in b) {\n bLength += 1;\n }\n return aLength === bLength;\n}","import useEventCallback from '@mui/utils/useEventCallback';\nimport { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';\nexport const useChartTooltip = ({\n store\n}) => {\n const removeTooltipItem = useEventCallback(function removeTooltipItem(itemToRemove) {\n const prevItem = store.state.tooltip.item;\n if (!itemToRemove) {\n // Remove without taking care of the current item\n if (prevItem !== null) {\n store.set('tooltip', {\n item: null\n });\n }\n return;\n }\n if (prevItem === null || !fastObjectShallowCompare(prevItem, itemToRemove)) {\n // The current item is already different from the one to remove. No need to clean it.\n return;\n }\n store.set('tooltip', {\n item: null\n });\n });\n const setTooltipItem = useEventCallback(function setTooltipItem(newItem) {\n if (!fastObjectShallowCompare(store.state.tooltip.item, newItem)) {\n store.set('tooltip', {\n item: newItem\n });\n }\n });\n return {\n instance: {\n setTooltipItem,\n removeTooltipItem\n }\n };\n};\nuseChartTooltip.getInitialState = () => ({\n tooltip: {\n item: null\n }\n});\nuseChartTooltip.params = {};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport const useChartInteraction = ({\n store\n}) => {\n const cleanInteraction = useEventCallback(function cleanInteraction() {\n store.update({\n interaction: _extends({}, store.state.interaction, {\n pointer: null\n })\n });\n });\n const setLastUpdateSource = useEventCallback(function setLastUpdateSource(interaction) {\n if (store.state.interaction.lastUpdate !== interaction) {\n store.set('interaction', _extends({}, store.state.interaction, {\n lastUpdate: interaction\n }));\n }\n });\n const setPointerCoordinate = useEventCallback(function setPointerCoordinate(coordinate) {\n store.set('interaction', _extends({}, store.state.interaction, {\n pointer: coordinate,\n lastUpdate: coordinate !== null ? 'pointer' : store.state.interaction.lastUpdate\n }));\n });\n return {\n instance: {\n cleanInteraction,\n setLastUpdateSource,\n setPointerCoordinate\n }\n };\n};\nuseChartInteraction.getInitialState = () => ({\n interaction: {\n item: null,\n pointer: null,\n lastUpdate: 'pointer'\n }\n});\nuseChartInteraction.params = {};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { getColorScale, getOrdinalColorScale } from \"../../../colorScale.js\";\nfunction addDefaultId(axisConfig, defaultId) {\n if (axisConfig.id !== undefined) {\n return axisConfig;\n }\n return _extends({\n id: defaultId\n }, axisConfig);\n}\nfunction processColorMap(axisConfig) {\n if (!axisConfig.colorMap) {\n return axisConfig;\n }\n return _extends({}, axisConfig, {\n colorScale: axisConfig.colorMap.type === 'ordinal' && axisConfig.data ? getOrdinalColorScale(_extends({\n values: axisConfig.data\n }, axisConfig.colorMap)) : getColorScale(axisConfig.colorMap.type === 'continuous' ? _extends({\n min: axisConfig.min,\n max: axisConfig.max\n }, axisConfig.colorMap) : axisConfig.colorMap)\n });\n}\nfunction getZAxisState(zAxis, dataset) {\n if (!zAxis || zAxis.length === 0) {\n return {\n axis: {},\n axisIds: []\n };\n }\n const zAxisLookup = {};\n const axisIds = [];\n zAxis.forEach((axisConfig, index) => {\n const dataKey = axisConfig.dataKey;\n const defaultizedId = axisConfig.id ?? `defaultized-z-axis-${index}`;\n if (dataKey === undefined || axisConfig.data !== undefined) {\n zAxisLookup[defaultizedId] = processColorMap(addDefaultId(axisConfig, defaultizedId));\n axisIds.push(defaultizedId);\n return;\n }\n if (dataset === undefined) {\n throw new Error('MUI X Charts: z-axis uses `dataKey` but no `dataset` is provided.');\n }\n zAxisLookup[defaultizedId] = processColorMap(addDefaultId(_extends({}, axisConfig, {\n data: dataset.map(d => d[dataKey])\n }), defaultizedId));\n axisIds.push(defaultizedId);\n });\n return {\n axis: zAxisLookup,\n axisIds\n };\n}\nexport const useChartZAxis = ({\n params,\n store\n}) => {\n const {\n zAxis,\n dataset\n } = params;\n\n // The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartZAxis`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n store.set('zAxis', getZAxisState(zAxis, dataset));\n }, [zAxis, dataset, store]);\n return {};\n};\nuseChartZAxis.params = {\n zAxis: true,\n dataset: true\n};\nuseChartZAxis.getInitialState = params => ({\n zAxis: getZAxisState(params.zAxis, params.dataset)\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { useAssertModelConsistency } from '@mui/x-internals/useAssertModelConsistency';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';\nexport const useChartHighlight = ({\n store,\n params\n}) => {\n useAssertModelConsistency({\n warningPrefix: 'MUI X Charts',\n componentName: 'Chart',\n propName: 'highlightedItem',\n controlled: params.highlightedItem,\n defaultValue: null\n });\n useEnhancedEffect(() => {\n if (store.state.highlight.item !== params.highlightedItem) {\n store.set('highlight', _extends({}, store.state.highlight, {\n item: params.highlightedItem\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n if (params.highlightedItem !== undefined && !store.state.highlight.isControlled) {\n warnOnce(['MUI X Charts: The `highlightedItem` switched between controlled and uncontrolled state.', 'To remove the highlight when using controlled state, you must provide `null` to the `highlightedItem` prop instead of `undefined`.'].join('\\n'));\n }\n }\n }, [store, params.highlightedItem]);\n const clearHighlight = useEventCallback(() => {\n params.onHighlightChange?.(null);\n const prevHighlight = store.state.highlight;\n if (prevHighlight.item === null || prevHighlight.isControlled) {\n return;\n }\n store.set('highlight', {\n item: null,\n lastUpdate: 'pointer',\n isControlled: false\n });\n });\n const setHighlight = useEventCallback(newItem => {\n const prevHighlight = store.state.highlight;\n if (fastObjectShallowCompare(prevHighlight.item, newItem)) {\n return;\n }\n params.onHighlightChange?.(newItem);\n if (prevHighlight.isControlled) {\n return;\n }\n store.set('highlight', {\n item: newItem,\n lastUpdate: 'pointer',\n isControlled: false\n });\n });\n return {\n instance: {\n clearHighlight,\n setHighlight\n }\n };\n};\nuseChartHighlight.getInitialState = params => ({\n highlight: {\n item: params.highlightedItem,\n lastUpdate: 'pointer',\n isControlled: params.highlightedItem !== undefined\n }\n});\nuseChartHighlight.params = {\n highlightedItem: true,\n onHighlightChange: true\n};","/**\n * Efficiently finds the minimum and maximum values in an array of numbers.\n * This functions helps preventing maximum call stack errors when dealing with large datasets.\n *\n * @param data The array of numbers to evaluate\n * @returns [min, max] as numbers\n */\nexport function findMinMax(data) {\n let min = Infinity;\n let max = -Infinity;\n for (const value of data ?? []) {\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n }\n return [min, max];\n}","import { findMinMax } from \"../../../internals/findMinMax.js\";\nconst createResult = (data, direction) => {\n if (direction === 'x') {\n return {\n x: data,\n y: null\n };\n }\n return {\n x: null,\n y: data\n };\n};\nconst getBaseExtremum = params => {\n const {\n axis,\n getFilters,\n isDefaultAxis\n } = params;\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis\n });\n const data = filter ? axis.data?.filter((_, i) => filter({\n x: null,\n y: null\n }, i)) : axis.data;\n return findMinMax(data ?? []);\n};\nconst getValueExtremum = direction => params => {\n const {\n series,\n axis,\n getFilters,\n isDefaultAxis\n } = params;\n return Object.keys(series).filter(seriesId => {\n const axisId = direction === 'x' ? series[seriesId].xAxisId : series[seriesId].yAxisId;\n return axisId === axis.id || isDefaultAxis && axisId === undefined;\n }).reduce((acc, seriesId) => {\n const {\n stackedData\n } = series[seriesId];\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n const [seriesMin, seriesMax] = stackedData?.reduce((seriesAcc, values, index) => {\n if (filter && (!filter(createResult(values[0], direction), index) || !filter(createResult(values[1], direction), index))) {\n return seriesAcc;\n }\n return [Math.min(...values, seriesAcc[0]), Math.max(...values, seriesAcc[1])];\n }, [Infinity, -Infinity]) ?? [Infinity, -Infinity];\n return [Math.min(seriesMin, acc[0]), Math.max(seriesMax, acc[1])];\n }, [Infinity, -Infinity]);\n};\nexport const getExtremumX = params => {\n // Notice that bar should be all horizontal or all vertical.\n // Don't think it's a problem for now\n const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');\n if (isHorizontal) {\n return getValueExtremum('x')(params);\n }\n return getBaseExtremum(params);\n};\nexport const getExtremumY = params => {\n const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');\n if (isHorizontal) {\n return getBaseExtremum(params);\n }\n return getValueExtremum('y')(params);\n};","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import { stackOrderNone as d3StackOrderNone, stackOrderReverse as d3StackOrderReverse, stackOrderAppearance as d3OrderAppearance, stackOrderAscending as d3OrderAscending, stackOrderDescending as d3OrderDescending, stackOrderInsideOut as d3OrderInsideOut, stackOffsetExpand as d3StackOffsetExpand, stackOffsetNone as d3StackOffsetNone, stackOffsetSilhouette as d3StackOffsetSilhouette, stackOffsetWiggle as d3StackOffsetWiggle } from '@mui/x-charts-vendor/d3-shape';\nimport { offsetDiverging } from \"./offset/index.js\";\nexport const StackOrder = {\n /**\n * Series order such that the earliest series (according to the maximum value) is at the bottom.\n * */\n appearance: d3OrderAppearance,\n /**\n * Series order such that the smallest series (according to the sum of values) is at the bottom.\n * */\n ascending: d3OrderAscending,\n /**\n * Series order such that the largest series (according to the sum of values) is at the bottom.\n */\n descending: d3OrderDescending,\n /**\n * Series order such that the earliest series (according to the maximum value) are on the inside and the later series are on the outside. This order is recommended for streamgraphs in conjunction with the wiggle offset. See Stacked Graphs—Geometry & Aesthetics by Byron & Wattenberg for more information.\n */\n insideOut: d3OrderInsideOut,\n /**\n * Given series order [0, 1, … n - 1] where n is the number of elements in series. Thus, the stack order is given by the key accessor.\n */\n none: d3StackOrderNone,\n /**\n * Reverse of the given series order [n - 1, n - 2, … 0] where n is the number of elements in series. Thus, the stack order is given by the reverse of the key accessor.\n */\n reverse: d3StackOrderReverse\n};\nexport const StackOffset = {\n /**\n * Applies a zero baseline and normalizes the values for each point such that the topline is always one.\n * */\n expand: d3StackOffsetExpand,\n /**\n * Positive values are stacked above zero, negative values are stacked below zero, and zero values are stacked at zero.\n * */\n // @ts-expect-error, d3 types are wrong, our custom function implements the correct signature\n diverging: offsetDiverging,\n /**\n * Applies a zero baseline.\n * */\n none: d3StackOffsetNone,\n /**\n * Shifts the baseline down such that the center of the streamgraph is always at zero.\n * */\n silhouette: d3StackOffsetSilhouette,\n /**\n * Shifts the baseline so as to minimize the weighted wiggle of layers. This offset is recommended for streamgraphs in conjunction with the inside-out order. See Stacked Graphs—Geometry & Aesthetics by Bryon & Wattenberg for more information.\n * */\n wiggle: d3StackOffsetWiggle\n};\n\n/**\n * Takes a set of series and groups their ids\n * @param series the object of all bars series\n * @returns an array of groups, including the ids, the stacking order, and the stacking offset.\n */\nexport const getStackingGroups = params => {\n const {\n series,\n seriesOrder,\n defaultStrategy\n } = params;\n const stackingGroups = [];\n const stackIndex = {};\n seriesOrder.forEach(id => {\n const {\n stack,\n stackOrder,\n stackOffset\n } = series[id];\n if (stack === undefined) {\n stackingGroups.push({\n ids: [id],\n stackingOrder: StackOrder.none,\n stackingOffset: StackOffset.none\n });\n } else if (stackIndex[stack] === undefined) {\n stackIndex[stack] = stackingGroups.length;\n stackingGroups.push({\n ids: [id],\n stackingOrder: StackOrder[stackOrder ?? defaultStrategy?.stackOrder ?? 'none'],\n stackingOffset: StackOffset[stackOffset ?? defaultStrategy?.stackOffset ?? 'diverging']\n });\n } else {\n stackingGroups[stackIndex[stack]].ids.push(id);\n if (stackOrder !== undefined) {\n stackingGroups[stackIndex[stack]].stackingOrder = StackOrder[stackOrder];\n }\n if (stackOffset !== undefined) {\n stackingGroups[stackIndex[stack]].stackingOffset = StackOffset[stackOffset];\n }\n }\n });\n return stackingGroups;\n};","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","// Adapted from D3.js's offsetDiverging function https://github.com/d3/d3-shape/blob/main/src/offset/diverging.js\n// Hidden series (with all zero values) affect the stacking in a different way in our implementation compared to the D3 behavior.\n// The D3 stacking keep those values at the 0 \"line\", which creates issues when animating between hidden and visible states.\n// In our modification, we stack them on top/below already stacked items according to the sign of their original value.\n// A hidden negative value will be placed below all the already stacked negative values\n\n/**\n * Positive values are stacked above zero, while negative values are stacked below zero.\n *\n * @param series A series generated by a stack generator.\n * @param order An array of numeric indexes representing the stack order.\n */\nexport function offsetDiverging(series, order) {\n if (series.length === 0) {\n return;\n }\n const seriesCount = series.length;\n const numericOrder = order;\n const pointCount = series[numericOrder[0]].length;\n for (let pointIndex = 0; pointIndex < pointCount; pointIndex += 1) {\n let positiveSum = 0;\n let negativeSum = 0;\n for (let seriesIndex = 0; seriesIndex < seriesCount; seriesIndex += 1) {\n const currentSeries = series[numericOrder[seriesIndex]];\n const dataPoint = currentSeries[pointIndex];\n const difference = dataPoint[1] - dataPoint[0];\n if (difference > 0) {\n dataPoint[0] = positiveSum;\n positiveSum += difference;\n dataPoint[1] = positiveSum;\n } else if (difference < 0) {\n dataPoint[1] = negativeSum;\n negativeSum += difference;\n dataPoint[0] = negativeSum;\n } else if (dataPoint.data[currentSeries.key] > 0) {\n dataPoint[0] = positiveSum;\n dataPoint[1] = positiveSum;\n } else if (dataPoint.data[currentSeries.key] < 0) {\n dataPoint[1] = negativeSum;\n dataPoint[0] = negativeSum;\n } else {\n dataPoint[0] = 0;\n dataPoint[1] = 0;\n }\n }\n }\n}","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { getStackingGroups } from \"../../../internals/stacking/index.js\";\nconst barValueFormatter = v => v == null ? '' : v.toLocaleString();\nconst seriesProcessor = (params, dataset) => {\n const {\n seriesOrder,\n series\n } = params;\n const stackingGroups = getStackingGroups(params);\n\n // Create a data set with format adapted to d3\n const d3Dataset = dataset ?? [];\n seriesOrder.forEach(id => {\n const data = series[id].data;\n if (data !== undefined) {\n data.forEach((value, index) => {\n if (d3Dataset.length <= index) {\n d3Dataset.push({\n [id]: value\n });\n } else {\n d3Dataset[index][id] = value;\n }\n });\n } else if (dataset === undefined) {\n throw new Error([`MUI X Charts: bar series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\\n'));\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!data && dataset) {\n const dataKey = series[id].dataKey;\n if (!dataKey) {\n throw new Error([`MUI X Charts: bar series with id='${id}' has no data and no dataKey.`, 'You must provide a dataKey when using the dataset prop.'].join('\\n'));\n }\n dataset.forEach((entry, index) => {\n const value = entry[dataKey];\n if (value != null && typeof value !== 'number') {\n warnOnce([`MUI X Charts: your dataset key \"${dataKey}\" is used for plotting bars, but the dataset contains the non-null non-numerical element \"${value}\" at index ${index}.`, 'Bar plots only support numeric and null values.'].join('\\n'));\n }\n });\n }\n }\n });\n const completedSeries = {};\n stackingGroups.forEach(stackingGroup => {\n const {\n ids,\n stackingOffset,\n stackingOrder\n } = stackingGroup;\n // Get stacked values, and derive the domain\n const stackedSeries = d3Stack().keys(ids.map(id => {\n // Use dataKey if needed and available\n const dataKey = series[id].dataKey;\n return series[id].data === undefined && dataKey !== undefined ? dataKey : id;\n })).value((d, key) => d[key] ?? 0) // defaultize null value to 0\n .order(stackingOrder).offset(stackingOffset)(d3Dataset);\n ids.forEach((id, index) => {\n const dataKey = series[id].dataKey;\n completedSeries[id] = _extends({\n layout: 'vertical',\n labelMarkType: 'square',\n minBarSize: 0,\n valueFormatter: series[id].valueFormatter ?? barValueFormatter\n }, series[id], {\n data: dataKey ? dataset.map(data => {\n const value = data[dataKey];\n return typeof value === 'number' ? value : null;\n }) : series[id].data,\n stackedData: stackedSeries[index].map(([a, b]) => [a, b])\n });\n });\n });\n return {\n seriesOrder,\n stackingGroups,\n series: completedSeries\n };\n};\nexport default seriesProcessor;","export function getLabel(value, location) {\n return typeof value === 'function' ? value(location) : value;\n}","export function getSeriesColorFn(series) {\n return series.colorGetter ? series.colorGetter : () => series.color;\n}","import { getSeriesColorFn } from \"../../../internals/getSeriesColorFn.js\";\nconst getColor = (series, xAxis, yAxis) => {\n const verticalLayout = series.layout === 'vertical';\n const bandColorScale = verticalLayout ? xAxis?.colorScale : yAxis?.colorScale;\n const valueColorScale = verticalLayout ? yAxis?.colorScale : xAxis?.colorScale;\n const bandValues = verticalLayout ? xAxis?.data : yAxis?.data;\n const getSeriesColor = getSeriesColorFn(series);\n if (valueColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : valueColorScale(value);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n if (bandColorScale && bandValues) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = bandValues[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : bandColorScale(value);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n return getSeriesColor({\n value,\n dataIndex\n });\n };\n};\nexport default getColor;","export function getNonEmptySeriesArray(series, availableSeriesTypes) {\n return Object.keys(series).filter(type => availableSeriesTypes.has(type)).flatMap(type => {\n const seriesOfType = series[type];\n return seriesOfType.seriesOrder.filter(seriesId => seriesOfType.series[seriesId].data.length > 0 && seriesOfType.series[seriesId].data.some(value => value != null)).map(seriesId => ({\n type,\n seriesId\n }));\n });\n}","import { getNonEmptySeriesArray } from \"./getNonEmptySeriesArray.js\";\n\n/**\n * Returns the previous series type and id that contains some data.\n * Returns `null` if no other series have data.\n */\nexport function getPreviousNonEmptySeries(series, availableSeriesTypes, type, seriesId) {\n const nonEmptySeries = getNonEmptySeriesArray(series, availableSeriesTypes);\n if (nonEmptySeries.length === 0) {\n return null;\n }\n const currentSeriesIndex = type !== undefined && seriesId !== undefined ? nonEmptySeries.findIndex(seriesItem => seriesItem.type === type && seriesItem.seriesId === seriesId) : -1;\n if (currentSeriesIndex <= 0) {\n // If no current series, or if it's the first series\n return nonEmptySeries[nonEmptySeries.length - 1];\n }\n return nonEmptySeries[(currentSeriesIndex - 1 + nonEmptySeries.length) % nonEmptySeries.length];\n}","export function getMaxSeriesLength(series, availableSeriesTypes) {\n return Object.keys(series).filter(type => availableSeriesTypes.has(type)).flatMap(type => {\n const seriesOfType = series[type];\n return seriesOfType.seriesOrder.filter(seriesId => seriesOfType.series[seriesId].data.length > 0 && seriesOfType.series[seriesId].data.some(value => value != null)).map(seriesId => seriesOfType.series[seriesId].data.length);\n }).reduce((maxLengths, length) => Math.max(maxLengths, length), 0);\n}","import { getNonEmptySeriesArray } from \"./getNonEmptySeriesArray.js\";\n\n/**\n * Returns the next series type and id that contains some data.\n * Returns `null` if no other series have data.\n * @param series - The processed series from the store.\n * @param availableSeriesTypes - The set of series types that can be focused.\n * @param type - The current series type.\n * @param seriesId - The current series id.\n */\nexport function getNextNonEmptySeries(series, availableSeriesTypes, type, seriesId) {\n const nonEmptySeries = getNonEmptySeriesArray(series, availableSeriesTypes);\n if (nonEmptySeries.length === 0) {\n return null;\n }\n const currentSeriesIndex = type !== undefined && seriesId !== undefined ? nonEmptySeries.findIndex(seriesItem => seriesItem.type === type && seriesItem.seriesId === seriesId) : -1;\n return nonEmptySeries[(currentSeriesIndex + 1) % nonEmptySeries.length];\n}","export function seriesHasData(series, type, seriesId) {\n // @ts-ignore sankey is not in MIT version\n if (type === 'sankey') {\n return false;\n }\n const data = series[type]?.series[seriesId]?.data;\n return data != null && data.length > 0;\n}","import { getPreviousNonEmptySeries } from \"./plugins/featurePlugins/useChartKeyboardNavigation/utils/getPreviousNonEmptySeries.js\";\nimport { getMaxSeriesLength } from \"./plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.js\";\nimport { selectorChartSeriesProcessed } from \"./plugins/corePlugins/useChartSeries/index.js\";\nimport { getNextNonEmptySeries } from \"./plugins/featurePlugins/useChartKeyboardNavigation/utils/getNextNonEmptySeries.js\";\nimport { seriesHasData } from \"./seriesHasData.js\";\nexport function createGetNextIndexFocusedItem(compatibleSeriesTypes) {\n return function getNextIndexFocusedItem(currentItem, state) {\n const processedSeries = selectorChartSeriesProcessed(state);\n let seriesId = currentItem?.seriesId;\n let type = currentItem?.type;\n if (!type || seriesId == null || !seriesHasData(processedSeries, type, seriesId)) {\n const nextSeries = getNextNonEmptySeries(processedSeries, compatibleSeriesTypes, type, seriesId);\n if (nextSeries === null) {\n return null;\n }\n type = nextSeries.type;\n seriesId = nextSeries.seriesId;\n }\n const maxLength = getMaxSeriesLength(processedSeries, compatibleSeriesTypes);\n const dataIndex = Math.min(maxLength - 1, currentItem?.dataIndex == null ? 0 : currentItem.dataIndex + 1);\n return {\n type,\n seriesId,\n dataIndex\n };\n };\n}\nexport function createGetPreviousIndexFocusedItem(compatibleSeriesTypes) {\n return function getPreviousIndexFocusedItem(currentItem, state) {\n const processedSeries = selectorChartSeriesProcessed(state);\n let seriesId = currentItem?.seriesId;\n let type = currentItem?.type;\n if (!type || seriesId == null || !seriesHasData(processedSeries, type, seriesId)) {\n const previousSeries = getPreviousNonEmptySeries(processedSeries, compatibleSeriesTypes, type, seriesId);\n if (previousSeries === null) {\n return null;\n }\n type = previousSeries.type;\n seriesId = previousSeries.seriesId;\n }\n const maxLength = getMaxSeriesLength(processedSeries, compatibleSeriesTypes);\n const dataIndex = Math.max(0, currentItem?.dataIndex == null ? maxLength - 1 : currentItem.dataIndex - 1);\n return {\n type,\n seriesId,\n dataIndex\n };\n };\n}\nexport function createGetNextSeriesFocusedItem(compatibleSeriesTypes) {\n return function getNextSeriesFocusedItem(currentItem, state) {\n const processedSeries = selectorChartSeriesProcessed(state);\n let seriesId = currentItem?.seriesId;\n let type = currentItem?.type;\n const nextSeries = getNextNonEmptySeries(processedSeries, compatibleSeriesTypes, type, seriesId);\n if (nextSeries === null) {\n return null; // No series to move the focus to.\n }\n type = nextSeries.type;\n seriesId = nextSeries.seriesId;\n const dataIndex = currentItem?.dataIndex == null ? 0 : currentItem.dataIndex;\n return {\n type,\n seriesId,\n dataIndex\n };\n };\n}\nexport function createGetPreviousSeriesFocusedItem(compatibleSeriesTypes) {\n return function getPreviousSeriesFocusedItem(currentItem, state) {\n const processedSeries = selectorChartSeriesProcessed(state);\n let seriesId = currentItem?.seriesId;\n let type = currentItem?.type;\n const previousSeries = getPreviousNonEmptySeries(processedSeries, compatibleSeriesTypes, type, seriesId);\n if (previousSeries === null) {\n return null; // No series to move the focus to.\n }\n type = previousSeries.type;\n seriesId = previousSeries.seriesId;\n const data = processedSeries[type].series[seriesId].data;\n const dataIndex = currentItem?.dataIndex == null ? data.length - 1 : currentItem.dataIndex;\n return {\n type,\n seriesId,\n dataIndex\n };\n };\n}","import { createGetNextIndexFocusedItem, createGetPreviousIndexFocusedItem, createGetNextSeriesFocusedItem, createGetPreviousSeriesFocusedItem } from \"../../../internals/commonNextFocusItem.js\";\nconst outSeriesTypes = new Set(['bar', 'line', 'scatter']);\nconst keyboardFocusHandler = event => {\n switch (event.key) {\n case 'ArrowRight':\n return createGetNextIndexFocusedItem(outSeriesTypes);\n case 'ArrowLeft':\n return createGetPreviousIndexFocusedItem(outSeriesTypes);\n case 'ArrowDown':\n return createGetPreviousSeriesFocusedItem(outSeriesTypes);\n case 'ArrowUp':\n return createGetNextSeriesFocusedItem(outSeriesTypes);\n default:\n return null;\n }\n};\nexport default keyboardFocusHandler;","/**\n * Solution of the equations\n * W = barWidth * N + offset * (N-1)\n * offset / (offset + barWidth) = r\n * @param bandWidth (W) The width available to place bars.\n * @param groupCount (N) The number of bars to place in that space.\n * @param gapRatio (r) The ratio of the gap between bars over the bar width.\n * @returns The bar width and the offset between bars.\n */\nexport function getBandSize(bandWidth, groupCount, gapRatio) {\n if (gapRatio === 0) {\n return {\n barWidth: bandWidth / groupCount,\n offset: 0\n };\n }\n const barWidth = bandWidth / (groupCount + (groupCount - 1) * gapRatio);\n const offset = gapRatio * barWidth;\n return {\n barWidth,\n offset\n };\n}","import { getBandSize } from \"./getBandSize.js\";\nfunction shouldInvertStartCoordinate(verticalLayout, baseValue, reverse) {\n const isVerticalAndPositive = verticalLayout && baseValue > 0;\n const isHorizontalAndNegative = !verticalLayout && baseValue < 0;\n const invertStartCoordinate = isVerticalAndPositive || isHorizontalAndNegative;\n return reverse ? !invertStartCoordinate : invertStartCoordinate;\n}\nexport function getBarDimensions(params) {\n const {\n verticalLayout,\n xAxisConfig,\n yAxisConfig,\n series,\n dataIndex,\n numberOfGroups,\n groupIndex\n } = params;\n const baseScaleConfig = verticalLayout ? xAxisConfig : yAxisConfig;\n const reverse = (verticalLayout ? yAxisConfig.reverse : xAxisConfig.reverse) ?? false;\n const {\n barWidth,\n offset\n } = getBandSize(baseScaleConfig.scale.bandwidth(), numberOfGroups, baseScaleConfig.barGapRatio);\n const barOffset = groupIndex * (barWidth + offset);\n const xScale = xAxisConfig.scale;\n const yScale = yAxisConfig.scale;\n const baseValue = baseScaleConfig.data[dataIndex];\n const seriesValue = series.data[dataIndex];\n if (seriesValue == null) {\n return null;\n }\n const values = series.stackedData[dataIndex];\n const valueCoordinates = values.map(v => verticalLayout ? yScale(v) : xScale(v));\n const minValueCoord = Math.round(Math.min(...valueCoordinates));\n const maxValueCoord = Math.round(Math.max(...valueCoordinates));\n const barSize = seriesValue === 0 ? 0 : Math.max(series.minBarSize, maxValueCoord - minValueCoord);\n const startCoordinate = shouldInvertStartCoordinate(verticalLayout, seriesValue, reverse) ? maxValueCoord - barSize : minValueCoord;\n return {\n x: verticalLayout ? xScale(baseValue) + barOffset : startCoordinate,\n y: verticalLayout ? startCoordinate : yScale(baseValue) + barOffset,\n height: verticalLayout ? barSize : barWidth,\n width: verticalLayout ? barWidth : barSize\n };\n}","import { getBarDimensions } from \"../../../internals/getBarDimensions.js\";\nconst tooltipItemPositionGetter = params => {\n const {\n series,\n identifier,\n axesConfig,\n placement\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const itemSeries = series.bar?.series[identifier.seriesId];\n if (series.bar == null || itemSeries == null) {\n return null;\n }\n if (axesConfig.x === undefined || axesConfig.y === undefined) {\n return null;\n }\n const dimensions = getBarDimensions({\n verticalLayout: itemSeries.layout === 'vertical',\n xAxisConfig: axesConfig.x,\n yAxisConfig: axesConfig.y,\n series: itemSeries,\n dataIndex: identifier.dataIndex,\n numberOfGroups: series.bar.stackingGroups.length,\n groupIndex: series.bar.stackingGroups.findIndex(group => group.ids.includes(itemSeries.id))\n });\n if (dimensions == null) {\n return null;\n }\n const {\n x,\n y,\n width,\n height\n } = dimensions;\n switch (placement) {\n case 'right':\n return {\n x: x + width,\n y: y + height / 2\n };\n case 'bottom':\n return {\n x: x + width / 2,\n y: y + height\n };\n case 'left':\n return {\n x,\n y: y + height / 2\n };\n case 'top':\n default:\n return {\n x: x + width / 2,\n y\n };\n }\n};\nexport default tooltipItemPositionGetter;","export const typeSerializer = type => `Type(${type})`;\nexport const seriesIdSerializer = id => `Series(${id})`;\nexport const dataIndexSerializer = dataIndex => dataIndex === undefined ? '' : `Index(${dataIndex})`;\nexport const identifierSerializerSeriesIdDataIndex = identifier => {\n return `${typeSerializer(identifier.type)}${seriesIdSerializer(identifier.seriesId)}${dataIndexSerializer(identifier.dataIndex)}`;\n};","import { getExtremumX, getExtremumY } from \"./bar/extremums.js\";\nimport seriesProcessor from \"./bar/seriesProcessor.js\";\nimport legendGetter from \"./bar/legend.js\";\nimport getColor from \"./bar/getColor.js\";\nimport keyboardFocusHandler from \"./bar/keyboardFocusHandler.js\";\nimport tooltipGetter, { axisTooltipGetter } from \"./bar/tooltip.js\";\nimport tooltipItemPositionGetter from \"./bar/tooltipPosition.js\";\nimport { getSeriesWithDefaultValues } from \"./bar/getSeriesWithDefaultValues.js\";\nimport { identifierSerializerSeriesIdDataIndex } from \"../../internals/identifierSerializer.js\";\nexport const barSeriesConfig = {\n seriesProcessor,\n colorProcessor: getColor,\n legendGetter,\n tooltipGetter,\n tooltipItemPositionGetter,\n axisTooltipGetter,\n xExtremumGetter: getExtremumX,\n yExtremumGetter: getExtremumY,\n getSeriesWithDefaultValues,\n keyboardFocusHandler,\n identifierSerializer: identifierSerializerSeriesIdDataIndex\n};","import { getLabel } from \"../../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n const formattedLabel = getLabel(series[seriesId].label, 'legend');\n if (formattedLabel === undefined) {\n return acc;\n }\n acc.push({\n type: 'bar',\n markType: series[seriesId].labelMarkType,\n id: seriesId,\n seriesId,\n color: series[seriesId].color,\n label: formattedLabel\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import { getLabel } from \"../../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const label = getLabel(series.label, 'tooltip');\n const value = series.data[identifier.dataIndex];\n if (value == null) {\n return null;\n }\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: series.labelMarkType\n };\n};\nexport const axisTooltipGetter = series => {\n return Object.values(series).map(s => s.layout === 'horizontal' ? {\n direction: 'y',\n axisId: s.yAxisId\n } : {\n direction: 'x',\n axisId: s.xAxisId\n });\n};\nexport default tooltipGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function getSeriesWithDefaultValues(seriesData, seriesIndex, colors) {\n return _extends({}, seriesData, {\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n color: seriesData.color ?? colors[seriesIndex % colors.length]\n });\n}","import { createGetNextIndexFocusedItem, createGetPreviousIndexFocusedItem, createGetNextSeriesFocusedItem, createGetPreviousSeriesFocusedItem } from \"../../internals/commonNextFocusItem.js\";\nconst outSeriesTypes = new Set(['bar', 'line', 'scatter']);\nconst keyboardFocusHandler = event => {\n switch (event.key) {\n case 'ArrowRight':\n return createGetNextIndexFocusedItem(outSeriesTypes);\n case 'ArrowLeft':\n return createGetPreviousIndexFocusedItem(outSeriesTypes);\n case 'ArrowDown':\n return createGetPreviousSeriesFocusedItem(outSeriesTypes);\n case 'ArrowUp':\n return createGetNextSeriesFocusedItem(outSeriesTypes);\n default:\n return null;\n }\n};\nexport default keyboardFocusHandler;","import { getExtremumX, getExtremumY } from \"./extremums.js\";\nimport seriesProcessor from \"./seriesProcessor.js\";\nimport getColor from \"./getColor.js\";\nimport legendGetter from \"./legend.js\";\nimport tooltipGetter from \"./tooltip.js\";\nimport getSeriesWithDefaultValues from \"./getSeriesWithDefaultValues.js\";\nimport tooltipItemPositionGetter from \"./tooltipPosition.js\";\nimport keyboardFocusHandler from \"./keyboardFocusHandler.js\";\nimport { identifierSerializerSeriesIdDataIndex } from \"../../internals/identifierSerializer.js\";\nexport const scatterSeriesConfig = {\n seriesProcessor,\n colorProcessor: getColor,\n legendGetter,\n tooltipGetter,\n tooltipItemPositionGetter,\n xExtremumGetter: getExtremumX,\n yExtremumGetter: getExtremumY,\n getSeriesWithDefaultValues,\n keyboardFocusHandler,\n identifierSerializer: identifierSerializerSeriesIdDataIndex\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst seriesProcessor = ({\n series,\n seriesOrder\n}, dataset) => {\n const completeSeries = Object.fromEntries(Object.entries(series).map(([seriesId, seriesData]) => {\n const datasetKeys = seriesData?.datasetKeys;\n const missingKeys = ['x', 'y'].filter(key => typeof datasetKeys?.[key] !== 'string');\n if (seriesData?.datasetKeys && missingKeys.length > 0) {\n throw new Error([`MUI X Charts: scatter series with id='${seriesId}' has incomplete datasetKeys.`, `Properties ${missingKeys.map(key => `\"${key}\"`).join(', ')} are missing.`].join('\\n'));\n }\n const data = !datasetKeys ? seriesData.data ?? [] : dataset?.map(d => {\n return {\n x: d[datasetKeys.x] ?? null,\n y: d[datasetKeys.y] ?? null,\n z: datasetKeys.z && d[datasetKeys.z],\n id: datasetKeys.id && d[datasetKeys.id]\n };\n }) ?? [];\n return [seriesId, _extends({\n labelMarkType: 'circle',\n markerSize: 4\n }, seriesData, {\n preview: _extends({\n markerSize: 1\n }, seriesData?.preview),\n data,\n valueFormatter: seriesData.valueFormatter ?? (v => v && `(${v.x}, ${v.y})`)\n })];\n }));\n return {\n series: completeSeries,\n seriesOrder\n };\n};\nexport default seriesProcessor;","import { getSeriesColorFn } from \"../../internals/getSeriesColorFn.js\";\nconst getColor = (series, xAxis, yAxis, zAxis) => {\n const zColorScale = zAxis?.colorScale;\n const yColorScale = yAxis?.colorScale;\n const xColorScale = xAxis?.colorScale;\n const getSeriesColor = getSeriesColorFn(series);\n if (zColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n if (zAxis?.data?.[dataIndex] !== undefined) {\n const color = zColorScale(zAxis?.data?.[dataIndex]);\n if (color !== null) {\n return color;\n }\n }\n const value = series.data[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : zColorScale(value.z);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n if (yColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : yColorScale(value.y);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n if (xColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : xColorScale(value.x);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n return getSeriesColor({\n value,\n dataIndex\n });\n };\n};\nexport default getColor;","import { getLabel } from \"../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n const formattedLabel = getLabel(series[seriesId].label, 'legend');\n if (formattedLabel === undefined) {\n return acc;\n }\n acc.push({\n type: 'scatter',\n markType: series[seriesId].labelMarkType,\n id: seriesId,\n seriesId,\n color: series[seriesId].color,\n label: formattedLabel\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import { getLabel } from \"../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const label = getLabel(series.label, 'tooltip');\n const value = series.data[identifier.dataIndex];\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: series.labelMarkType\n };\n};\nexport default tooltipGetter;","const tooltipItemPositionGetter = params => {\n const {\n series,\n identifier,\n axesConfig\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const itemSeries = series.scatter?.series[identifier.seriesId];\n if (itemSeries == null) {\n return null;\n }\n if (axesConfig.x === undefined || axesConfig.y === undefined) {\n return null;\n }\n const xValue = itemSeries.data?.[identifier.dataIndex].x;\n const yValue = itemSeries.data?.[identifier.dataIndex].y;\n if (xValue == null || yValue == null) {\n return null;\n }\n return {\n x: axesConfig.x.scale(xValue),\n y: axesConfig.y.scale(yValue)\n };\n};\nexport default tooltipItemPositionGetter;","export const getExtremumX = params => {\n const {\n series,\n axis,\n isDefaultAxis,\n getFilters\n } = params;\n let min = Infinity;\n let max = -Infinity;\n for (const seriesId in series) {\n if (!Object.hasOwn(series, seriesId)) {\n continue;\n }\n const axisId = series[seriesId].xAxisId;\n if (!(axisId === axis.id || axisId === undefined && isDefaultAxis)) {\n continue;\n }\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n const seriesData = series[seriesId].data ?? [];\n for (let i = 0; i < seriesData.length; i += 1) {\n const d = seriesData[i];\n if (filter && !filter(d, i)) {\n continue;\n }\n if (d.x !== null) {\n if (d.x < min) {\n min = d.x;\n }\n if (d.x > max) {\n max = d.x;\n }\n }\n }\n }\n return [min, max];\n};\nexport const getExtremumY = params => {\n const {\n series,\n axis,\n isDefaultAxis,\n getFilters\n } = params;\n let min = Infinity;\n let max = -Infinity;\n for (const seriesId in series) {\n if (!Object.hasOwn(series, seriesId)) {\n continue;\n }\n const axisId = series[seriesId].yAxisId;\n if (!(axisId === axis.id || axisId === undefined && isDefaultAxis)) {\n continue;\n }\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n const seriesData = series[seriesId].data ?? [];\n for (let i = 0; i < seriesData.length; i += 1) {\n const d = seriesData[i];\n if (filter && !filter(d, i)) {\n continue;\n }\n if (d.y !== null) {\n if (d.y < min) {\n min = d.y;\n }\n if (d.y > max) {\n max = d.y;\n }\n }\n }\n }\n return [min, max];\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => {\n return _extends({}, seriesData, {\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n color: seriesData.color ?? colors[seriesIndex % colors.length]\n });\n};\nexport default getSeriesWithDefaultValues;","import { getSeriesColorFn } from \"../../internals/getSeriesColorFn.js\";\nconst getColor = (series, xAxis, yAxis) => {\n const yColorScale = yAxis?.colorScale;\n const xColorScale = xAxis?.colorScale;\n const getSeriesColor = getSeriesColorFn(series);\n if (yColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : yColorScale(value);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n if (xColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = xAxis.data?.[dataIndex];\n const color = value === null ? getSeriesColor({\n value,\n dataIndex\n }) : xColorScale(value);\n if (color === null) {\n return getSeriesColor({\n value,\n dataIndex\n });\n }\n return color;\n };\n }\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n return getSeriesColor({\n value,\n dataIndex\n });\n };\n};\nexport default getColor;","import { createGetNextIndexFocusedItem, createGetPreviousIndexFocusedItem, createGetNextSeriesFocusedItem, createGetPreviousSeriesFocusedItem } from \"../../internals/commonNextFocusItem.js\";\nconst outSeriesTypes = new Set(['bar', 'line', 'scatter']);\nconst keyboardFocusHandler = event => {\n switch (event.key) {\n case 'ArrowRight':\n return createGetNextIndexFocusedItem(outSeriesTypes);\n case 'ArrowLeft':\n return createGetPreviousIndexFocusedItem(outSeriesTypes);\n case 'ArrowDown':\n return createGetPreviousSeriesFocusedItem(outSeriesTypes);\n case 'ArrowUp':\n return createGetNextSeriesFocusedItem(outSeriesTypes);\n default:\n return null;\n }\n};\nexport default keyboardFocusHandler;","import { getExtremumX, getExtremumY } from \"./extremums.js\";\nimport seriesProcessor from \"./seriesProcessor.js\";\nimport getColor from \"./getColor.js\";\nimport legendGetter from \"./legend.js\";\nimport tooltipGetter, { axisTooltipGetter } from \"./tooltip.js\";\nimport getSeriesWithDefaultValues from \"./getSeriesWithDefaultValues.js\";\nimport tooltipItemPositionGetter from \"./tooltipPosition.js\";\nimport keyboardFocusHandler from \"./keyboardFocusHandler.js\";\nimport { identifierSerializerSeriesIdDataIndex } from \"../../internals/identifierSerializer.js\";\nexport const lineSeriesConfig = {\n colorProcessor: getColor,\n seriesProcessor,\n legendGetter,\n tooltipGetter,\n tooltipItemPositionGetter,\n axisTooltipGetter,\n xExtremumGetter: getExtremumX,\n yExtremumGetter: getExtremumY,\n getSeriesWithDefaultValues,\n keyboardFocusHandler,\n identifierSerializer: identifierSerializerSeriesIdDataIndex\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { getStackingGroups } from \"../../internals/stacking/index.js\";\nconst seriesProcessor = (params, dataset) => {\n const {\n seriesOrder,\n series\n } = params;\n const stackingGroups = getStackingGroups(_extends({}, params, {\n defaultStrategy: {\n stackOffset: 'none'\n }\n }));\n\n // Create a data set with format adapted to d3\n const d3Dataset = dataset ?? [];\n seriesOrder.forEach(id => {\n const data = series[id].data;\n if (data !== undefined) {\n data.forEach((value, index) => {\n if (d3Dataset.length <= index) {\n d3Dataset.push({\n [id]: value\n });\n } else {\n d3Dataset[index][id] = value;\n }\n });\n } else if (dataset === undefined && process.env.NODE_ENV !== 'production') {\n throw new Error([`MUI X Charts: line series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\\n'));\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!data && dataset) {\n const dataKey = series[id].dataKey;\n if (!dataKey) {\n throw new Error([`MUI X Charts: line series with id='${id}' has no data and no dataKey.`, 'You must provide a dataKey when using the dataset prop.'].join('\\n'));\n }\n dataset.forEach((entry, index) => {\n const value = entry[dataKey];\n if (value != null && typeof value !== 'number') {\n warnOnce([`MUI X Charts: your dataset key \"${dataKey}\" is used for plotting lines, but the dataset contains the non-null non-numerical element \"${value}\" at index ${index}.`, 'Line plots only support numeric and null values.'].join('\\n'));\n }\n });\n }\n }\n });\n const completedSeries = {};\n stackingGroups.forEach(stackingGroup => {\n // Get stacked values, and derive the domain\n const {\n ids,\n stackingOrder,\n stackingOffset\n } = stackingGroup;\n const stackedSeries = d3Stack().keys(ids.map(id => {\n // Use dataKey if needed and available\n const dataKey = series[id].dataKey;\n return series[id].data === undefined && dataKey !== undefined ? dataKey : id;\n })).value((d, key) => d[key] ?? 0) // defaultize null value to 0\n .order(stackingOrder).offset(stackingOffset)(d3Dataset);\n ids.forEach((id, index) => {\n const dataKey = series[id].dataKey;\n completedSeries[id] = _extends({\n labelMarkType: 'line'\n }, series[id], {\n data: dataKey ? dataset.map(data => {\n const value = data[dataKey];\n return typeof value === 'number' ? value : null;\n }) : series[id].data,\n stackedData: stackedSeries[index].map(([a, b]) => [a, b]),\n valueFormatter: series[id]?.valueFormatter ?? (v => v == null ? '' : v.toLocaleString())\n });\n });\n });\n return {\n seriesOrder,\n stackingGroups,\n series: completedSeries\n };\n};\nexport default seriesProcessor;","import { getLabel } from \"../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n const formattedLabel = getLabel(series[seriesId].label, 'legend');\n if (formattedLabel === undefined) {\n return acc;\n }\n acc.push({\n type: 'line',\n markType: series[seriesId].labelMarkType,\n id: seriesId,\n seriesId,\n color: series[seriesId].color,\n label: formattedLabel\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import { getLabel } from \"../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const label = getLabel(series.label, 'tooltip');\n const value = series.data[identifier.dataIndex];\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: series.labelMarkType\n };\n};\nexport const axisTooltipGetter = series => {\n return Object.values(series).map(s => ({\n direction: 'x',\n axisId: s.xAxisId\n }));\n};\nexport default tooltipGetter;","const tooltipItemPositionGetter = params => {\n const {\n series,\n identifier,\n axesConfig\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const itemSeries = series.line?.series[identifier.seriesId];\n if (itemSeries == null) {\n return null;\n }\n if (axesConfig.x === undefined || axesConfig.y === undefined) {\n return null;\n }\n const xValue = axesConfig.x.data?.[identifier.dataIndex];\n const yValue = itemSeries.data[identifier.dataIndex];\n if (xValue == null || yValue == null) {\n return null;\n }\n return {\n x: axesConfig.x.scale(xValue),\n y: axesConfig.y.scale(yValue)\n };\n};\nexport default tooltipItemPositionGetter;","import { findMinMax } from \"../../internals/findMinMax.js\";\nexport const getExtremumX = params => {\n const {\n axis\n } = params;\n return findMinMax(axis.data ?? []);\n};\nfunction getSeriesExtremums(getValues, data, stackedData, filter) {\n return stackedData.reduce((seriesAcc, stackedValue, index) => {\n if (data[index] === null) {\n return seriesAcc;\n }\n const [base, value] = getValues(stackedValue);\n if (filter && (!filter({\n y: base,\n x: null\n }, index) || !filter({\n y: value,\n x: null\n }, index))) {\n return seriesAcc;\n }\n return [Math.min(base, value, seriesAcc[0]), Math.max(base, value, seriesAcc[1])];\n }, [Infinity, -Infinity]);\n}\nexport const getExtremumY = params => {\n const {\n series,\n axis,\n isDefaultAxis,\n getFilters\n } = params;\n return Object.keys(series).filter(seriesId => {\n const yAxisId = series[seriesId].yAxisId;\n return yAxisId === axis.id || isDefaultAxis && yAxisId === undefined;\n }).reduce((acc, seriesId) => {\n const {\n area,\n stackedData,\n data\n } = series[seriesId];\n const isArea = area !== undefined;\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n\n // Since this series is not used to display an area, we do not consider the base (the d[0]).\n const getValues = isArea && axis.scaleType !== 'log' && typeof series[seriesId].baseline !== 'string' ? d => d : d => [d[1], d[1]];\n const seriesExtremums = getSeriesExtremums(getValues, data, stackedData, filter);\n const [seriesMin, seriesMax] = seriesExtremums;\n return [Math.min(seriesMin, acc[0]), Math.max(seriesMax, acc[1])];\n }, [Infinity, -Infinity]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => {\n return _extends({}, seriesData, {\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n color: seriesData.color ?? colors[seriesIndex % colors.length]\n });\n};\nexport default getSeriesWithDefaultValues;","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","export const deg2rad = (value, defaultRad) => {\n if (value === undefined) {\n return defaultRad;\n }\n return Math.PI * value / 180;\n};\nexport const rad2deg = (value, defaultDeg) => {\n if (value === undefined) {\n return defaultDeg;\n }\n return 180 * value / Math.PI;\n};","/**\n * Helper that converts values and percentages into values.\n * @param value The value provided by the developer. Can either be a number or a string with '%' or 'px'.\n * @param refValue The numerical value associated to 100%.\n * @returns The numerical value associated to the provided value.\n */\nexport function getPercentageValue(value, refValue) {\n if (typeof value === 'number') {\n return value;\n }\n if (value === '100%') {\n // Avoid potential rounding issues\n return refValue;\n }\n if (value.endsWith('%')) {\n const percentage = Number.parseFloat(value.slice(0, value.length - 1));\n if (!Number.isNaN(percentage)) {\n return percentage * refValue / 100;\n }\n }\n if (value.endsWith('px')) {\n const val = Number.parseFloat(value.slice(0, value.length - 2));\n if (!Number.isNaN(val)) {\n return val;\n }\n }\n throw new Error(`MUI X Charts: Received an unknown value \"${value}\". It should be a number, or a string with a percentage value.`);\n}","import { getPercentageValue } from \"../internals/getPercentageValue.js\";\nexport function getPieCoordinates(series, drawing) {\n const {\n height,\n width\n } = drawing;\n const {\n cx: cxParam,\n cy: cyParam\n } = series;\n const availableRadius = Math.min(width, height) / 2;\n const cx = getPercentageValue(cxParam ?? '50%', width);\n const cy = getPercentageValue(cyParam ?? '50%', height);\n return {\n cx,\n cy,\n availableRadius\n };\n}","import { getPercentageValue } from \"../../internals/getPercentageValue.js\";\nimport { getPieCoordinates } from \"../getPieCoordinates.js\";\nconst seriesLayout = (series, drawingArea) => {\n const seriesLayoutRecord = {};\n for (const seriesId of series.seriesOrder) {\n const {\n innerRadius,\n outerRadius,\n arcLabelRadius,\n cx: cxParam,\n cy: cyParam\n } = series.series[seriesId];\n const {\n cx,\n cy,\n availableRadius\n } = getPieCoordinates({\n cx: cxParam,\n cy: cyParam\n }, {\n width: drawingArea.width,\n height: drawingArea.height\n });\n const outer = getPercentageValue(outerRadius ?? availableRadius, availableRadius);\n const inner = getPercentageValue(innerRadius ?? 0, availableRadius);\n const label = arcLabelRadius === undefined ? (inner + outer) / 2 : getPercentageValue(arcLabelRadius, availableRadius);\n seriesLayoutRecord[seriesId] = {\n radius: {\n available: availableRadius,\n inner,\n outer,\n label\n },\n center: {\n x: drawingArea.left + cx,\n y: drawingArea.top + cy\n }\n };\n }\n return seriesLayoutRecord;\n};\nexport default seriesLayout;","import { createGetNextIndexFocusedItem, createGetPreviousIndexFocusedItem, createGetNextSeriesFocusedItem, createGetPreviousSeriesFocusedItem } from \"../../internals/commonNextFocusItem.js\";\nconst outSeriesTypes = new Set(['pie']);\nconst keyboardFocusHandler = event => {\n switch (event.key) {\n case 'ArrowRight':\n return createGetNextIndexFocusedItem(outSeriesTypes);\n case 'ArrowLeft':\n return createGetPreviousIndexFocusedItem(outSeriesTypes);\n case 'ArrowDown':\n return createGetPreviousSeriesFocusedItem(outSeriesTypes);\n case 'ArrowUp':\n return createGetNextSeriesFocusedItem(outSeriesTypes);\n default:\n return null;\n }\n};\nexport default keyboardFocusHandler;","'use client';\n\nimport * as React from 'react';\nimport { useCharts } from \"../../internals/store/useCharts.js\";\nimport { ChartContext } from \"./ChartContext.js\";\nimport { useChartCartesianAxis } from \"../../internals/plugins/featurePlugins/useChartCartesianAxis/index.js\";\nimport { useChartTooltip } from \"../../internals/plugins/featurePlugins/useChartTooltip/index.js\";\nimport { useChartInteraction } from \"../../internals/plugins/featurePlugins/useChartInteraction/index.js\";\nimport { useChartZAxis } from \"../../internals/plugins/featurePlugins/useChartZAxis/index.js\";\nimport { useChartHighlight } from \"../../internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.js\";\nimport { barSeriesConfig } from \"../../BarChart/seriesConfig/index.js\";\nimport { scatterSeriesConfig } from \"../../ScatterChart/seriesConfig/index.js\";\nimport { lineSeriesConfig } from \"../../LineChart/seriesConfig/index.js\";\nimport { pieSeriesConfig } from \"../../PieChart/seriesConfig/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const defaultSeriesConfig = {\n bar: barSeriesConfig,\n scatter: scatterSeriesConfig,\n line: lineSeriesConfig,\n pie: pieSeriesConfig\n};\n\n// For consistency with the v7, the cartesian axes are set by default.\n// To remove them, you can provide a `plugins` props.\nconst defaultPlugins = [useChartZAxis, useChartTooltip, useChartInteraction, useChartCartesianAxis, useChartHighlight];\nfunction ChartProvider(props) {\n const {\n children,\n plugins = defaultPlugins,\n pluginParams = {},\n seriesConfig = defaultSeriesConfig\n } = props;\n const {\n contextValue\n } = useCharts(plugins, pluginParams, seriesConfig);\n return /*#__PURE__*/_jsx(ChartContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nexport { ChartProvider };","import seriesProcessor from \"./seriesProcessor.js\";\nimport getColor from \"./getColor.js\";\nimport legendGetter from \"./legend.js\";\nimport tooltipGetter from \"./tooltip.js\";\nimport seriesLayout from \"./seriesLayout.js\";\nimport getSeriesWithDefaultValues from \"./getSeriesWithDefaultValues.js\";\nimport tooltipItemPositionGetter from \"./tooltipPosition.js\";\nimport keyboardFocusHandler from \"./keyboardFocusHandler.js\";\nimport { identifierSerializerSeriesIdDataIndex } from \"../../internals/identifierSerializer.js\";\nexport const pieSeriesConfig = {\n colorProcessor: getColor,\n seriesProcessor,\n seriesLayout,\n legendGetter,\n tooltipGetter,\n tooltipItemPositionGetter,\n getSeriesWithDefaultValues,\n keyboardFocusHandler,\n identifierSerializer: identifierSerializerSeriesIdDataIndex\n};","const getColor = series => {\n return dataIndex => {\n return series.data[dataIndex].color;\n };\n};\nexport default getColor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { pie as d3Pie } from '@mui/x-charts-vendor/d3-shape';\nimport { getLabel } from \"../../internals/getLabel.js\";\nimport { deg2rad } from \"../../internals/angleConversion.js\";\nconst getSortingComparator = (comparator = 'none') => {\n if (typeof comparator === 'function') {\n return comparator;\n }\n switch (comparator) {\n case 'none':\n return null;\n case 'desc':\n return (a, b) => b - a;\n case 'asc':\n return (a, b) => a - b;\n default:\n return null;\n }\n};\nconst seriesProcessor = params => {\n const {\n seriesOrder,\n series\n } = params;\n const defaultizedSeries = {};\n seriesOrder.forEach(seriesId => {\n const arcs = d3Pie().startAngle(deg2rad(series[seriesId].startAngle ?? 0)).endAngle(deg2rad(series[seriesId].endAngle ?? 360)).padAngle(deg2rad(series[seriesId].paddingAngle ?? 0)).sortValues(getSortingComparator(series[seriesId].sortingValues ?? 'none'))(series[seriesId].data.map(piePoint => piePoint.value));\n defaultizedSeries[seriesId] = _extends({\n labelMarkType: 'circle',\n valueFormatter: item => item.value.toLocaleString()\n }, series[seriesId], {\n data: series[seriesId].data.map((item, index) => _extends({}, item, {\n id: item.id ?? `auto-generated-pie-id-${seriesId}-${index}`\n }, arcs[index])).map((item, index) => _extends({\n labelMarkType: 'circle'\n }, item, {\n formattedValue: series[seriesId].valueFormatter?.(_extends({}, item, {\n label: getLabel(item.label, 'arc')\n }), {\n dataIndex: index\n }) ?? item.value.toLocaleString()\n }))\n });\n });\n return {\n seriesOrder,\n series: defaultizedSeries\n };\n};\nexport default seriesProcessor;","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import { getLabel } from \"../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n series[seriesId].data.forEach((item, dataIndex) => {\n const formattedLabel = getLabel(item.label, 'legend');\n if (formattedLabel === undefined) {\n return;\n }\n const id = item.id ?? dataIndex;\n acc.push({\n type: 'pie',\n markType: item.labelMarkType ?? series[seriesId].labelMarkType,\n seriesId,\n id,\n itemId: id,\n dataIndex,\n color: item.color,\n label: formattedLabel\n });\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getLabel } from \"../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const point = series.data[identifier.dataIndex];\n if (point == null) {\n return null;\n }\n const label = getLabel(point.label, 'tooltip');\n const value = _extends({}, point, {\n label\n });\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: point.labelMarkType ?? series.labelMarkType\n };\n};\nexport default tooltipGetter;","import { findMinMax } from \"../../internals/findMinMax.js\";\nconst tooltipItemPositionGetter = params => {\n const {\n series,\n identifier,\n placement,\n seriesLayout\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const itemSeries = series.pie?.series[identifier.seriesId];\n const layout = seriesLayout.pie?.[identifier.seriesId];\n if (itemSeries == null || layout == null) {\n return null;\n }\n const {\n center,\n radius\n } = layout;\n const {\n data\n } = itemSeries;\n const dataItem = data[identifier.dataIndex];\n if (!dataItem) {\n return null;\n }\n\n // Compute the 4 corner points of the arc to get the bounding box.\n const points = [[radius.inner, dataItem.startAngle], [radius.inner, dataItem.endAngle], [radius.outer, dataItem.startAngle], [radius.outer, dataItem.endAngle]].map(([r, angle]) => ({\n x: center.x + r * Math.sin(angle),\n y: center.y - r * Math.cos(angle)\n }));\n const [x0, x1] = findMinMax(points.map(p => p.x));\n const [y0, y1] = findMinMax(points.map(p => p.y));\n switch (placement) {\n case 'bottom':\n return {\n x: (x1 + x0) / 2,\n y: y1\n };\n case 'left':\n return {\n x: x0,\n y: (y1 + y0) / 2\n };\n case 'right':\n return {\n x: x1,\n y: (y1 + y0) / 2\n };\n case 'top':\n default:\n return {\n x: (x1 + x0) / 2,\n y: y0\n };\n }\n};\nexport default tooltipItemPositionGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => {\n return _extends({}, seriesData, {\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n data: seriesData.data.map((d, index) => _extends({}, d, {\n color: d.color ?? colors[index % colors.length]\n }))\n });\n};\nexport default getSeriesWithDefaultValues;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ChartsSlotsContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Get the slots and slotProps from the nearest `ChartDataProvider` or `ChartDataProviderPro`.\n * @returns {ChartsSlotsContextValue} The slots and slotProps from the context.\n */\nif (process.env.NODE_ENV !== \"production\") ChartsSlotsContext.displayName = \"ChartsSlotsContext\";\nexport function useChartsSlots() {\n const context = React.useContext(ChartsSlotsContext);\n if (context == null) {\n throw new Error(['MUI X Charts: Could not find the Charts Slots context.', 'It looks like you rendered your component outside of a ChartDataProvider.', 'This can also happen if you are bundling multiple versions of the library.'].join('\\n'));\n }\n return context;\n}\nexport function ChartsSlotsProvider(props) {\n const {\n slots,\n slotProps = {},\n defaultSlots,\n children\n } = props;\n const value = React.useMemo(() => ({\n slots: _extends({}, defaultSlots, slots),\n slotProps\n }), [defaultSlots, slots, slotProps]);\n return /*#__PURE__*/_jsx(ChartsSlotsContext.Provider, {\n value: value,\n children: children\n });\n}","/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param defaultProps\n * @param props\n * @returns resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = {\n ...props\n };\n for (const key in defaultProps) {\n if (Object.prototype.hasOwnProperty.call(defaultProps, key)) {\n const propName = key;\n if (propName === 'components' || propName === 'slots') {\n output[propName] = {\n ...defaultProps[propName],\n ...output[propName]\n };\n } else if (propName === 'componentsProps' || propName === 'slotProps') {\n const defaultSlotProps = defaultProps[propName];\n const slotProps = props[propName];\n if (!slotProps) {\n output[propName] = defaultSlotProps || {};\n } else if (!defaultSlotProps) {\n output[propName] = slotProps;\n } else {\n output[propName] = {\n ...slotProps\n };\n for (const slotKey in defaultSlotProps) {\n if (Object.prototype.hasOwnProperty.call(defaultSlotProps, slotKey)) {\n const slotPropName = slotKey;\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n }\n }\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n }\n }\n return output;\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","import * as React from 'react';\nimport { isValidElementType } from 'react-is';\n\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (/*#__PURE__*/React.isValidElement(source) || isValidElementType(source) || !isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\n\n/**\n * Merge objects deeply.\n * It will shallow copy React elements.\n *\n * If `options.clone` is set to `false` the source object will be merged directly into the target object.\n *\n * @example\n * ```ts\n * deepmerge({ a: { b: 1 }, d: 2 }, { a: { c: 2 }, d: 4 });\n * // => { a: { b: 1, c: 2 }, d: 4 }\n * ````\n *\n * @param target The target object.\n * @param source The source object.\n * @param options The merge options.\n * @param options.clone Set to `false` to merge the source object directly into the target object.\n * @returns The merged object.\n */\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? {\n ...target\n } : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (/*#__PURE__*/React.isValidElement(source[key]) || isValidElementType(source[key])) {\n output[key] = source[key];\n } else if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return {\n ...acc,\n [obj.key]: obj.val\n };\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5,\n ...other\n } = breakpoints;\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return {\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit,\n ...other\n };\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/**\n * For using in `sx` prop to sort the breakpoint from low to high.\n * Note: this function does not work and will not support multiple units.\n * e.g. input: { '@container (min-width:300px)': '1rem', '@container (min-width:40rem)': '2rem' }\n * output: { '@container (min-width:40rem)': '2rem', '@container (min-width:300px)': '1rem' } // since 40 < 300 eventhough 40rem > 300px\n */\nexport function sortContainerQueries(theme, css) {\n if (!theme.containerQueries) {\n return css;\n }\n const sorted = Object.keys(css).filter(key => key.startsWith('@container')).sort((a, b) => {\n const regex = /min-width:\\s*([0-9.]+)/;\n return +(a.match(regex)?.[1] || 0) - +(b.match(regex)?.[1] || 0);\n });\n if (!sorted.length) {\n return css;\n }\n return sorted.reduce((acc, key) => {\n const value = css[key];\n delete acc[key];\n acc[key] = value;\n return acc;\n }, {\n ...css\n });\n}\nexport function isCqShorthand(breakpointKeys, value) {\n return value === '@' || value.startsWith('@') && (breakpointKeys.some(key => value.startsWith(`@${key}`)) || !!value.match(/^@\\d/));\n}\nexport function getContainerQuery(theme, shorthand) {\n const matches = shorthand.match(/^@([^/]+)?\\/?(.+)?$/);\n if (!matches) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \\`@\\` or \\`@/\\`.\\n` + 'For example, `@sm` or `@600` or `@40rem/sidebar`.' : _formatMuiErrorMessage(18, `(${shorthand})`));\n }\n return null;\n }\n const [, containerQuery, containerName] = matches;\n const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;\n return theme.containerQueries(containerName).up(value);\n}\nexport default function cssContainerQueries(themeInput) {\n const toContainerQuery = (mediaQuery, name) => mediaQuery.replace('@media', name ? `@container ${name}` : '@container');\n function attachCq(node, name) {\n node.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);\n node.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);\n node.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);\n node.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);\n node.not = (...args) => {\n const result = toContainerQuery(themeInput.breakpoints.not(...args), name);\n if (result.includes('not all and')) {\n // `@container` does not work with `not all and`, so need to invert the logic\n return result.replace('not all and ', '').replace('min-width:', 'width<').replace('max-width:', 'width>').replace('and', 'or');\n }\n return result;\n };\n }\n const node = {};\n const containerQueries = name => {\n attachCq(node, name);\n return node;\n };\n attachCq(containerQueries);\n return {\n ...themeInput,\n containerQueries\n };\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from \"../merge/index.js\";\nimport { isCqShorthand, getContainerQuery } from \"../cssContainerQueries/index.js\";\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nconst defaultContainerQueries = {\n containerQueries: containerName => ({\n up: key => {\n let result = typeof key === 'number' ? key : values[key] || key;\n if (typeof result === 'number') {\n result = `${result}px`;\n }\n return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;\n }\n })\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {\n const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);\n if (containerKey) {\n acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n }\n }\n // key is breakpoint\n else if (Object.keys(themeBreakpoints.values || values).includes(breakpoint)) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction({\n theme,\n ...props[key]\n });\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? {\n ...styleFunction.propTypes,\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n } : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n const breakpointsInOrder = breakpointsInput.keys?.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/interal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n * throw new Error('My message');\n * throw new Error(`My message: ${foo}`);\n * throw new Error(`My message: ${foo}` + 'another string');\n * ...\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code, ...args) {\n const url = new URL(`https://mui.com/production-error/?code=${code}`);\n args.forEach(arg => url.searchParams.append('args[]', arg));\n return `Minified MUI error #${code}; visit ${url} for the full message.`;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `capitalize(string)` expects a string argument.' : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport { getPath } from \"../style/index.js\";\nimport merge from \"../merge/index.js\";\nimport memoize from \"../memoize/index.js\";\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;\n if (typeof themeSpacing === 'number' || typeof themeSpacing === 'string') {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof val !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);\n }\n }\n if (typeof themeSpacing === 'string') {\n return `calc(${val} * ${themeSpacing})`;\n }\n return themeSpacing * val;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n const abs = Math.abs(val);\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n const transformed = themeSpacing[abs];\n if (val >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n return transformer(propValue);\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (!keys.includes(prop)) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import { createUnarySpacing } from \"../spacing/index.js\";\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8,\n// Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n// Smaller components, such as icons, can align to a 4dp grid.\n// https://m2.material.io/design/layout/understanding-layout.html\ntransform = createUnarySpacing({\n spacing: spacingInput\n})) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import merge from \"../merge/index.js\";\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from \"../responsivePropType/index.js\";\nimport style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport responsivePropType from \"../responsivePropType/index.js\";\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { handleBreakpoints, values as breakpointsValues } from \"../breakpoints/index.js\";\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n const breakpoint = props.theme?.breakpoints?.values?.[propValue] || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (props.theme?.breakpoints?.unit !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from \"../spacing/index.js\";\nimport { borderRadius, borderTransform } from \"../borders/index.js\";\nimport { gap, rowGap, columnGap } from \"../cssGrid/index.js\";\nimport { paletteTransform } from \"../palette/index.js\";\nimport { maxWidth, sizingTransform } from \"../sizing/index.js\";\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n font: {\n themeKey: 'font'\n },\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from \"../merge/index.js\";\nimport { getPath, getStyleValue as getValue } from \"../style/index.js\";\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from \"../breakpoints/index.js\";\nimport { sortContainerQueries } from \"../cssContainerQueries/index.js\";\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n const {\n sx,\n theme = {},\n nested\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = theme.unstable_sxConfig ?? defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme,\n nested: true\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n if (!nested && theme.modularCssLayers) {\n return {\n '@layer sx': sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css))\n };\n }\n return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css));\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/customization/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * With the styled function:\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * With the sx prop:\n * ✅ [{ background: '#e5e5e5' }, theme => theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme => theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars) {\n if (!theme.colorSchemes?.[key] || typeof theme.getColorSchemeSelector !== 'function') {\n return {};\n }\n // If CssVarsProvider is used as a provider, returns '*:where({selector}) &'\n let selector = theme.getColorSchemeSelector(key);\n if (selector === '&') {\n return styles;\n }\n if (selector.includes('data-') || selector.includes('.')) {\n // '*' is required as a workaround for Emotion issue (https://github.com/emotion-js/emotion/issues/2836)\n selector = `*:where(${selector.replace(/\\s*&$/, '')}) &`;\n }\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from \"../createBreakpoints/createBreakpoints.js\";\nimport cssContainerQueries from \"../cssContainerQueries/index.js\";\nimport shape from \"./shape.js\";\nimport createSpacing from \"./createSpacing.js\";\nimport styleFunctionSx from \"../styleFunctionSx/styleFunctionSx.js\";\nimport defaultSxConfig from \"../styleFunctionSx/defaultSxConfig.js\";\nimport applyStyles from \"./applyStyles.js\";\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {},\n ...other\n } = options;\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: {\n mode: 'light',\n ...paletteInput\n },\n spacing,\n shape: {\n ...shape,\n ...shapeInput\n }\n }, other);\n muiTheme = cssContainerQueries(muiTheme);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n var newProps = {};\n\n for (var _key in props) {\n if (hasOwn.call(props, _key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var _key2 in props) {\n if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n newProps[_key2] = props[_key2];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from \"../createTheme/index.js\";\nimport useThemeWithoutDefault from \"../useThemeWithoutDefault/index.js\";\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (color.length !== color.trim().length) {\n console.error(`MUI: The color: \"${color}\" is invalid. Make sure the color input doesn't contain leading/trailing space.`);\n }\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (!['rgb', 'rgba', 'hsl', 'hsla', 'color'].includes(type)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\\n` + 'The following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().' : _formatMuiErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (!['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].includes(colorSpace)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\\n` + 'The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.' : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.includes('hsl') && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.includes('rgb')) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.includes('hsl')) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.includes('color')) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.startsWith('#')) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.includes('hsl')) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.includes('rgb') || color.type.includes('color')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.includes('hsl')) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.includes('rgb')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.includes('color')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from \"../colors/common.js\";\nimport grey from \"../colors/grey.js\";\nimport purple from \"../colors/purple.js\";\nimport red from \"../colors/red.js\";\nimport orange from \"../colors/orange.js\";\nimport blue from \"../colors/blue.js\";\nimport lightBlue from \"../colors/lightBlue.js\";\nimport green from \"../colors/green.js\";\nfunction getLight() {\n return {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n };\n}\nexport const light = getLight();\nfunction getDark() {\n return {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n };\n}\nexport const dark = getDark();\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2,\n ...other\n } = palette;\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = {\n ...color\n };\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\\n` + `The color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\\n` + `\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\\n` + '\\n' + 'Did you intend to use one of the following approaches?\\n' + '\\n' + 'import { green } from \"@mui/material/colors\";\\n' + '\\n' + 'const theme1 = createTheme({ palette: {\\n' + ' primary: green,\\n' + '} });\\n' + '\\n' + 'const theme2 = createTheme({ palette: {\\n' + ' primary: { main: green[500] },\\n' + '} });' : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n let modeHydrated;\n if (mode === 'light') {\n modeHydrated = getLight();\n } else if (mode === 'dark') {\n modeHydrated = getDark();\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!modeHydrated) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge({\n // A collection of common colors.\n common: {\n ...common\n },\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset,\n // The light and dark mode object.\n ...modeHydrated\n }, other);\n return paletteOutput;\n}","/**\n * The benefit of this function is to help developers get CSS var from theme without specifying the whole variable\n * and they does not need to remember the prefix (defined once).\n */\nexport default function createGetCssVar(prefix = '') {\n function appendVar(...vars) {\n if (!vars.length) {\n return '';\n }\n const value = vars[0];\n 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+)/)) {\n return `, var(--${prefix ? `${prefix}-` : ''}${value}${appendVar(...vars.slice(1))})`;\n }\n return `, ${value}`;\n }\n\n // AdditionalVars makes `getCssVar` less strict, so it can be use like this `getCssVar('non-mui-variable')` without type error.\n const getCssVar = (field, ...fallbacks) => {\n return `var(--${prefix ? `${prefix}-` : ''}${field}${appendVar(...fallbacks)})`;\n };\n return getCssVar;\n}","export default function prepareTypographyVars(typography) {\n const vars = {};\n const entries = Object.entries(typography);\n entries.forEach(entry => {\n const [key, value] = entry;\n if (typeof value === 'object') {\n vars[key] = `${value.fontStyle ? `${value.fontStyle} ` : ''}${value.fontVariant ? `${value.fontVariant} ` : ''}${value.fontWeight ? `${value.fontWeight} ` : ''}${value.fontStretch ? `${value.fontStretch} ` : ''}${value.fontSize || ''}${value.lineHeight ? `/${value.lineHeight} ` : ''}${value.fontFamily || ''}`;\n }\n });\n return vars;\n}","/**\n * This function create an object from keys, value and then assign to target\n *\n * @param {Object} obj : the target object to be assigned\n * @param {string[]} keys\n * @param {string | number} value\n *\n * @example\n * const source = {}\n * assignNestedKeys(source, ['palette', 'primary'], 'var(--palette-primary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)' } }\n *\n * @example\n * const source = { palette: { primary: 'var(--palette-primary)' } }\n * assignNestedKeys(source, ['palette', 'secondary'], 'var(--palette-secondary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)', secondary: 'var(--palette-secondary)' } }\n */\nexport const assignNestedKeys = (obj, keys, value, arrayKeys = []) => {\n let temp = obj;\n keys.forEach((k, index) => {\n if (index === keys.length - 1) {\n if (Array.isArray(temp)) {\n temp[Number(k)] = value;\n } else if (temp && typeof temp === 'object') {\n temp[k] = value;\n }\n } else if (temp && typeof temp === 'object') {\n if (!temp[k]) {\n temp[k] = arrayKeys.includes(k) ? [] : {};\n }\n temp = temp[k];\n }\n });\n};\n\n/**\n *\n * @param {Object} obj : source object\n * @param {Function} callback : a function that will be called when\n * - the deepest key in source object is reached\n * - the value of the deepest key is NOT `undefined` | `null`\n *\n * @example\n * walkObjectDeep({ palette: { primary: { main: '#000000' } } }, console.log)\n * // ['palette', 'primary', 'main'] '#000000'\n */\nexport const walkObjectDeep = (obj, callback, shouldSkipPaths) => {\n function recurse(object, parentKeys = [], arrayKeys = []) {\n Object.entries(object).forEach(([key, value]) => {\n if (!shouldSkipPaths || shouldSkipPaths && !shouldSkipPaths([...parentKeys, key])) {\n if (value !== undefined && value !== null) {\n if (typeof value === 'object' && Object.keys(value).length > 0) {\n recurse(value, [...parentKeys, key], Array.isArray(value) ? [...arrayKeys, key] : arrayKeys);\n } else {\n callback([...parentKeys, key], value, arrayKeys);\n }\n }\n }\n });\n }\n recurse(obj);\n};\nconst getCssValue = (keys, value) => {\n if (typeof value === 'number') {\n if (['lineHeight', 'fontWeight', 'opacity', 'zIndex'].some(prop => keys.includes(prop))) {\n // CSS property that are unitless\n return value;\n }\n const lastKey = keys[keys.length - 1];\n if (lastKey.toLowerCase().includes('opacity')) {\n // opacity values are unitless\n return value;\n }\n return `${value}px`;\n }\n return value;\n};\n\n/**\n * a function that parse theme and return { css, vars }\n *\n * @param {Object} theme\n * @param {{\n * prefix?: string,\n * shouldSkipGeneratingVar?: (objectPathKeys: Array, value: string | number) => boolean\n * }} options.\n * `prefix`: The prefix of the generated CSS variables. This function does not change the value.\n *\n * @returns {{ css: Object, vars: Object }} `css` is the stylesheet, `vars` is an object to get css variable (same structure as theme).\n *\n * @example\n * const { css, vars } = parser({\n * fontSize: 12,\n * lineHeight: 1.2,\n * palette: { primary: { 500: 'var(--color)' } }\n * }, { prefix: 'foo' })\n *\n * console.log(css) // { '--foo-fontSize': '12px', '--foo-lineHeight': 1.2, '--foo-palette-primary-500': 'var(--color)' }\n * console.log(vars) // { fontSize: 'var(--foo-fontSize)', lineHeight: 'var(--foo-lineHeight)', palette: { primary: { 500: 'var(--foo-palette-primary-500)' } } }\n */\nexport default function cssVarsParser(theme, options) {\n const {\n prefix,\n shouldSkipGeneratingVar\n } = options || {};\n const css = {};\n const vars = {};\n const varsWithDefaults = {};\n walkObjectDeep(theme, (keys, value, arrayKeys) => {\n if (typeof value === 'string' || typeof value === 'number') {\n if (!shouldSkipGeneratingVar || !shouldSkipGeneratingVar(keys, value)) {\n // only create css & var if `shouldSkipGeneratingVar` return false\n const cssVar = `--${prefix ? `${prefix}-` : ''}${keys.join('-')}`;\n const resolvedValue = getCssValue(keys, value);\n Object.assign(css, {\n [cssVar]: resolvedValue\n });\n assignNestedKeys(vars, keys, `var(${cssVar})`, arrayKeys);\n assignNestedKeys(varsWithDefaults, keys, `var(${cssVar}, ${resolvedValue})`, arrayKeys);\n }\n }\n }, keys => keys[0] === 'vars' // skip 'vars/*' paths\n );\n return {\n css,\n vars,\n varsWithDefaults\n };\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2,\n ...other\n } = typeof typography === 'function' ? typography(palette) : typography;\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => ({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight,\n // The letter spacing was designed for the Roboto font-family. Using the same letter-spacing\n // across font-families can cause issues with the kerning.\n ...(fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}),\n ...casing,\n ...allVariants\n });\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // 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.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold,\n ...variants\n }, other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n 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(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst 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)];\nexport default shadows;","// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.desmos.com/calculator/vbrp3ggqet\n return Math.min(Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10), 3000);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = {\n ...easing,\n ...inputTransitions.easing\n };\n const mergedDuration = {\n ...duration,\n ...inputTransitions.duration\n };\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0,\n ...other\n } = options;\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n const isNumber = value => !Number.isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return {\n getAutoHeightDuration,\n create,\n ...inputTransitions,\n easing: mergedEasing,\n duration: mergedDuration\n };\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","/* eslint-disable import/prefer-default-export */\nimport { isPlainObject } from '@mui/utils/deepmerge';\nfunction isSerializable(val) {\n return isPlainObject(val) || typeof val === 'undefined' || typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number' || Array.isArray(val);\n}\n\n/**\n * `baseTheme` usually comes from `createTheme()` or `extendTheme()`.\n *\n * This function is intended to be used with zero-runtime CSS-in-JS like Pigment CSS\n * For example, in a Next.js project:\n *\n * ```js\n * // next.config.js\n * const { extendTheme } = require('@mui/material/styles');\n *\n * const theme = extendTheme();\n * // `.toRuntimeSource` is Pigment CSS specific to create a theme that is available at runtime.\n * theme.toRuntimeSource = stringifyTheme;\n *\n * module.exports = withPigment({\n * theme,\n * });\n * ```\n */\nexport function stringifyTheme(baseTheme = {}) {\n const serializableTheme = {\n ...baseTheme\n };\n function serializeTheme(object) {\n const array = Object.entries(object);\n // eslint-disable-next-line no-plusplus\n for (let index = 0; index < array.length; index++) {\n const [key, value] = array[index];\n if (!isSerializable(value) || key.startsWith('unstable_')) {\n delete object[key];\n } else if (isPlainObject(value)) {\n object[key] = {\n ...value\n };\n serializeTheme(object[key]);\n }\n }\n }\n serializeTheme(serializableTheme);\n return `import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(serializableTheme, null, 2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from \"./createMixins.js\";\nimport createPalette from \"./createPalette.js\";\nimport createTypography from \"./createTypography.js\";\nimport shadows from \"./shadows.js\";\nimport createTransitions from \"./createTransitions.js\";\nimport zIndex from \"./zIndex.js\";\nimport { stringifyTheme } from \"./stringifyTheme.js\";\nfunction createThemeNoVars(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput,\n mixins: mixinsInput = {},\n spacing: spacingInput,\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {},\n shape: shapeInput,\n ...other\n } = options;\n if (options.vars &&\n // The error should throw only for the root theme creation because user is not allowed to use a custom node `vars`.\n // `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.\n options.generateThemeVars === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `vars` is a private field used for CSS variables support.\\n' + 'Please use another name or follow the [docs](https://mui.com/material-ui/customization/css-theme-variables/usage/) to enable the feature.' : _formatMuiErrorMessage(20));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: {\n ...zIndex\n }\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in\n for (key in node) {\n const child = node[key];\n if (stateClasses.includes(key) && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.startsWith('Mui')) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n muiTheme.toRuntimeSource = stringifyTheme; // for Pigment CSS integration\n\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createThemeNoVars(...args);\n}\nexport default createThemeNoVars;","export default function createMixins(breakpoints, mixins) {\n return {\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n },\n ...mixins\n };\n}","// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nexport default function getOverlayAlpha(elevation) {\n let alphaValue;\n if (elevation < 1) {\n alphaValue = 5.11916 * elevation ** 2;\n } else {\n alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n }\n return Math.round(alphaValue * 10) / 1000;\n}","import createPalette from \"./createPalette.js\";\nimport getOverlayAlpha from \"./getOverlayAlpha.js\";\nconst defaultDarkOverlays = [...Array(25)].map((_, index) => {\n if (index === 0) {\n return 'none';\n }\n const overlay = getOverlayAlpha(index);\n return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;\n});\nexport function getOpacity(mode) {\n return {\n inputPlaceholder: mode === 'dark' ? 0.5 : 0.42,\n inputUnderline: mode === 'dark' ? 0.7 : 0.42,\n switchTrackDisabled: mode === 'dark' ? 0.2 : 0.12,\n switchTrack: mode === 'dark' ? 0.3 : 0.38\n };\n}\nexport function getOverlays(mode) {\n return mode === 'dark' ? defaultDarkOverlays : [];\n}\nexport default function createColorScheme(options) {\n const {\n palette: paletteInput = {\n mode: 'light'\n },\n // need to cast to avoid module augmentation test\n opacity,\n overlays,\n ...rest\n } = options;\n const palette = createPalette(paletteInput);\n return {\n palette,\n opacity: {\n ...getOpacity(palette.mode),\n ...opacity\n },\n overlays: overlays || getOverlays(palette.mode),\n ...rest\n };\n}","export default function shouldSkipGeneratingVar(keys) {\n return !!keys[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/) || !!keys[0].match(/sxConfig$/) ||\n // ends with sxConfig\n keys[0] === 'palette' && !!keys[1]?.match(/(mode|contrastThreshold|tonalOffset)/);\n}","/**\n * @internal These variables should not appear in the :root stylesheet when the `defaultColorScheme=\"dark\"`\n */\nconst excludeVariablesFromRoot = cssVarPrefix => [...[...Array(25)].map((_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index}`), `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkBg`, `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkColor`];\nexport default excludeVariablesFromRoot;","import excludeVariablesFromRoot from \"./excludeVariablesFromRoot.js\";\nexport default theme => (colorScheme, css) => {\n const root = theme.rootSelector || ':root';\n const selector = theme.colorSchemeSelector;\n let rule = selector;\n if (selector === 'class') {\n rule = '.%s';\n }\n if (selector === 'data') {\n rule = '[data-%s]';\n }\n if (selector?.startsWith('data-') && !selector.includes('%s')) {\n // 'data-mui-color-scheme' -> '[data-mui-color-scheme=\"%s\"]'\n rule = `[${selector}=\"%s\"]`;\n }\n if (theme.defaultColorScheme === colorScheme) {\n if (colorScheme === 'dark') {\n const excludedVariables = {};\n excludeVariablesFromRoot(theme.cssVarPrefix).forEach(cssVar => {\n excludedVariables[cssVar] = css[cssVar];\n delete css[cssVar];\n });\n if (rule === 'media') {\n return {\n [root]: css,\n [`@media (prefers-color-scheme: dark)`]: {\n [root]: excludedVariables\n }\n };\n }\n if (rule) {\n return {\n [rule.replace('%s', colorScheme)]: excludedVariables,\n [`${root}, ${rule.replace('%s', colorScheme)}`]: css\n };\n }\n return {\n [root]: {\n ...css,\n ...excludedVariables\n }\n };\n }\n if (rule && rule !== 'media') {\n return `${root}, ${rule.replace('%s', String(colorScheme))}`;\n }\n } else if (colorScheme) {\n if (rule === 'media') {\n return {\n [`@media (prefers-color-scheme: ${String(colorScheme)})`]: {\n [root]: css\n }\n };\n }\n if (rule) {\n return rule.replace('%s', String(colorScheme));\n }\n }\n return root;\n};","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { unstable_createGetCssVar as systemCreateGetCssVar, createSpacing } from '@mui/system';\nimport { createUnarySpacing } from '@mui/system/spacing';\nimport { prepareCssVars, prepareTypographyVars, createGetColorSchemeSelector } from '@mui/system/cssVars';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport { private_safeColorChannel as safeColorChannel, private_safeAlpha as safeAlpha, private_safeDarken as safeDarken, private_safeLighten as safeLighten, private_safeEmphasize as safeEmphasize, hslToRgb } from '@mui/system/colorManipulator';\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nimport createColorScheme, { getOpacity, getOverlays } from \"./createColorScheme.js\";\nimport defaultShouldSkipGeneratingVar from \"./shouldSkipGeneratingVar.js\";\nimport defaultGetSelector from \"./createGetSelector.js\";\nimport { stringifyTheme } from \"./stringifyTheme.js\";\nfunction assignNode(obj, keys) {\n keys.forEach(k => {\n if (!obj[k]) {\n obj[k] = {};\n }\n });\n}\nfunction setColor(obj, key, defaultValue) {\n if (!obj[key] && defaultValue) {\n obj[key] = defaultValue;\n }\n}\nfunction toRgb(color) {\n if (typeof color !== 'string' || !color.startsWith('hsl')) {\n return color;\n }\n return hslToRgb(color);\n}\nfunction setColorChannel(obj, key) {\n if (!(`${key}Channel` in obj)) {\n // custom channel token is not provided, generate one.\n // if channel token can't be generated, show a warning.\n obj[`${key}Channel`] = safeColorChannel(toRgb(obj[key]), `MUI: Can't create \\`palette.${key}Channel\\` because \\`palette.${key}\\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` + '\\n' + `To suppress this warning, you need to explicitly provide the \\`palette.${key}Channel\\` as a string (in rgb format, for example \"12 12 12\") or undefined if you want to remove the channel token.`);\n }\n}\nfunction getSpacingVal(spacingInput) {\n if (typeof spacingInput === 'number') {\n return `${spacingInput}px`;\n }\n if (typeof spacingInput === 'string' || typeof spacingInput === 'function' || Array.isArray(spacingInput)) {\n return spacingInput;\n }\n return '8px';\n}\nconst silent = fn => {\n try {\n return fn();\n } catch (error) {\n // ignore error\n }\n return undefined;\n};\nexport const createGetCssVar = (cssVarPrefix = 'mui') => systemCreateGetCssVar(cssVarPrefix);\nfunction attachColorScheme(colorSchemes, scheme, restTheme, colorScheme) {\n if (!scheme) {\n return undefined;\n }\n scheme = scheme === true ? {} : scheme;\n const mode = colorScheme === 'dark' ? 'dark' : 'light';\n if (!restTheme) {\n colorSchemes[colorScheme] = createColorScheme({\n ...scheme,\n palette: {\n mode,\n ...scheme?.palette\n }\n });\n return undefined;\n }\n const {\n palette,\n ...muiTheme\n } = createThemeNoVars({\n ...restTheme,\n palette: {\n mode,\n ...scheme?.palette\n }\n });\n colorSchemes[colorScheme] = {\n ...scheme,\n palette,\n opacity: {\n ...getOpacity(mode),\n ...scheme?.opacity\n },\n overlays: scheme?.overlays || getOverlays(mode)\n };\n return muiTheme;\n}\n\n/**\n * A default `createThemeWithVars` comes with a single color scheme, either `light` or `dark` based on the `defaultColorScheme`.\n * This is better suited for apps that only need a single color scheme.\n *\n * To enable built-in `light` and `dark` color schemes, either:\n * 1. provide a `colorSchemeSelector` to define how the color schemes will change.\n * 2. provide `colorSchemes.dark` will set `colorSchemeSelector: 'media'` by default.\n */\nexport default function createThemeWithVars(options = {}, ...args) {\n const {\n colorSchemes: colorSchemesInput = {\n light: true\n },\n defaultColorScheme: defaultColorSchemeInput,\n disableCssColorScheme = false,\n cssVarPrefix = 'mui',\n shouldSkipGeneratingVar = defaultShouldSkipGeneratingVar,\n colorSchemeSelector: selector = colorSchemesInput.light && colorSchemesInput.dark ? 'media' : undefined,\n rootSelector = ':root',\n ...input\n } = options;\n const firstColorScheme = Object.keys(colorSchemesInput)[0];\n const defaultColorScheme = defaultColorSchemeInput || (colorSchemesInput.light && firstColorScheme !== 'light' ? 'light' : firstColorScheme);\n const getCssVar = createGetCssVar(cssVarPrefix);\n const {\n [defaultColorScheme]: defaultSchemeInput,\n light: builtInLight,\n dark: builtInDark,\n ...customColorSchemes\n } = colorSchemesInput;\n const colorSchemes = {\n ...customColorSchemes\n };\n let defaultScheme = defaultSchemeInput;\n\n // For built-in light and dark color schemes, ensure that the value is valid if they are the default color scheme.\n if (defaultColorScheme === 'dark' && !('dark' in colorSchemesInput) || defaultColorScheme === 'light' && !('light' in colorSchemesInput)) {\n defaultScheme = true;\n }\n if (!defaultScheme) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`colorSchemes.${defaultColorScheme}\\` option is either missing or invalid.` : _formatMuiErrorMessage(21, defaultColorScheme));\n }\n\n // Create the palette for the default color scheme, either `light`, `dark`, or custom color scheme.\n const muiTheme = attachColorScheme(colorSchemes, defaultScheme, input, defaultColorScheme);\n if (builtInLight && !colorSchemes.light) {\n attachColorScheme(colorSchemes, builtInLight, undefined, 'light');\n }\n if (builtInDark && !colorSchemes.dark) {\n attachColorScheme(colorSchemes, builtInDark, undefined, 'dark');\n }\n let theme = {\n defaultColorScheme,\n ...muiTheme,\n cssVarPrefix,\n colorSchemeSelector: selector,\n rootSelector,\n getCssVar,\n colorSchemes,\n font: {\n ...prepareTypographyVars(muiTheme.typography),\n ...muiTheme.font\n },\n spacing: getSpacingVal(input.spacing)\n };\n Object.keys(theme.colorSchemes).forEach(key => {\n const palette = theme.colorSchemes[key].palette;\n const setCssVarColor = cssVar => {\n const tokens = cssVar.split('-');\n const color = tokens[1];\n const colorToken = tokens[2];\n return getCssVar(cssVar, palette[color][colorToken]);\n };\n\n // attach black & white channels to common node\n if (palette.mode === 'light') {\n setColor(palette.common, 'background', '#fff');\n setColor(palette.common, 'onBackground', '#000');\n }\n if (palette.mode === 'dark') {\n setColor(palette.common, 'background', '#000');\n setColor(palette.common, 'onBackground', '#fff');\n }\n\n // assign component variables\n assignNode(palette, ['Alert', 'AppBar', 'Avatar', 'Button', 'Chip', 'FilledInput', 'LinearProgress', 'Skeleton', 'Slider', 'SnackbarContent', 'SpeedDialAction', 'StepConnector', 'StepContent', 'Switch', 'TableCell', 'Tooltip']);\n if (palette.mode === 'light') {\n setColor(palette.Alert, 'errorColor', safeDarken(palette.error.light, 0.6));\n setColor(palette.Alert, 'infoColor', safeDarken(palette.info.light, 0.6));\n setColor(palette.Alert, 'successColor', safeDarken(palette.success.light, 0.6));\n setColor(palette.Alert, 'warningColor', safeDarken(palette.warning.light, 0.6));\n setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-main'));\n setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.main)));\n setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.main)));\n setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.main)));\n setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.main)));\n setColor(palette.Alert, 'errorStandardBg', safeLighten(palette.error.light, 0.9));\n setColor(palette.Alert, 'infoStandardBg', safeLighten(palette.info.light, 0.9));\n setColor(palette.Alert, 'successStandardBg', safeLighten(palette.success.light, 0.9));\n setColor(palette.Alert, 'warningStandardBg', safeLighten(palette.warning.light, 0.9));\n setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-100'));\n setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-400'));\n setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-300'));\n setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-A100'));\n setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-400'));\n setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-700'));\n setColor(palette.FilledInput, 'bg', 'rgba(0, 0, 0, 0.06)');\n setColor(palette.FilledInput, 'hoverBg', 'rgba(0, 0, 0, 0.09)');\n setColor(palette.FilledInput, 'disabledBg', 'rgba(0, 0, 0, 0.12)');\n setColor(palette.LinearProgress, 'primaryBg', safeLighten(palette.primary.main, 0.62));\n setColor(palette.LinearProgress, 'secondaryBg', safeLighten(palette.secondary.main, 0.62));\n setColor(palette.LinearProgress, 'errorBg', safeLighten(palette.error.main, 0.62));\n setColor(palette.LinearProgress, 'infoBg', safeLighten(palette.info.main, 0.62));\n setColor(palette.LinearProgress, 'successBg', safeLighten(palette.success.main, 0.62));\n setColor(palette.LinearProgress, 'warningBg', safeLighten(palette.warning.main, 0.62));\n setColor(palette.Skeleton, 'bg', `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.11)`);\n setColor(palette.Slider, 'primaryTrack', safeLighten(palette.primary.main, 0.62));\n setColor(palette.Slider, 'secondaryTrack', safeLighten(palette.secondary.main, 0.62));\n setColor(palette.Slider, 'errorTrack', safeLighten(palette.error.main, 0.62));\n setColor(palette.Slider, 'infoTrack', safeLighten(palette.info.main, 0.62));\n setColor(palette.Slider, 'successTrack', safeLighten(palette.success.main, 0.62));\n setColor(palette.Slider, 'warningTrack', safeLighten(palette.warning.main, 0.62));\n const snackbarContentBackground = safeEmphasize(palette.background.default, 0.8);\n setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n setColor(palette.SnackbarContent, 'color', silent(() => palette.getContrastText(snackbarContentBackground)));\n setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-400'));\n setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-400'));\n setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-common-white'));\n setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-100'));\n setColor(palette.Switch, 'primaryDisabledColor', safeLighten(palette.primary.main, 0.62));\n setColor(palette.Switch, 'secondaryDisabledColor', safeLighten(palette.secondary.main, 0.62));\n setColor(palette.Switch, 'errorDisabledColor', safeLighten(palette.error.main, 0.62));\n setColor(palette.Switch, 'infoDisabledColor', safeLighten(palette.info.main, 0.62));\n setColor(palette.Switch, 'successDisabledColor', safeLighten(palette.success.main, 0.62));\n setColor(palette.Switch, 'warningDisabledColor', safeLighten(palette.warning.main, 0.62));\n setColor(palette.TableCell, 'border', safeLighten(safeAlpha(palette.divider, 1), 0.88));\n setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n }\n if (palette.mode === 'dark') {\n setColor(palette.Alert, 'errorColor', safeLighten(palette.error.light, 0.6));\n setColor(palette.Alert, 'infoColor', safeLighten(palette.info.light, 0.6));\n setColor(palette.Alert, 'successColor', safeLighten(palette.success.light, 0.6));\n setColor(palette.Alert, 'warningColor', safeLighten(palette.warning.light, 0.6));\n setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-dark'));\n setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-dark'));\n setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-dark'));\n setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-dark'));\n setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.dark)));\n setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.dark)));\n setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.dark)));\n setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.dark)));\n setColor(palette.Alert, 'errorStandardBg', safeDarken(palette.error.light, 0.9));\n setColor(palette.Alert, 'infoStandardBg', safeDarken(palette.info.light, 0.9));\n setColor(palette.Alert, 'successStandardBg', safeDarken(palette.success.light, 0.9));\n setColor(palette.Alert, 'warningStandardBg', safeDarken(palette.warning.light, 0.9));\n setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-900'));\n setColor(palette.AppBar, 'darkBg', setCssVarColor('palette-background-paper')); // specific for dark mode\n setColor(palette.AppBar, 'darkColor', setCssVarColor('palette-text-primary')); // specific for dark mode\n setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-600'));\n setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-800'));\n setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-300'));\n setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-300'));\n setColor(palette.FilledInput, 'bg', 'rgba(255, 255, 255, 0.09)');\n setColor(palette.FilledInput, 'hoverBg', 'rgba(255, 255, 255, 0.13)');\n setColor(palette.FilledInput, 'disabledBg', 'rgba(255, 255, 255, 0.12)');\n setColor(palette.LinearProgress, 'primaryBg', safeDarken(palette.primary.main, 0.5));\n setColor(palette.LinearProgress, 'secondaryBg', safeDarken(palette.secondary.main, 0.5));\n setColor(palette.LinearProgress, 'errorBg', safeDarken(palette.error.main, 0.5));\n setColor(palette.LinearProgress, 'infoBg', safeDarken(palette.info.main, 0.5));\n setColor(palette.LinearProgress, 'successBg', safeDarken(palette.success.main, 0.5));\n setColor(palette.LinearProgress, 'warningBg', safeDarken(palette.warning.main, 0.5));\n setColor(palette.Skeleton, 'bg', `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.13)`);\n setColor(palette.Slider, 'primaryTrack', safeDarken(palette.primary.main, 0.5));\n setColor(palette.Slider, 'secondaryTrack', safeDarken(palette.secondary.main, 0.5));\n setColor(palette.Slider, 'errorTrack', safeDarken(palette.error.main, 0.5));\n setColor(palette.Slider, 'infoTrack', safeDarken(palette.info.main, 0.5));\n setColor(palette.Slider, 'successTrack', safeDarken(palette.success.main, 0.5));\n setColor(palette.Slider, 'warningTrack', safeDarken(palette.warning.main, 0.5));\n const snackbarContentBackground = safeEmphasize(palette.background.default, 0.98);\n setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n setColor(palette.SnackbarContent, 'color', silent(() => palette.getContrastText(snackbarContentBackground)));\n setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-600'));\n setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-600'));\n setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-grey-300'));\n setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-600'));\n setColor(palette.Switch, 'primaryDisabledColor', safeDarken(palette.primary.main, 0.55));\n setColor(palette.Switch, 'secondaryDisabledColor', safeDarken(palette.secondary.main, 0.55));\n setColor(palette.Switch, 'errorDisabledColor', safeDarken(palette.error.main, 0.55));\n setColor(palette.Switch, 'infoDisabledColor', safeDarken(palette.info.main, 0.55));\n setColor(palette.Switch, 'successDisabledColor', safeDarken(palette.success.main, 0.55));\n setColor(palette.Switch, 'warningDisabledColor', safeDarken(palette.warning.main, 0.55));\n setColor(palette.TableCell, 'border', safeDarken(safeAlpha(palette.divider, 1), 0.68));\n setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n }\n\n // MUI X - DataGrid needs this token.\n setColorChannel(palette.background, 'default');\n\n // added for consistency with the `background.default` token\n setColorChannel(palette.background, 'paper');\n setColorChannel(palette.common, 'background');\n setColorChannel(palette.common, 'onBackground');\n setColorChannel(palette, 'divider');\n Object.keys(palette).forEach(color => {\n const colors = palette[color];\n\n // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`.\n\n if (color !== 'tonalOffset' && colors && typeof colors === 'object') {\n // Silent the error for custom palettes.\n if (colors.main) {\n setColor(palette[color], 'mainChannel', safeColorChannel(toRgb(colors.main)));\n }\n if (colors.light) {\n setColor(palette[color], 'lightChannel', safeColorChannel(toRgb(colors.light)));\n }\n if (colors.dark) {\n setColor(palette[color], 'darkChannel', safeColorChannel(toRgb(colors.dark)));\n }\n if (colors.contrastText) {\n setColor(palette[color], 'contrastTextChannel', safeColorChannel(toRgb(colors.contrastText)));\n }\n if (color === 'text') {\n // Text colors: text.primary, text.secondary\n setColorChannel(palette[color], 'primary');\n setColorChannel(palette[color], 'secondary');\n }\n if (color === 'action') {\n // Action colors: action.active, action.selected\n if (colors.active) {\n setColorChannel(palette[color], 'active');\n }\n if (colors.selected) {\n setColorChannel(palette[color], 'selected');\n }\n }\n }\n });\n });\n theme = args.reduce((acc, argument) => deepmerge(acc, argument), theme);\n const parserConfig = {\n prefix: cssVarPrefix,\n disableCssColorScheme,\n shouldSkipGeneratingVar,\n getSelector: defaultGetSelector(theme)\n };\n const {\n vars,\n generateThemeVars,\n generateStyleSheets\n } = prepareCssVars(theme, parserConfig);\n theme.vars = vars;\n Object.entries(theme.colorSchemes[theme.defaultColorScheme]).forEach(([key, value]) => {\n theme[key] = value;\n });\n theme.generateThemeVars = generateThemeVars;\n theme.generateStyleSheets = generateStyleSheets;\n theme.generateSpacing = function generateSpacing() {\n return createSpacing(input.spacing, createUnarySpacing(this));\n };\n theme.getColorSchemeSelector = createGetColorSchemeSelector(selector);\n theme.spacing = theme.generateSpacing();\n theme.shouldSkipGeneratingVar = shouldSkipGeneratingVar;\n theme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...input?.unstable_sxConfig\n };\n theme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n theme.toRuntimeSource = stringifyTheme; // for Pigment CSS integration\n\n return theme;\n}","import deepmerge from '@mui/utils/deepmerge';\nimport cssVarsParser from \"./cssVarsParser.js\";\nfunction prepareCssVars(theme, parserConfig = {}) {\n const {\n getSelector = defaultGetSelector,\n disableCssColorScheme,\n colorSchemeSelector: selector\n } = parserConfig;\n // @ts-ignore - ignore components do not exist\n const {\n colorSchemes = {},\n components,\n defaultColorScheme = 'light',\n ...otherTheme\n } = theme;\n const {\n vars: rootVars,\n css: rootCss,\n varsWithDefaults: rootVarsWithDefaults\n } = cssVarsParser(otherTheme, parserConfig);\n let themeVars = rootVarsWithDefaults;\n const colorSchemesMap = {};\n const {\n [defaultColorScheme]: defaultScheme,\n ...otherColorSchemes\n } = colorSchemes;\n Object.entries(otherColorSchemes || {}).forEach(([key, scheme]) => {\n const {\n vars,\n css,\n varsWithDefaults\n } = cssVarsParser(scheme, parserConfig);\n themeVars = deepmerge(themeVars, varsWithDefaults);\n colorSchemesMap[key] = {\n css,\n vars\n };\n });\n if (defaultScheme) {\n // default color scheme vars should be merged last to set as default\n const {\n css,\n vars,\n varsWithDefaults\n } = cssVarsParser(defaultScheme, parserConfig);\n themeVars = deepmerge(themeVars, varsWithDefaults);\n colorSchemesMap[defaultColorScheme] = {\n css,\n vars\n };\n }\n function defaultGetSelector(colorScheme, cssObject) {\n let rule = selector;\n if (selector === 'class') {\n rule = '.%s';\n }\n if (selector === 'data') {\n rule = '[data-%s]';\n }\n if (selector?.startsWith('data-') && !selector.includes('%s')) {\n // 'data-joy-color-scheme' -> '[data-joy-color-scheme=\"%s\"]'\n rule = `[${selector}=\"%s\"]`;\n }\n if (colorScheme) {\n if (rule === 'media') {\n if (theme.defaultColorScheme === colorScheme) {\n return ':root';\n }\n const mode = colorSchemes[colorScheme]?.palette?.mode || colorScheme;\n return {\n [`@media (prefers-color-scheme: ${mode})`]: {\n ':root': cssObject\n }\n };\n }\n if (rule) {\n if (theme.defaultColorScheme === colorScheme) {\n return `:root, ${rule.replace('%s', String(colorScheme))}`;\n }\n return rule.replace('%s', String(colorScheme));\n }\n }\n return ':root';\n }\n const generateThemeVars = () => {\n let vars = {\n ...rootVars\n };\n Object.entries(colorSchemesMap).forEach(([, {\n vars: schemeVars\n }]) => {\n vars = deepmerge(vars, schemeVars);\n });\n return vars;\n };\n const generateStyleSheets = () => {\n const stylesheets = [];\n const colorScheme = theme.defaultColorScheme || 'light';\n function insertStyleSheet(key, css) {\n if (Object.keys(css).length) {\n stylesheets.push(typeof key === 'string' ? {\n [key]: {\n ...css\n }\n } : key);\n }\n }\n insertStyleSheet(getSelector(undefined, {\n ...rootCss\n }), rootCss);\n const {\n [colorScheme]: defaultSchemeVal,\n ...other\n } = colorSchemesMap;\n if (defaultSchemeVal) {\n // default color scheme has to come before other color schemes\n const {\n css\n } = defaultSchemeVal;\n const cssColorSheme = colorSchemes[colorScheme]?.palette?.mode;\n const finalCss = !disableCssColorScheme && cssColorSheme ? {\n colorScheme: cssColorSheme,\n ...css\n } : {\n ...css\n };\n insertStyleSheet(getSelector(colorScheme, {\n ...finalCss\n }), finalCss);\n }\n Object.entries(other).forEach(([key, {\n css\n }]) => {\n const cssColorSheme = colorSchemes[key]?.palette?.mode;\n const finalCss = !disableCssColorScheme && cssColorSheme ? {\n colorScheme: cssColorSheme,\n ...css\n } : {\n ...css\n };\n insertStyleSheet(getSelector(key, {\n ...finalCss\n }), finalCss);\n });\n return stylesheets;\n };\n return {\n vars: themeVars,\n generateThemeVars,\n generateStyleSheets\n };\n}\nexport default prepareCssVars;","/* eslint-disable import/prefer-default-export */\nexport function createGetColorSchemeSelector(selector) {\n return function getColorSchemeSelector(colorScheme) {\n if (selector === 'media') {\n if (process.env.NODE_ENV !== 'production') {\n if (colorScheme !== 'light' && colorScheme !== 'dark') {\n console.error(`MUI: @media (prefers-color-scheme) supports only 'light' or 'dark', but receive '${colorScheme}'.`);\n }\n }\n return `@media (prefers-color-scheme: ${colorScheme})`;\n }\n if (selector) {\n if (selector.startsWith('data-') && !selector.includes('%s')) {\n return `[${selector}=\"${colorScheme}\"] &`;\n }\n if (selector === 'class') {\n return `.${colorScheme} &`;\n }\n if (selector === 'data') {\n return `[data-${colorScheme}] &`;\n }\n return `${selector.replace('%s', colorScheme)} &`;\n }\n return '&';\n };\n}","import createPalette from \"./createPalette.js\";\nimport createThemeWithVars from \"./createThemeWithVars.js\";\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nexport { createMuiTheme } from \"./createThemeNoVars.js\";\n// eslint-disable-next-line consistent-return\nfunction attachColorScheme(theme, scheme, colorScheme) {\n if (!theme.colorSchemes) {\n return undefined;\n }\n if (colorScheme) {\n theme.colorSchemes[scheme] = {\n ...(colorScheme !== true && colorScheme),\n palette: createPalette({\n ...(colorScheme === true ? {} : colorScheme.palette),\n mode: scheme\n }) // cast type to skip module augmentation test\n };\n }\n}\n\n/**\n * Generate a theme base on the options received.\n * @param options Takes an incomplete theme object and adds the missing parts.\n * @param args Deep merge the arguments with the about to be returned theme.\n * @returns A complete, ready-to-use theme object.\n */\nexport default function createTheme(options = {},\n// cast type to skip module augmentation test\n...args) {\n const {\n palette,\n cssVariables = false,\n colorSchemes: initialColorSchemes = !palette ? {\n light: true\n } : undefined,\n defaultColorScheme: initialDefaultColorScheme = palette?.mode,\n ...rest\n } = options;\n const defaultColorSchemeInput = initialDefaultColorScheme || 'light';\n const defaultScheme = initialColorSchemes?.[defaultColorSchemeInput];\n const colorSchemesInput = {\n ...initialColorSchemes,\n ...(palette ? {\n [defaultColorSchemeInput]: {\n ...(typeof defaultScheme !== 'boolean' && defaultScheme),\n palette\n }\n } : undefined)\n };\n if (cssVariables === false) {\n if (!('colorSchemes' in options)) {\n // Behaves exactly as v5\n return createThemeNoVars(options, ...args);\n }\n let paletteOptions = palette;\n if (!('palette' in options)) {\n if (colorSchemesInput[defaultColorSchemeInput]) {\n if (colorSchemesInput[defaultColorSchemeInput] !== true) {\n paletteOptions = colorSchemesInput[defaultColorSchemeInput].palette;\n } else if (defaultColorSchemeInput === 'dark') {\n // @ts-ignore to prevent the module augmentation test from failing\n paletteOptions = {\n mode: 'dark'\n };\n }\n }\n }\n const theme = createThemeNoVars({\n ...options,\n palette: paletteOptions\n }, ...args);\n theme.defaultColorScheme = defaultColorSchemeInput;\n theme.colorSchemes = colorSchemesInput;\n if (theme.palette.mode === 'light') {\n theme.colorSchemes.light = {\n ...(colorSchemesInput.light !== true && colorSchemesInput.light),\n palette: theme.palette\n };\n attachColorScheme(theme, 'dark', colorSchemesInput.dark);\n }\n if (theme.palette.mode === 'dark') {\n theme.colorSchemes.dark = {\n ...(colorSchemesInput.dark !== true && colorSchemesInput.dark),\n palette: theme.palette\n };\n attachColorScheme(theme, 'light', colorSchemesInput.light);\n }\n return theme;\n }\n if (!palette && !('light' in colorSchemesInput) && defaultColorSchemeInput === 'light') {\n colorSchemesInput.light = true;\n }\n return createThemeWithVars({\n ...rest,\n colorSchemes: colorSchemesInput,\n defaultColorScheme: defaultColorSchemeInput,\n ...(typeof cssVariables !== 'boolean' && cssVariables)\n }, ...args);\n}","'use client';\n\nimport createTheme from \"./createTheme.js\";\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","'use client';\n\nimport systemUseThemeProps from '@mui/system/useThemeProps';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme,\n themeId: THEME_ID\n });\n}","'use client';\n\nimport getThemeProps from \"./getThemeProps.js\";\nimport useTheme from \"../useTheme/index.js\";\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n return getThemeProps({\n theme,\n name,\n props\n });\n}","export const imageMimeTypes = {\n 'image/png': 'PNG',\n 'image/jpeg': 'JPEG',\n 'image/webp': 'WebP'\n};","import { imageMimeTypes } from \"./utils/imageMimeTypes.js\";\nimport { getChartsLocalization } from \"./utils/getChartsLocalization.js\";\n\n// This object is not Partial because it is the default values\n\nexport const enUSLocaleText = {\n // Overlay\n loading: 'Loading data…',\n noData: 'No data to display',\n // Toolbar\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n toolbarExport: 'Export',\n // Toolbar Export Menu\n toolbarExportPrint: 'Print',\n toolbarExportImage: mimeType => `Export as ${imageMimeTypes[mimeType] ?? mimeType}`,\n // Charts renderer configuration\n chartTypeBar: 'Bar',\n chartTypeColumn: 'Column',\n chartTypeLine: 'Line',\n chartTypeArea: 'Area',\n chartTypePie: 'Pie',\n chartPaletteLabel: 'Color palette',\n chartPaletteNameRainbowSurge: 'Rainbow Surge',\n chartPaletteNameBlueberryTwilight: 'Blueberry Twilight',\n chartPaletteNameMangoFusion: 'Mango Fusion',\n chartPaletteNameCheerfulFiesta: 'Cheerful Fiesta',\n chartPaletteNameStrawberrySky: 'Strawberry Sky',\n chartPaletteNameBlue: 'Blue',\n chartPaletteNameGreen: 'Green',\n chartPaletteNamePurple: 'Purple',\n chartPaletteNameRed: 'Red',\n chartPaletteNameOrange: 'Orange',\n chartPaletteNameYellow: 'Yellow',\n chartPaletteNameCyan: 'Cyan',\n chartPaletteNamePink: 'Pink',\n chartConfigurationSectionChart: 'Chart',\n chartConfigurationSectionColumns: 'Columns',\n chartConfigurationSectionBars: 'Bars',\n chartConfigurationSectionAxes: 'Axes',\n chartConfigurationGrid: 'Grid',\n chartConfigurationBorderRadius: 'Border radius',\n chartConfigurationCategoryGapRatio: 'Category gap ratio',\n chartConfigurationBarGapRatio: 'Series gap ratio',\n chartConfigurationStacked: 'Stacked',\n chartConfigurationShowToolbar: 'Show toolbar',\n chartConfigurationSkipAnimation: 'Skip animation',\n chartConfigurationInnerRadius: 'Inner radius',\n chartConfigurationOuterRadius: 'Outer radius',\n chartConfigurationColors: 'Colors',\n chartConfigurationHideLegend: 'Hide legend',\n chartConfigurationShowMark: 'Show mark',\n chartConfigurationHeight: 'Height',\n chartConfigurationWidth: 'Width',\n chartConfigurationSeriesGap: 'Series gap',\n chartConfigurationTickPlacement: 'Tick placement',\n chartConfigurationTickLabelPlacement: 'Tick label placement',\n chartConfigurationCategoriesAxisLabel: 'Categories axis label',\n chartConfigurationSeriesAxisLabel: 'Series axis label',\n chartConfigurationXAxisPosition: 'X-axis position',\n chartConfigurationYAxisPosition: 'Y-axis position',\n chartConfigurationSeriesAxisReverse: 'Reverse series axis',\n chartConfigurationTooltipPlacement: 'Placement',\n chartConfigurationTooltipTrigger: 'Trigger',\n chartConfigurationLegendPosition: 'Position',\n chartConfigurationLegendDirection: 'Direction',\n chartConfigurationBarLabels: 'Bar labels',\n chartConfigurationColumnLabels: 'Column labels',\n chartConfigurationInterpolation: 'Interpolation',\n chartConfigurationSectionTooltip: 'Tooltip',\n chartConfigurationSectionLegend: 'Legend',\n chartConfigurationSectionLines: 'Lines',\n chartConfigurationSectionAreas: 'Areas',\n chartConfigurationSectionArcs: 'Arcs',\n chartConfigurationPaddingAngle: 'Padding angle',\n chartConfigurationCornerRadius: 'Corner radius',\n chartConfigurationArcLabels: 'Arc labels',\n chartConfigurationStartAngle: 'Start angle',\n chartConfigurationEndAngle: 'End angle',\n chartConfigurationPieTooltipTrigger: 'Trigger',\n chartConfigurationPieLegendPosition: 'Position',\n chartConfigurationPieLegendDirection: 'Direction',\n // Common option labels\n chartConfigurationOptionNone: 'None',\n chartConfigurationOptionValue: 'Value',\n chartConfigurationOptionAuto: 'Auto',\n chartConfigurationOptionTop: 'Top',\n chartConfigurationOptionTopLeft: 'Top Left',\n chartConfigurationOptionTopRight: 'Top Right',\n chartConfigurationOptionBottom: 'Bottom',\n chartConfigurationOptionBottomLeft: 'Bottom Left',\n chartConfigurationOptionBottomRight: 'Bottom Right',\n chartConfigurationOptionLeft: 'Left',\n chartConfigurationOptionRight: 'Right',\n chartConfigurationOptionAxis: 'Axis',\n chartConfigurationOptionItem: 'Item',\n chartConfigurationOptionHorizontal: 'Horizontal',\n chartConfigurationOptionVertical: 'Vertical',\n chartConfigurationOptionBoth: 'Both',\n chartConfigurationOptionStart: 'Start',\n chartConfigurationOptionMiddle: 'Middle',\n chartConfigurationOptionEnd: 'End',\n chartConfigurationOptionExtremities: 'Extremities',\n chartConfigurationOptionTick: 'Tick',\n chartConfigurationOptionMonotoneX: 'Monotone X',\n chartConfigurationOptionMonotoneY: 'Monotone Y',\n chartConfigurationOptionCatmullRom: 'Catmull-Rom',\n chartConfigurationOptionLinear: 'Linear',\n chartConfigurationOptionNatural: 'Natural',\n chartConfigurationOptionStep: 'Step',\n chartConfigurationOptionStepBefore: 'Step Before',\n chartConfigurationOptionStepAfter: 'Step After',\n chartConfigurationOptionBumpX: 'Bump X',\n chartConfigurationOptionBumpY: 'Bump Y'\n};\nexport const DEFAULT_LOCALE = enUSLocaleText;\nexport const enUS = getChartsLocalization(enUSLocaleText);","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Helper to pass translation to all charts thanks to the MUI theme.\n * @param chartsTranslations The translation object.\n * @returns an object to pass the translation by using the MUI theme default props\n */\nexport const getChartsLocalization = chartsTranslations => {\n return {\n components: {\n MuiChartsLocalizationProvider: {\n defaultProps: {\n localeText: _extends({}, chartsTranslations)\n }\n }\n }\n };\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"localeText\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport { DEFAULT_LOCALE } from \"../locales/enUS.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ChartsLocalizationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") ChartsLocalizationContext.displayName = \"ChartsLocalizationContext\";\n/**\n * Demos:\n *\n * - [localization](https://mui.com/x/react-charts/localization/)\n *\n * API:\n *\n * - [ChartsLocalizationProvider API](https://mui.com/x/api/charts/charts-localization-provider/)\n */\nfunction ChartsLocalizationProvider(inProps) {\n const {\n localeText: inLocaleText\n } = inProps,\n other = _objectWithoutPropertiesLoose(inProps, _excluded);\n const {\n localeText: parentLocaleText\n } = React.useContext(ChartsLocalizationContext) ?? {\n localeText: undefined\n };\n const props = useThemeProps({\n // We don't want to pass the `localeText` prop to the theme, that way it will always return the theme value,\n // We will then merge this theme value with our value manually\n props: other,\n name: 'MuiChartsLocalizationProvider'\n });\n const {\n children,\n localeText: themeLocaleText\n } = props;\n const localeText = React.useMemo(() => _extends({}, DEFAULT_LOCALE, themeLocaleText, parentLocaleText, inLocaleText), [themeLocaleText, parentLocaleText, inLocaleText]);\n const contextValue = React.useMemo(() => {\n return {\n localeText\n };\n }, [localeText]);\n return /*#__PURE__*/_jsx(ChartsLocalizationContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? ChartsLocalizationProvider.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n children: PropTypes.node,\n /**\n * Localized text for chart components.\n */\n localeText: PropTypes.object\n} : void 0;\nexport { ChartsLocalizationProvider };","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 {\n this.currentId = null;\n fn();\n }, delay);\n }\n clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n disposeEffect = () => {\n return this.clear;\n };\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","/* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0\n ---\n These rules are preventing the performance optimizations below.\n */\n\n/**\n * Compose classes from multiple sources.\n *\n * @example\n * ```tsx\n * const slots = {\n * root: ['root', 'primary'],\n * label: ['label'],\n * };\n *\n * const getUtilityClass = (slot) => `MuiButton-${slot}`;\n *\n * const classes = {\n * root: 'my-root-class',\n * };\n *\n * const output = composeClasses(slots, getUtilityClass, classes);\n * // {\n * // root: 'MuiButton-root MuiButton-primary my-root-class',\n * // label: 'MuiButton-label',\n * // }\n * ```\n *\n * @param slots a list of classes for each possible slot\n * @param getUtilityClass a function to resolve the class based on the slot name\n * @param classes the input classes from props\n * @returns the resolved classes for all slots\n */\nexport default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n for (const slotName in slots) {\n const slot = slots[slotName];\n let buffer = '';\n let start = true;\n for (let i = 0; i < slot.length; i += 1) {\n const value = slot[i];\n if (value) {\n buffer += (start === true ? '' : ' ') + getUtilityClass(value);\n start = false;\n if (classes && classes[value]) {\n buffer += ' ' + classes[value];\n }\n }\n }\n output[slotName] = buffer;\n }\n return output;\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RtlContext = /*#__PURE__*/React.createContext();\nfunction RtlProvider({\n value,\n ...props\n}) {\n return /*#__PURE__*/_jsx(RtlContext.Provider, {\n value: value ?? true,\n ...props\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? RtlProvider.propTypes = {\n children: PropTypes.node,\n value: PropTypes.bool\n} : void 0;\nexport const useRtl = () => {\n const value = React.useContext(RtlContext);\n return value ?? false;\n};\nexport default RtlProvider;","/**\n * Returns a boolean indicating if the event's target has :focus-visible\n */\nexport default function isFocusVisible(element) {\n try {\n return element.matches(':focus-visible');\n } catch (error) {\n // Do not warn on jsdom tests, otherwise all tests that rely on focus have to be skipped\n // Tests that rely on `:focus-visible` will still have to be skipped in jsdom\n if (process.env.NODE_ENV !== 'production' && !/jsdom/.test(window.navigator.userAgent)) {\n console.warn(['MUI: The `:focus-visible` pseudo class is not supported in this browser.', 'Some components rely on this feature to work properly.'].join('\\n'));\n }\n }\n return false;\n}","import * as React from 'react';\n\n/**\n * Returns the ref of a React element handling differences between React 19 and older versions.\n * It will throw runtime error if the element is not a valid React element.\n *\n * @param element React.ReactElement\n * @returns React.Ref | null\n */\nexport default function getReactElementRef(element) {\n // 'ref' is passed as prop in React 19, whereas 'ref' is directly attached to children in older versions\n if (parseInt(React.version, 10) >= 19) {\n return element?.props?.ref || null;\n }\n // @ts-expect-error element.ref is not included in the ReactElement type\n // https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/70189\n return element?.ref || null;\n}","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar 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|popover|popoverTarget|popoverTargetAction|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)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\n\nvar isDevelopment = false;\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n // eslint-disable-next-line prefer-spread\n styles.push.apply(styles, args);\n } else {\n var templateStringsArr = args[0];\n\n styles.push(templateStringsArr[0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n\n styles.push(args[i], templateStringsArr[i]);\n }\n }\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if (finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && isDevelopment) {\n return 'NO_COMPONENT_SELECTOR';\n }\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n var newStyled = createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n }));\n return newStyled.apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/react';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\nimport '@emotion/utils';\nimport 'react';\nimport '@emotion/is-prop-valid';\n\nvar 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\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// bind it to avoid mutating the original function\nvar styled = createStyled.bind(null);\ntags.forEach(function (tagName) {\n styled[tagName] = styled(tagName);\n});\n\nexport { styled as default };\n","/**\n * @mui/styled-engine v6.5.0\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nimport { serializeStyles as emSerializeStyles } from '@emotion/serialize';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_mutateStyles(tag, processor) {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n}\n\n// Emotion only accepts an array, but we want to avoid allocations\nconst wrapper = [];\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_serializeStyles(styles) {\n wrapper[0] = styles;\n return emSerializeStyles(wrapper);\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from \"./StyledEngineProvider/index.js\";\nexport { default as GlobalStyles } from \"./GlobalStyles/index.js\";","import { internal_serializeStyles } from '@mui/styled-engine';\nexport default function preprocessStyles(input) {\n const {\n variants,\n ...style\n } = input;\n const result = {\n variants,\n style: internal_serializeStyles(style),\n isProcessed: true\n };\n\n // Not supported on styled-components\n if (result.style === style) {\n return result;\n }\n if (variants) {\n variants.forEach(variant => {\n if (typeof variant.style !== 'function') {\n variant.style = internal_serializeStyles(variant.style);\n }\n });\n }\n return result;\n}","import styledEngineStyled, { internal_mutateStyles as mutateStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from \"../createTheme/index.js\";\nimport styleFunctionSx from \"../styleFunctionSx/index.js\";\nimport preprocessStyles from \"../preprocessStyles.js\";\n\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-labels */\n/* eslint-disable no-lone-blocks */\n\nexport const systemDefaultTheme = createTheme();\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nfunction shallowLayer(serialized, layerName) {\n if (layerName && serialized && typeof serialized === 'object' && serialized.styles && !serialized.styles.startsWith('@layer') // only add the layer if it is not already there.\n ) {\n serialized.styles = `@layer ${layerName}{${String(serialized.styles)}}`;\n }\n return serialized;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (_props, styles) => styles[slot];\n}\nfunction attachTheme(props, themeId, defaultTheme) {\n props.theme = isObjectEmpty(props.theme) ? defaultTheme : props.theme[themeId] || props.theme;\n}\nfunction processStyle(props, style, layerName) {\n /*\n * Style types:\n * - null/undefined\n * - string\n * - CSS style object: { [cssKey]: [cssValue], variants }\n * - Processed style object: { style, variants, isProcessed: true }\n * - Array of any of the above\n */\n\n const resolvedStyle = typeof style === 'function' ? style(props) : style;\n if (Array.isArray(resolvedStyle)) {\n return resolvedStyle.flatMap(subStyle => processStyle(props, subStyle, layerName));\n }\n if (Array.isArray(resolvedStyle?.variants)) {\n let rootStyle;\n if (resolvedStyle.isProcessed) {\n rootStyle = layerName ? shallowLayer(resolvedStyle.style, layerName) : resolvedStyle.style;\n } else {\n const {\n variants,\n ...otherStyles\n } = resolvedStyle;\n rootStyle = layerName ? shallowLayer(serializeStyles(otherStyles), layerName) : otherStyles;\n }\n return processStyleVariants(props, resolvedStyle.variants, [rootStyle], layerName);\n }\n if (resolvedStyle?.isProcessed) {\n return layerName ? shallowLayer(serializeStyles(resolvedStyle.style), layerName) : resolvedStyle.style;\n }\n return layerName ? shallowLayer(serializeStyles(resolvedStyle), layerName) : resolvedStyle;\n}\nfunction processStyleVariants(props, variants, results = [], layerName = undefined) {\n let mergedState; // We might not need it, initialized lazily\n\n variantLoop: for (let i = 0; i < variants.length; i += 1) {\n const variant = variants[i];\n if (typeof variant.props === 'function') {\n mergedState ??= {\n ...props,\n ...props.ownerState,\n ownerState: props.ownerState\n };\n if (!variant.props(mergedState)) {\n continue;\n }\n } else {\n for (const key in variant.props) {\n if (props[key] !== variant.props[key] && props.ownerState?.[key] !== variant.props[key]) {\n continue variantLoop;\n }\n }\n }\n if (typeof variant.style === 'function') {\n mergedState ??= {\n ...props,\n ...props.ownerState,\n ownerState: props.ownerState\n };\n results.push(layerName ? shallowLayer(serializeStyles(variant.style(mergedState)), layerName) : variant.style(mergedState));\n } else {\n results.push(layerName ? shallowLayer(serializeStyles(variant.style), layerName) : variant.style);\n }\n }\n return results;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n function styleAttachTheme(props) {\n attachTheme(props, themeId, defaultTheme);\n }\n const styled = (tag, inputOptions = {}) => {\n // If `tag` is already a styled component, filter out the `sx` style function\n // to prevent unnecessary styles generated by the composite components.\n mutateStyles(tag, styles => styles.filter(style => style !== styleFunctionSx));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot)),\n ...options\n } = inputOptions;\n const layerName = componentName && componentName.startsWith('Mui') || !!componentSlot ? 'components' : 'custom';\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, {\n shouldForwardProp: shouldForwardPropOption,\n label: generateStyledLabel(componentName, componentSlot),\n ...options\n });\n const transformStyle = style => {\n // - On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n // - `style` could be a styled component from a babel plugin for component selectors, This condition\n // makes sure that we do not interpolate them.\n if (style.__emotion_real === style) {\n return style;\n }\n if (typeof style === 'function') {\n return function styleFunctionProcessor(props) {\n return processStyle(props, style, props.theme.modularCssLayers ? layerName : undefined);\n };\n }\n if (isPlainObject(style)) {\n const serialized = preprocessStyles(style);\n return function styleObjectProcessor(props) {\n if (!serialized.variants) {\n return props.theme.modularCssLayers ? shallowLayer(serialized.style, layerName) : serialized.style;\n }\n return processStyle(props, serialized, props.theme.modularCssLayers ? layerName : undefined);\n };\n }\n return style;\n };\n const muiStyledResolver = (...expressionsInput) => {\n const expressionsHead = [];\n const expressionsBody = expressionsInput.map(transformStyle);\n const expressionsTail = [];\n\n // Preprocess `props` to set the scoped theme value.\n // This must run before any other expression.\n expressionsHead.push(styleAttachTheme);\n if (componentName && overridesResolver) {\n expressionsTail.push(function styleThemeOverrides(props) {\n const theme = props.theme;\n const styleOverrides = theme.components?.[componentName]?.styleOverrides;\n if (!styleOverrides) {\n return null;\n }\n const resolvedStyleOverrides = {};\n\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n // eslint-disable-next-line guard-for-in\n for (const slotKey in styleOverrides) {\n resolvedStyleOverrides[slotKey] = processStyle(props, styleOverrides[slotKey], props.theme.modularCssLayers ? 'theme' : undefined);\n }\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsTail.push(function styleThemeVariants(props) {\n const theme = props.theme;\n const themeVariants = theme?.components?.[componentName]?.variants;\n if (!themeVariants) {\n return null;\n }\n return processStyleVariants(props, themeVariants, [], props.theme.modularCssLayers ? 'theme' : undefined);\n });\n }\n if (!skipSx) {\n expressionsTail.push(styleFunctionSx);\n }\n\n // This function can be called as a tagged template, so the first argument would contain\n // CSS `string[]` values.\n if (Array.isArray(expressionsBody[0])) {\n const inputStrings = expressionsBody.shift();\n\n // We need to add placeholders in the tagged template for the custom functions we have\n // possibly added (attachTheme, overrides, variants, and sx).\n const placeholdersHead = new Array(expressionsHead.length).fill('');\n const placeholdersTail = new Array(expressionsTail.length).fill('');\n let outputStrings;\n // prettier-ignore\n {\n outputStrings = [...placeholdersHead, ...inputStrings, ...placeholdersTail];\n outputStrings.raw = [...placeholdersHead, ...inputStrings.raw, ...placeholdersTail];\n }\n\n // The only case where we put something before `attachTheme`\n expressionsHead.unshift(outputStrings);\n }\n const expressions = [...expressionsHead, ...expressionsBody, ...expressionsTail];\n const Component = defaultStyledResolver(...expressions);\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = generateDisplayName(componentName, componentSlot, tag);\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n return styled;\n}\nfunction generateDisplayName(componentName, componentSlot, tag) {\n if (componentName) {\n return `${componentName}${capitalize(componentSlot || '')}`;\n }\n return `Styled(${getDisplayName(tag)})`;\n}\nfunction generateStyledLabel(componentName, componentSlot) {\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n return label;\n}\nfunction isObjectEmpty(object) {\n // eslint-disable-next-line\n for (const _ in object) {\n return false;\n }\n return true;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\nfunction lowercaseFirstLetter(string) {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n}","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","import slotShouldForwardProp from \"./slotShouldForwardProp.js\";\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nimport rootShouldForwardProp from \"./rootShouldForwardProp.js\";\nexport { default as slotShouldForwardProp } from \"./slotShouldForwardProp.js\";\nexport { default as rootShouldForwardProp } from \"./rootShouldForwardProp.js\";\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme[THEME_ID] || theme;\n}","import preprocessStyles from \"./preprocessStyles.js\";\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\n// We need to pass an argument as `{ theme }` for PigmentCSS, but we don't want to\n// allocate more objects.\nconst arg = {\n theme: undefined\n};\n\n/**\n * Memoize style function on theme.\n * Intended to be used in styled() calls that only need access to the theme.\n */\nexport default function unstable_memoTheme(styleFn) {\n let lastValue;\n let lastTheme;\n return function styleMemoized(props) {\n let value = lastValue;\n if (value === undefined || props.theme !== lastTheme) {\n arg.theme = props.theme;\n value = preprocessStyles(styleFn(arg));\n lastValue = value;\n lastTheme = props.theme;\n }\n return value;\n };\n}","import { unstable_memoTheme } from '@mui/system';\nconst memoTheme = unstable_memoTheme;\nexport default memoTheme;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n value,\n children\n}) {\n return /*#__PURE__*/_jsx(PropsContext.Provider, {\n value: value,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name]) {\n return props;\n }\n const config = theme.components[name];\n if (config.defaultProps) {\n // compatible with v5 signature\n return resolveProps(config.defaultProps, props);\n }\n if (!config.styleOverrides && !config.variants) {\n // v6 signature, no property 'defaultProps'\n return resolveProps(config, props);\n }\n return props;\n}\nexport function useDefaultProps({\n props,\n name\n}) {\n const ctx = React.useContext(PropsContext);\n return getThemeProps({\n props,\n name,\n theme: {\n components: ctx\n }\n });\n}\nexport default DefaultPropsProvider;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport SystemDefaultPropsProvider, { useDefaultProps as useSystemDefaultProps } from '@mui/system/DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction DefaultPropsProvider(props) {\n return /*#__PURE__*/_jsx(SystemDefaultPropsProvider, {\n ...props\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object.isRequired\n} : void 0;\nexport default DefaultPropsProvider;\nexport function useDefaultProps(params) {\n return useSystemDefaultProps(params);\n}","import capitalize from '@mui/utils/capitalize';\nexport default capitalize;","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"ReactDOM\"];","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: style.transitionDuration ?? (typeof timeout === 'number' ? timeout : timeout[options.mode] || 0),\n easing: style.transitionTimingFunction ?? (typeof easing === 'object' ? easing[options.mode] : easing),\n delay: style.transitionDelay\n };\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n *\n * ```tsx\n * const rootRef = React.useRef(null);\n * const refFork = useForkRef(rootRef, props.ref);\n *\n * return (\n * \n * );\n * ```\n *\n * @param {Array | undefined>} refs The ref array.\n * @returns {React.RefCallback | null} The new ref callback.\n */\nexport default function useForkRef(...refs) {\n const cleanupRef = React.useRef(undefined);\n const refEffect = React.useCallback(instance => {\n const cleanups = refs.map(ref => {\n if (ref == null) {\n return null;\n }\n if (typeof ref === 'function') {\n const refCallback = ref;\n const refCleanup = refCallback(instance);\n return typeof refCleanup === 'function' ? refCleanup : () => {\n refCallback(null);\n };\n }\n ref.current = instance;\n return () => {\n ref.current = null;\n };\n });\n return () => {\n cleanups.forEach(refCleanup => refCleanup?.());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = undefined;\n }\n if (value != null) {\n cleanupRef.current = refEffect(value);\n }\n };\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- intentionally ignoring that the dependency array must be an array literal\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nexport default useForkRef;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport { Transition } from 'react-transition-group';\nimport { useTheme } from \"../zero-styled/index.js\";\nimport { getTransitionProps, reflow } from \"../transitions/utils.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition,\n ...other\n } = props;\n const timer = useTimeout();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay: isWebKit154 ? delay : delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = 0;\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.start(autoTimeout.current || 0, next);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, {\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout,\n ...other,\n children: (state, {\n ownerState,\n ...restChildProps\n }) => {\n return /*#__PURE__*/React.cloneElement(children, {\n style: {\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined,\n ...styles[state],\n ...style,\n ...children.props.style\n },\n ref: handleRef,\n ...restChildProps\n });\n }\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nif (Grow) {\n Grow.muiSupportAuto = true;\n}\nexport default Grow;","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n 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));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n return typeof element === 'string';\n}\nexport default isHostComponent;","import isHostComponent from \"../isHostComponent/index.js\";\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nfunction appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return {\n ...otherProps,\n ownerState: {\n ...otherProps.ownerState,\n ...ownerState\n }\n };\n}\nexport default appendOwnerState;","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nfunction extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}\nexport default extractEventHandlers;","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nfunction omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}\nexport default omitEventHandlers;","import clsx from 'clsx';\nimport extractEventHandlers from \"../extractEventHandlers/index.js\";\nimport omitEventHandlers from \"../omitEventHandlers/index.js\";\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nfunction mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n const mergedStyle = {\n ...additionalProps?.style,\n ...externalForwardedProps?.style,\n ...externalSlotProps?.style\n };\n const props = {\n ...additionalProps,\n ...externalForwardedProps,\n ...externalSlotProps\n };\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers({\n ...externalForwardedProps,\n ...externalSlotProps\n });\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming Base UI) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n const mergedStyle = {\n ...internalSlotProps?.style,\n ...additionalProps?.style,\n ...externalForwardedProps?.style,\n ...externalSlotProps?.style\n };\n const props = {\n ...internalSlotProps,\n ...additionalProps,\n ...otherPropsWithoutEventHandlers,\n ...componentsPropsWithoutEventHandlers\n };\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}\nexport default mergeSlotProps;","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nfunction resolveComponentProps(componentProps, ownerState, slotState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState, slotState);\n }\n return componentProps;\n}\nexport default resolveComponentProps;","'use client';\n\nimport useForkRef from \"../useForkRef/index.js\";\nimport appendOwnerState from \"../appendOwnerState/index.js\";\nimport mergeSlotProps from \"../mergeSlotProps/index.js\";\nimport resolveComponentProps from \"../resolveComponentProps/index.js\";\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nfunction useSlotProps(parameters) {\n const {\n elementType,\n externalSlotProps,\n ownerState,\n skipResolvingSlotProps = false,\n ...other\n } = parameters;\n const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps({\n ...other,\n externalSlotProps: resolvedComponentsProps\n });\n const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.additionalProps?.ref);\n const props = appendOwnerState(elementType, {\n ...mergedProps,\n ref\n }, ownerState);\n return props;\n}\nexport default useSlotProps;","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef, unstable_getReactElementRef as getReactElementRef } from '@mui/utils';\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://v6.mui.com/material-ui/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://v6.mui.com/material-ui/api/portal/)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, forwardedRef) {\n const {\n children,\n container,\n disablePortal = false\n } = props;\n const [mountNode, setMountNode] = React.useState(null);\n const handleRef = useForkRef(/*#__PURE__*/React.isValidElement(children) ? getReactElementRef(children) : null, forwardedRef);\n useEnhancedEffect(() => {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(() => {\n if (mountNode && !disablePortal) {\n setRef(forwardedRef, mountNode);\n return () => {\n setRef(forwardedRef, null);\n };\n }\n return undefined;\n }, [forwardedRef, mountNode, disablePortal]);\n if (disablePortal) {\n if (/*#__PURE__*/React.isValidElement(children)) {\n const newProps = {\n ref: handleRef\n };\n return /*#__PURE__*/React.cloneElement(children, newProps);\n }\n return children;\n }\n return mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode;\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport default Portal;","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPopperUtilityClass(slot) {\n return generateUtilityClass('MuiPopper', slot);\n}\nconst popperClasses = generateUtilityClasses('MuiPopper', ['root']);\nexport default popperClasses;","'use client';\n\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport Portal from \"../Portal/index.js\";\nimport { getPopperUtilityClass } from \"./popperClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n if (direction === 'ltr') {\n return placement;\n }\n switch (placement) {\n case 'bottom-end':\n return 'bottom-start';\n case 'bottom-start':\n return 'bottom-end';\n case 'top-end':\n return 'top-start';\n case 'top-start':\n return 'top-end';\n default:\n return placement;\n }\n}\nfunction resolveAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n return !isHTMLElement(element);\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getPopperUtilityClass, classes);\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, forwardedRef) {\n const {\n anchorEl,\n children,\n direction,\n disablePortal,\n modifiers,\n open,\n placement: initialPlacement,\n popperOptions,\n popperRef: popperRefProp,\n slotProps = {},\n slots = {},\n TransitionProps,\n // @ts-ignore internal logic\n ownerState: ownerStateProp,\n // prevent from spreading to DOM, it can come from the parent component e.g. Select.\n ...other\n } = props;\n const tooltipRef = React.useRef(null);\n const ownRef = useForkRef(tooltipRef, forwardedRef);\n const popperRef = React.useRef(null);\n const handlePopperRef = useForkRef(popperRef, popperRefProp);\n const handlePopperRefRef = React.useRef(handlePopperRef);\n useEnhancedEffect(() => {\n handlePopperRefRef.current = handlePopperRef;\n }, [handlePopperRef]);\n React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n const rtlPlacement = flipPlacement(initialPlacement, direction);\n /**\n * placement initialized from prop but can change during lifetime if modifiers.flip.\n * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n */\n const [placement, setPlacement] = React.useState(rtlPlacement);\n const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n React.useEffect(() => {\n if (popperRef.current) {\n popperRef.current.forceUpdate();\n }\n });\n React.useEffect(() => {\n if (anchorEl) {\n setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n }\n }, [anchorEl]);\n useEnhancedEffect(() => {\n if (!resolvedAnchorElement || !open) {\n return undefined;\n }\n const handlePopperUpdate = data => {\n setPlacement(data.placement);\n };\n if (process.env.NODE_ENV !== 'production') {\n if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n const box = resolvedAnchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n }\n let popperModifiers = [{\n name: 'preventOverflow',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'flip',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'onUpdate',\n enabled: true,\n phase: 'afterWrite',\n fn: ({\n state\n }) => {\n handlePopperUpdate(state);\n }\n }];\n if (modifiers != null) {\n popperModifiers = popperModifiers.concat(modifiers);\n }\n if (popperOptions && popperOptions.modifiers != null) {\n popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n }\n const popper = createPopper(resolvedAnchorElement, tooltipRef.current, {\n placement: rtlPlacement,\n ...popperOptions,\n modifiers: popperModifiers\n });\n handlePopperRefRef.current(popper);\n return () => {\n popper.destroy();\n handlePopperRefRef.current(null);\n };\n }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n const childProps = {\n placement: placement\n };\n if (TransitionProps !== null) {\n childProps.TransitionProps = TransitionProps;\n }\n const classes = useUtilityClasses(props);\n const Root = slots.root ?? 'div';\n const rootProps = useSlotProps({\n elementType: Root,\n externalSlotProps: slotProps.root,\n externalForwardedProps: other,\n additionalProps: {\n role: 'tooltip',\n ref: ownRef\n },\n ownerState: props,\n className: classes.root\n });\n return /*#__PURE__*/_jsx(Root, {\n ...rootProps,\n children: typeof children === 'function' ? children(childProps) : children\n });\n});\n\n/**\n * @ignore - internal component.\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(props, forwardedRef) {\n const {\n anchorEl,\n children,\n container: containerProp,\n direction = 'ltr',\n disablePortal = false,\n keepMounted = false,\n modifiers,\n open,\n placement = 'bottom',\n popperOptions = defaultPopperOptions,\n popperRef,\n style,\n transition = false,\n slotProps = {},\n slots = {},\n ...other\n } = props;\n const [exited, setExited] = React.useState(true);\n const handleEnter = () => {\n setExited(false);\n };\n const handleExited = () => {\n setExited(true);\n };\n if (!keepMounted && !open && (!transition || exited)) {\n return null;\n }\n\n // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n let container;\n if (containerProp) {\n container = containerProp;\n } else if (anchorEl) {\n const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n }\n const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n const transitionProps = transition ? {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited\n } : undefined;\n return /*#__PURE__*/_jsx(Portal, {\n disablePortal: disablePortal,\n container: container,\n children: /*#__PURE__*/_jsx(PopperTooltip, {\n anchorEl: anchorEl,\n direction: direction,\n disablePortal: disablePortal,\n modifiers: modifiers,\n ref: forwardedRef,\n open: transition ? !exited : open,\n placement: placement,\n popperOptions: popperOptions,\n popperRef: popperRef,\n slotProps: slotProps,\n slots: slots,\n ...other,\n style: {\n // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n position: 'fixed',\n // Fix Popper.js display issue\n top: 0,\n left: 0,\n display,\n ...style\n },\n TransitionProps: transitionProps,\n children: children\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n if (props.open) {\n const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * Direction of the text.\n * @default 'ltr'\n */\n direction: PropTypes.oneOf(['ltr', 'rtl']),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","'use client';\n\nimport { useRtl } from '@mui/system/RtlProvider';\nimport refType from '@mui/utils/refType';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport BasePopper from \"./BasePopper.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(BasePopper, {\n name: 'MuiPopper',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://v6.mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://v6.mui.com/material-ui/react-menu/)\n * - [Popper](https://v6.mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://v6.mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n const isRtl = useRtl();\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiPopper'\n });\n const {\n anchorEl,\n component,\n components,\n componentsProps,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition,\n slots,\n slotProps,\n ...other\n } = props;\n const RootComponent = slots?.root ?? components?.Root;\n const otherProps = {\n anchorEl,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition,\n ...other\n };\n return /*#__PURE__*/_jsx(PopperRoot, {\n as: component,\n direction: isRtl ? 'rtl' : 'ltr',\n slots: {\n root: RootComponent\n },\n slotProps: slotProps ?? componentsProps,\n ...otherProps,\n ref: ref\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n *\n * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The props used for each slot inside the Popper.\n *\n * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from \"../useEnhancedEffect/index.js\";\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// See https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379 for why\nconst safeReact = {\n ...React\n};\nconst maybeReactUseId = safeReact.useId;\n\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n // React.useId() is only available from React 17.0.0.\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride ?? reactId;\n }\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","'use client';\n\nimport useId from '@mui/utils/useId';\nexport default useId;","'use client';\n\n// TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- process.env never changes, dependency arrays are intentionally ignored\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n // Object.is() is not equivalent to the === operator.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is for more details.\n if (!isControlled && !Object.is(defaultValue, defaultProp)) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport useControlled from '@mui/utils/useControlled';\nexport default useControlled;","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nimport appendOwnerState from '@mui/utils/appendOwnerState';\nimport resolveComponentProps from '@mui/utils/resolveComponentProps';\nimport mergeSlotProps from '@mui/utils/mergeSlotProps';\n/**\n * An internal function to create a Material UI slot.\n *\n * This is an advanced version of Base UI `useSlotProps` because Material UI allows leaf component to be customized via `component` prop\n * while Base UI does not need to support leaf component customization.\n *\n * @param {string} name: name of the slot\n * @param {object} parameters\n * @returns {[Slot, slotProps]} The slot's React component and the slot's props\n *\n * Note: the returned slot's props\n * - will never contain `component` prop.\n * - might contain `as` prop.\n */\nexport default function useSlot(\n/**\n * The slot's name. All Material UI components should have `root` slot.\n *\n * If the name is `root`, the logic behaves differently from other slots,\n * e.g. the `externalForwardedProps` are spread to `root` slot but not other slots.\n */\nname, parameters) {\n const {\n className,\n elementType: initialElementType,\n ownerState,\n externalForwardedProps,\n internalForwardedProps,\n shouldForwardComponentProp = false,\n ...useSlotPropsParams\n } = parameters;\n const {\n component: rootComponent,\n slots = {\n [name]: undefined\n },\n slotProps = {\n [name]: undefined\n },\n ...other\n } = externalForwardedProps;\n const elementType = slots[name] || initialElementType;\n\n // `slotProps[name]` can be a callback that receives the component's ownerState.\n // `resolvedComponentsProps` is always a plain object.\n const resolvedComponentsProps = resolveComponentProps(slotProps[name], ownerState);\n const {\n props: {\n component: slotComponent,\n ...mergedProps\n },\n internalRef\n } = mergeSlotProps({\n className,\n ...useSlotPropsParams,\n externalForwardedProps: name === 'root' ? other : undefined,\n externalSlotProps: resolvedComponentsProps\n });\n const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.ref);\n const LeafComponent = name === 'root' ? slotComponent || rootComponent : slotComponent;\n const props = appendOwnerState(elementType, {\n ...(name === 'root' && !rootComponent && !slots[name] && internalForwardedProps),\n ...(name !== 'root' && !slots[name] && internalForwardedProps),\n ...mergedProps,\n ...(LeafComponent && !shouldForwardComponentProp && {\n as: LeafComponent\n }),\n ...(LeafComponent && shouldForwardComponentProp && {\n component: LeafComponent\n }),\n ref\n }, ownerState);\n return [elementType, props];\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTooltipUtilityClass(slot) {\n return generateUtilityClass('MuiTooltip', slot);\n}\nconst tooltipClasses = generateUtilityClasses('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\nexport default tooltipClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useTimeout, { Timeout } from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport Grow from \"../Grow/index.js\";\nimport Popper from \"../Popper/index.js\";\nimport useEventCallback from \"../utils/useEventCallback.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useId from \"../utils/useId.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport tooltipClasses, { getTooltipUtilityClass } from \"./tooltipClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableInteractive,\n arrow,\n touch,\n placement\n } = ownerState;\n const slots = {\n popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${capitalize(placement.split('-')[0])}`],\n arrow: ['arrow']\n };\n return composeClasses(slots, getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = styled(Popper, {\n name: 'MuiTooltip',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n }\n})(memoTheme(({\n theme\n}) => ({\n zIndex: (theme.vars || theme).zIndex.tooltip,\n pointerEvents: 'none',\n variants: [{\n props: ({\n ownerState\n }) => !ownerState.disableInteractive,\n style: {\n pointerEvents: 'auto'\n }\n }, {\n props: ({\n open\n }) => !open,\n style: {\n pointerEvents: 'none'\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.arrow,\n style: {\n [`&[data-popper-placement*=\"bottom\"] .${tooltipClasses.arrow}`]: {\n top: 0,\n marginTop: '-0.71em',\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n [`&[data-popper-placement*=\"top\"] .${tooltipClasses.arrow}`]: {\n bottom: 0,\n marginBottom: '-0.71em',\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '100% 100%'\n }\n },\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '0 0'\n }\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.arrow && !ownerState.isRtl,\n style: {\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: {\n left: 0,\n marginLeft: '-0.71em'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.arrow && !!ownerState.isRtl,\n style: {\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: {\n right: 0,\n marginRight: '-0.71em'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.arrow && !ownerState.isRtl,\n style: {\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: {\n right: 0,\n marginRight: '-0.71em'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.arrow && !!ownerState.isRtl,\n style: {\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: {\n left: 0,\n marginLeft: '-0.71em'\n }\n }\n }]\n})));\nconst TooltipTooltip = styled('div', {\n name: 'MuiTooltip',\n slot: 'Tooltip',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${capitalize(ownerState.placement.split('-')[0])}`]];\n }\n})(memoTheme(({\n theme\n}) => ({\n backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),\n borderRadius: (theme.vars || theme).shape.borderRadius,\n color: (theme.vars || theme).palette.common.white,\n fontFamily: theme.typography.fontFamily,\n padding: '4px 8px',\n fontSize: theme.typography.pxToRem(11),\n maxWidth: 300,\n margin: 2,\n wordWrap: 'break-word',\n fontWeight: theme.typography.fontWeightMedium,\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n transformOrigin: 'right center'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n transformOrigin: 'left center'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: {\n transformOrigin: 'center bottom',\n marginBottom: '14px'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: {\n transformOrigin: 'center top',\n marginTop: '14px'\n },\n variants: [{\n props: ({\n ownerState\n }) => ownerState.arrow,\n style: {\n position: 'relative',\n margin: 0\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.touch,\n style: {\n padding: '8px 16px',\n fontSize: theme.typography.pxToRem(14),\n lineHeight: `${round(16 / 14)}em`,\n fontWeight: theme.typography.fontWeightRegular\n }\n }, {\n props: ({\n ownerState\n }) => !ownerState.isRtl,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n marginRight: '14px'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n marginLeft: '14px'\n }\n }\n }, {\n props: ({\n ownerState\n }) => !ownerState.isRtl && ownerState.touch,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n marginRight: '24px'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n marginLeft: '24px'\n }\n }\n }, {\n props: ({\n ownerState\n }) => !!ownerState.isRtl,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n marginLeft: '14px'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n marginRight: '14px'\n }\n }\n }, {\n props: ({\n ownerState\n }) => !!ownerState.isRtl && ownerState.touch,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: {\n marginLeft: '24px'\n },\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: {\n marginRight: '24px'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.touch,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: {\n marginBottom: '24px'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.touch,\n style: {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: {\n marginTop: '24px'\n }\n }\n }]\n})));\nconst TooltipArrow = styled('span', {\n name: 'MuiTooltip',\n slot: 'Arrow',\n overridesResolver: (props, styles) => styles.arrow\n})(memoTheme(({\n theme\n}) => ({\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n})));\nlet hystersisOpen = false;\nconst hystersisTimer = new Timeout();\nlet cursorPosition = {\n x: 0,\n y: 0\n};\nexport function testReset() {\n hystersisOpen = false;\n hystersisTimer.clear();\n}\nfunction composeEventHandler(handler, eventHandler) {\n return (event, ...params) => {\n if (eventHandler) {\n eventHandler(event, ...params);\n }\n handler(event, ...params);\n };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiTooltip'\n });\n const {\n arrow = false,\n children: childrenProp,\n classes: classesProp,\n components = {},\n componentsProps = {},\n describeChild = false,\n disableFocusListener = false,\n disableHoverListener = false,\n disableInteractive: disableInteractiveProp = false,\n disableTouchListener = false,\n enterDelay = 100,\n enterNextDelay = 0,\n enterTouchDelay = 700,\n followCursor = false,\n id: idProp,\n leaveDelay = 0,\n leaveTouchDelay = 1500,\n onClose,\n onOpen,\n open: openProp,\n placement = 'bottom',\n PopperComponent: PopperComponentProp,\n PopperProps = {},\n slotProps = {},\n slots = {},\n title,\n TransitionComponent: TransitionComponentProp,\n TransitionProps,\n ...other\n } = props;\n\n // to prevent runtime errors, developers will need to provide a child as a React element anyway.\n const children = /*#__PURE__*/React.isValidElement(childrenProp) ? childrenProp : /*#__PURE__*/_jsx(\"span\", {\n children: childrenProp\n });\n const theme = useTheme();\n const isRtl = useRtl();\n const [childNode, setChildNode] = React.useState();\n const [arrowRef, setArrowRef] = React.useState(null);\n const ignoreNonTouchEvents = React.useRef(false);\n const disableInteractive = disableInteractiveProp || followCursor;\n const closeTimer = useTimeout();\n const enterTimer = useTimeout();\n const leaveTimer = useTimeout();\n const touchTimer = useTimeout();\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: 'Tooltip',\n state: 'open'\n });\n let open = openState;\n if (process.env.NODE_ENV !== 'production') {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- process.env never changes\n const {\n current: isControlled\n } = React.useRef(openProp !== undefined);\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- process.env never changes\n React.useEffect(() => {\n if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n console.warn(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n }\n }, [title, childNode, isControlled]);\n }\n const id = useId(idProp);\n const prevUserSelect = React.useRef();\n const stopTouchInteraction = useEventCallback(() => {\n if (prevUserSelect.current !== undefined) {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n prevUserSelect.current = undefined;\n }\n touchTimer.clear();\n });\n React.useEffect(() => stopTouchInteraction, [stopTouchInteraction]);\n const handleOpen = event => {\n hystersisTimer.clear();\n hystersisOpen = true;\n\n // The mouseover event will trigger for every nested element in the tooltip.\n // We can skip rerendering when the tooltip is already open.\n // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n setOpenState(true);\n if (onOpen && !open) {\n onOpen(event);\n }\n };\n const handleClose = useEventCallback(\n /**\n * @param {React.SyntheticEvent | Event} event\n */\n event => {\n hystersisTimer.start(800 + leaveDelay, () => {\n hystersisOpen = false;\n });\n setOpenState(false);\n if (onClose && open) {\n onClose(event);\n }\n closeTimer.start(theme.transitions.duration.shortest, () => {\n ignoreNonTouchEvents.current = false;\n });\n });\n const handleMouseOver = event => {\n if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n return;\n }\n\n // Remove the title ahead of time.\n // We don't want to wait for the next render commit.\n // We would risk displaying two tooltips at the same time (native + this one).\n if (childNode) {\n childNode.removeAttribute('title');\n }\n enterTimer.clear();\n leaveTimer.clear();\n if (enterDelay || hystersisOpen && enterNextDelay) {\n enterTimer.start(hystersisOpen ? enterNextDelay : enterDelay, () => {\n handleOpen(event);\n });\n } else {\n handleOpen(event);\n }\n };\n const handleMouseLeave = event => {\n enterTimer.clear();\n leaveTimer.start(leaveDelay, () => {\n handleClose(event);\n });\n };\n const [, setChildIsFocusVisible] = React.useState(false);\n const handleBlur = event => {\n if (!isFocusVisible(event.target)) {\n setChildIsFocusVisible(false);\n handleMouseLeave(event);\n }\n };\n const handleFocus = event => {\n // Workaround for https://github.com/facebook/react/issues/7769\n // The autoFocus of React might trigger the event before the componentDidMount.\n // We need to account for this eventuality.\n if (!childNode) {\n setChildNode(event.currentTarget);\n }\n if (isFocusVisible(event.target)) {\n setChildIsFocusVisible(true);\n handleMouseOver(event);\n }\n };\n const detectTouchStart = event => {\n ignoreNonTouchEvents.current = true;\n const childrenProps = children.props;\n if (childrenProps.onTouchStart) {\n childrenProps.onTouchStart(event);\n }\n };\n const handleTouchStart = event => {\n detectTouchStart(event);\n leaveTimer.clear();\n closeTimer.clear();\n stopTouchInteraction();\n prevUserSelect.current = document.body.style.WebkitUserSelect;\n // Prevent iOS text selection on long-tap.\n document.body.style.WebkitUserSelect = 'none';\n touchTimer.start(enterTouchDelay, () => {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n handleMouseOver(event);\n });\n };\n const handleTouchEnd = event => {\n if (children.props.onTouchEnd) {\n children.props.onTouchEnd(event);\n }\n stopTouchInteraction();\n leaveTimer.start(leaveTouchDelay, () => {\n handleClose(event);\n });\n };\n React.useEffect(() => {\n if (!open) {\n return undefined;\n }\n\n /**\n * @param {KeyboardEvent} nativeEvent\n */\n function handleKeyDown(nativeEvent) {\n if (nativeEvent.key === 'Escape') {\n handleClose(nativeEvent);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleClose, open]);\n const handleRef = useForkRef(getReactElementRef(children), setChildNode, ref);\n\n // There is no point in displaying an empty tooltip.\n // So we exclude all falsy values, except 0, which is valid.\n if (!title && title !== 0) {\n open = false;\n }\n const popperRef = React.useRef();\n const handleMouseMove = event => {\n const childrenProps = children.props;\n if (childrenProps.onMouseMove) {\n childrenProps.onMouseMove(event);\n }\n cursorPosition = {\n x: event.clientX,\n y: event.clientY\n };\n if (popperRef.current) {\n popperRef.current.update();\n }\n };\n const nameOrDescProps = {};\n const titleIsString = typeof title === 'string';\n if (describeChild) {\n nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n nameOrDescProps['aria-describedby'] = open ? id : null;\n } else {\n nameOrDescProps['aria-label'] = titleIsString ? title : null;\n nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n }\n const childrenProps = {\n ...nameOrDescProps,\n ...other,\n ...children.props,\n className: clsx(other.className, children.props.className),\n onTouchStart: detectTouchStart,\n ref: handleRef,\n ...(followCursor ? {\n onMouseMove: handleMouseMove\n } : {})\n };\n if (process.env.NODE_ENV !== 'production') {\n childrenProps['data-mui-internal-clone-element'] = true;\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- process.env never changes\n React.useEffect(() => {\n if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n }\n }, [childNode]);\n }\n const interactiveWrapperListeners = {};\n if (!disableTouchListener) {\n childrenProps.onTouchStart = handleTouchStart;\n childrenProps.onTouchEnd = handleTouchEnd;\n }\n if (!disableHoverListener) {\n childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n if (!disableInteractive) {\n interactiveWrapperListeners.onMouseOver = handleMouseOver;\n interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n }\n }\n if (!disableFocusListener) {\n childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n if (!disableInteractive) {\n interactiveWrapperListeners.onFocus = handleFocus;\n interactiveWrapperListeners.onBlur = handleBlur;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (children.props.title) {\n console.error(['MUI: You have provided a `title` prop to the child of .', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n }\n }\n const ownerState = {\n ...props,\n isRtl,\n arrow,\n disableInteractive,\n placement,\n PopperComponentProp,\n touch: ignoreNonTouchEvents.current\n };\n const resolvedPopperProps = typeof slotProps.popper === 'function' ? slotProps.popper(ownerState) : slotProps.popper;\n const popperOptions = React.useMemo(() => {\n let tooltipModifiers = [{\n name: 'arrow',\n enabled: Boolean(arrowRef),\n options: {\n element: arrowRef,\n padding: 4\n }\n }];\n if (PopperProps.popperOptions?.modifiers) {\n tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n }\n if (resolvedPopperProps?.popperOptions?.modifiers) {\n tooltipModifiers = tooltipModifiers.concat(resolvedPopperProps.popperOptions.modifiers);\n }\n return {\n ...PopperProps.popperOptions,\n ...resolvedPopperProps?.popperOptions,\n modifiers: tooltipModifiers\n };\n }, [arrowRef, PopperProps.popperOptions, resolvedPopperProps?.popperOptions]);\n const classes = useUtilityClasses(ownerState);\n const resolvedTransitionProps = typeof slotProps.transition === 'function' ? slotProps.transition(ownerState) : slotProps.transition;\n const externalForwardedProps = {\n slots: {\n popper: components.Popper,\n transition: components.Transition ?? TransitionComponentProp,\n tooltip: components.Tooltip,\n arrow: components.Arrow,\n ...slots\n },\n slotProps: {\n arrow: slotProps.arrow ?? componentsProps.arrow,\n popper: {\n ...PopperProps,\n ...(resolvedPopperProps ?? componentsProps.popper)\n },\n // resolvedPopperProps can be spread because it's already an object\n tooltip: slotProps.tooltip ?? componentsProps.tooltip,\n transition: {\n ...TransitionProps,\n ...(resolvedTransitionProps ?? componentsProps.transition)\n }\n }\n };\n const [PopperSlot, popperSlotProps] = useSlot('popper', {\n elementType: TooltipPopper,\n externalForwardedProps,\n ownerState,\n className: clsx(classes.popper, PopperProps?.className)\n });\n const [TransitionSlot, transitionSlotProps] = useSlot('transition', {\n elementType: Grow,\n externalForwardedProps,\n ownerState\n });\n const [TooltipSlot, tooltipSlotProps] = useSlot('tooltip', {\n elementType: TooltipTooltip,\n className: classes.tooltip,\n externalForwardedProps,\n ownerState\n });\n const [ArrowSlot, arrowSlotProps] = useSlot('arrow', {\n elementType: TooltipArrow,\n className: classes.arrow,\n externalForwardedProps,\n ownerState,\n ref: setArrowRef\n });\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/React.cloneElement(children, childrenProps), /*#__PURE__*/_jsx(PopperSlot, {\n as: PopperComponentProp ?? Popper,\n placement: placement,\n anchorEl: followCursor ? {\n getBoundingClientRect: () => ({\n top: cursorPosition.y,\n left: cursorPosition.x,\n right: cursorPosition.x,\n bottom: cursorPosition.y,\n width: 0,\n height: 0\n })\n } : childNode,\n popperRef: popperRef,\n open: childNode ? open : false,\n id: id,\n transition: true,\n ...interactiveWrapperListeners,\n ...popperSlotProps,\n popperOptions: popperOptions,\n children: ({\n TransitionProps: TransitionPropsInner\n }) => /*#__PURE__*/_jsx(TransitionSlot, {\n timeout: theme.transitions.duration.shorter,\n ...TransitionPropsInner,\n ...transitionSlotProps,\n children: /*#__PURE__*/_jsxs(TooltipSlot, {\n ...tooltipSlotProps,\n children: [title, arrow ? /*#__PURE__*/_jsx(ArrowSlot, {\n ...arrowSlotProps\n }) : null]\n })\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, adds an arrow to the tooltip.\n * @default false\n */\n arrow: PropTypes.bool,\n /**\n * Tooltip reference element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The components used for each slot inside.\n *\n * @deprecated use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Arrow: PropTypes.elementType,\n Popper: PropTypes.elementType,\n Tooltip: PropTypes.elementType,\n Transition: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * Set to `true` if the `title` acts as an accessible description.\n * By default the `title` acts as an accessible label for the child.\n * @default false\n */\n describeChild: PropTypes.bool,\n /**\n * Do not respond to focus-visible events.\n * @default false\n */\n disableFocusListener: PropTypes.bool,\n /**\n * Do not respond to hover events.\n * @default false\n */\n disableHoverListener: PropTypes.bool,\n /**\n * Makes a tooltip not interactive, i.e. it will close when the user\n * hovers over the tooltip before the `leaveDelay` is expired.\n * @default false\n */\n disableInteractive: PropTypes.bool,\n /**\n * Do not respond to long press touch events.\n * @default false\n */\n disableTouchListener: PropTypes.bool,\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n * @default 100\n */\n enterDelay: PropTypes.number,\n /**\n * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n * @default 0\n */\n enterNextDelay: PropTypes.number,\n /**\n * The number of milliseconds a user must touch the element before showing the tooltip.\n * @default 700\n */\n enterTouchDelay: PropTypes.number,\n /**\n * If `true`, the tooltip follow the cursor over the wrapped element.\n * @default false\n */\n followCursor: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id: PropTypes.string,\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n * @default 0\n */\n leaveDelay: PropTypes.number,\n /**\n * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n * @default 1500\n */\n leaveTouchDelay: PropTypes.number,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the component requests to be open.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * Tooltip placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * The component used for the popper.\n * @deprecated use the `slots.popper` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n PopperComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Popper`](https://mui.com/material-ui/api/popper/) element.\n * @deprecated use the `slotProps.popper` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n * @default {}\n */\n PopperProps: PropTypes.object,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n arrow: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n popper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n tooltip: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n transition: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n arrow: PropTypes.elementType,\n popper: PropTypes.elementType,\n tooltip: PropTypes.elementType,\n transition: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n */\n title: PropTypes.node,\n /**\n * The component used for the transition.\n * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @deprecated use the `slots.transition` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n * @deprecated use the `slotProps.transition` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n * @default {}\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Tooltip;","import ownerDocument from '@mui/utils/ownerDocument';\nexport default ownerDocument;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ListContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\nexport default ListContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListUtilityClass(slot) {\n return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport ListContext from \"./ListContext.js\";\nimport { getListUtilityClass } from \"./listClasses.js\";\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePadding,\n dense,\n subheader\n } = ownerState;\n const slots = {\n root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n };\n return composeClasses(slots, getListUtilityClass, classes);\n};\nconst ListRoot = styled('ul', {\n name: 'MuiList',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n }\n})({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative',\n variants: [{\n props: ({\n ownerState\n }) => !ownerState.disablePadding,\n style: {\n paddingTop: 8,\n paddingBottom: 8\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.subheader,\n style: {\n paddingTop: 0\n }\n }]\n});\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiList'\n });\n const {\n children,\n className,\n component = 'ul',\n dense = false,\n disablePadding = false,\n subheader,\n ...other\n } = props;\n const context = React.useMemo(() => ({\n dense\n }), [dense]);\n const ownerState = {\n ...props,\n component,\n dense,\n disablePadding\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsxs(ListRoot, {\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState,\n ...other,\n children: [subheader, children]\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * If `true`, vertical padding is removed from the list.\n * @default false\n */\n disablePadding: PropTypes.bool,\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/488fd8afc535ca3a6ad4dc581f5e89217b6a36ac/js/src/util/scrollbar.js#L14-L18\nexport default function getScrollbarSize(win = window) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = win.document.documentElement.clientWidth;\n return win.innerWidth - documentWidth;\n}","import getScrollbarSize from '@mui/utils/getScrollbarSize';\nexport default getScrollbarSize;","'use client';\n\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport default useEnhancedEffect;","import ownerDocument from \"../ownerDocument/index.js\";\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import ownerWindow from '@mui/utils/ownerWindow';\nexport default ownerWindow;","'use client';\n\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from \"../utils/ownerDocument.js\";\nimport List from \"../List/index.js\";\nimport getScrollbarSize from \"../utils/getScrollbarSize.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useEnhancedEffect from \"../utils/useEnhancedEffect.js\";\nimport { ownerWindow } from \"../utils/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n let text = nextFocus.innerText;\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n text = text.trim().toLowerCase();\n if (text.length === 0) {\n return false;\n }\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n return text.startsWith(textCriteria.keys.join(''));\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n let wrappedOnce = false;\n let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return false;\n }\n wrappedOnce = true;\n }\n\n // Same logic as useAutocomplete.js\n const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return true;\n }\n }\n return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n autoFocus = false,\n autoFocusItem = false,\n children,\n className,\n disabledItemsFocusable = false,\n disableListWrap = false,\n onKeyDown,\n variant = 'selectedMenu',\n ...other\n } = props;\n const listRef = React.useRef(null);\n const textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(() => {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, () => ({\n adjustStyleForScrollbar: (containerElement, {\n direction\n }) => {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n const noExplicitWidth = !listRef.current.style.width;\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n const scrollbarSize = `${getScrollbarSize(ownerWindow(containerElement))}px`;\n listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n }\n return listRef.current;\n }\n }), []);\n const handleKeyDown = event => {\n const list = listRef.current;\n const key = event.key;\n const isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;\n if (isModifierKeyPressed) {\n if (onKeyDown) {\n onKeyDown(event);\n }\n return;\n }\n\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n const currentFocus = ownerDocument(list).activeElement;\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key.length === 1) {\n const criteria = textCriteriaRef.current;\n const lowerKey = key.toLowerCase();\n const currTime = performance.now();\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n const handleRef = useForkRef(listRef, ref);\n\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n let activeItemIndex = -1;\n // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n React.Children.forEach(children, (child, index) => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n if (activeItemIndex === index) {\n activeItemIndex += 1;\n if (activeItemIndex >= children.length) {\n // there are no focusable items within the list.\n activeItemIndex = -1;\n }\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {\n activeItemIndex += 1;\n if (activeItemIndex >= children.length) {\n // there are no focusable items within the list.\n activeItemIndex = -1;\n }\n }\n });\n const items = React.Children.map(children, (child, index) => {\n if (index === activeItemIndex) {\n const newChildProps = {};\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n return /*#__PURE__*/React.cloneElement(child, newChildProps);\n }\n return child;\n });\n return /*#__PURE__*/_jsx(List, {\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1,\n ...other,\n children: items\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n * @default false\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n * if `variant=\"selectedMenu\"`.\n * @default false\n */\n autoFocusItem: PropTypes.bool,\n /**\n * MenuList contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the menu items will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n * @default 'selectedMenu'\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDividerUtilityClass(slot) {\n return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getDividerUtilityClass } from \"./dividerClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n absolute,\n children,\n classes,\n flexItem,\n light,\n orientation,\n textAlign,\n variant\n } = ownerState;\n const slots = {\n root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n };\n return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n name: 'MuiDivider',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n }\n})(memoTheme(({\n theme\n}) => ({\n margin: 0,\n // Reset browser default style.\n flexShrink: 0,\n borderWidth: 0,\n borderStyle: 'solid',\n borderColor: (theme.vars || theme).palette.divider,\n borderBottomWidth: 'thin',\n variants: [{\n props: {\n absolute: true\n },\n style: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%'\n }\n }, {\n props: {\n light: true\n },\n style: {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n }\n }, {\n props: {\n variant: 'inset'\n },\n style: {\n marginLeft: 72\n }\n }, {\n props: {\n variant: 'middle',\n orientation: 'horizontal'\n },\n style: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n }\n }, {\n props: {\n variant: 'middle',\n orientation: 'vertical'\n },\n style: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n }\n }, {\n props: {\n orientation: 'vertical'\n },\n style: {\n height: '100%',\n borderBottomWidth: 0,\n borderRightWidth: 'thin'\n }\n }, {\n props: {\n flexItem: true\n },\n style: {\n alignSelf: 'stretch',\n height: 'auto'\n }\n }, {\n props: ({\n ownerState\n }) => !!ownerState.children,\n style: {\n display: 'flex',\n textAlign: 'center',\n border: 0,\n borderTopStyle: 'solid',\n borderLeftStyle: 'solid',\n '&::before, &::after': {\n content: '\"\"',\n alignSelf: 'center'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.children && ownerState.orientation !== 'vertical',\n style: {\n '&::before, &::after': {\n width: '100%',\n borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,\n borderTopStyle: 'inherit'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.orientation === 'vertical' && ownerState.children,\n style: {\n flexDirection: 'column',\n '&::before, &::after': {\n height: '100%',\n borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,\n borderLeftStyle: 'inherit'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical',\n style: {\n '&::before': {\n width: '90%'\n },\n '&::after': {\n width: '10%'\n }\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical',\n style: {\n '&::before': {\n width: '10%'\n },\n '&::after': {\n width: '90%'\n }\n }\n }]\n})));\nconst DividerWrapper = styled('span', {\n name: 'MuiDivider',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n }\n})(memoTheme(({\n theme\n}) => ({\n display: 'inline-block',\n paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n paddingRight: `calc(${theme.spacing(1)} * 1.2)`,\n whiteSpace: 'nowrap',\n variants: [{\n props: {\n orientation: 'vertical'\n },\n style: {\n paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n }\n }]\n})));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiDivider'\n });\n const {\n absolute = false,\n children,\n className,\n orientation = 'horizontal',\n component = children || orientation === 'vertical' ? 'div' : 'hr',\n flexItem = false,\n light = false,\n role = component !== 'hr' ? 'separator' : undefined,\n textAlign = 'center',\n variant = 'fullWidth',\n ...other\n } = props;\n const ownerState = {\n ...props,\n absolute,\n component,\n flexItem,\n light,\n orientation,\n role,\n textAlign,\n variant\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DividerRoot, {\n as: component,\n className: clsx(classes.root, className),\n role: role,\n ref: ref,\n ownerState: ownerState,\n \"aria-orientation\": role === 'separator' && (component !== 'hr' || orientation === 'vertical') ? orientation : undefined,\n ...other,\n children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n className: classes.wrapper,\n ownerState: ownerState,\n children: children\n }) : null\n });\n});\n\n/**\n * The following flag is used to ensure that this component isn't tabbable i.e.\n * does not get highlight/focus inside of MUI List.\n */\nif (Divider) {\n Divider.muiSkipListHighlight = true;\n}\nprocess.env.NODE_ENV !== \"production\" ? Divider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Absolutely position the element.\n * @default false\n */\n absolute: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, a vertical divider will have the correct height when used in flex container.\n * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n * @default false\n */\n flexItem: PropTypes.bool,\n /**\n * If `true`, the divider will have a lighter color.\n * @default false\n * @deprecated Use (or any opacity or color) instead. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n light: PropTypes.bool,\n /**\n * The component orientation.\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The text alignment.\n * @default 'center'\n */\n textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n /**\n * The variant to use.\n * @default 'fullWidth'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;","/**\n * Type guard to check if the object has a \"main\" property of type string.\n *\n * @param obj - the object to check\n * @returns boolean\n */\nfunction hasCorrectMainProperty(obj) {\n return typeof obj.main === 'string';\n}\n/**\n * Checks if the object conforms to the SimplePaletteColorOptions type.\n * The minimum requirement is that the object has a \"main\" property of type string, this is always checked.\n * Optionally, you can pass additional properties to check.\n *\n * @param obj - The object to check\n * @param additionalPropertiesToCheck - Array containing \"light\", \"dark\", and/or \"contrastText\"\n * @returns boolean\n */\nfunction checkSimplePaletteColorValues(obj, additionalPropertiesToCheck = []) {\n if (!hasCorrectMainProperty(obj)) {\n return false;\n }\n for (const value of additionalPropertiesToCheck) {\n if (!obj.hasOwnProperty(value) || typeof obj[value] !== 'string') {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Creates a filter function used to filter simple palette color options.\n * The minimum requirement is that the object has a \"main\" property of type string, this is always checked.\n * Optionally, you can pass additional properties to check.\n *\n * @param additionalPropertiesToCheck - Array containing \"light\", \"dark\", and/or \"contrastText\"\n * @returns ([, value]: [any, PaletteColorOptions]) => boolean\n */\nexport default function createSimplePaletteValueFilter(additionalPropertiesToCheck = []) {\n return ([, value]) => value && checkSimplePaletteColorValues(value, additionalPropertiesToCheck);\n}","'use client';\n\nimport * as React from 'react';\nimport useLazyRef from '@mui/utils/useLazyRef';\n/**\n * Lazy initialization container for the Ripple instance. This improves\n * performance by delaying mounting the ripple until it's needed.\n */\nexport class LazyRipple {\n /** React ref to the ripple instance */\n\n /** If the ripple component should be mounted */\n\n /** Promise that resolves when the ripple component is mounted */\n\n /** If the ripple component has been mounted */\n\n /** React state hook setter */\n\n static create() {\n return new LazyRipple();\n }\n static use() {\n /* eslint-disable */\n const ripple = useLazyRef(LazyRipple.create).current;\n const [shouldMount, setShouldMount] = React.useState(false);\n ripple.shouldMount = shouldMount;\n ripple.setShouldMount = setShouldMount;\n React.useEffect(ripple.mountEffect, [shouldMount]);\n /* eslint-enable */\n\n return ripple;\n }\n constructor() {\n this.ref = {\n current: null\n };\n this.mounted = null;\n this.didMount = false;\n this.shouldMount = false;\n this.setShouldMount = null;\n }\n mount() {\n if (!this.mounted) {\n this.mounted = createControlledPromise();\n this.shouldMount = true;\n this.setShouldMount(this.shouldMount);\n }\n return this.mounted;\n }\n mountEffect = () => {\n if (this.shouldMount && !this.didMount) {\n if (this.ref.current !== null) {\n this.didMount = true;\n this.mounted.resolve();\n }\n }\n };\n\n /* Ripple API */\n\n start(...args) {\n this.mount().then(() => this.ref.current?.start(...args));\n }\n stop(...args) {\n this.mount().then(() => this.ref.current?.stop(...args));\n }\n pulsate(...args) {\n this.mount().then(() => this.ref.current?.pulsate(...args));\n }\n}\nexport default function useLazyRipple() {\n return LazyRipple.use();\n}\nfunction createControlledPromise() {\n let resolve;\n let reject;\n const p = new Promise((resolveFn, rejectFn) => {\n resolve = resolveFn;\n reject = rejectFn;\n });\n p.resolve = resolve;\n p.reject = reject;\n return p;\n}","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-f0de968e.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-f0de968e.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx = function jsx(type, props) {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n(function (_jsx) {\n var JSX;\n\n (function (_JSX) {})(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));\n})(jsx || (jsx = {}));\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nfunction keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n}\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes /* remove-proptypes */ = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport useTimeout from '@mui/utils/useTimeout';\nimport { keyframes, styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Ripple from \"./Ripple.js\";\nimport touchRippleClasses from \"./touchRippleClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`;\nconst exitKeyframe = keyframes`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`;\nconst pulsateKeyframe = keyframes`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`;\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})`\n opacity: 0;\n position: absolute;\n\n &.${touchRippleClasses.rippleVisible} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${enterKeyframe};\n animation-duration: ${DURATION}ms;\n animation-timing-function: ${({\n theme\n}) => theme.transitions.easing.easeInOut};\n }\n\n &.${touchRippleClasses.ripplePulsate} {\n animation-duration: ${({\n theme\n}) => theme.transitions.duration.shorter}ms;\n }\n\n & .${touchRippleClasses.child} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${touchRippleClasses.childLeaving} {\n opacity: 0;\n animation-name: ${exitKeyframe};\n animation-duration: ${DURATION}ms;\n animation-timing-function: ${({\n theme\n}) => theme.transitions.easing.easeInOut};\n }\n\n & .${touchRippleClasses.childPulsate} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${pulsateKeyframe};\n animation-duration: 2500ms;\n animation-timing-function: ${({\n theme\n}) => theme.transitions.easing.easeInOut};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`;\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n const {\n center: centerProp = false,\n classes = {},\n className,\n ...other\n } = props;\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]);\n\n // Used to filter out mouse emulated events on mobile.\n const ignoringMouseDown = React.useRef(false);\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n const startTimer = useTimeout();\n\n // This is the hook called once the previous timeout is ready.\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n } = options;\n if (event?.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if (event?.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n\n // Touche devices\n if (event?.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n };\n // Delay the execution of the ripple effect.\n // We have to make a tradeoff with this delay value.\n startTimer.start(DELAY_RIPPLE, () => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n });\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit, startTimer]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n startTimer.clear();\n\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if (event?.type === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.start(0, () => {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, [startTimer]);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, {\n className: clsx(touchRippleClasses.root, classes.root, className),\n ref: container,\n ...other,\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes /* remove-proptypes */ = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useEventCallback from \"../utils/useEventCallback.js\";\nimport useLazyRipple from \"../useLazyRipple/index.js\";\nimport TouchRipple from \"./TouchRipple.js\";\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from \"./buttonBaseClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n focusVisibleClassName,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type,\n ...other\n } = props;\n const buttonRef = React.useRef(null);\n const ripple = useLazyRipple();\n const handleRippleRef = useForkRef(ripple.ref, touchRippleRef);\n const [focusVisible, setFocusVisible] = React.useState(false);\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const enableTouchRipple = ripple.shouldMount && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple) {\n ripple.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, ripple]);\n const handleMouseDown = useRippleHandler(ripple, 'start', onMouseDown, disableTouchRipple);\n const handleContextMenu = useRippleHandler(ripple, 'stop', onContextMenu, disableTouchRipple);\n const handleDragLeave = useRippleHandler(ripple, 'stop', onDragLeave, disableTouchRipple);\n const handleMouseUp = useRippleHandler(ripple, 'stop', onMouseUp, disableTouchRipple);\n const handleMouseLeave = useRippleHandler(ripple, 'stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n }, disableTouchRipple);\n const handleTouchStart = useRippleHandler(ripple, 'start', onTouchStart, disableTouchRipple);\n const handleTouchEnd = useRippleHandler(ripple, 'stop', onTouchEnd, disableTouchRipple);\n const handleTouchMove = useRippleHandler(ripple, 'stop', onTouchMove, disableTouchRipple);\n const handleBlur = useRippleHandler(ripple, 'stop', event => {\n if (!isFocusVisible(event.target)) {\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n if (isFocusVisible(event.target)) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !event.repeat && focusVisible && event.key === ' ') {\n ripple.stop(event, () => {\n ripple.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a
\n );\n};\n\nItemLabelWithControls.propTypes = {\n itemId: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n editable: PropTypes.bool,\n ownerState: PropTypes.object,\n};\n\n// Custom label-input slot. When `itemsReordering` is on, MUI's reorder plugin\n// puts `draggable=\"true\"` on the TreeItem root with NO editing guard. While the\n// label input is focused, that native draggable ancestor hijacks text\n// selection: dragging to highlight a word starts an HTML5 element drag, the\n// input loses focus, MUI's onBlur fires, and edit mode exits mid-gesture.\n//\n// Fix: while this input is mounted (i.e. editing), flip the nearest\n// draggable ancestor to draggable=\"false\" and restore it on cleanup. Also\n// stop mouse/pointer/click from reaching the row (so clicking inside the cell\n// doesn't toggle selection or steal focus) and cancel any dragstart that does\n// fire. We deliberately do NOT preventDefault on mousedown — the browser needs\n// it for caret placement and native text selection inside the input.\nconst EditableLabelInput = React.forwardRef(function EditableLabelInput(\n props,\n ref\n) {\n const innerRef = useRef(null);\n const restoreRef = useRef(null);\n\n const setRefs = useCallback(\n (node) => {\n innerRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n },\n [ref]\n );\n\n useEffect(() => {\n const el = innerRef.current;\n if (!el || typeof el.closest !== 'function') return undefined;\n const host = el.closest('[draggable=\"true\"]');\n if (host) {\n restoreRef.current = host;\n host.setAttribute('draggable', 'false');\n }\n return () => {\n if (restoreRef.current) {\n restoreRef.current.setAttribute('draggable', 'true');\n restoreRef.current = null;\n }\n };\n }, []);\n\n const stopOnly = (handler) => (e) => {\n e.stopPropagation();\n if (handler) handler(e);\n };\n\n return (\n {\n e.preventDefault();\n e.stopPropagation();\n }}\n />\n );\n});\n\nEditableLabelInput.propTypes = {\n onMouseDown: PropTypes.func,\n onPointerDown: PropTypes.func,\n onClick: PropTypes.func,\n};\n\nconst CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) {\n const {itemId} = props;\n // Keep the real string `label` prop intact so MUI's edit input and\n // `onItemLabelChange` get the actual text (not \"[object Object]\").\n // Inject the slider + kebab through the label *slot*, and harden the\n // label-input slot so editing stays stable under itemsReordering.\n return (\n \n );\n});\n\nCustomTreeItem.propTypes = {\n itemId: PropTypes.string,\n};\n\n// --- Main component ----------------------------------------------------------\nconst TreeViewPro = ({\n id,\n items: itemsProp = [],\n licenseKey = '',\n // Item accessors\n getItemId: getItemIdProp = 'id',\n getItemLabel: getItemLabelProp = 'label',\n getItemChildren: getItemChildrenProp = 'children',\n // Selection\n selectedItems,\n defaultSelectedItems,\n multiSelect = false,\n checkboxSelection = false,\n disableSelection = false,\n selectionPropagation,\n // Expansion\n expandedItems,\n defaultExpandedItems,\n expansionTrigger = 'content',\n // Editing\n isItemEditable = false,\n editableItems,\n // Disabled\n disabledItems,\n disabledItemsFocusable = false,\n // Appearance\n itemChildrenIndentation = '12px',\n height,\n sx,\n // Icons\n collapseIcon,\n expandIcon,\n endIcon,\n // Accessibility\n ariaLabel,\n ariaLabelledBy,\n // PRO: Ordering\n itemsReordering = false,\n reorderableItems,\n // PRO: Lazy Loading\n lazyLoading = false,\n lazyLoadedChildren,\n // Per-item controls\n showItemControls = false,\n controlsItems,\n sliderValues,\n sliderMin = 0,\n sliderMax = 100,\n sliderStep = 1,\n sliderColor,\n kebabMenuItems,\n kebabMenuItemsById,\n // Dash\n setProps,\n}) => {\n const colorScheme = useMantineColorScheme();\n const muiTheme = colorScheme === 'dark' ? darkTheme : lightTheme;\n\n // --- License key ---\n if (licenseKey && !licenseKeySet) {\n LicenseInfo.setLicenseKey(licenseKey);\n licenseKeySet = true;\n }\n\n // --- Lazy loading: merge loaded children into items ---\n const items = useMemo(() => {\n if (!lazyLoading || !lazyLoadedChildren || !itemsProp) return itemsProp || [];\n const childrenProp = getItemChildrenProp || 'children';\n const idProp = getItemIdProp || 'id';\n\n const mergeChildren = (nodeList) => {\n if (!nodeList) return nodeList;\n return nodeList.map((node) => {\n const nodeId = node[idProp];\n const loadedKids = lazyLoadedChildren[nodeId];\n const existingChildren = node[childrenProp];\n const mergedChildren = loadedKids || existingChildren;\n return {\n ...node,\n [childrenProp]: mergeChildren(mergedChildren),\n };\n });\n };\n return mergeChildren(itemsProp);\n }, [itemsProp, lazyLoadedChildren, lazyLoading, getItemChildrenProp, getItemIdProp]);\n\n // --- Accessor conversion ---\n const getItemId = useCallback(\n (item) => item[getItemIdProp || 'id'],\n [getItemIdProp]\n );\n const getItemLabel = useCallback(\n (item) => item[getItemLabelProp || 'label'],\n [getItemLabelProp]\n );\n const getItemChildren = useCallback(\n (item) => item[getItemChildrenProp || 'children'],\n [getItemChildrenProp]\n );\n\n // --- Disabled/editable conversion ---\n const isItemDisabledFn = useMemo(() => {\n if (!disabledItems || disabledItems.length === 0) return undefined;\n const s = new Set(disabledItems);\n return (item) => s.has(getItemId(item));\n }, [disabledItems, getItemId]);\n\n const isItemEditableFn = useMemo(() => {\n if (typeof isItemEditable === 'boolean') return isItemEditable;\n if (editableItems && editableItems.length > 0) {\n const s = new Set(editableItems);\n return (item) => s.has(getItemId(item));\n }\n return false;\n }, [isItemEditable, editableItems, getItemId]);\n\n // --- PRO: Reorderable conversion ---\n const isItemReorderableFn = useMemo(() => {\n if (!reorderableItems || reorderableItems.length === 0) return undefined;\n const s = new Set(reorderableItems);\n return (itemId) => s.has(itemId);\n }, [reorderableItems]);\n\n // --- Per-item controls: slider + kebab handlers ---\n const sliderValuesRef = useRef(sliderValues || {});\n sliderValuesRef.current = sliderValues || sliderValuesRef.current || {};\n\n const handleSliderChange = useCallback(\n (itemId, value, committed) => {\n const next = {...sliderValuesRef.current, [itemId]: value};\n sliderValuesRef.current = next;\n if (setProps) {\n setProps({sliderValues: next});\n if (committed) {\n setProps({\n sliderChange: {\n itemId,\n value,\n event_timestamp: Date.now(),\n },\n });\n }\n }\n },\n [setProps]\n );\n\n const handleKebabAction = useCallback(\n (itemId, action) => {\n if (setProps) {\n setProps({\n kebabAction: {\n itemId,\n action,\n event_timestamp: Date.now(),\n },\n });\n }\n },\n [setProps]\n );\n\n const controlsItemSet = useMemo(() => {\n if (!controlsItems || controlsItems.length === 0) return null;\n return new Set(controlsItems);\n }, [controlsItems]);\n\n const resolvedSliderColor = useMemo(\n () => resolveSliderColor(sliderColor),\n [sliderColor]\n );\n\n const controlsContextValue = useMemo(\n () => ({\n controlsItemSet,\n sliderValues: sliderValues || {},\n sliderMin,\n sliderMax,\n sliderStep,\n sliderColor: resolvedSliderColor,\n onSliderChange: handleSliderChange,\n kebabMenuItems: kebabMenuItems || [],\n kebabMenuItemsById: kebabMenuItemsById || null,\n onKebabAction: handleKebabAction,\n }),\n [\n controlsItemSet,\n sliderValues,\n sliderMin,\n sliderMax,\n sliderStep,\n resolvedSliderColor,\n kebabMenuItems,\n kebabMenuItemsById,\n handleSliderChange,\n handleKebabAction,\n ]\n );\n\n // --- Slots ---\n const slots = useMemo(() => {\n const s = {};\n if (collapseIcon) s.collapseIcon = resolveIcon(collapseIcon);\n if (expandIcon) s.expandIcon = resolveIcon(expandIcon);\n if (endIcon) s.endIcon = resolveIcon(endIcon);\n if (showItemControls) s.item = CustomTreeItem;\n return Object.keys(s).length > 0 ? s : undefined;\n }, [collapseIcon, expandIcon, endIcon, showItemControls]);\n\n // --- Callbacks ---\n const handleSelectedItemsChange = useCallback(\n (event, itemIds) => {\n if (setProps) setProps({selectedItems: itemIds});\n },\n [setProps]\n );\n\n const handleExpandedItemsChange = useCallback(\n (event, itemIds) => {\n if (setProps) setProps({expandedItems: itemIds});\n\n // Lazy loading: fire request for items that have no children\n if (lazyLoading && setProps && itemIds) {\n const idProp = getItemIdProp || 'id';\n const childrenProp = getItemChildrenProp || 'children';\n const findItem = (nodes, targetId) => {\n if (!nodes) return null;\n for (const node of nodes) {\n if (node[idProp] === targetId) return node;\n const found = findItem(node[childrenProp], targetId);\n if (found) return found;\n }\n return null;\n };\n\n // Check newly expanded items for missing children\n for (const itemId of itemIds) {\n const item = findItem(items, itemId);\n if (item && !item[childrenProp]) {\n setProps({\n lazyLoadRequest: {\n itemId,\n event_timestamp: Date.now(),\n },\n });\n break;\n }\n }\n }\n },\n [setProps, lazyLoading, items, getItemIdProp, getItemChildrenProp]\n );\n\n const handleItemClick = useCallback(\n (event, itemId) => {\n if (setProps) setProps({clickedItem: {itemId, event_timestamp: Date.now()}});\n },\n [setProps]\n );\n\n const handleItemFocus = useCallback(\n (event, itemId) => {\n if (setProps) setProps({focusedItem: {itemId, event_timestamp: Date.now()}});\n },\n [setProps]\n );\n\n const handleItemLabelChange = useCallback(\n (itemId, newLabel) => {\n if (setProps) setProps({editedItemLabel: {itemId, newLabel, event_timestamp: Date.now()}});\n },\n [setProps]\n );\n\n // Track the live (reordered) tree so we can emit it as `orderedItems`.\n // Re-seed from the items prop whenever it changes externally.\n const orderedRef = useRef(itemsProp || []);\n useEffect(() => {\n orderedRef.current = itemsProp || [];\n }, [itemsProp]);\n\n const handleItemPositionChange = useCallback(\n (params) => {\n const updated = applyReorder(\n orderedRef.current,\n params,\n getItemIdProp,\n getItemChildrenProp\n );\n orderedRef.current = updated;\n if (setProps) {\n setProps({\n itemPositionChanged: {\n itemId: params.itemId,\n oldPosition: params.oldPosition,\n newPosition: params.newPosition,\n event_timestamp: Date.now(),\n },\n orderedItems: updated,\n });\n }\n },\n [setProps, getItemIdProp, getItemChildrenProp]\n );\n\n const containerStyle = useMemo(() => {\n const s = {};\n if (height) s.height = typeof height === 'number' ? `${height}px` : height;\n return s;\n }, [height]);\n\n return (\n \n
\n \n \n \n
\n
\n );\n};\n\nTreeViewPro.propTypes = {\n /** Dash component id */\n id: PropTypes.string,\n\n /** MUI X Pro license key. Required for Pro features. */\n licenseKey: PropTypes.string,\n\n /** Array of item objects. */\n items: PropTypes.arrayOf(PropTypes.object),\n\n // --- Accessors ---\n /** Property name for item ID (default: \"id\") */\n getItemId: PropTypes.string,\n\n /** Property name for item label (default: \"label\") */\n getItemLabel: PropTypes.string,\n\n /** Property name for item children (default: \"children\") */\n getItemChildren: PropTypes.string,\n\n // --- Selection ---\n /** Controlled selected item(s). String when multiSelect=false, array when true. */\n selectedItems: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /** Default selected items (uncontrolled). */\n defaultSelectedItems: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /** Allow selecting multiple items. */\n multiSelect: PropTypes.bool,\n\n /** Show checkboxes for selection. */\n checkboxSelection: PropTypes.bool,\n\n /** Disable all selection. */\n disableSelection: PropTypes.bool,\n\n /** Auto-propagate selection to parents/descendants. */\n selectionPropagation: PropTypes.exact({\n parents: PropTypes.bool,\n descendants: PropTypes.bool,\n }),\n\n // --- Expansion ---\n /** Controlled expanded item IDs. */\n expandedItems: PropTypes.arrayOf(PropTypes.string),\n\n /** Default expanded items (uncontrolled). */\n defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),\n\n /** What triggers expansion: \"content\" or \"iconContainer\". */\n expansionTrigger: PropTypes.oneOf(['content', 'iconContainer']),\n\n // --- Editing ---\n /** Enable label editing for all items. */\n isItemEditable: PropTypes.bool,\n\n /** List of item IDs that are editable. */\n editableItems: PropTypes.arrayOf(PropTypes.string),\n\n // --- Disabled ---\n /** List of item IDs that should be disabled. */\n disabledItems: PropTypes.arrayOf(PropTypes.string),\n\n /** Allow focus on disabled items. */\n disabledItemsFocusable: PropTypes.bool,\n\n // --- Appearance ---\n /** Indentation of children. */\n itemChildrenIndentation: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** Container height. */\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** MUI sx styling object. */\n sx: PropTypes.object,\n\n // --- Icons ---\n /** MUI icon name for collapse icon. */\n collapseIcon: PropTypes.string,\n\n /** MUI icon name for expand icon. */\n expandIcon: PropTypes.string,\n\n /** MUI icon name for leaf/end icon. */\n endIcon: PropTypes.string,\n\n // --- Accessibility ---\n /** ARIA label for the tree. */\n ariaLabel: PropTypes.string,\n\n /** ID of element that labels the tree. */\n ariaLabelledBy: PropTypes.string,\n\n // --- PRO: Ordering ---\n /** Enable drag-and-drop item reordering. */\n itemsReordering: PropTypes.bool,\n\n /** List of item IDs that can be reordered. If empty, all items are reorderable. */\n reorderableItems: PropTypes.arrayOf(PropTypes.string),\n\n /** Output: Fired after item reorder. {itemId, oldPosition, newPosition, event_timestamp} */\n itemPositionChanged: PropTypes.object,\n\n /**\n * Output: the current tree after any drag-and-drop reorder, preserving\n * each node's original fields (id, label, children, etc.). Updates on\n * every reorder so Python callbacks can render the live order.\n */\n orderedItems: PropTypes.arrayOf(PropTypes.object),\n\n // --- PRO: Lazy Loading ---\n /** Enable lazy loading mode. */\n lazyLoading: PropTypes.bool,\n\n /** Input: Children loaded by Dash callback. {parentItemId: [childItems]} */\n lazyLoadedChildren: PropTypes.object,\n\n /** Output: Fired when unloaded node is expanded. {itemId, event_timestamp} */\n lazyLoadRequest: PropTypes.exact({\n itemId: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n // --- Per-item controls (slider + kebab) ---\n /** Show a Slider + kebab menu on each item row. */\n showItemControls: PropTypes.bool,\n\n /** Restrict slider+kebab to a subset of item IDs. Empty/omitted means all items. */\n controlsItems: PropTypes.arrayOf(PropTypes.string),\n\n /** Controlled slider values keyed by itemId, e.g. {\"task-1\": 40}. Also updated as user drags. */\n sliderValues: PropTypes.object,\n\n /** Slider minimum. */\n sliderMin: PropTypes.number,\n\n /** Slider maximum. */\n sliderMax: PropTypes.number,\n\n /** Slider step. */\n sliderStep: PropTypes.number,\n\n /**\n * Slider color. Accepts a Mantine theme color name (\"teal\", \"blue.5\"),\n * a CSS color literal (\"#ff6b6b\", \"rgb(...)\"), or a CSS expression\n * (\"var(--mantine-color-teal-6)\", \"light-dark(...)\"). Bare names use\n * shade 6 by default. When omitted, the slider falls back to MUI's\n * `primary` palette color.\n */\n sliderColor: PropTypes.string,\n\n /**\n * Kebab menu entries. Each entry is one of:\n * a LEAF {label, value, icon?} — picking it fires `kebabAction` with\n * `action` = its `value`; a DIVIDER {divider: true}; or a SUBMENU\n * {label, icon?, children: [entries]} that opens on hover/click\n * (nesting is recursive).\n */\n kebabMenuItems: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.string,\n icon: PropTypes.string,\n divider: PropTypes.bool,\n children: PropTypes.array,\n })\n ),\n\n /**\n * Per-node kebab menus: {itemId: [entries]} (same entry shape as\n * `kebabMenuItems`, submenus/dividers included). A node listed here gets\n * its own menu; all other nodes fall back to `kebabMenuItems`.\n */\n kebabMenuItemsById: PropTypes.objectOf(PropTypes.array),\n\n /** Output: fires once on each commit (mouse-up) of a slider drag. {itemId, value, event_timestamp} */\n sliderChange: PropTypes.exact({\n itemId: PropTypes.string,\n value: PropTypes.number,\n event_timestamp: PropTypes.number,\n }),\n\n /** Output: fires when a kebab menu item is chosen. {itemId, action, event_timestamp} */\n kebabAction: PropTypes.exact({\n itemId: PropTypes.string,\n action: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n // --- Output Props ---\n /** Fired when item is clicked. {itemId, event_timestamp} */\n clickedItem: PropTypes.exact({\n itemId: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n /** Fired when item is focused. {itemId, event_timestamp} */\n focusedItem: PropTypes.exact({\n itemId: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n /** Fired when label edit completes. {itemId, newLabel, event_timestamp} */\n editedItemLabel: PropTypes.exact({\n itemId: PropTypes.string,\n newLabel: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n /** Dash setProps callback */\n setProps: PropTypes.func,\n};\n\nexport default TreeViewPro;\n","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"localeText\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const PickerAdapterContext = /*#__PURE__*/React.createContext(null);\n\n// TODO v9: Remove this public export\n/**\n * The context that provides the date adapter and default dates to the pickers.\n * @deprecated Use `usePickersAdapter` hook if you need access to the adapter instead.\n */\nif (process.env.NODE_ENV !== \"production\") PickerAdapterContext.displayName = \"PickerAdapterContext\";\nexport const MuiPickersAdapterContext = PickerAdapterContext;\n/**\n * Demos:\n *\n * - [Date format and localization](https://mui.com/x/react-date-pickers/adapters-locale/)\n * - [Calendar systems](https://mui.com/x/react-date-pickers/calendar-systems/)\n * - [Translated components](https://mui.com/x/react-date-pickers/localization/)\n * - [UTC and timezones](https://mui.com/x/react-date-pickers/timezone/)\n *\n * API:\n *\n * - [LocalizationProvider API](https://mui.com/x/api/date-pickers/localization-provider/)\n */\nexport const LocalizationProvider = function LocalizationProvider(inProps) {\n const {\n localeText: inLocaleText\n } = inProps,\n otherInProps = _objectWithoutPropertiesLoose(inProps, _excluded);\n const {\n adapter: parentAdapter,\n localeText: parentLocaleText\n } = React.useContext(PickerAdapterContext) ?? {\n utils: undefined,\n adapter: undefined,\n localeText: undefined\n };\n const props = useThemeProps({\n // We don't want to pass the `localeText` prop to the theme, that way it will always return the theme value,\n // We will then merge this theme value with our value manually\n props: otherInProps,\n name: 'MuiLocalizationProvider'\n });\n const {\n children,\n dateAdapter: DateAdapter,\n dateFormats,\n dateLibInstance,\n adapterLocale,\n localeText: themeLocaleText\n } = props;\n const localeText = React.useMemo(() => _extends({}, themeLocaleText, parentLocaleText, inLocaleText), [themeLocaleText, parentLocaleText, inLocaleText]);\n const adapter = React.useMemo(() => {\n if (!DateAdapter) {\n if (parentAdapter) {\n return parentAdapter;\n }\n return null;\n }\n const dateAdapter = new DateAdapter({\n locale: adapterLocale,\n formats: dateFormats,\n instance: dateLibInstance\n });\n if (!dateAdapter.isMUIAdapter) {\n throw new Error(['MUI X: The date adapter should be imported from `@mui/x-date-pickers` or `@mui/x-date-pickers-pro`, not from `@date-io`', \"For example, `import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'` instead of `import AdapterDayjs from '@date-io/dayjs'`\", 'More information on the installation documentation: https://mui.com/x/react-date-pickers/quickstart/#installation'].join(`\\n`));\n }\n return dateAdapter;\n }, [DateAdapter, adapterLocale, dateFormats, dateLibInstance, parentAdapter]);\n const defaultDates = React.useMemo(() => {\n if (!adapter) {\n return null;\n }\n return {\n minDate: adapter.date('1900-01-01T00:00:00.000'),\n maxDate: adapter.date('2099-12-31T00:00:00.000')\n };\n }, [adapter]);\n const contextValue = React.useMemo(() => {\n return {\n utils: adapter,\n adapter,\n defaultDates,\n localeText\n };\n }, [defaultDates, adapter, localeText]);\n return /*#__PURE__*/_jsx(PickerAdapterContext.Provider, {\n value: contextValue,\n children: children\n });\n};\nif (process.env.NODE_ENV !== \"production\") LocalizationProvider.displayName = \"LocalizationProvider\";\nprocess.env.NODE_ENV !== \"production\" ? LocalizationProvider.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Locale for the date library you are using\n */\n adapterLocale: PropTypes.any,\n children: PropTypes.node,\n /**\n * Date library adapter class function.\n * @see See the localization provider {@link https://mui.com/x/react-date-pickers/quickstart/#integrate-provider-and-adapter date adapter setup section} for more details.\n */\n dateAdapter: PropTypes.func,\n /**\n * Formats that are used for any child pickers\n */\n dateFormats: PropTypes.shape({\n dayOfMonth: PropTypes.string,\n dayOfMonthFull: PropTypes.string,\n fullDate: PropTypes.string,\n fullTime12h: PropTypes.string,\n fullTime24h: PropTypes.string,\n hours12h: PropTypes.string,\n hours24h: PropTypes.string,\n keyboardDate: PropTypes.string,\n keyboardDateTime12h: PropTypes.string,\n keyboardDateTime24h: PropTypes.string,\n meridiem: PropTypes.string,\n minutes: PropTypes.string,\n month: PropTypes.string,\n monthShort: PropTypes.string,\n normalDate: PropTypes.string,\n normalDateWithWeekday: PropTypes.string,\n seconds: PropTypes.string,\n shortDate: PropTypes.string,\n weekday: PropTypes.string,\n weekdayShort: PropTypes.string,\n year: PropTypes.string\n }),\n /**\n * Date library instance you are using, if it has some global overrides\n * ```jsx\n * dateLibInstance={momentTimeZone}\n * ```\n */\n dateLibInstance: PropTypes.any,\n /**\n * Locale for components texts\n */\n localeText: PropTypes.object\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* v8 ignore start */\nimport dayjs from 'dayjs';\n// dayjs has no exports field defined\n// See https://github.com/iamkun/dayjs/issues/2562\n/* eslint-disable import/extensions */\nimport weekOfYearPlugin from 'dayjs/plugin/weekOfYear.js';\nimport customParseFormatPlugin from 'dayjs/plugin/customParseFormat.js';\nimport localizedFormatPlugin from 'dayjs/plugin/localizedFormat.js';\nimport isBetweenPlugin from 'dayjs/plugin/isBetween.js';\nimport advancedFormatPlugin from 'dayjs/plugin/advancedFormat.js';\n/* v8 ignore stop */\n/* eslint-enable import/extensions */\nimport { warnOnce } from '@mui/x-internals/warning';\ndayjs.extend(localizedFormatPlugin);\ndayjs.extend(weekOfYearPlugin);\ndayjs.extend(isBetweenPlugin);\ndayjs.extend(advancedFormatPlugin);\nconst formatTokenMap = {\n // Year\n YY: 'year',\n YYYY: {\n sectionType: 'year',\n contentType: 'digit',\n maxLength: 4\n },\n // Month\n M: {\n sectionType: 'month',\n contentType: 'digit',\n maxLength: 2\n },\n MM: 'month',\n MMM: {\n sectionType: 'month',\n contentType: 'letter'\n },\n MMMM: {\n sectionType: 'month',\n contentType: 'letter'\n },\n // Day of the month\n D: {\n sectionType: 'day',\n contentType: 'digit',\n maxLength: 2\n },\n DD: 'day',\n Do: {\n sectionType: 'day',\n contentType: 'digit-with-letter'\n },\n // Day of the week\n d: {\n sectionType: 'weekDay',\n contentType: 'digit',\n maxLength: 2\n },\n dd: {\n sectionType: 'weekDay',\n contentType: 'letter'\n },\n ddd: {\n sectionType: 'weekDay',\n contentType: 'letter'\n },\n dddd: {\n sectionType: 'weekDay',\n contentType: 'letter'\n },\n // Meridiem\n A: 'meridiem',\n a: 'meridiem',\n // Hours\n H: {\n sectionType: 'hours',\n contentType: 'digit',\n maxLength: 2\n },\n HH: 'hours',\n h: {\n sectionType: 'hours',\n contentType: 'digit',\n maxLength: 2\n },\n hh: 'hours',\n // Minutes\n m: {\n sectionType: 'minutes',\n contentType: 'digit',\n maxLength: 2\n },\n mm: 'minutes',\n // Seconds\n s: {\n sectionType: 'seconds',\n contentType: 'digit',\n maxLength: 2\n },\n ss: 'seconds'\n};\nconst defaultFormats = {\n year: 'YYYY',\n month: 'MMMM',\n monthShort: 'MMM',\n dayOfMonth: 'D',\n dayOfMonthFull: 'Do',\n weekday: 'dddd',\n weekdayShort: 'dd',\n hours24h: 'HH',\n hours12h: 'hh',\n meridiem: 'A',\n minutes: 'mm',\n seconds: 'ss',\n fullDate: 'll',\n keyboardDate: 'L',\n shortDate: 'MMM D',\n normalDate: 'D MMMM',\n normalDateWithWeekday: 'ddd, MMM D',\n fullTime12h: 'hh:mm A',\n fullTime24h: 'HH:mm',\n keyboardDateTime12h: 'L hh:mm A',\n keyboardDateTime24h: 'L HH:mm'\n};\nconst MISSING_UTC_PLUGIN = ['Missing UTC plugin', 'To be able to use UTC or timezones, you have to enable the `utc` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc'].join('\\n');\nconst MISSING_TIMEZONE_PLUGIN = ['Missing timezone plugin', 'To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone'].join('\\n');\n/**\n * Based on `@date-io/dayjs`\n *\n * MIT License\n *\n * Copyright (c) 2017 Dmitriy Kovalenko\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport class AdapterDayjs {\n isMUIAdapter = true;\n isTimezoneCompatible = true;\n lib = 'dayjs';\n escapedCharacters = {\n start: '[',\n end: ']'\n };\n formatTokenMap = (() => formatTokenMap)();\n constructor({\n locale,\n formats\n } = {}) {\n this.locale = locale;\n this.formats = _extends({}, defaultFormats, formats);\n\n // Moved plugins to the constructor to allow for users to use options on the library\n // for reference: https://github.com/mui/mui-x/pull/11151\n dayjs.extend(customParseFormatPlugin);\n }\n setLocaleToValue = value => {\n const expectedLocale = this.getCurrentLocaleCode();\n if (expectedLocale === value.locale()) {\n return value;\n }\n return value.locale(expectedLocale);\n };\n hasUTCPlugin = () => typeof dayjs.utc !== 'undefined';\n hasTimezonePlugin = () => typeof dayjs.tz !== 'undefined';\n isSame = (value, comparing, comparisonTemplate) => {\n const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));\n return value.format(comparisonTemplate) === comparingInValueTimezone.format(comparisonTemplate);\n };\n\n /**\n * Replaces \"default\" by undefined and \"system\" by the system timezone before passing it to `dayjs`.\n */\n cleanTimezone = timezone => {\n switch (timezone) {\n case 'default':\n {\n return undefined;\n }\n case 'system':\n {\n return dayjs.tz.guess();\n }\n default:\n {\n return timezone;\n }\n }\n };\n createSystemDate = value => {\n let date;\n if (this.hasUTCPlugin() && this.hasTimezonePlugin()) {\n const timezone = dayjs.tz.guess();\n if (timezone === 'UTC') {\n date = dayjs(value);\n } /* v8 ignore next 3 */else {\n // We can't change the system timezone in the tests\n date = dayjs.tz(value, timezone);\n }\n } else {\n date = dayjs(value);\n }\n return this.setLocaleToValue(date);\n };\n createUTCDate = value => {\n /* v8 ignore next 3 */\n if (!this.hasUTCPlugin()) {\n throw new Error(MISSING_UTC_PLUGIN);\n }\n return this.setLocaleToValue(dayjs.utc(value));\n };\n createTZDate = (value, timezone) => {\n /* v8 ignore next 3 */\n if (!this.hasUTCPlugin()) {\n throw new Error(MISSING_UTC_PLUGIN);\n }\n\n /* v8 ignore next 3 */\n if (!this.hasTimezonePlugin()) {\n throw new Error(MISSING_TIMEZONE_PLUGIN);\n }\n const keepLocalTime = value !== undefined && !value.endsWith('Z');\n return this.setLocaleToValue(dayjs(value).tz(this.cleanTimezone(timezone), keepLocalTime));\n };\n getLocaleFormats = () => {\n const locales = dayjs.Ls;\n const locale = this.locale || 'en';\n let localeObject = locales[locale];\n if (localeObject === undefined) {\n /* v8 ignore start */\n if (process.env.NODE_ENV !== 'production') {\n warnOnce(['MUI X: Your locale has not been found.', 'Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale.', \"Or you forget to import the locale from 'dayjs/locale/{localeUsed}'\", 'fallback on English locale.']);\n }\n /* v8 ignore stop */\n localeObject = locales.en;\n }\n return localeObject.formats;\n };\n\n /**\n * If the new day does not have the same offset as the old one (when switching to summer day time for example),\n * Then dayjs will not automatically adjust the offset (moment does).\n * We have to parse again the value to make sure the `fixOffset` method is applied.\n * See https://github.com/iamkun/dayjs/blob/b3624de619d6e734cd0ffdbbd3502185041c1b60/src/plugin/timezone/index.js#L72\n */\n adjustOffset = value => {\n if (!this.hasTimezonePlugin()) {\n return value;\n }\n const timezone = this.getTimezone(value);\n if (timezone !== 'UTC') {\n const fixedValue = value.tz(this.cleanTimezone(timezone), true);\n // TODO: Simplify the case when we raise the `dayjs` peer dep to 1.11.12 (https://github.com/iamkun/dayjs/releases/tag/v1.11.12)\n /* v8 ignore next 3 */\n // @ts-ignore\n if (fixedValue.$offset === (value.$offset ?? 0)) {\n return value;\n }\n // Change only what is needed to avoid creating a new object with unwanted data\n // Especially important when used in an environment where utc or timezone dates are used only in some places\n // Reference: https://github.com/mui/mui-x/issues/13290\n // @ts-ignore\n value.$offset = fixedValue.$offset;\n }\n return value;\n };\n date = (value, timezone = 'default') => {\n if (value === null) {\n return null;\n }\n if (timezone === 'UTC') {\n return this.createUTCDate(value);\n }\n if (timezone === 'system' || timezone === 'default' && !this.hasTimezonePlugin()) {\n return this.createSystemDate(value);\n }\n return this.createTZDate(value, timezone);\n };\n getInvalidDate = () => dayjs(new Date('Invalid date'));\n getTimezone = value => {\n if (this.hasTimezonePlugin()) {\n // @ts-ignore\n const zone = value.$x?.$timezone;\n if (zone) {\n return zone;\n }\n }\n if (this.hasUTCPlugin() && value.isUTC()) {\n return 'UTC';\n }\n return 'system';\n };\n setTimezone = (value, timezone) => {\n if (this.getTimezone(value) === timezone) {\n return value;\n }\n if (timezone === 'UTC') {\n /* v8 ignore next 3 */\n if (!this.hasUTCPlugin()) {\n throw new Error(MISSING_UTC_PLUGIN);\n }\n return value.utc();\n }\n\n // We know that we have the UTC plugin.\n // Otherwise, the value timezone would always equal \"system\".\n // And it would be caught by the first \"if\" of this method.\n if (timezone === 'system') {\n return value.local();\n }\n if (!this.hasTimezonePlugin()) {\n if (timezone === 'default') {\n return value;\n }\n\n /* v8 ignore next */\n throw new Error(MISSING_TIMEZONE_PLUGIN);\n }\n return this.setLocaleToValue(dayjs.tz(value, this.cleanTimezone(timezone)));\n };\n toJsDate = value => {\n return value.toDate();\n };\n parse = (value, format) => {\n if (value === '') {\n return null;\n }\n return dayjs(value, format, this.locale, true);\n };\n getCurrentLocaleCode = () => {\n return this.locale || 'en';\n };\n is12HourCycleInCurrentLocale = () => {\n /* v8 ignore next */\n return /A|a/.test(this.getLocaleFormats().LT || '');\n };\n expandFormat = format => {\n const localeFormats = this.getLocaleFormats();\n\n // @see https://github.com/iamkun/dayjs/blob/dev/src/plugin/localizedFormat/index.js\n const t = formatBis => formatBis.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, (_, a, b) => a || b.slice(1));\n return format.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g, (_, a, b) => {\n const B = b && b.toUpperCase();\n return a || localeFormats[b] || t(localeFormats[B]);\n });\n };\n isValid = value => {\n if (value == null) {\n return false;\n }\n return value.isValid();\n };\n format = (value, formatKey) => {\n return this.formatByString(value, this.formats[formatKey]);\n };\n formatByString = (value, formatString) => {\n return this.setLocaleToValue(value).format(formatString);\n };\n formatNumber = numberToFormat => {\n return numberToFormat;\n };\n isEqual = (value, comparing) => {\n if (value === null && comparing === null) {\n return true;\n }\n if (value === null || comparing === null) {\n return false;\n }\n return value.toDate().getTime() === comparing.toDate().getTime();\n };\n isSameYear = (value, comparing) => {\n return this.isSame(value, comparing, 'YYYY');\n };\n isSameMonth = (value, comparing) => {\n return this.isSame(value, comparing, 'YYYY-MM');\n };\n isSameDay = (value, comparing) => {\n return this.isSame(value, comparing, 'YYYY-MM-DD');\n };\n isSameHour = (value, comparing) => {\n return value.isSame(comparing, 'hour');\n };\n isAfter = (value, comparing) => {\n return value > comparing;\n };\n isAfterYear = (value, comparing) => {\n if (!this.hasUTCPlugin()) {\n return value.isAfter(comparing, 'year');\n }\n return !this.isSameYear(value, comparing) && value.utc() > comparing.utc();\n };\n isAfterDay = (value, comparing) => {\n if (!this.hasUTCPlugin()) {\n return value.isAfter(comparing, 'day');\n }\n return !this.isSameDay(value, comparing) && value.utc() > comparing.utc();\n };\n isBefore = (value, comparing) => {\n return value < comparing;\n };\n isBeforeYear = (value, comparing) => {\n if (!this.hasUTCPlugin()) {\n return value.isBefore(comparing, 'year');\n }\n return !this.isSameYear(value, comparing) && value.utc() < comparing.utc();\n };\n isBeforeDay = (value, comparing) => {\n if (!this.hasUTCPlugin()) {\n return value.isBefore(comparing, 'day');\n }\n return !this.isSameDay(value, comparing) && value.utc() < comparing.utc();\n };\n isWithinRange = (value, [start, end]) => {\n return value >= start && value <= end;\n };\n startOfYear = value => {\n return this.adjustOffset(value.startOf('year'));\n };\n startOfMonth = value => {\n return this.adjustOffset(value.startOf('month'));\n };\n startOfWeek = value => {\n return this.adjustOffset(this.setLocaleToValue(value).startOf('week'));\n };\n startOfDay = value => {\n return this.adjustOffset(value.startOf('day'));\n };\n endOfYear = value => {\n return this.adjustOffset(value.endOf('year'));\n };\n endOfMonth = value => {\n return this.adjustOffset(value.endOf('month'));\n };\n endOfWeek = value => {\n return this.adjustOffset(this.setLocaleToValue(value).endOf('week'));\n };\n endOfDay = value => {\n return this.adjustOffset(value.endOf('day'));\n };\n addYears = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'year'));\n };\n addMonths = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'month'));\n };\n addWeeks = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'week'));\n };\n addDays = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'day'));\n };\n addHours = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'hour'));\n };\n addMinutes = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'minute'));\n };\n addSeconds = (value, amount) => {\n return this.adjustOffset(value.add(amount, 'second'));\n };\n getYear = value => {\n return value.year();\n };\n getMonth = value => {\n return value.month();\n };\n getDate = value => {\n return value.date();\n };\n getHours = value => {\n return value.hour();\n };\n getMinutes = value => {\n return value.minute();\n };\n getSeconds = value => {\n return value.second();\n };\n getMilliseconds = value => {\n return value.millisecond();\n };\n setYear = (value, year) => {\n return this.adjustOffset(value.set('year', year));\n };\n setMonth = (value, month) => {\n return this.adjustOffset(value.set('month', month));\n };\n setDate = (value, date) => {\n return this.adjustOffset(value.set('date', date));\n };\n setHours = (value, hours) => {\n return this.adjustOffset(value.set('hour', hours));\n };\n setMinutes = (value, minutes) => {\n return this.adjustOffset(value.set('minute', minutes));\n };\n setSeconds = (value, seconds) => {\n return this.adjustOffset(value.set('second', seconds));\n };\n setMilliseconds = (value, milliseconds) => {\n return this.adjustOffset(value.set('millisecond', milliseconds));\n };\n getDaysInMonth = value => {\n return value.daysInMonth();\n };\n getWeekArray = value => {\n const start = this.startOfWeek(this.startOfMonth(value));\n const end = this.endOfWeek(this.endOfMonth(value));\n let count = 0;\n let current = start;\n const nestedWeeks = [];\n while (current < end) {\n const weekNumber = Math.floor(count / 7);\n nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n nestedWeeks[weekNumber].push(current);\n current = this.addDays(current, 1);\n count += 1;\n }\n return nestedWeeks;\n };\n getWeekNumber = value => {\n return value.week();\n };\n getDayOfWeek(value) {\n return value.day() + 1;\n }\n getYearRange = ([start, end]) => {\n const startDate = this.startOfYear(start);\n const endDate = this.endOfYear(end);\n const years = [];\n let current = startDate;\n while (this.isBefore(current, endDate)) {\n years.push(current);\n current = this.addYears(current, 1);\n }\n return years;\n };\n}","/* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0\n ---\n These rules are preventing the performance optimizations below.\n */\n\n/**\n * Compose classes from multiple sources.\n *\n * @example\n * ```tsx\n * const slots = {\n * root: ['root', 'primary'],\n * label: ['label'],\n * };\n *\n * const getUtilityClass = (slot) => `MuiButton-${slot}`;\n *\n * const classes = {\n * root: 'my-root-class',\n * };\n *\n * const output = composeClasses(slots, getUtilityClass, classes);\n * // {\n * // root: 'MuiButton-root MuiButton-primary my-root-class',\n * // label: 'MuiButton-label',\n * // }\n * ```\n *\n * @param slots a list of classes for each possible slot\n * @param getUtilityClass a function to resolve the class based on the slot name\n * @param classes the input classes from props\n * @returns the resolved classes for all slots\n */\nexport default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n for (const slotName in slots) {\n const slot = slots[slotName];\n let buffer = '';\n let start = true;\n for (let i = 0; i < slot.length; i += 1) {\n const value = slot[i];\n if (value) {\n buffer += (start === true ? '' : ' ') + getUtilityClass(value);\n start = false;\n if (classes && classes[value]) {\n buffer += ' ' + classes[value];\n }\n }\n }\n output[slotName] = buffer;\n }\n return output;\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// See https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379 for why\nconst safeReact = {\n ...React\n};\nconst maybeReactUseId = safeReact.useId;\n\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n // React.useId() is only available from React 17.0.0.\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride ?? reactId;\n }\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const getPickersLocalization = pickersTranslations => {\n return {\n components: {\n MuiLocalizationProvider: {\n defaultProps: {\n localeText: _extends({}, pickersTranslations)\n }\n }\n }\n };\n};","import { getPickersLocalization } from \"./utils/getPickersLocalization.js\";\n\n// This object is not Partial because it is the default values\n\nconst enUSPickers = {\n // Calendar navigation\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n // View navigation\n openPreviousView: 'Open previous view',\n openNextView: 'Open next view',\n calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'year view is open, switch to calendar view' : 'calendar view is open, switch to year view',\n // DateRange labels\n start: 'Start',\n end: 'End',\n startDate: 'Start date',\n startTime: 'Start time',\n endDate: 'End date',\n endTime: 'End time',\n // Action bar\n cancelButtonLabel: 'Cancel',\n clearButtonLabel: 'Clear',\n okButtonLabel: 'OK',\n todayButtonLabel: 'Today',\n nextStepButtonLabel: 'Next',\n // Toolbar titles\n datePickerToolbarTitle: 'Select date',\n dateTimePickerToolbarTitle: 'Select date & time',\n timePickerToolbarTitle: 'Select time',\n dateRangePickerToolbarTitle: 'Select date range',\n timeRangePickerToolbarTitle: 'Select time range',\n // Clock labels\n clockLabelText: (view, formattedTime) => `Select ${view}. ${!formattedTime ? 'No time selected' : `Selected time is ${formattedTime}`}`,\n hoursClockNumberText: hours => `${hours} hours`,\n minutesClockNumberText: minutes => `${minutes} minutes`,\n secondsClockNumberText: seconds => `${seconds} seconds`,\n // Digital clock labels\n selectViewText: view => `Select ${view}`,\n // Calendar labels\n calendarWeekNumberHeaderLabel: 'Week number',\n calendarWeekNumberHeaderText: '#',\n calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,\n calendarWeekNumberText: weekNumber => `${weekNumber}`,\n // Open Picker labels\n openDatePickerDialogue: formattedDate => formattedDate ? `Choose date, selected date is ${formattedDate}` : 'Choose date',\n openTimePickerDialogue: formattedTime => formattedTime ? `Choose time, selected time is ${formattedTime}` : 'Choose time',\n openRangePickerDialogue: formattedRange => formattedRange ? `Choose range, selected range is ${formattedRange}` : 'Choose range',\n fieldClearLabel: 'Clear',\n // Table labels\n timeTableLabel: 'pick time',\n dateTableLabel: 'pick date',\n // Field section placeholders\n fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),\n fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',\n fieldDayPlaceholder: () => 'DD',\n fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',\n fieldHoursPlaceholder: () => 'hh',\n fieldMinutesPlaceholder: () => 'mm',\n fieldSecondsPlaceholder: () => 'ss',\n fieldMeridiemPlaceholder: () => 'aa',\n // View names\n year: 'Year',\n month: 'Month',\n day: 'Day',\n weekDay: 'Week day',\n hours: 'Hours',\n minutes: 'Minutes',\n seconds: 'Seconds',\n meridiem: 'Meridiem',\n // Common\n empty: 'Empty'\n};\nexport const DEFAULT_LOCALE = enUSPickers;\nexport const enUS = getPickersLocalization(enUSPickers);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { DEFAULT_LOCALE } from \"../locales/enUS.js\";\nimport { PickerAdapterContext } from \"../LocalizationProvider/LocalizationProvider.js\";\nexport const useLocalizationContext = () => {\n const localization = React.useContext(PickerAdapterContext);\n if (localization === null) {\n throw new Error(['MUI X: Can not find the date and time pickers localization context.', 'It looks like you forgot to wrap your component in LocalizationProvider.', 'This can also happen if you are bundling multiple versions of the `@mui/x-date-pickers` package'].join('\\n'));\n }\n if (localization.adapter === null) {\n throw new Error(['MUI X: Can not find the date and time pickers adapter from its localization context.', 'It looks like you forgot to pass a `dateAdapter` to your LocalizationProvider.'].join('\\n'));\n }\n const localeText = React.useMemo(() => _extends({}, DEFAULT_LOCALE, localization.localeText), [localization.localeText]);\n return React.useMemo(() => _extends({}, localization, {\n localeText\n }), [localization, localeText]);\n};\nexport const usePickerAdapter = () => useLocalizationContext().adapter;","'use client';\n\nimport { useLocalizationContext } from \"./usePickerAdapter.js\";\nexport const usePickerTranslations = () => useLocalizationContext().localeText;","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nfunction omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}\nexport default omitEventHandlers;","import clsx from 'clsx';\nimport extractEventHandlers from \"../extractEventHandlers/index.js\";\nimport omitEventHandlers from \"../omitEventHandlers/index.js\";\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nfunction mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n const mergedStyle = {\n ...additionalProps?.style,\n ...externalForwardedProps?.style,\n ...externalSlotProps?.style\n };\n const props = {\n ...additionalProps,\n ...externalForwardedProps,\n ...externalSlotProps\n };\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers({\n ...externalForwardedProps,\n ...externalSlotProps\n });\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming Base UI) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n const mergedStyle = {\n ...internalSlotProps?.style,\n ...additionalProps?.style,\n ...externalForwardedProps?.style,\n ...externalSlotProps?.style\n };\n const props = {\n ...internalSlotProps,\n ...additionalProps,\n ...otherPropsWithoutEventHandlers,\n ...componentsPropsWithoutEventHandlers\n };\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}\nexport default mergeSlotProps;","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nfunction extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}\nexport default extractEventHandlers;","'use client';\n\nimport useForkRef from \"../useForkRef/index.js\";\nimport appendOwnerState from \"../appendOwnerState/index.js\";\nimport mergeSlotProps from \"../mergeSlotProps/index.js\";\nimport resolveComponentProps from \"../resolveComponentProps/index.js\";\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nfunction useSlotProps(parameters) {\n const {\n elementType,\n externalSlotProps,\n ownerState,\n skipResolvingSlotProps = false,\n ...other\n } = parameters;\n const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps({\n ...other,\n externalSlotProps: resolvedComponentsProps\n });\n const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.additionalProps?.ref);\n const props = appendOwnerState(elementType, {\n ...mergedProps,\n ref\n }, ownerState);\n return props;\n}\nexport default useSlotProps;","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nfunction resolveComponentProps(componentProps, ownerState, slotState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState, slotState);\n }\n return componentProps;\n}\nexport default resolveComponentProps;","'use client';\n\nimport * as React from 'react';\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n *\n * ```tsx\n * const rootRef = React.useRef(null);\n * const refFork = useForkRef(rootRef, props.ref);\n *\n * return (\n * \n * );\n * ```\n *\n * @param {Array | undefined>} refs The ref array.\n * @returns {React.RefCallback | null} The new ref callback.\n */\nexport default function useForkRef(...refs) {\n const cleanupRef = React.useRef(undefined);\n const refEffect = React.useCallback(instance => {\n const cleanups = refs.map(ref => {\n if (ref == null) {\n return null;\n }\n if (typeof ref === 'function') {\n const refCallback = ref;\n const refCleanup = refCallback(instance);\n return typeof refCleanup === 'function' ? refCleanup : () => {\n refCallback(null);\n };\n }\n ref.current = instance;\n return () => {\n ref.current = null;\n };\n });\n return () => {\n cleanups.forEach(refCleanup => refCleanup?.());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = undefined;\n }\n if (value != null) {\n cleanupRef.current = refEffect(value);\n }\n };\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- intentionally ignoring that the dependency array must be an array literal\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","import isHostComponent from \"../isHostComponent/index.js\";\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nfunction appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return {\n ...otherProps,\n ownerState: {\n ...otherProps.ownerState,\n ...ownerState\n }\n };\n}\nexport default appendOwnerState;","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n return typeof element === 'string';\n}\nexport default isHostComponent;","import { createSvgIcon } from '@mui/material/utils';\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ArrowDropDownIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');\n\n/**\n * @ignore - internal component.\n */\nexport const ArrowLeftIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'ArrowLeft');\n\n/**\n * @ignore - internal component.\n */\nexport const ArrowRightIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'ArrowRight');\n\n/**\n * @ignore - internal component.\n */\nexport const CalendarIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"\n}), 'Calendar');\n\n/**\n * @ignore - internal component.\n */\nexport const ClockIcon = createSvgIcon(/*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.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\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Clock');\n\n/**\n * @ignore - internal component.\n */\nexport const DateRangeIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z\"\n}), 'DateRange');\n\n/**\n * @ignore - internal component.\n */\nexport const TimeIcon = createSvgIcon(/*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.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\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Time');\n\n/**\n * @ignore - internal component.\n */\nexport const ClearIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n 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\"\n}), 'Clear');","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickersArrowSwitcherUtilityClass(slot) {\n return generateUtilityClass('MuiPickersArrowSwitcher', slot);\n}\nexport const pickersArrowSwitcherClasses = generateUtilityClasses('MuiPickersArrowSwitcher', ['root', 'spacer', 'button', 'previousIconButton', 'nextIconButton', 'leftArrowIcon', 'rightArrowIcon']);","'use client';\n\nimport * as React from 'react';\nimport { LocalizationProvider } from \"../../LocalizationProvider/index.js\";\nimport { IsValidValueContext } from \"../../hooks/useIsValidValue.js\";\nimport { PickerFieldPrivateContext } from \"../hooks/useNullableFieldPrivateContext.js\";\nimport { PickerContext } from \"../../hooks/usePickerContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const PickerActionsContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") PickerActionsContext.displayName = \"PickerActionsContext\";\nexport const PickerPrivateContext = /*#__PURE__*/React.createContext({\n ownerState: {\n isPickerDisabled: false,\n isPickerReadOnly: false,\n isPickerValueEmpty: false,\n isPickerOpen: false,\n pickerVariant: 'desktop',\n pickerOrientation: 'portrait'\n },\n rootRefObject: {\n current: null\n },\n labelId: undefined,\n dismissViews: () => {},\n hasUIView: true,\n getCurrentViewMode: () => 'UI',\n triggerElement: null,\n viewContainerRole: null,\n defaultActionBarActions: [],\n onPopperExited: undefined\n});\n\n/**\n * Provides the context for the various parts of a Picker component:\n * - contextValue: the context for the Picker sub-components.\n * - localizationProvider: the translations passed through the props and through a parent LocalizationProvider.\n *\n * @ignore - do not document.\n */\nif (process.env.NODE_ENV !== \"production\") PickerPrivateContext.displayName = \"PickerPrivateContext\";\nexport function PickerProvider(props) {\n const {\n contextValue,\n actionsContextValue,\n privateContextValue,\n fieldPrivateContextValue,\n isValidContextValue,\n localeText,\n children\n } = props;\n return /*#__PURE__*/_jsx(PickerContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(PickerActionsContext.Provider, {\n value: actionsContextValue,\n children: /*#__PURE__*/_jsx(PickerPrivateContext.Provider, {\n value: privateContextValue,\n children: /*#__PURE__*/_jsx(PickerFieldPrivateContext.Provider, {\n value: fieldPrivateContextValue,\n children: /*#__PURE__*/_jsx(IsValidValueContext.Provider, {\n value: isValidContextValue,\n children: /*#__PURE__*/_jsx(LocalizationProvider, {\n localeText: localeText,\n children: children\n })\n })\n })\n })\n })\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { PickerPrivateContext } from \"../components/PickerProvider.js\";\n\n/**\n * Returns the private context passed by the Picker wrapping the current component.\n */\nexport const usePickerPrivateContext = () => React.useContext(PickerPrivateContext);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"slots\", \"slotProps\", \"isNextDisabled\", \"isNextHidden\", \"onGoToNext\", \"nextLabel\", \"isPreviousDisabled\", \"isPreviousHidden\", \"onGoToPrevious\", \"previousLabel\", \"labelId\", \"classes\"],\n _excluded2 = [\"ownerState\"],\n _excluded3 = [\"ownerState\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport IconButton from '@mui/material/IconButton';\nimport { ArrowLeftIcon, ArrowRightIcon } from \"../../../icons/index.js\";\nimport { getPickersArrowSwitcherUtilityClass } from \"./pickersArrowSwitcherClasses.js\";\nimport { usePickerPrivateContext } from \"../../hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersArrowSwitcherRoot = styled('div', {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Root'\n})({\n display: 'flex'\n});\nconst PickersArrowSwitcherSpacer = styled('div', {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Spacer'\n})(({\n theme\n}) => ({\n width: theme.spacing(3)\n}));\nconst PickersArrowSwitcherButton = styled(IconButton, {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Button'\n})({\n variants: [{\n props: {\n isButtonHidden: true\n },\n style: {\n visibility: 'hidden'\n }\n }]\n});\nconst useUtilityClasses = classes => {\n const slots = {\n root: ['root'],\n spacer: ['spacer'],\n button: ['button'],\n previousIconButton: ['previousIconButton'],\n nextIconButton: ['nextIconButton'],\n leftArrowIcon: ['leftArrowIcon'],\n rightArrowIcon: ['rightArrowIcon']\n };\n return composeClasses(slots, getPickersArrowSwitcherUtilityClass, classes);\n};\nexport const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function PickersArrowSwitcher(inProps, ref) {\n const isRtl = useRtl();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersArrowSwitcher'\n });\n const {\n children,\n className,\n slots,\n slotProps,\n isNextDisabled,\n isNextHidden,\n onGoToNext,\n nextLabel,\n isPreviousDisabled,\n isPreviousHidden,\n onGoToPrevious,\n previousLabel,\n labelId,\n classes: classesProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n ownerState\n } = usePickerPrivateContext();\n const classes = useUtilityClasses(classesProp);\n const nextProps = {\n isDisabled: isNextDisabled,\n isHidden: isNextHidden,\n goTo: onGoToNext,\n label: nextLabel\n };\n const previousProps = {\n isDisabled: isPreviousDisabled,\n isHidden: isPreviousHidden,\n goTo: onGoToPrevious,\n label: previousLabel\n };\n const PreviousIconButton = slots?.previousIconButton ?? PickersArrowSwitcherButton;\n const previousIconButtonProps = useSlotProps({\n elementType: PreviousIconButton,\n externalSlotProps: slotProps?.previousIconButton,\n additionalProps: {\n size: 'medium',\n title: previousProps.label,\n 'aria-label': previousProps.label,\n disabled: previousProps.isDisabled,\n edge: 'end',\n onClick: previousProps.goTo\n },\n ownerState: _extends({}, ownerState, {\n isButtonHidden: previousProps.isHidden ?? false\n }),\n className: clsx(classes.button, classes.previousIconButton)\n });\n const NextIconButton = slots?.nextIconButton ?? PickersArrowSwitcherButton;\n const nextIconButtonProps = useSlotProps({\n elementType: NextIconButton,\n externalSlotProps: slotProps?.nextIconButton,\n additionalProps: {\n size: 'medium',\n title: nextProps.label,\n 'aria-label': nextProps.label,\n disabled: nextProps.isDisabled,\n edge: 'start',\n onClick: nextProps.goTo\n },\n ownerState: _extends({}, ownerState, {\n isButtonHidden: nextProps.isHidden ?? false\n }),\n className: clsx(classes.button, classes.nextIconButton)\n });\n const LeftArrowIcon = slots?.leftArrowIcon ?? ArrowLeftIcon;\n // The spread is here to avoid this bug mui/material-ui#34056\n const _useSlotProps = useSlotProps({\n elementType: LeftArrowIcon,\n externalSlotProps: slotProps?.leftArrowIcon,\n additionalProps: {\n fontSize: 'inherit'\n },\n ownerState,\n className: classes.leftArrowIcon\n }),\n leftArrowIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n const RightArrowIcon = slots?.rightArrowIcon ?? ArrowRightIcon;\n // The spread is here to avoid this bug mui/material-ui#34056\n const _useSlotProps2 = useSlotProps({\n elementType: RightArrowIcon,\n externalSlotProps: slotProps?.rightArrowIcon,\n additionalProps: {\n fontSize: 'inherit'\n },\n ownerState,\n className: classes.rightArrowIcon\n }),\n rightArrowIconProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);\n return /*#__PURE__*/_jsxs(PickersArrowSwitcherRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(PreviousIconButton, _extends({}, previousIconButtonProps, {\n children: isRtl ? /*#__PURE__*/_jsx(RightArrowIcon, _extends({}, rightArrowIconProps)) : /*#__PURE__*/_jsx(LeftArrowIcon, _extends({}, leftArrowIconProps))\n })), children ? /*#__PURE__*/_jsx(Typography, {\n variant: \"subtitle1\",\n component: \"span\",\n id: labelId,\n children: children\n }) : /*#__PURE__*/_jsx(PickersArrowSwitcherSpacer, {\n className: classes.spacer,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(NextIconButton, _extends({}, nextIconButtonProps, {\n children: isRtl ? /*#__PURE__*/_jsx(LeftArrowIcon, _extends({}, leftArrowIconProps)) : /*#__PURE__*/_jsx(RightArrowIcon, _extends({}, rightArrowIconProps))\n }))]\n }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersArrowSwitcher.displayName = \"PickersArrowSwitcher\";","import { areViewsEqual } from \"./views.js\";\nexport const EXPORTED_TIME_VIEWS = ['hours', 'minutes', 'seconds'];\nexport const TIME_VIEWS = ['hours', 'minutes', 'seconds', 'meridiem'];\nexport const isTimeView = view => EXPORTED_TIME_VIEWS.includes(view);\nexport const isInternalTimeView = view => TIME_VIEWS.includes(view);\nexport const getMeridiem = (date, adapter) => {\n if (!date) {\n return null;\n }\n return adapter.getHours(date) >= 12 ? 'pm' : 'am';\n};\nexport const convertValueToMeridiem = (value, meridiem, ampm) => {\n if (ampm) {\n const currentMeridiem = value >= 12 ? 'pm' : 'am';\n if (currentMeridiem !== meridiem) {\n return meridiem === 'am' ? value - 12 : value + 12;\n }\n }\n return value;\n};\nexport const convertToMeridiem = (time, meridiem, ampm, adapter) => {\n const newHoursAmount = convertValueToMeridiem(adapter.getHours(time), meridiem, ampm);\n return adapter.setHours(time, newHoursAmount);\n};\nexport const getSecondsInDay = (date, adapter) => {\n return adapter.getHours(date) * 3600 + adapter.getMinutes(date) * 60 + adapter.getSeconds(date);\n};\nexport const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation, adapter) => (dateLeft, dateRight) => {\n if (disableIgnoringDatePartForTimeValidation) {\n return adapter.isAfter(dateLeft, dateRight);\n }\n return getSecondsInDay(dateLeft, adapter) > getSecondsInDay(dateRight, adapter);\n};\nexport const resolveTimeFormat = (adapter, {\n format,\n views,\n ampm\n}) => {\n if (format != null) {\n return format;\n }\n const formats = adapter.formats;\n if (areViewsEqual(views, ['hours'])) {\n return ampm ? `${formats.hours12h} ${formats.meridiem}` : formats.hours24h;\n }\n if (areViewsEqual(views, ['minutes'])) {\n return formats.minutes;\n }\n if (areViewsEqual(views, ['seconds'])) {\n return formats.seconds;\n }\n if (areViewsEqual(views, ['minutes', 'seconds'])) {\n return `${formats.minutes}:${formats.seconds}`;\n }\n if (areViewsEqual(views, ['hours', 'minutes', 'seconds'])) {\n return ampm ? `${formats.hours12h}:${formats.minutes}:${formats.seconds} ${formats.meridiem}` : `${formats.hours24h}:${formats.minutes}:${formats.seconds}`;\n }\n return ampm ? `${formats.hours12h}:${formats.minutes} ${formats.meridiem}` : `${formats.hours24h}:${formats.minutes}`;\n};","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from \"../useEnhancedEffect/index.js\";\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\n// TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- process.env never changes, dependency arrays are intentionally ignored\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(props) {\n const {\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n } = props;\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && JSON.stringify(defaultProp) !== JSON.stringify(defaultValue)) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n\n // TODO: provide overloads for the useControlled function to account for the case where either\n // controlled or default is not undefined.\n // In that case the return type should be [T, React.Dispatch>]\n // otherwise it should be [T | undefined, React.Dispatch>]\n return [value, setValueIfUncontrolled];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const DEFAULT_STEP_NAVIGATION = {\n hasNextStep: false,\n hasSeveralSteps: false,\n goToNextStep: () => {},\n areViewsInSameStep: () => true\n};\n\n/**\n * Create an object that determines whether there is a next step and allows to go to the next step.\n * @param {CreateStepNavigationParameters} parameters The parameters of the createStepNavigation function\n * @returns {CreateStepNavigationReturnValue} The return value of the createStepNavigation function\n */\nexport function createStepNavigation(parameters) {\n const {\n steps,\n isViewMatchingStep,\n onStepChange\n } = parameters;\n return parametersBis => {\n if (steps == null) {\n return DEFAULT_STEP_NAVIGATION;\n }\n const currentStepIndex = steps.findIndex(step => isViewMatchingStep(parametersBis.view, step));\n const nextStep = currentStepIndex === -1 || currentStepIndex === steps.length - 1 ? null : steps[currentStepIndex + 1];\n return {\n hasNextStep: nextStep != null,\n hasSeveralSteps: steps.length > 1,\n goToNextStep: () => {\n if (nextStep == null) {\n return;\n }\n onStepChange(_extends({}, parametersBis, {\n step: nextStep\n }));\n },\n areViewsInSameStep: (viewA, viewB) => {\n const stepA = steps.find(step => isViewMatchingStep(viewA, step));\n const stepB = steps.find(step => isViewMatchingStep(viewB, step));\n return stepA === stepB;\n }\n };\n };\n}","export const DAY_SIZE = 36;\nexport const DAY_MARGIN = 2;\nexport const DIALOG_WIDTH = 320;\nexport const MAX_CALENDAR_HEIGHT = 280;\nexport const VIEW_HEIGHT = 336;\nexport const DIGITAL_CLOCK_VIEW_HEIGHT = 232;\nexport const MULTI_SECTION_CLOCK_SECTION_WIDTH = 48;","import { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH, VIEW_HEIGHT } from \"../../constants/dimensions.js\";\nexport const PickerViewRoot = styled('div', {\n slot: 'internal',\n shouldForwardProp: undefined\n})({\n overflow: 'hidden',\n width: DIALOG_WIDTH,\n maxHeight: VIEW_HEIGHT,\n display: 'flex',\n flexDirection: 'column',\n margin: '0 auto'\n});","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getTimeClockUtilityClass(slot) {\n return generateUtilityClass('MuiTimeClock', slot);\n}\nexport const timeClockClasses = generateUtilityClasses('MuiTimeClock', ['root', 'arrowSwitcher']);","export const CLOCK_WIDTH = 220;\nexport const CLOCK_HOUR_WIDTH = 36;\nconst clockCenter = {\n x: CLOCK_WIDTH / 2,\n y: CLOCK_WIDTH / 2\n};\nconst baseClockPoint = {\n x: clockCenter.x,\n y: 0\n};\nconst cx = baseClockPoint.x - clockCenter.x;\nconst cy = baseClockPoint.y - clockCenter.y;\nconst rad2deg = rad => rad * (180 / Math.PI);\nconst getAngleValue = (step, offsetX, offsetY) => {\n const x = offsetX - clockCenter.x;\n const y = offsetY - clockCenter.y;\n const atan = Math.atan2(cx, cy) - Math.atan2(x, y);\n let deg = rad2deg(atan);\n deg = Math.round(deg / step) * step;\n deg %= 360;\n const value = Math.floor(deg / step) || 0;\n const delta = x ** 2 + y ** 2;\n const distance = Math.sqrt(delta);\n return {\n value,\n distance\n };\n};\nexport const getMinutes = (offsetX, offsetY, step = 1) => {\n const angleStep = step * 6;\n let {\n value\n } = getAngleValue(angleStep, offsetX, offsetY);\n value = value * step % 60;\n return value;\n};\nexport const getHours = (offsetX, offsetY, ampm) => {\n const {\n value,\n distance\n } = getAngleValue(30, offsetX, offsetY);\n let hour = value || 12;\n if (!ampm) {\n if (distance < CLOCK_WIDTH / 2 - CLOCK_HOUR_WIDTH) {\n hour += 12;\n hour %= 24;\n }\n } else {\n hour %= 12;\n }\n return hour;\n};","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getClockPointerUtilityClass(slot) {\n return generateUtilityClass('MuiClockPointer', slot);\n}\nexport const clockPointerClasses = generateUtilityClasses('MuiClockPointer', ['root', 'thumb']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"classes\", \"isBetweenTwoClockValues\", \"isInner\", \"type\", \"viewValue\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from \"./shared.js\";\nimport { getClockPointerUtilityClass } from \"./clockPointerClasses.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n const slots = {\n root: ['root'],\n thumb: ['thumb']\n };\n return composeClasses(slots, getClockPointerUtilityClass, classes);\n};\nconst ClockPointerRoot = styled('div', {\n name: 'MuiClockPointer',\n slot: 'Root'\n})(({\n theme\n}) => ({\n width: 2,\n backgroundColor: (theme.vars || theme).palette.primary.main,\n position: 'absolute',\n left: 'calc(50% - 1px)',\n bottom: '50%',\n transformOrigin: 'center bottom 0px',\n variants: [{\n props: {\n isClockPointerAnimated: true\n },\n style: {\n transition: theme.transitions.create(['transform', 'height'])\n }\n }]\n}));\nconst ClockPointerThumb = styled('div', {\n name: 'MuiClockPointer',\n slot: 'Thumb'\n})(({\n theme\n}) => ({\n width: 4,\n height: 4,\n backgroundColor: (theme.vars || theme).palette.primary.contrastText,\n borderRadius: '50%',\n position: 'absolute',\n top: -21,\n left: `calc(50% - ${CLOCK_HOUR_WIDTH / 2}px)`,\n border: `${(CLOCK_HOUR_WIDTH - 4) / 2}px solid ${(theme.vars || theme).palette.primary.main}`,\n boxSizing: 'content-box',\n variants: [{\n props: {\n isClockPointerBetweenTwoValues: false\n },\n style: {\n backgroundColor: (theme.vars || theme).palette.primary.main\n }\n }]\n}));\n\n/**\n * @ignore - internal component.\n */\nexport function ClockPointer(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockPointer'\n });\n const {\n className,\n classes: classesProp,\n isBetweenTwoClockValues,\n isInner,\n type,\n viewValue\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const previousType = React.useRef(type);\n React.useEffect(() => {\n previousType.current = type;\n }, [type]);\n const {\n ownerState: pickerOwnerState\n } = usePickerPrivateContext();\n const ownerState = _extends({}, pickerOwnerState, {\n isClockPointerAnimated: previousType.current !== type,\n isClockPointerBetweenTwoValues: isBetweenTwoClockValues\n });\n const classes = useUtilityClasses(classesProp);\n const getAngleStyle = () => {\n const max = type === 'hours' ? 12 : 60;\n let angle = 360 / max * viewValue;\n if (type === 'hours' && viewValue > 12) {\n angle -= 360; // round up angle to max 360 degrees\n }\n return {\n height: Math.round((isInner ? 0.26 : 0.4) * CLOCK_WIDTH),\n transform: `rotateZ(${angle}deg)`\n };\n };\n return /*#__PURE__*/_jsx(ClockPointerRoot, _extends({\n style: getAngleStyle(),\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(ClockPointerThumb, {\n ownerState: ownerState,\n className: classes.thumb\n })\n }));\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getClockUtilityClass(slot) {\n return generateUtilityClass('MuiClock', slot);\n}\nexport const clockClasses = generateUtilityClasses('MuiClock', ['root', 'clock', 'wrapper', 'squareMask', 'pin', 'amButton', 'pmButton', 'meridiemText', 'selected']);","import { areViewsEqual } from \"./views.js\";\nexport const mergeDateAndTime = (adapter, dateParam, timeParam) => {\n let mergedDate = dateParam;\n mergedDate = adapter.setHours(mergedDate, adapter.getHours(timeParam));\n mergedDate = adapter.setMinutes(mergedDate, adapter.getMinutes(timeParam));\n mergedDate = adapter.setSeconds(mergedDate, adapter.getSeconds(timeParam));\n mergedDate = adapter.setMilliseconds(mergedDate, adapter.getMilliseconds(timeParam));\n return mergedDate;\n};\nexport const findClosestEnabledDate = ({\n date,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n isDateDisabled,\n adapter,\n timezone\n}) => {\n const today = mergeDateAndTime(adapter, adapter.date(undefined, timezone), date);\n if (disablePast && adapter.isBefore(minDate, today)) {\n minDate = today;\n }\n if (disableFuture && adapter.isAfter(maxDate, today)) {\n maxDate = today;\n }\n let forward = date;\n let backward = date;\n if (adapter.isBefore(date, minDate)) {\n forward = minDate;\n backward = null;\n }\n if (adapter.isAfter(date, maxDate)) {\n if (backward) {\n backward = maxDate;\n }\n forward = null;\n }\n while (forward || backward) {\n if (forward && adapter.isAfter(forward, maxDate)) {\n forward = null;\n }\n if (backward && adapter.isBefore(backward, minDate)) {\n backward = null;\n }\n if (forward) {\n if (!isDateDisabled(forward)) {\n return forward;\n }\n forward = adapter.addDays(forward, 1);\n }\n if (backward) {\n if (!isDateDisabled(backward)) {\n return backward;\n }\n backward = adapter.addDays(backward, -1);\n }\n }\n return null;\n};\nexport const replaceInvalidDateByNull = (adapter, value) => !adapter.isValid(value) ? null : value;\nexport const applyDefaultDate = (adapter, value, defaultValue) => {\n if (value == null || !adapter.isValid(value)) {\n return defaultValue;\n }\n return value;\n};\nexport const areDatesEqual = (adapter, a, b) => {\n if (!adapter.isValid(a) && a != null && !adapter.isValid(b) && b != null) {\n return true;\n }\n return adapter.isEqual(a, b);\n};\nexport const getMonthsInYear = (adapter, year) => {\n const firstMonth = adapter.startOfYear(year);\n const months = [firstMonth];\n while (months.length < 12) {\n const prevMonth = months[months.length - 1];\n months.push(adapter.addMonths(prevMonth, 1));\n }\n return months;\n};\nexport const getTodayDate = (adapter, timezone, valueType) => valueType === 'date' ? adapter.startOfDay(adapter.date(undefined, timezone)) : adapter.date(undefined, timezone);\nexport const formatMeridiem = (adapter, meridiem) => {\n const date = adapter.setHours(adapter.date(), meridiem === 'am' ? 2 : 14);\n return adapter.format(date, 'meridiem');\n};\nexport const DATE_VIEWS = ['year', 'month', 'day'];\nexport const isDatePickerView = view => DATE_VIEWS.includes(view);\nexport const resolveDateFormat = (adapter, {\n format,\n views\n}, isInToolbar) => {\n if (format != null) {\n return format;\n }\n const formats = adapter.formats;\n if (areViewsEqual(views, ['year'])) {\n return formats.year;\n }\n if (areViewsEqual(views, ['month'])) {\n return formats.month;\n }\n if (areViewsEqual(views, ['day'])) {\n return formats.dayOfMonth;\n }\n if (areViewsEqual(views, ['month', 'year'])) {\n return `${formats.month} ${formats.year}`;\n }\n if (areViewsEqual(views, ['day', 'month'])) {\n return `${formats.month} ${formats.dayOfMonth}`;\n }\n if (isInToolbar) {\n // Little localization hack (Google is doing the same for android native pickers):\n // For english localization it is convenient to include weekday into the date \"Mon, Jun 1\".\n // For other locales using strings like \"June 1\", without weekday.\n return /en/.test(adapter.getCurrentLocaleCode()) ? formats.normalDateWithWeekday : formats.normalDate;\n }\n return formats.keyboardDate;\n};\nexport const getWeekdays = (adapter, date) => {\n const start = adapter.startOfWeek(date);\n return [0, 1, 2, 3, 4, 5, 6].map(diff => adapter.addDays(start, diff));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { ClockPointer } from \"./ClockPointer.js\";\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nimport { CLOCK_HOUR_WIDTH, getHours, getMinutes } from \"./shared.js\";\nimport { getClockUtilityClass } from \"./clockClasses.js\";\nimport { formatMeridiem } from \"../internals/utils/date-utils.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = (classes, ownerState) => {\n const slots = {\n root: ['root'],\n clock: ['clock'],\n wrapper: ['wrapper'],\n squareMask: ['squareMask'],\n pin: ['pin'],\n amButton: ['amButton', ownerState.clockMeridiemMode === 'am' && 'selected'],\n pmButton: ['pmButton', ownerState.clockMeridiemMode === 'pm' && 'selected'],\n meridiemText: ['meridiemText']\n };\n return composeClasses(slots, getClockUtilityClass, classes);\n};\nconst ClockRoot = styled('div', {\n name: 'MuiClock',\n slot: 'Root'\n})(({\n theme\n}) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n margin: theme.spacing(2)\n}));\nconst ClockClock = styled('div', {\n name: 'MuiClock',\n slot: 'Clock'\n})({\n backgroundColor: 'rgba(0,0,0,.07)',\n borderRadius: '50%',\n height: 220,\n width: 220,\n flexShrink: 0,\n position: 'relative',\n pointerEvents: 'none'\n});\nconst ClockWrapper = styled('div', {\n name: 'MuiClock',\n slot: 'Wrapper'\n})({\n '&:focus': {\n outline: 'none'\n }\n});\nconst ClockSquareMask = styled('div', {\n name: 'MuiClock',\n slot: 'SquareMask'\n})({\n width: '100%',\n height: '100%',\n position: 'absolute',\n pointerEvents: 'auto',\n outline: 0,\n // Disable scroll capabilities.\n touchAction: 'none',\n userSelect: 'none',\n variants: [{\n props: {\n isClockDisabled: false\n },\n style: {\n '@media (pointer: fine)': {\n cursor: 'pointer',\n borderRadius: '50%'\n },\n '&:active': {\n cursor: 'move'\n }\n }\n }]\n});\nconst ClockPin = styled('div', {\n name: 'MuiClock',\n slot: 'Pin'\n})(({\n theme\n}) => ({\n width: 6,\n height: 6,\n borderRadius: '50%',\n backgroundColor: (theme.vars || theme).palette.primary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n}));\nconst meridiemButtonCommonStyles = (theme, clockMeridiemMode) => ({\n zIndex: 1,\n bottom: 8,\n paddingLeft: 4,\n paddingRight: 4,\n width: CLOCK_HOUR_WIDTH,\n variants: [{\n props: {\n clockMeridiemMode\n },\n style: {\n backgroundColor: (theme.vars || theme).palette.primary.main,\n color: (theme.vars || theme).palette.primary.contrastText,\n '&:hover': {\n backgroundColor: (theme.vars || theme).palette.primary.light\n }\n }\n }]\n});\nconst ClockAmButton = styled(IconButton, {\n name: 'MuiClock',\n slot: 'AmButton'\n})(({\n theme\n}) => _extends({}, meridiemButtonCommonStyles(theme, 'am'), {\n // keeping it here to make TS happy\n position: 'absolute',\n left: 8\n}));\nconst ClockPmButton = styled(IconButton, {\n name: 'MuiClock',\n slot: 'PmButton'\n})(({\n theme\n}) => _extends({}, meridiemButtonCommonStyles(theme, 'pm'), {\n // keeping it here to make TS happy\n position: 'absolute',\n right: 8\n}));\nconst ClockMeridiemText = styled(Typography, {\n name: 'MuiClock',\n slot: 'MeridiemText'\n})({\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n});\n\n/**\n * @ignore - internal component.\n */\nexport function Clock(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClock'\n });\n const {\n ampm,\n ampmInClock,\n autoFocus,\n children,\n value,\n handleMeridiemChange,\n isTimeDisabled,\n meridiemMode,\n minutesStep = 1,\n onChange,\n selectedId,\n type,\n viewValue,\n viewRange: [minViewValue, maxViewValue],\n disabled = false,\n readOnly,\n className,\n classes: classesProp\n } = props;\n const adapter = usePickerAdapter();\n const translations = usePickerTranslations();\n const {\n ownerState: pickerOwnerState\n } = usePickerPrivateContext();\n const ownerState = _extends({}, pickerOwnerState, {\n isClockDisabled: disabled,\n clockMeridiemMode: meridiemMode\n });\n const isMoving = React.useRef(false);\n const classes = useUtilityClasses(classesProp, ownerState);\n const isSelectedTimeDisabled = isTimeDisabled(viewValue, type);\n const isPointerInner = !ampm && type === 'hours' && (viewValue < 1 || viewValue > 12);\n const handleValueChange = (newValue, isFinish) => {\n if (disabled || readOnly) {\n return;\n }\n if (isTimeDisabled(newValue, type)) {\n return;\n }\n onChange(newValue, isFinish);\n };\n const setTime = (event, isFinish) => {\n let {\n offsetX,\n offsetY\n } = event;\n if (offsetX === undefined) {\n const rect = event.target.getBoundingClientRect();\n offsetX = event.changedTouches[0].clientX - rect.left;\n offsetY = event.changedTouches[0].clientY - rect.top;\n }\n const newSelectedValue = type === 'seconds' || type === 'minutes' ? getMinutes(offsetX, offsetY, minutesStep) : getHours(offsetX, offsetY, Boolean(ampm));\n handleValueChange(newSelectedValue, isFinish);\n };\n const handleTouchSelection = event => {\n isMoving.current = true;\n setTime(event, 'shallow');\n };\n const handleTouchEnd = event => {\n if (isMoving.current) {\n setTime(event, 'finish');\n isMoving.current = false;\n }\n event.preventDefault();\n };\n const handleMouseMove = event => {\n // event.buttons & PRIMARY_MOUSE_BUTTON\n if (event.buttons > 0) {\n setTime(event.nativeEvent, 'shallow');\n }\n };\n const handleMouseUp = event => {\n if (isMoving.current) {\n isMoving.current = false;\n }\n setTime(event.nativeEvent, 'finish');\n };\n const isPointerBetweenTwoClockValues = type === 'hours' ? false : viewValue % 5 !== 0;\n const keyboardControlStep = type === 'minutes' ? minutesStep : 1;\n const listboxRef = React.useRef(null);\n // Since this is rendered when a Popper is opened we can't use passive effects.\n // Focusing in passive effects in Popper causes scroll jump.\n useEnhancedEffect(() => {\n if (autoFocus) {\n // The ref not being resolved would be a bug in MUI.\n listboxRef.current.focus();\n }\n }, [autoFocus]);\n const clampValue = newValue => Math.max(minViewValue, Math.min(maxViewValue, newValue));\n const circleValue = newValue => (newValue + (maxViewValue + 1)) % (maxViewValue + 1);\n const handleKeyDown = event => {\n // TODO: Why this early exit?\n if (isMoving.current) {\n return;\n }\n switch (event.key) {\n case 'Home':\n // reset both hours and minutes\n handleValueChange(minViewValue, 'partial');\n event.preventDefault();\n break;\n case 'End':\n handleValueChange(maxViewValue, 'partial');\n event.preventDefault();\n break;\n case 'ArrowUp':\n handleValueChange(circleValue(viewValue + keyboardControlStep), 'partial');\n event.preventDefault();\n break;\n case 'ArrowDown':\n handleValueChange(circleValue(viewValue - keyboardControlStep), 'partial');\n event.preventDefault();\n break;\n case 'PageUp':\n handleValueChange(clampValue(viewValue + 5), 'partial');\n event.preventDefault();\n break;\n case 'PageDown':\n handleValueChange(clampValue(viewValue - 5), 'partial');\n event.preventDefault();\n break;\n case 'Enter':\n case ' ':\n handleValueChange(viewValue, 'finish');\n event.preventDefault();\n break;\n default:\n // do nothing\n }\n };\n return /*#__PURE__*/_jsxs(ClockRoot, {\n className: clsx(classes.root, className),\n children: [/*#__PURE__*/_jsxs(ClockClock, {\n className: classes.clock,\n children: [/*#__PURE__*/_jsx(ClockSquareMask, {\n onTouchMove: handleTouchSelection,\n onTouchStart: handleTouchSelection,\n onTouchEnd: handleTouchEnd,\n onMouseUp: handleMouseUp,\n onMouseMove: handleMouseMove,\n ownerState: ownerState,\n className: classes.squareMask\n }), !isSelectedTimeDisabled && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockPin, {\n className: classes.pin\n }), value != null && /*#__PURE__*/_jsx(ClockPointer, {\n type: type,\n viewValue: viewValue,\n isInner: isPointerInner,\n isBetweenTwoClockValues: isPointerBetweenTwoClockValues\n })]\n }), /*#__PURE__*/_jsx(ClockWrapper, {\n \"aria-activedescendant\": selectedId,\n \"aria-label\": translations.clockLabelText(type, value == null ? null : adapter.format(value, ampm ? 'fullTime12h' : 'fullTime24h')),\n ref: listboxRef,\n role: \"listbox\",\n onKeyDown: handleKeyDown,\n tabIndex: 0,\n className: classes.wrapper,\n children: children\n })]\n }), ampm && ampmInClock && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockAmButton, {\n onClick: readOnly ? undefined : () => handleMeridiemChange('am'),\n disabled: disabled || meridiemMode === null,\n ownerState: ownerState,\n className: classes.amButton,\n title: formatMeridiem(adapter, 'am'),\n children: /*#__PURE__*/_jsx(ClockMeridiemText, {\n variant: \"caption\",\n className: classes.meridiemText,\n children: formatMeridiem(adapter, 'am')\n })\n }), /*#__PURE__*/_jsx(ClockPmButton, {\n disabled: disabled || meridiemMode === null,\n onClick: readOnly ? undefined : () => handleMeridiemChange('pm'),\n ownerState: ownerState,\n className: classes.pmButton,\n title: formatMeridiem(adapter, 'pm'),\n children: /*#__PURE__*/_jsx(ClockMeridiemText, {\n variant: \"caption\",\n className: classes.meridiemText,\n children: formatMeridiem(adapter, 'pm')\n })\n })]\n })]\n });\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getClockNumberUtilityClass(slot) {\n return generateUtilityClass('MuiClockNumber', slot);\n}\nexport const clockNumberClasses = generateUtilityClasses('MuiClockNumber', ['root', 'selected', 'disabled']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"classes\", \"disabled\", \"index\", \"inner\", \"label\", \"selected\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from \"./shared.js\";\nimport { getClockNumberUtilityClass, clockNumberClasses } from \"./clockNumberClasses.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = (classes, ownerState) => {\n const slots = {\n root: ['root', ownerState.isClockNumberSelected && 'selected', ownerState.isClockNumberDisabled && 'disabled']\n };\n return composeClasses(slots, getClockNumberUtilityClass, classes);\n};\nconst ClockNumberRoot = styled('span', {\n name: 'MuiClockNumber',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${clockNumberClasses.disabled}`]: styles.disabled\n }, {\n [`&.${clockNumberClasses.selected}`]: styles.selected\n }]\n})(({\n theme\n}) => ({\n height: CLOCK_HOUR_WIDTH,\n width: CLOCK_HOUR_WIDTH,\n position: 'absolute',\n left: `calc((100% - ${CLOCK_HOUR_WIDTH}px) / 2)`,\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '50%',\n color: (theme.vars || theme).palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n '&:focused': {\n backgroundColor: (theme.vars || theme).palette.background.paper\n },\n [`&.${clockNumberClasses.selected}`]: {\n color: (theme.vars || theme).palette.primary.contrastText\n },\n [`&.${clockNumberClasses.disabled}`]: {\n pointerEvents: 'none',\n color: (theme.vars || theme).palette.text.disabled\n },\n variants: [{\n props: {\n isClockNumberInInnerRing: true\n },\n style: _extends({}, theme.typography.body2, {\n color: (theme.vars || theme).palette.text.secondary\n })\n }]\n}));\n\n/**\n * @ignore - internal component.\n */\nexport function ClockNumber(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockNumber'\n });\n const {\n className,\n classes: classesProp,\n disabled,\n index,\n inner,\n label,\n selected\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n ownerState: pickerOwnerState\n } = usePickerPrivateContext();\n const ownerState = _extends({}, pickerOwnerState, {\n isClockNumberInInnerRing: inner,\n isClockNumberSelected: selected,\n isClockNumberDisabled: disabled\n });\n const classes = useUtilityClasses(classesProp, ownerState);\n const angle = index % 12 / 12 * Math.PI * 2 - Math.PI / 2;\n const length = (CLOCK_WIDTH - CLOCK_HOUR_WIDTH - 2) / 2 * (inner ? 0.65 : 1);\n const x = Math.round(Math.cos(angle) * length);\n const y = Math.round(Math.sin(angle) * length);\n return /*#__PURE__*/_jsx(ClockNumberRoot, _extends({\n className: clsx(classes.root, className),\n \"aria-disabled\": disabled ? true : undefined,\n \"aria-selected\": selected ? true : undefined,\n role: \"option\",\n style: {\n transform: `translate(${x}px, ${y + (CLOCK_WIDTH - CLOCK_HOUR_WIDTH) / 2}px`\n },\n ownerState: ownerState\n }, other, {\n children: label\n }));\n}","import * as React from 'react';\nimport { ClockNumber } from \"./ClockNumber.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * @ignore - internal component.\n */\nexport const getHourNumbers = ({\n ampm,\n value,\n getClockNumberText,\n isDisabled,\n selectedId,\n adapter\n}) => {\n const currentHours = value ? adapter.getHours(value) : null;\n const hourNumbers = [];\n const startHour = ampm ? 1 : 0;\n const endHour = ampm ? 12 : 23;\n const isSelected = hour => {\n if (currentHours === null) {\n return false;\n }\n if (ampm) {\n if (hour === 12) {\n return currentHours === 12 || currentHours === 0;\n }\n return currentHours === hour || currentHours - 12 === hour;\n }\n return currentHours === hour;\n };\n for (let hour = startHour; hour <= endHour; hour += 1) {\n let label = hour.toString();\n if (hour === 0) {\n label = '00';\n }\n const inner = !ampm && (hour === 0 || hour > 12);\n label = adapter.formatNumber(label);\n const selected = isSelected(hour);\n hourNumbers.push(/*#__PURE__*/_jsx(ClockNumber, {\n id: selected ? selectedId : undefined,\n index: hour,\n inner: inner,\n selected: selected,\n disabled: isDisabled(hour),\n label: label,\n \"aria-label\": getClockNumberText(label)\n }, hour));\n }\n return hourNumbers;\n};\nexport const getMinutesNumbers = ({\n adapter,\n value,\n isDisabled,\n getClockNumberText,\n selectedId\n}) => {\n const f = adapter.formatNumber;\n return [[5, f('05')], [10, f('10')], [15, f('15')], [20, f('20')], [25, f('25')], [30, f('30')], [35, f('35')], [40, f('40')], [45, f('45')], [50, f('50')], [55, f('55')], [0, f('00')]].map(([numberValue, label], index) => {\n const selected = numberValue === value;\n return /*#__PURE__*/_jsx(ClockNumber, {\n label: label,\n id: selected ? selectedId : undefined,\n index: index + 1,\n inner: false,\n disabled: isDisabled(numberValue),\n selected: selected,\n \"aria-label\": getClockNumberText(label)\n }, numberValue);\n });\n};","import { createIsAfterIgnoreDatePart } from \"./time-utils.js\";\nimport { mergeDateAndTime, getTodayDate } from \"./date-utils.js\";\nexport const SECTION_TYPE_GRANULARITY = {\n year: 1,\n month: 2,\n day: 3,\n hours: 4,\n minutes: 5,\n seconds: 6,\n milliseconds: 7\n};\nexport const getSectionTypeGranularity = sections => Math.max(...sections.map(section => SECTION_TYPE_GRANULARITY[section.type] ?? 1));\nconst roundDate = (adapter, granularity, date) => {\n if (granularity === SECTION_TYPE_GRANULARITY.year) {\n return adapter.startOfYear(date);\n }\n if (granularity === SECTION_TYPE_GRANULARITY.month) {\n return adapter.startOfMonth(date);\n }\n if (granularity === SECTION_TYPE_GRANULARITY.day) {\n return adapter.startOfDay(date);\n }\n\n // We don't have startOfHour / startOfMinute / startOfSecond\n let roundedDate = date;\n if (granularity < SECTION_TYPE_GRANULARITY.minutes) {\n roundedDate = adapter.setMinutes(roundedDate, 0);\n }\n if (granularity < SECTION_TYPE_GRANULARITY.seconds) {\n roundedDate = adapter.setSeconds(roundedDate, 0);\n }\n if (granularity < SECTION_TYPE_GRANULARITY.milliseconds) {\n roundedDate = adapter.setMilliseconds(roundedDate, 0);\n }\n return roundedDate;\n};\nexport const getDefaultReferenceDate = ({\n props,\n adapter,\n granularity,\n timezone,\n getTodayDate: inGetTodayDate\n}) => {\n let referenceDate = inGetTodayDate ? inGetTodayDate() : roundDate(adapter, granularity, getTodayDate(adapter, timezone));\n if (props.minDate != null && adapter.isAfterDay(props.minDate, referenceDate)) {\n referenceDate = roundDate(adapter, granularity, props.minDate);\n }\n if (props.maxDate != null && adapter.isBeforeDay(props.maxDate, referenceDate)) {\n referenceDate = roundDate(adapter, granularity, props.maxDate);\n }\n const isAfter = createIsAfterIgnoreDatePart(props.disableIgnoringDatePartForTimeValidation ?? false, adapter);\n if (props.minTime != null && isAfter(props.minTime, referenceDate)) {\n referenceDate = roundDate(adapter, granularity, props.disableIgnoringDatePartForTimeValidation ? props.minTime : mergeDateAndTime(adapter, referenceDate, props.minTime));\n }\n if (props.maxTime != null && isAfter(referenceDate, props.maxTime)) {\n referenceDate = roundDate(adapter, granularity, props.disableIgnoringDatePartForTimeValidation ? props.maxTime : mergeDateAndTime(adapter, referenceDate, props.maxTime));\n }\n return referenceDate;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"value\", \"referenceDate\"];\nimport { areDatesEqual, getTodayDate, replaceInvalidDateByNull } from \"./date-utils.js\";\nimport { getDefaultReferenceDate } from \"./getDefaultReferenceDate.js\";\nimport { createDateStrForV7HiddenInputFromSections, createDateStrForV6InputFromSections } from \"../hooks/useField/useField.utils.js\";\nexport const singleItemValueManager = {\n emptyValue: null,\n getTodayValue: getTodayDate,\n getInitialReferenceValue: _ref => {\n let {\n value,\n referenceDate\n } = _ref,\n params = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (params.adapter.isValid(value)) {\n return value;\n }\n if (referenceDate != null) {\n return referenceDate;\n }\n return getDefaultReferenceDate(params);\n },\n cleanValue: replaceInvalidDateByNull,\n areValuesEqual: areDatesEqual,\n isSameError: (a, b) => a === b,\n hasError: error => error != null,\n defaultErrorState: null,\n getTimezone: (adapter, value) => adapter.isValid(value) ? adapter.getTimezone(value) : null,\n setTimezone: (adapter, timezone, value) => value == null ? null : adapter.setTimezone(value, timezone)\n};\nexport const singleItemFieldValueManager = {\n updateReferenceValue: (adapter, value, prevReferenceValue) => adapter.isValid(value) ? value : prevReferenceValue,\n getSectionsFromValue: (date, getSectionsFromDate) => getSectionsFromDate(date),\n getV7HiddenInputValueFromSections: createDateStrForV7HiddenInputFromSections,\n getV6InputValueFromSections: createDateStrForV6InputFromSections,\n parseValueStr: (valueStr, referenceValue, parseDate) => parseDate(valueStr.trim(), referenceValue),\n getDateFromSection: value => value,\n getDateSectionsFromValue: sections => sections,\n updateDateInValue: (value, activeSection, activeDate) => activeDate,\n clearDateSections: sections => sections.map(section => _extends({}, section, {\n value: ''\n }))\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ampm\", \"ampmInClock\", \"autoFocus\", \"slots\", \"slotProps\", \"value\", \"defaultValue\", \"referenceDate\", \"disableIgnoringDatePartForTimeValidation\", \"maxTime\", \"minTime\", \"disableFuture\", \"disablePast\", \"minutesStep\", \"shouldDisableTime\", \"showViewSwitcher\", \"onChange\", \"view\", \"views\", \"openTo\", \"onViewChange\", \"focusedView\", \"onFocusedViewChange\", \"className\", \"classes\", \"disabled\", \"readOnly\", \"timezone\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nimport { useNow } from \"../internals/hooks/useUtils.js\";\nimport { PickersArrowSwitcher } from \"../internals/components/PickersArrowSwitcher/index.js\";\nimport { convertValueToMeridiem, createIsAfterIgnoreDatePart } from \"../internals/utils/time-utils.js\";\nimport { useViews } from \"../internals/hooks/useViews.js\";\nimport { useMeridiemMode } from \"../internals/hooks/date-helpers-hooks.js\";\nimport { PickerViewRoot } from \"../internals/components/PickerViewRoot/index.js\";\nimport { getTimeClockUtilityClass } from \"./timeClockClasses.js\";\nimport { Clock } from \"./Clock.js\";\nimport { getHourNumbers, getMinutesNumbers } from \"./ClockNumbers.js\";\nimport { useControlledValue } from \"../internals/hooks/useControlledValue.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { useClockReferenceDate } from \"../internals/hooks/useClockReferenceDate.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n const slots = {\n root: ['root'],\n arrowSwitcher: ['arrowSwitcher']\n };\n return composeClasses(slots, getTimeClockUtilityClass, classes);\n};\nconst TimeClockRoot = styled(PickerViewRoot, {\n name: 'MuiTimeClock',\n slot: 'Root'\n})({\n display: 'flex',\n flexDirection: 'column',\n position: 'relative'\n});\nconst TimeClockArrowSwitcher = styled(PickersArrowSwitcher, {\n name: 'MuiTimeClock',\n slot: 'ArrowSwitcher'\n})({\n position: 'absolute',\n right: 12,\n top: 15\n});\nconst TIME_CLOCK_DEFAULT_VIEWS = ['hours', 'minutes'];\n\n/**\n * Demos:\n *\n * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)\n * - [TimeClock](https://mui.com/x/react-date-pickers/time-clock/)\n *\n * API:\n *\n * - [TimeClock API](https://mui.com/x/api/date-pickers/time-clock/)\n */\nexport const TimeClock = /*#__PURE__*/React.forwardRef(function TimeClock(inProps, ref) {\n const adapter = usePickerAdapter();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTimeClock'\n });\n const {\n ampm = adapter.is12HourCycleInCurrentLocale(),\n ampmInClock = false,\n autoFocus,\n slots,\n slotProps,\n value: valueProp,\n defaultValue,\n referenceDate: referenceDateProp,\n disableIgnoringDatePartForTimeValidation = false,\n maxTime,\n minTime,\n disableFuture,\n disablePast,\n minutesStep = 1,\n shouldDisableTime,\n showViewSwitcher,\n onChange,\n view: inView,\n views = TIME_CLOCK_DEFAULT_VIEWS,\n openTo,\n onViewChange,\n focusedView,\n onFocusedViewChange,\n className,\n classes: classesProp,\n disabled,\n readOnly,\n timezone: timezoneProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n value,\n handleValueChange,\n timezone\n } = useControlledValue({\n name: 'TimeClock',\n timezone: timezoneProp,\n value: valueProp,\n defaultValue,\n referenceDate: referenceDateProp,\n onChange,\n valueManager: singleItemValueManager\n });\n const valueOrReferenceDate = useClockReferenceDate({\n value,\n referenceDate: referenceDateProp,\n adapter,\n props,\n timezone\n });\n const translations = usePickerTranslations();\n const now = useNow(timezone);\n const selectedId = useId();\n const {\n ownerState\n } = usePickerPrivateContext();\n const {\n view,\n setView,\n previousView,\n nextView,\n setValueAndGoToNextView\n } = useViews({\n view: inView,\n views,\n openTo,\n onViewChange,\n onChange: handleValueChange,\n focusedView,\n onFocusedViewChange\n });\n const {\n meridiemMode,\n handleMeridiemChange\n } = useMeridiemMode(valueOrReferenceDate, ampm, setValueAndGoToNextView);\n const isTimeDisabled = React.useCallback((rawValue, viewType) => {\n const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter);\n const shouldCheckPastEnd = viewType === 'hours' || viewType === 'minutes' && views.includes('seconds');\n const containsValidTime = ({\n start,\n end\n }) => {\n if (minTime && isAfter(minTime, end)) {\n return false;\n }\n if (maxTime && isAfter(start, maxTime)) {\n return false;\n }\n if (disableFuture && isAfter(start, now)) {\n return false;\n }\n if (disablePast && isAfter(now, shouldCheckPastEnd ? end : start)) {\n return false;\n }\n return true;\n };\n const isValidValue = (timeValue, step = 1) => {\n if (timeValue % step !== 0) {\n return false;\n }\n if (shouldDisableTime) {\n switch (viewType) {\n case 'hours':\n return !shouldDisableTime(adapter.setHours(valueOrReferenceDate, timeValue), 'hours');\n case 'minutes':\n return !shouldDisableTime(adapter.setMinutes(valueOrReferenceDate, timeValue), 'minutes');\n case 'seconds':\n return !shouldDisableTime(adapter.setSeconds(valueOrReferenceDate, timeValue), 'seconds');\n default:\n return false;\n }\n }\n return true;\n };\n switch (viewType) {\n case 'hours':\n {\n const valueWithMeridiem = convertValueToMeridiem(rawValue, meridiemMode, ampm);\n const dateWithNewHours = adapter.setHours(valueOrReferenceDate, valueWithMeridiem);\n if (adapter.getHours(dateWithNewHours) !== valueWithMeridiem) {\n return true;\n }\n const start = adapter.setSeconds(adapter.setMinutes(dateWithNewHours, 0), 0);\n const end = adapter.setSeconds(adapter.setMinutes(dateWithNewHours, 59), 59);\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(valueWithMeridiem);\n }\n case 'minutes':\n {\n const dateWithNewMinutes = adapter.setMinutes(valueOrReferenceDate, rawValue);\n const start = adapter.setSeconds(dateWithNewMinutes, 0);\n const end = adapter.setSeconds(dateWithNewMinutes, 59);\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(rawValue, minutesStep);\n }\n case 'seconds':\n {\n const dateWithNewSeconds = adapter.setSeconds(valueOrReferenceDate, rawValue);\n const start = dateWithNewSeconds;\n const end = dateWithNewSeconds;\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(rawValue);\n }\n default:\n throw new Error('not supported');\n }\n }, [ampm, valueOrReferenceDate, disableIgnoringDatePartForTimeValidation, maxTime, meridiemMode, minTime, minutesStep, shouldDisableTime, adapter, disableFuture, disablePast, now, views]);\n const viewProps = React.useMemo(() => {\n switch (view) {\n case 'hours':\n {\n const handleHoursChange = (hourValue, isFinish) => {\n const valueWithMeridiem = convertValueToMeridiem(hourValue, meridiemMode, ampm);\n setValueAndGoToNextView(adapter.setHours(valueOrReferenceDate, valueWithMeridiem), isFinish, 'hours');\n };\n const viewValue = adapter.getHours(valueOrReferenceDate);\n let viewRange;\n if (ampm) {\n if (viewValue > 12) {\n viewRange = [12, 23];\n } else {\n viewRange = [0, 11];\n }\n } else {\n viewRange = [0, 23];\n }\n return {\n onChange: handleHoursChange,\n viewValue,\n children: getHourNumbers({\n value,\n adapter,\n ampm,\n onChange: handleHoursChange,\n getClockNumberText: translations.hoursClockNumberText,\n isDisabled: hourValue => disabled || isTimeDisabled(hourValue, 'hours'),\n selectedId\n }),\n viewRange\n };\n }\n case 'minutes':\n {\n const minutesValue = adapter.getMinutes(valueOrReferenceDate);\n const handleMinutesChange = (minuteValue, isFinish) => {\n setValueAndGoToNextView(adapter.setMinutes(valueOrReferenceDate, minuteValue), isFinish, 'minutes');\n };\n return {\n viewValue: minutesValue,\n onChange: handleMinutesChange,\n children: getMinutesNumbers({\n adapter,\n value: minutesValue,\n onChange: handleMinutesChange,\n getClockNumberText: translations.minutesClockNumberText,\n isDisabled: minuteValue => disabled || isTimeDisabled(minuteValue, 'minutes'),\n selectedId\n }),\n viewRange: [0, 59]\n };\n }\n case 'seconds':\n {\n const secondsValue = adapter.getSeconds(valueOrReferenceDate);\n const handleSecondsChange = (secondValue, isFinish) => {\n setValueAndGoToNextView(adapter.setSeconds(valueOrReferenceDate, secondValue), isFinish, 'seconds');\n };\n return {\n viewValue: secondsValue,\n onChange: handleSecondsChange,\n children: getMinutesNumbers({\n adapter,\n value: secondsValue,\n onChange: handleSecondsChange,\n getClockNumberText: translations.secondsClockNumberText,\n isDisabled: secondValue => disabled || isTimeDisabled(secondValue, 'seconds'),\n selectedId\n }),\n viewRange: [0, 59]\n };\n }\n default:\n throw new Error('You must provide the type for ClockView');\n }\n }, [view, adapter, value, ampm, translations.hoursClockNumberText, translations.minutesClockNumberText, translations.secondsClockNumberText, meridiemMode, setValueAndGoToNextView, valueOrReferenceDate, isTimeDisabled, selectedId, disabled]);\n const classes = useUtilityClasses(classesProp);\n return /*#__PURE__*/_jsxs(TimeClockRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(Clock, _extends({\n autoFocus: autoFocus ?? !!focusedView,\n ampmInClock: ampmInClock && views.includes('hours'),\n value: value,\n type: view,\n ampm: ampm,\n minutesStep: minutesStep,\n isTimeDisabled: isTimeDisabled,\n meridiemMode: meridiemMode,\n handleMeridiemChange: handleMeridiemChange,\n selectedId: selectedId,\n disabled: disabled,\n readOnly: readOnly\n }, viewProps)), showViewSwitcher && /*#__PURE__*/_jsx(TimeClockArrowSwitcher, {\n className: classes.arrowSwitcher,\n slots: slots,\n slotProps: slotProps,\n onGoToPrevious: () => setView(previousView),\n isPreviousDisabled: !previousView,\n previousLabel: translations.openPreviousView,\n onGoToNext: () => setView(nextView),\n isNextDisabled: !nextView,\n nextLabel: translations.openNextView,\n ownerState: ownerState\n })]\n }));\n});\nif (process.env.NODE_ENV !== \"production\") TimeClock.displayName = \"TimeClock\";\nprocess.env.NODE_ENV !== \"production\" ? TimeClock.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * 12h/24h view for hour selection clock.\n * @default adapter.is12HourCycleInCurrentLocale()\n */\n ampm: PropTypes.bool,\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n /**\n * If `true`, the main element is focused during the first mount.\n * This main element is:\n * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n * - the `input` element if there is a field rendered.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n className: PropTypes.string,\n /**\n * The default selected value.\n * Used when the component is not controlled.\n */\n defaultValue: PropTypes.object,\n /**\n * If `true`, the component is disabled.\n * When disabled, the value cannot be changed and no interaction is possible.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n * @default false\n */\n disableFuture: PropTypes.bool,\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n /**\n * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n * @default false\n */\n disablePast: PropTypes.bool,\n /**\n * Controlled focused view.\n */\n focusedView: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n /**\n * Maximal selectable time.\n * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n */\n maxTime: PropTypes.object,\n /**\n * Minimal selectable time.\n * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n */\n minTime: PropTypes.object,\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n /**\n * Callback fired when the value changes.\n * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n * @template TView The view type. Will be one of date or time views.\n * @param {TValue} value The new value.\n * @param {PickerSelectionState | undefined} selectionState Indicates if the date selection is complete.\n * @param {TView | undefined} selectedView Indicates the view in which the selection has been made.\n */\n onChange: PropTypes.func,\n /**\n * Callback fired on focused view change.\n * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n * @param {TView} view The new view to focus or not.\n * @param {boolean} hasFocus `true` if the view should be focused.\n */\n onFocusedViewChange: PropTypes.func,\n /**\n * Callback fired on view change.\n * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n * @param {TView} view The new view.\n */\n onViewChange: PropTypes.func,\n /**\n * The default visible view.\n * Used when the component view is not controlled.\n * Must be a valid option from `views` list.\n */\n openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n /**\n * If `true`, the component is read-only.\n * When read-only, the value cannot be changed but the user can interact with the interface.\n * @default false\n */\n readOnly: PropTypes.bool,\n /**\n * The date used to generate the new value when both `value` and `defaultValue` are empty.\n * @default The closest valid time using the validation props, except callbacks such as `shouldDisableTime`.\n */\n referenceDate: PropTypes.object,\n /**\n * Disable specific time.\n * @param {PickerValidDate} value The value to check.\n * @param {TimeView} view The clock type of the timeValue.\n * @returns {boolean} If `true` the time will be disabled.\n */\n shouldDisableTime: PropTypes.func,\n showViewSwitcher: PropTypes.bool,\n /**\n * The props used for each component slot.\n * @default {}\n */\n slotProps: PropTypes.object,\n /**\n * Overridable component slots.\n * @default {}\n */\n slots: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Choose which timezone to use for the value.\n * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n */\n timezone: PropTypes.string,\n /**\n * The selected value.\n * Used when the component is controlled.\n */\n value: PropTypes.object,\n /**\n * The visible view.\n * Used when the component view is controlled.\n * Must be a valid option from `views` list.\n */\n view: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n /**\n * Available views.\n * @default ['hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'minutes', 'seconds']).isRequired)\n} : void 0;","import * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useControlled from '@mui/utils/useControlled';\nimport { usePickerAdapter } from \"../../hooks/usePickerAdapter.js\";\n\n/**\n * Hooks controlling the value while making sure that:\n * - The value returned by `onChange` always have the timezone of `props.value` or `props.defaultValue` if defined\n * - The value rendered is always the one from `props.timezone` if defined\n */\nexport const useControlledValue = ({\n name,\n timezone: timezoneProp,\n value: valueProp,\n defaultValue,\n referenceDate,\n onChange: onChangeProp,\n valueManager\n}) => {\n const adapter = usePickerAdapter();\n const [valueWithInputTimezone, setValue] = useControlled({\n name,\n state: 'value',\n controlled: valueProp,\n default: defaultValue ?? valueManager.emptyValue\n });\n const inputTimezone = React.useMemo(() => valueManager.getTimezone(adapter, valueWithInputTimezone), [adapter, valueManager, valueWithInputTimezone]);\n const setInputTimezone = useEventCallback(newValue => {\n if (inputTimezone == null) {\n return newValue;\n }\n return valueManager.setTimezone(adapter, inputTimezone, newValue);\n });\n const timezoneToRender = React.useMemo(() => {\n if (timezoneProp) {\n return timezoneProp;\n }\n if (inputTimezone) {\n return inputTimezone;\n }\n if (referenceDate) {\n return adapter.getTimezone(Array.isArray(referenceDate) ? referenceDate[0] : referenceDate);\n }\n return 'default';\n }, [timezoneProp, inputTimezone, referenceDate, adapter]);\n const valueWithTimezoneToRender = React.useMemo(() => valueManager.setTimezone(adapter, timezoneToRender, valueWithInputTimezone), [valueManager, adapter, timezoneToRender, valueWithInputTimezone]);\n const handleValueChange = useEventCallback((newValue, ...otherParams) => {\n const newValueWithInputTimezone = setInputTimezone(newValue);\n setValue(newValueWithInputTimezone);\n onChangeProp?.(newValueWithInputTimezone, ...otherParams);\n });\n return {\n value: valueWithTimezoneToRender,\n handleValueChange,\n timezone: timezoneToRender\n };\n};","import * as React from 'react';\nimport { singleItemValueManager } from \"../utils/valueManagers.js\";\nimport { getTodayDate } from \"../utils/date-utils.js\";\nimport { SECTION_TYPE_GRANULARITY } from \"../utils/getDefaultReferenceDate.js\";\nexport const useClockReferenceDate = ({\n value,\n referenceDate: referenceDateProp,\n adapter,\n props,\n timezone\n}) => {\n const referenceDate = React.useMemo(() => singleItemValueManager.getInitialReferenceValue({\n value,\n adapter,\n props,\n referenceDate: referenceDateProp,\n granularity: SECTION_TYPE_GRANULARITY.day,\n timezone,\n getTodayDate: () => getTodayDate(adapter, timezone, 'date')\n }),\n // We want the `referenceDate` to update on prop and `timezone` change (https://github.com/mui/mui-x/issues/10804)\n [referenceDateProp, timezone] // eslint-disable-line react-hooks/exhaustive-deps\n );\n return value ?? referenceDate;\n};","import * as React from 'react';\nimport { useLocalizationContext, usePickerAdapter } from \"../../hooks/usePickerAdapter.js\";\nexport const useDefaultDates = () => useLocalizationContext().defaultDates;\nexport const useNow = timezone => {\n const adapter = usePickerAdapter();\n const now = React.useRef(undefined);\n if (now.current === undefined) {\n now.current = adapter.date(undefined, timezone);\n }\n return now.current;\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useControlled from '@mui/utils/useControlled';\nimport { DEFAULT_STEP_NAVIGATION } from \"../utils/createStepNavigation.js\";\nlet warnedOnceNotValidView = false;\nexport function useViews({\n onChange,\n onViewChange,\n openTo,\n view: inView,\n views,\n autoFocus,\n focusedView: inFocusedView,\n onFocusedViewChange,\n getStepNavigation\n}) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnceNotValidView) {\n if (inView != null && !views.includes(inView)) {\n console.warn(`MUI X: \\`view=\"${inView}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n warnedOnceNotValidView = true;\n }\n if (inView == null && openTo != null && !views.includes(openTo)) {\n console.warn(`MUI X: \\`openTo=\"${openTo}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n warnedOnceNotValidView = true;\n }\n }\n }\n const previousOpenTo = React.useRef(openTo);\n const previousViews = React.useRef(views);\n const defaultView = React.useRef(views.includes(openTo) ? openTo : views[0]);\n const [view, setView] = useControlled({\n name: 'useViews',\n state: 'view',\n controlled: inView,\n default: defaultView.current\n });\n const defaultFocusedView = React.useRef(autoFocus ? view : null);\n const [focusedView, setFocusedView] = useControlled({\n name: 'useViews',\n state: 'focusedView',\n controlled: inFocusedView,\n default: defaultFocusedView.current\n });\n const stepNavigation = getStepNavigation ? getStepNavigation({\n setView,\n view,\n defaultView: defaultView.current,\n views\n }) : DEFAULT_STEP_NAVIGATION;\n React.useEffect(() => {\n // Update the current view when `openTo` or `views` props change\n if (previousOpenTo.current && previousOpenTo.current !== openTo || previousViews.current && previousViews.current.some(previousView => !views.includes(previousView))) {\n setView(views.includes(openTo) ? openTo : views[0]);\n previousViews.current = views;\n previousOpenTo.current = openTo;\n }\n }, [openTo, setView, view, views]);\n const viewIndex = views.indexOf(view);\n const previousView = views[viewIndex - 1] ?? null;\n const nextView = views[viewIndex + 1] ?? null;\n const handleFocusedViewChange = useEventCallback((viewToFocus, hasFocus) => {\n if (hasFocus) {\n // Focus event\n setFocusedView(viewToFocus);\n } else {\n // Blur event\n setFocusedView(prevFocusedView => viewToFocus === prevFocusedView ? null : prevFocusedView // If false the blur is due to view switching\n );\n }\n onFocusedViewChange?.(viewToFocus, hasFocus);\n });\n const handleChangeView = useEventCallback(newView => {\n // always keep the focused view in sync\n handleFocusedViewChange(newView, true);\n if (newView === view) {\n return;\n }\n setView(newView);\n if (onViewChange) {\n onViewChange(newView);\n }\n });\n const goToNextView = useEventCallback(() => {\n if (nextView) {\n handleChangeView(nextView);\n }\n });\n const setValueAndGoToNextView = useEventCallback((value, currentViewSelectionState, selectedView) => {\n const isSelectionFinishedOnCurrentView = currentViewSelectionState === 'finish';\n const hasMoreViews = selectedView ?\n // handles case like `DateTimePicker`, where a view might return a `finish` selection state\n // but when it's not the final view given all `views` -> overall selection state should be `partial`.\n views.indexOf(selectedView) < views.length - 1 : Boolean(nextView);\n const globalSelectionState = isSelectionFinishedOnCurrentView && hasMoreViews ? 'partial' : currentViewSelectionState;\n onChange(value, globalSelectionState, selectedView);\n\n // The selected view can be different from the active view,\n // This can happen if multiple views are displayed, like in `DesktopDateTimePicker` or `MultiSectionDigitalClock`.\n let currentView = null;\n if (selectedView != null && selectedView !== view) {\n currentView = selectedView;\n } else if (isSelectionFinishedOnCurrentView) {\n currentView = view;\n }\n if (currentView == null) {\n return;\n }\n const viewToNavigateTo = views[views.indexOf(currentView) + 1];\n if (viewToNavigateTo == null || !stepNavigation.areViewsInSameStep(currentView, viewToNavigateTo)) {\n return;\n }\n handleChangeView(viewToNavigateTo);\n });\n return _extends({}, stepNavigation, {\n view,\n setView: handleChangeView,\n focusedView,\n setFocusedView: handleFocusedViewChange,\n nextView,\n previousView,\n // Always return up-to-date default view instead of the initial one (i.e. defaultView.current)\n defaultView: views.includes(openTo) ? openTo : views[0],\n goToNextView,\n setValueAndGoToNextView\n });\n}","import * as React from 'react';\nimport { getMeridiem, convertToMeridiem } from \"../utils/time-utils.js\";\nimport { usePickerAdapter } from \"../../hooks/usePickerAdapter.js\";\nexport function useNextMonthDisabled(month, {\n disableFuture,\n maxDate,\n timezone\n}) {\n const adapter = usePickerAdapter();\n return React.useMemo(() => {\n const now = adapter.date(undefined, timezone);\n const lastEnabledMonth = adapter.startOfMonth(disableFuture && adapter.isBefore(now, maxDate) ? now : maxDate);\n return !adapter.isAfter(lastEnabledMonth, month);\n }, [disableFuture, maxDate, month, adapter, timezone]);\n}\nexport function usePreviousMonthDisabled(month, {\n disablePast,\n minDate,\n timezone\n}) {\n const adapter = usePickerAdapter();\n return React.useMemo(() => {\n const now = adapter.date(undefined, timezone);\n const firstEnabledMonth = adapter.startOfMonth(disablePast && adapter.isAfter(now, minDate) ? now : minDate);\n return !adapter.isBefore(firstEnabledMonth, month);\n }, [disablePast, minDate, month, adapter, timezone]);\n}\nexport function useMeridiemMode(date, ampm, onChange, selectionState) {\n const adapter = usePickerAdapter();\n const cleanDate = React.useMemo(() => !adapter.isValid(date) ? null : date, [adapter, date]);\n const meridiemMode = getMeridiem(cleanDate, adapter);\n const handleMeridiemChange = React.useCallback(mode => {\n const timeWithMeridiem = cleanDate == null ? null : convertToMeridiem(cleanDate, mode, Boolean(ampm), adapter);\n onChange(timeWithMeridiem, selectionState ?? 'partial');\n }, [ampm, cleanDate, onChange, selectionState, adapter]);\n return {\n meridiemMode,\n handleMeridiemChange\n };\n}","/**\n * TimeClock — Dash wrapper for MUI X TimeClock (@mui/x-date-pickers, Community)\n *\n * An inline time selector (no input / popper / modal). The user drags the clock\n * hand or clicks the numbers to pick hours, minutes, and optionally seconds.\n *\n * Dash boundary contract\n * ----------------------\n * dayjs objects cannot cross the Dash <-> Python boundary, so `value` and\n * `defaultValue` are exchanged as plain strings:\n * - Full wall-time ISO : \"2022-04-17T15:30:00\"\n * - Time-only : \"15:30\" or \"15:30:45\"\n * On every change the component pushes back `value` (full wall-time ISO string),\n * the current `view`, and a convenience `timeData` object — so a callback can use\n * the parsed parts without re-parsing the string.\n *\n * MUI components inside this wrapper follow the Mantine color scheme on ,\n * so the clock re-skins automatically in dark mode (same approach as TreeViewPro).\n */\nimport React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport dayjs from 'dayjs';\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {AdapterDayjs} from '@mui/x-date-pickers/AdapterDayjs';\nimport {TimeClock as MuiTimeClock} from '@mui/x-date-pickers/TimeClock';\nimport {ThemeProvider, createTheme} from '@mui/material/styles';\n\n// --- Color scheme: watch ---------------\nconst readMantineScheme = () => {\n if (typeof document === 'undefined') return 'light';\n const v = document.documentElement.getAttribute('data-mantine-color-scheme');\n return v === 'dark' ? 'dark' : 'light';\n};\n\nconst useMantineColorScheme = () => {\n const [scheme, setScheme] = useState(readMantineScheme);\n useEffect(() => {\n if (typeof document === 'undefined') return undefined;\n const html = document.documentElement;\n const sync = () => setScheme(readMantineScheme());\n const obs = new MutationObserver(sync);\n obs.observe(html, {\n attributes: true,\n attributeFilter: ['data-mantine-color-scheme'],\n });\n sync();\n return () => obs.disconnect();\n }, []);\n return scheme;\n};\n\nconst lightTheme = createTheme({palette: {mode: 'light'}});\nconst darkTheme = createTheme({palette: {mode: 'dark'}});\n\n// --- String <-> dayjs at the Dash boundary ----------------------------------\nconst TIME_ONLY_RE = /^(\\d{1,2}):(\\d{2})(:(\\d{2}))?$/;\n\n/** Parse a Dash string value into a dayjs object (or null). */\nconst parseToDayjs = (val) => {\n if (val === null || val === undefined || val === '') return null;\n if (typeof val !== 'string') return null;\n const m = val.match(TIME_ONLY_RE);\n if (m) {\n // Time-only string: anchor it to today's date so the clock has a date part.\n const base = dayjs().startOf('day');\n const withTime = base\n .hour(parseInt(m[1], 10))\n .minute(parseInt(m[2], 10))\n .second(m[4] ? parseInt(m[4], 10) : 0);\n return withTime.isValid() ? withTime : null;\n }\n const d = dayjs(val);\n return d.isValid() ? d : null;\n};\n\n/**\n * TimeClock lets the user pick a time on an inline clock face (hours, minutes,\n * and optionally seconds) without any input, popper, or modal. Values are\n * exchanged with Dash as strings; on change it emits `value` (wall-time ISO),\n * the current `view`, and a parsed `timeData` convenience object.\n */\nconst TimeClock = (props) => {\n const {\n id,\n value,\n defaultValue,\n views,\n view,\n openTo,\n ampm,\n disabled,\n readOnly,\n autoFocus,\n minutesStep,\n minTime,\n maxTime,\n disableFuture,\n disablePast,\n disableIgnoringDatePartForTimeValidation,\n showViewSwitcher,\n className,\n sx,\n setProps,\n } = props;\n\n const scheme = useMantineColorScheme();\n const theme = scheme === 'dark' ? darkTheme : lightTheme;\n\n // --- Parse incoming string props to dayjs -------------------------------\n const dValue = useMemo(() => parseToDayjs(value), [value]);\n const dDefault = useMemo(() => parseToDayjs(defaultValue), [defaultValue]);\n const dMinTime = useMemo(() => parseToDayjs(minTime), [minTime]);\n const dMaxTime = useMemo(() => parseToDayjs(maxTime), [maxTime]);\n\n // --- Change handlers -> Dash outputs ------------------------------------\n const handleChange = useCallback(\n (newVal) => {\n if (!setProps) return;\n if (!newVal || typeof newVal.isValid !== 'function' || !newVal.isValid()) {\n setProps({\n value: null,\n timeData: {\n hours: null,\n minutes: null,\n seconds: null,\n formatted: null,\n event_timestamp: Date.now(),\n },\n });\n return;\n }\n setProps({\n value: newVal.format('YYYY-MM-DDTHH:mm:ss'),\n timeData: {\n hours: newVal.hour(),\n minutes: newVal.minute(),\n seconds: newVal.second(),\n formatted: newVal.format('HH:mm:ss'),\n event_timestamp: Date.now(),\n },\n });\n },\n [setProps]\n );\n\n const handleViewChange = useCallback(\n (newView) => {\n if (setProps) setProps({view: newView});\n },\n [setProps]\n );\n\n // --- Assemble the controlled/uncontrolled value -------------------------\n const clockProps = {};\n if (value !== undefined && value !== null) {\n clockProps.value = dValue; // controlled\n } else if (defaultValue !== undefined && defaultValue !== null) {\n clockProps.defaultValue = dDefault; // uncontrolled initial\n }\n if (view !== undefined && view !== null) clockProps.view = view;\n\n return (\n
\n \n \n \n \n \n
\n );\n};\n\nTimeClock.defaultProps = {\n views: ['hours', 'minutes'],\n disabled: false,\n readOnly: false,\n autoFocus: false,\n disableFuture: false,\n disablePast: false,\n disableIgnoringDatePartForTimeValidation: false,\n showViewSwitcher: false,\n};\n\nTimeClock.propTypes = {\n /** Dash component id */\n id: PropTypes.string,\n\n // --- Value (string <-> dayjs at the boundary) ---------------------------\n /**\n * Controlled value. Full wall-time ISO (\"2022-04-17T15:30:00\") or time-only\n * (\"15:30\" / \"15:30:45\"). Also an OUTPUT: updated on every change with a\n * full wall-time ISO string.\n */\n value: PropTypes.string,\n\n /** Uncontrolled initial value (same string formats as `value`). */\n defaultValue: PropTypes.string,\n\n // --- Views --------------------------------------------------------------\n /** Which views to render, in order. Default [\"hours\", \"minutes\"]. */\n views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'minutes', 'seconds'])),\n\n /** Controlled visible view. Also an OUTPUT — updated when the view changes. */\n view: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /** Which view to open first (uncontrolled). */\n openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n // --- Format -------------------------------------------------------------\n /** Force 12h (true) or 24h (false). Omit to use the locale default. */\n ampm: PropTypes.bool,\n\n // --- Form props ---------------------------------------------------------\n /** Disable the whole clock. */\n disabled: PropTypes.bool,\n\n /** Make the clock read-only (no editing). */\n readOnly: PropTypes.bool,\n\n /** Auto-focus the clock on mount. */\n autoFocus: PropTypes.bool,\n\n // --- Constraints --------------------------------------------------------\n /** Step (in minutes) between selectable minute values. */\n minutesStep: PropTypes.number,\n\n /** Minimum selectable time (ISO or time-only string). */\n minTime: PropTypes.string,\n\n /** Maximum selectable time (ISO or time-only string). */\n maxTime: PropTypes.string,\n\n /** Disable times in the future (relative to now). */\n disableFuture: PropTypes.bool,\n\n /** Disable times in the past (relative to now). */\n disablePast: PropTypes.bool,\n\n /**\n * When true, min/max time comparisons include the date part. When false\n * (default), only the time-of-day is compared.\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /** Show the hours/minutes/seconds view-switch arrow buttons. */\n showViewSwitcher: PropTypes.bool,\n\n // --- Appearance ---------------------------------------------------------\n /** CSS class applied to the wrapping div. */\n className: PropTypes.string,\n\n /** MUI sx styling object applied to the TimeClock. */\n sx: PropTypes.object,\n\n // --- Output props -------------------------------------------------------\n /**\n * Parsed convenience output, updated on every change:\n * { hours, minutes, seconds, formatted (\"HH:mm:ss\"), event_timestamp }.\n */\n timeData: PropTypes.exact({\n hours: PropTypes.number,\n minutes: PropTypes.number,\n seconds: PropTypes.number,\n formatted: PropTypes.string,\n event_timestamp: PropTypes.number,\n }),\n\n /** Dash setProps callback */\n setProps: PropTypes.func,\n};\n\nexport default TimeClock;\n"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","module","exports","e","LTS","LT","L","LL","LLL","LLLL","t","n","r","i","o","s","a","f","this","h","zone","offset","match","u","indexOf","concat","d","meridiem","c","A","afternoon","Q","month","S","milliseconds","SS","SSS","ss","m","mm","H","HH","hh","D","DD","Do","ordinal","day","replace","w","ww","M","MM","MMM","map","slice","Error","MMMM","Y","YY","year","YYYY","Z","ZZ","l","formats","toUpperCase","length","regex","parser","exec","call","hours","p","customParseFormat","parseTwoDigitYear","prototype","parse","date","utc","args","$u","$locale","Ls","$d","Date","minutes","seconds","week","getDate","getFullYear","v","getMonth","g","y","UTC","toDate","init","$L","locale","format","Array","apply","isValid","k","Symbol","for","Object","hasOwnProperty","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","key","ref","__self","__source","q","b","defaultProps","$$typeof","type","props","_owner","current","jsx","jsxs","window","React","shim","objectIs","is","x","useSyncExternalStore","useRef","useEffect","useMemo","useDebugValue","useSyncExternalStoreWithSelector","subscribe","getSnapshot","getServerSnapshot","selector","isEqual","instRef","inst","hasValue","value","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","z","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","name","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","render","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","targetStatics","sourceStatics","descriptor","$","weekdays","split","months","String","join","utcOffset","Math","abs","floor","clone","add","ceil","ms","toLowerCase","_","O","$x","$offset","NaN","test","substring","$y","$M","$D","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","weekStart","$set","min","daysInMonth","get","Number","round","subtract","invalidDate","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","forEach","extend","$i","isDayjs","en","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_CLIENT_REFERENCE","getModuleId","bind","weekYear","isoWeekYear","isoWeek","offsetName","isBetween","yearStart","weeks","useState","useLayoutEffect","checkIfSnapshotChanged","latestGetSnapshot","nextValue","error","document","createElement","_useState","forceUpdate","kSampleStepSize","float32ArraySupported","Float32Array","aA1","aA2","B","C","calcBezier","aT","getSlope","LinearEasing","mX1","mY1","mX2","mY2","sampleValues","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","getTForX","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","id","loaded","__webpack_modules__","getter","__esModule","obj","mode","then","ns","create","def","definition","enumerable","chunkId","Promise","all","reduce","promises","globalThis","Function","prop","url","done","push","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","fn","setTimeout","target","head","appendChild","toStringTag","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","getCurrentScript","doc_scripts","filter","async","text","textContent","jsonpScriptSrc","__jsonpScriptSrc__","isLocal","srcFragments","fileFragments","splice","installedChunks","j","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","self","ponyfillGlobal","__MUI_LICENSE_INFO__","LicenseInfo","getLicenseInfo","getLicenseKey","setLicenseKey","assign","fastObjectShallowCompare","aLength","bLength","sendMuiXTelemetryEvent","licenseVerification","_keyStr","base64Decode","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","charAt","fromCharCode","sin","PI","LICENSE_STATUS","PLAN_SCOPES","LICENSE_MODELS","expiryReg","orderReg","PRO_PACKAGES_AVAILABLE_IN_INITIAL_PRO_PLAN","verifyLicense","releaseInfo","licenseKey","packageName","status","NotFound","hash","substr","encoded","words","unescape","encodeURI","charCodeAt","md5","Invalid","license","encodedLicense","includes","expiryTimestamp","orderId","parseInt","isNaN","err","version","licenseModel","planScope","planVersion","expiryDate","decodeLicenseVersion1","licenseInfo","token","el","orderNum","decodeLicenseVersion2","decodeLicense","console","pkgTimestamp","ExpiredVersion","acceptedScopes","isPlanScopeSufficient","Valid","NotAvailableInInitialProPlan","OutOfScope","isCodeSandbox","hostname","endsWith","showError","log","sharedLicenseStatuses","useLicenseVerifier","contextKey","licenseVerifier","plan","licenseStatus","fullPackageName","packageReleaseInfo","rootPackageName","showLicenseKeyPlanMismatchError","showMissingLicenseKeyError","ExpiredAnnualGrace","showExpiredAnnualGraceLicenseKeyError","meta","ExpiredAnnual","showExpiredAnnualLicenseKeyError","showExpiredPackageVersionError","getLicenseErrorMessage","MemoizedWatermark","style","position","pointerEvents","color","zIndex","width","textAlign","bottom","right","letterSpacing","fontSize","globalId","maybeReactUseId","useId","idOverride","reactId","defaultId","setDefaultId","useGlobalId","useStoreImplementation","reactMajor","store","a1","a2","a3","getSelection","state","Store","constructor","listeners","Set","updateTick","delete","setState","newState","currentTick","it","values","result","next","listener","update","changes","use","useChartAnimation","params","animation","skip","skipAnimation","disableAnimation","disableCalled","skipAnimationRequests","matchMedia","disableAnimationCleanup","handleMediaChange","matches","mql","addEventListener","removeEventListener","instance","useEffectAfterFirstRender","effect","deps","isFirstRender","getDefaultizedParams","getInitialState","DEFAULT_X_AXIS_KEY","DEFAULT_Y_AXIS_KEY","DEFAULT_MARGINS","top","left","NOT_FOUND","ensureIsArray","item","isArray","referenceEqualityCheck","lruMemoize","func","equalityCheckOrOptions","providedOptions","equalityCheck","maxSize","resultEqualityCheck","comparator","createCacheKeyComparator","resultsCount","cache","equals","entry","put","getEntries","clear","createSingletonCache","entries","cacheIndex","findIndex","unshift","pop","createLruCache","memoized","matchingEntry","find","clearCache","resetResultsCount","Ref","WeakRef","deref","createCacheNode","weakMapMemoize","options","fnNode","lastResult","cacheNode","arg","objectCache","WeakMap","objectNode","primitiveCache","Map","primitiveNode","terminatedNode","lastResultValue","createSelectorCreator","memoizeOrOptions","memoizeOptionsFromArgs","createSelectorCreatorOptions","memoize","memoizeOptions","createSelector2","createSelectorArgs","recomputations","dependencyRecomputations","directlyPassedOptions","resultFunc","errorMessage","TypeError","assertIsFunction","combinedOptions","argsMemoize","argsMemoizeOptions","devModeChecks","finalMemoizeOptions","finalArgsMemoizeOptions","dependencies","array","every","itemTypes","assertIsArrayOfFunctions","getDependencies","memoizedResultFunc","inputSelectorResults","inputSelectorArgs","collectInputSelectorResults","resetDependencyRecomputations","resetRecomputations","withTypes","createSelector","createStructuredSelector","inputSelectorsObject","selectorCreator","object","assertIsObject","inputSelectorKeys","structuredSelector","composition","index","reselectCreateSelector","other","va","vb","vc","vd","ve","vf","vg","createSelectorMemoizedWithOptions","inputs","nextCacheId","combiner","nSelectors","argsLength","max","cacheKey","__cacheKey__","selectors","reselectArgs","selectorArgs","createSelectorMemoized","selectorChartRawXAxis","cartesianAxis","selectorChartRawYAxis","selectorChartAxisSizes","yAxis","acc","axis","zoom","slider","enabled","size","xAxis","height","selectorChartDimensionsState","dimensions","selectorChartDrawingArea","margin","marginTop","marginRight","marginBottom","marginLeft","axisSizeLeft","axisSizeRight","axisSizeTop","axisSizeBottom","selectorChartSvgWidth","dimensionsState","selectorChartSvgHeight","selectorChartPropsWidth","propsWidth","selectorChartPropsHeight","propsHeight","defaultizeMargin","defaultMargin","useChartDimensions","svgRef","hasInSize","stateRef","displayError","initialCompute","computeRun","innerWidth","setInnerWidth","innerHeight","setInnerHeight","computeSize","mainEl","computedStyle","node","doc","ownerDocument","defaultView","ownerWindow","getComputedStyle","newHeight","parseFloat","newWidth","computedSize","elementToObserve","ResizeObserver","animationFrame","observer","requestAnimationFrame","observe","cancelAnimationFrame","unobserve","drawingArea","isXInside","isYInside","isPointInside","targetElement","closest","useChartExperimentalFeatures","experimentalFeatures","globalChartDefaultId","useChartId","providedChartId","chartId","rainbowSurgePaletteLight","rainbowSurgePaletteDark","rainbowSurgePalette","defaultizeSeries","series","colors","seriesConfig","seriesGroups","seriesData","seriesIndex","seriesWithDefaultValues","getSeriesWithDefaultValues","seriesOrder","identifier","serializer","identifierSerializer","useChartSeries","dataset","theme","defaultizedSeries","serializeIdentifier","EMPTY_ARRAY","ActiveGesturesRegistry","activeGestures","registerActiveGesture","element","gesture","has","unregisterActiveGesture","elementGestures","getActiveGestures","from","isGestureActive","destroy","unregisterElement","KeyboardManager","pressedKeys","initialize","handleKeyDown","handleKeyUp","clearKeys","areKeysPressed","navigator","platform","PointerManager","preventEventInterruption","pointers","gestureHandlers","root","getRootNode","composed","body","touchAction","passive","setupEventListeners","registerGestureHandler","handler","getPointers","handlePointerEvent","handleInterruptEvents","pointerType","preventDefault","cancelEvent","PointerEvent","bubbles","cancelable","firstPointer","defineProperties","clientX","clientY","pointerId","pointer","updatedPointer","notifyHandlers","createPointerData","pageX","pageY","timeStamp","isPrimary","pressure","srcEvent","GestureManager","gestureTemplates","elementGestureMap","activeGesturesRegistry","keyboardManager","pointerManager","gestures","addGestureTemplate","warn","setGestureOptions","gestureName","CustomEvent","detail","dispatchEvent","setGestureState","registerElement","gestureNames","gestureOptions","registerSingleGesture","gestureTemplate","gestureInstance","unregisterAllGestures","eventList","abort","animationcancel","animationend","animationiteration","animationstart","auxclick","beforeinput","beforetoggle","blur","cancel","canplay","canplaythrough","change","click","close","compositionend","compositionstart","compositionupdate","contextlost","contextmenu","contextrestored","copy","cuechange","cut","dblclick","drag","dragend","dragenter","dragleave","dragover","dragstart","drop","durationchange","emptied","ended","focus","focusin","focusout","formdata","gotpointercapture","invalid","keydown","keypress","keyup","load","loadeddata","loadedmetadata","loadstart","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","paste","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","scrollend","securitypolicyviolation","seeked","seeking","select","selectionchange","selectstart","slotchange","stalled","submit","suspend","timeupdate","toggle","touchcancel","touchend","touchmove","touchstart","transitioncancel","transitionend","transitionrun","transitionstart","volumechange","waiting","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend","wheel","beforematch","pointerrawupdate","Gesture","customData","stopPropagation","preventIf","requiredKeys","pointerMode","pointerOptions","gestureRegistry","gesturesRegistry","changeOptionsEventName","handleOptionsChange","changeStateEventName","handleStateChange","updateOptions","getBaseConfig","getEffectiveConfig","baseConfig","pointerModeOverrides","updateState","stateChanges","getTargetElement","isActive","contains","ShadowRoot","composedPath","shouldPreventGesture","effectiveConfig","isPointerTypeAllowed","PointerGesture","unregisterHandler","originalTarget","super","minPointers","maxPointers","Infinity","isWithinPointerCount","config","getRelevantPointers","calculatedTarget","calculateCentroid","sum","MAIN_THRESHOLD","createEventName","phase","PanGesture","startPointers","startCentroid","lastCentroid","movementThresholdReached","totalDeltaX","totalDeltaY","activeDeltaX","activeDeltaY","lastDirection","vertical","horizontal","mainAxis","lastDeltas","direction","threshold","overrides","structuredClone","resetState","pointersArray","relevantPointers","oldCentroid","newCentroid","offsetX","offsetY","currentCentroid","distanceDeltaX","distanceDeltaY","distance","sqrt","moveDirection","previous","deltaX","deltaY","isDiagonal","angle","atan2","isDiagonalMovement","mainMovement","horizontalThreshold","verticalThreshold","getDirection","lastDeltaX","lastDeltaY","allowedDirections","verticalAllowed","horizontalAllowed","isDirectionAllowed","emitPanEvent","remainingPointers","removedPointerId","timeElapsed","velocityX","velocityY","velocity","customEventData","initialCentroid","centroid","eventName","domEvent","MoveGesture","lastPosition","handleElementEnter","handleElementLeave","currentPosition","emitMoveEvent","TapGesture","currentTapCount","lastTapTime","maxDistance","taps","cancelTap","fireTapEvent","tapCount","PressGesture","timerId","startTime","pressThresholdReached","duration","clearPressTimer","cancelPress","emitPressEvent","currentDuration","getDistance","pointA","pointB","calculateAverageDistance","totalDistance","pairCount","PinchGesture","startDistance","lastDistance","lastScale","lastTime","totalScale","deltaScale","emitPinchEvent","initialDistance","newDistance","currentDistance","distanceChange","scale","scaleChange","deltaTime","TurnWheelGesture","totalDeltaZ","sensitivity","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","initialDelta","invert","handleWheelEvent","deltaZ","emitWheelEvent","deltaMode","TapAndDragGesture","dragTimeoutId","tapMaxDistance","dragTimeout","dragThreshold","dragDirection","tapGesture","panGesture","tapHandler","dragStartHandler","dragMoveHandler","dragEndHandler","restoreTouchAction","setTouchAction","PressAndDragGesture","pressDuration","pressMaxDistance","pressGesture","pressHandler","useChartInteractionListener","gestureManagerRef","svg","gestureManager","addInteractionListener","interaction","callback","cleanup","updateZoomInteractionListeners","CHART_CORE_PLUGINS","_objectWithoutPropertiesLoose","_excluded","extractPluginParamsFromProps","_ref","plugins","paramsLookup","plugin","pluginParams","propName","ChartContext","UNINITIALIZED","useLazyRef","initArg","EMPTY","previousState","dispose","nextState","onMount","selectorChartSeriesState","selectorChartDefaultizedSeries","seriesState","selectorChartSeriesConfig","selectorChartDataset","selectorChartSeriesProcessed","processedSeries","group","seriesProcessor","applySeriesProcessors","selectorChartSeriesLayout","processingDetected","seriesLayout","processor","thisSeries","newValue","applySeriesLayout","ZOOM_SLIDER_MARGIN","ZOOM_SLIDER_PREVIEW_SIZE","DEFAULT_ZOOM_SLIDER_SIZE","DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE","DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP","DEFAULT_PIE_CHART_MARGIN","defaultZoomOptions","minStart","maxEnd","step","minSpan","maxSpan","panning","filterMode","reverse","preview","showTooltip","defaultizeZoom","axisId","axisDirection","defaultizeXAxis","inAxes","offsets","none","parsedAxes","scaleType","axisConfig","dataKey","defaultPosition","defaultHeight","label","sharedConfig","defaultizeYAxis","defaultWidth","createScalarFormatter","tickNumber","zoomScale","context","domain","tickFormat","isBandScaleConfig","scaleConfig","isPointScaleConfig","ascending","descending","bisector","compare1","compare2","delta","lo","hi","mid","zero","center","ascendingBisect","bisectRight","initRange","range","interpolator","unknown","bisect","invertExtent","factory","parent","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","trim","rgbn","Rgb","rgba","hsla","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","basis","t1","v0","v1","v2","v3","t2","t3","channels","displayable","formatHex8","formatHsl","pow","clamp","nogamma","linear","rgbGamma","exponential","gamma","start","end","rgbSpline","spline","rgbBasis","genericArray","nb","na","setTime","reA","reB","source","am","bm","bs","bi","lastIndex","one","string","ArrayBuffer","isView","DataView","unit","identity","normalize","bimap","interpolate","d0","d1","r0","r1","polymap","transformer","transform","untransform","piecewise","rescale","clamper","rangeRound","continuous","e10","e5","e2","tickSpec","stop","count","power","log10","factor","i1","i2","inc","ticks","tickIncrement","tickStep","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","comma","precision","formatDecimalParts","toExponential","coefficient","exponent","toFixed","toLocaleString","toPrecision","formatRounded","formatPrefix","prefixes","linearish","precisionPrefix","precisionRound","precisionFixed","nice","prestep","i0","maxIter","sequential","t0","k10","x0","x1","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","prefix","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","padding","InternMap","keyof","_intern","_key","intern_get","intern_set","intern_delete","implicit","getSequentialColorScale","thresholds","getOrdinalColorScale","unknownColor","getColorScale","getTickNumber","defaultTickNumber","tickMaxStep","tickMinStep","maxTicks","minTicks","defaultizedTickNumber","scaleTickNumberByRange","getDefaultTickNumber","dimension","interval","transformLog","transformExp","exp","transformLogn","transformExpn","pow10","isFinite","reflect","logs","pows","base","E","log2","logp","powp","transformPow","transformSqrt","transformSquare","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationYear","timeInterval","floori","offseti","field","millisecond","second","getUTCSeconds","timeMinute","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","utcDate","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","names","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","time","transformSymlog","log1p","transformSymexp","expm1","symlog","constant","scaleSymlog","originalTicks","negativeScale","linearScale","positiveScale","generateScales","negativeLogTickCount","linearTickCount","positiveLogTickCount","tick","finalTicks","linearTicks","at","positiveTicks","extent","negativeScaleDomain","negativeScaleExtent","negativeScaleTickCount","linearScaleDomain","linearScaleExtent","linearScaleTickCount","positiveScaleDomain","positiveScaleExtent","positiveScaleTickCount","negativeTickFormat","linearTickFormat","positiveTickFormat","getScale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","utcFormats","parses","parseSpecifier","newParse","X","utcParse","formatLocale","isDateData","createDateFormatter","timeScale","cartesianInstance","polarInstance","cartesianSeriesTypes","types","addType","getTypes","polarSeriesTypes","isCartesianSeriesType","seriesType","isCartesianSeries","isOrdinalScale","bandwidth","isBandScale","paddingOuter","computeAxisValue","scales","formattedSeries","allAxis","zoomMap","domains","axisIds","axisIdsTriggeringTooltip","defaultAxisId","tooltipAxesIds","chartType","tooltipAxes","axisTooltipGetter","getAxisTriggerTooltip","completeAxis","eachAxis","zoomRange","getRange","rawTickNumber","triggerTooltip","ignoreTooltip","scaleRange","desiredCategoryGapRatio","categoryGapRatio","ignoreGapRatios","shouldIgnoreGapRatios","barGapRatio","colorScale","colorMap","dateFormatter","valueFormatter","continuousAxis","isDefined","createDiscreteScaleGetAxisFilter","axisData","zoomStart","zoomEnd","maxIndex","minVal","maxVal","dataIndex","createContinuousScaleGetAxisFilter","val","createZoomLookup","axes","defaultizedZoom","selectorPreferStrictDomainInLineCharts","features","Boolean","preferStrictDomainInLineCharts","JSON","stringify","scaleBand","ordinalRange","isRound","paddingInner","adjustedStart","finalStart","finalBandwidth","arg0","arg1","scalePoint","originalCopy","copied","getNormalizedAxisScale","zoomScaleRange","rangeGap","zoomGap","axisExtremumCallback","axisIndex","getFilters","xExtremumGetter","yExtremumGetter","isDefaultAxis","getAxisExtrema","cartesianChartTypes","extrema","niceDomain","calculateInitialDomainAndTickNumber","minData","maxData","domainLimit","getDomainLimit","axisExtrema","getActualAxisExtrema","calculateFinalDomain","seriesId","line","xAxisId","getAxisDomainLimit","FlatQueue","ids","priority","pos","parentValue","last","halfLen","child","peek","peekValue","shrink","ARRAY_TYPES","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float64Array","Flatbush","byteOffset","byteLength","buffer","magic","versionAndType","ArrayType","nodeSize","numItems","ArrayBufferType","numNodes","_levelBounds","IndexArrayType","arrayTypeIndex","nodesByteSize","BYTES_PER_ELEMENT","_boxes","_indices","_pos","minX","minY","maxX","maxY","_queue","boxes","finish","hilbertValues","hilbert","sort","nodeIndex","nodeMinX","nodeMinY","nodeMaxX","nodeMaxY","search","filterFn","queue","results","upperBound","neighbors","maxResults","maxDistSq","sqDistFn","sqDist","outer","dist","dx","dy","arr","indices","pivot","swap","temp","selectorChartZoomState","selectorChartHasZoom","xAxes","yAxes","selectorChartZoomIsInteracting","isInteracting","selectorChartZoomMap","zoomData","zoomItemMap","zoomItem","createZoomMap","selectorChartAxisZoomData","selectorChartZoomOptionsLookup","selectorChartAxisZoomOptionsLookup","axisLookup","selectorDefaultXAxisTickNumber","selectorDefaultYAxisTickNumber","selectorChartXAxisWithDomains","ordinalTimeTicks","findLast","selectorChartYAxisWithDomains","selectorChartZoomAxisFilters","zoomOptions","xDomains","yDomains","hasFilter","filters","currentAxisId","seriesXAxisId","seriesYAxisId","createGetAxisFilters","selectorChartFilteredXDomains","filteredDomains","zoomOption","selectorChartFilteredYDomains","selectorChartNormalizedXScales","selectorChartNormalizedYScales","selectorChartXScales","normalizedScales","zoomedRange","selectorChartYScales","selectorChartXAxis","selectorChartYAxis","selectorChartAxis","selectorChartRawAxis","selectorChartDefaultXAxisId","selectorChartDefaultYAxisId","EMPTY_MAP","selectorChartSeriesEmptyFlatbushMap","selectorChartSeriesFlatbushMap","allSeries","xAxesScaleMap","yAxesScaleMap","defaultXAxisId","defaultYAxisId","validSeries","scatter","flatbushMap","yAxisId","flatbush","originalXScale","originalYScale","datum","getAsANumber","getAxisIndex","pointerValue","valueAsNumber","closestIndex","pointValue","getAxisValue","invertedValue","getSVGPoint","pt","createSVGPoint","matrixTransform","getScreenCTM","inverse","selectInteraction","selectorChartsInteractionIsInitialized","selectorChartsInteractionPointer","selectorChartsInteractionPointerX","selectorChartsInteractionPointerY","selectorChartsLastInteraction","lastUpdate","isDeepEqual","entriesA","entryA","flags","indexGetter","selectChartsInteractionAxisIndex","selectorChartsInteractionXAxisIndex","selectorChartsInteractionYAxisIndex","selectorChartAxisInteraction","valueGetter","indexes","selectorChartsInteractionXAxisValue","xIndex","selectorChartsInteractionYAxisValue","yIndex","selectorChartsInteractionTooltipXAxes","selectorChartsInteractionTooltipYAxes","selectorChartsInteractionAxisTooltip","xTooltip","yTooltip","checkHasInteractionPlugin","setPointerCoordinate","AXIS_CLICK_SERIES_TYPES","useChartCartesianAxis","onHighlightedAxisChange","isInteractionEnabled","xAxisWithScale","xAxisIds","yAxisWithScale","yAxisIds","highlightedAxis","usedXAxis","usedYAxis","useStoreEffect","prevAxisInteraction","nextAxisInteraction","itemIndex","hasInteractionPlugin","disableAxisListener","moveEndHandler","pan","cleanInteraction","panEndHandler","move","pressEndHandler","gestureHandler","srvEvent","svgPoint","buttons","hasPointerCapture","releasePointerCapture","moveHandler","panHandler","onAxisClick","axisClickHandler","isXAxis","USED_AXIS_ID","axisValue","seriesValues","seriesTypeConfig","seriesItem","providedXAxisId","providedYAxisId","axisKey","defaultizedXAxis","defaultizedYAxis","controlledCartesianAxisHighlight","useChartTooltip","removeTooltipItem","itemToRemove","prevItem","tooltip","setTooltipItem","newItem","useChartInteraction","setLastUpdateSource","coordinate","addDefaultId","processColorMap","getZAxisState","zAxis","zAxisLookup","defaultizedId","useChartZAxis","useChartHighlight","highlightedItem","highlight","clearHighlight","onHighlightChange","prevHighlight","isControlled","setHighlight","findMinMax","createResult","getBaseExtremum","getValueExtremum","stackedData","seriesMin","seriesMax","seriesAcc","order","s0","s1","stackValue","stackSeries","stack","oz","sz","peaks","peak","vi","vj","sums","StackOrder","appearance","insideOut","tops","bottoms","StackOffset","expand","diverging","seriesCount","numericOrder","pointCount","pointIndex","positiveSum","negativeSum","currentSeries","dataPoint","difference","silhouette","wiggle","s2","si","sij0","s3","sk","getStackingGroups","defaultStrategy","stackingGroups","stackIndex","stackOrder","stackOffset","stackingOrder","stackingOffset","barValueFormatter","getLabel","getSeriesColorFn","colorGetter","verticalLayout","layout","bandColorScale","valueColorScale","bandValues","getSeriesColor","getNonEmptySeriesArray","availableSeriesTypes","flatMap","seriesOfType","getPreviousNonEmptySeries","nonEmptySeries","currentSeriesIndex","getMaxSeriesLength","maxLengths","getNextNonEmptySeries","seriesHasData","createGetNextIndexFocusedItem","compatibleSeriesTypes","currentItem","nextSeries","maxLength","createGetPreviousIndexFocusedItem","previousSeries","createGetNextSeriesFocusedItem","createGetPreviousSeriesFocusedItem","outSeriesTypes","getBandSize","bandWidth","groupCount","gapRatio","barWidth","getBarDimensions","xAxisConfig","yAxisConfig","numberOfGroups","groupIndex","baseScaleConfig","barOffset","xScale","yScale","baseValue","seriesValue","valueCoordinates","minValueCoord","maxValueCoord","barSize","minBarSize","startCoordinate","invertStartCoordinate","shouldInvertStartCoordinate","identifierSerializerSeriesIdDataIndex","barSeriesConfig","d3Dataset","completedSeries","stackingGroup","stackedSeries","labelMarkType","colorProcessor","legendGetter","formattedLabel","markType","tooltipGetter","getColor","formattedValue","tooltipItemPositionGetter","axesConfig","placement","itemSeries","bar","keyboardFocusHandler","scatterSeriesConfig","fromEntries","datasetKeys","missingKeys","markerSize","zColorScale","yColorScale","xColorScale","xValue","yValue","hasOwn","lineSeriesConfig","area","isArea","seriesExtremums","getValues","stackedValue","getSeriesExtremums","baseline","cos","epsilon","pi","halfPi","tau","asin","deg2rad","defaultRad","getPercentageValue","refValue","percentage","getPieCoordinates","drawing","cx","cxParam","cy","cyParam","availableRadius","defaultSeriesConfig","pie","arcs","sortValues","startAngle","endAngle","padAngle","a0","da","pa","paddingAngle","getSortingComparator","sortingValues","piePoint","seriesLayoutRecord","innerRadius","outerRadius","arcLabelRadius","inner","radius","available","itemId","point","dataItem","points","y0","y1","defaultPlugins","ChartProvider","contextValue","inPlugins","publicAPI","inputApiRef","fallbackPublicApiRef","initializeInputApiRef","useChartApiInitialization","apiRef","innerChartRootRef","innerSvgRef","storeRef","initialState","pluginResponse","chartRootRef","useCharts","Provider","ChartsSlotsContext","useChartsSlots","ChartsSlotsProvider","slots","slotProps","defaultSlots","resolveProps","defaultSlotProps","slotKey","slotPropName","getThemeProps","components","isPlainObject","iterator","deepClone","createBreakpoints","breakpoints","xs","sm","md","lg","xl","sortedValues","breakpointsAsArray","breakpoint1","breakpoint2","sortBreakpointsValues","up","down","between","endIndex","only","not","keyIndex","sortContainerQueries","css","containerQueries","sorted","startsWith","borderRadius","defaultBreakpoints","defaultContainerQueries","containerName","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","breakpoint","breakpointKeys","isCqShorthand","containerKey","shorthand","containerQuery","getContainerQuery","cssKey","removeUnusedBreakpoints","breakpointOutput","formatMuiErrorMessage","code","URL","searchParams","append","getPath","path","checkVars","vars","getStyleValue","themeMapping","propValueFinal","userValue","cssProperty","themeKey","filterProps","properties","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","property","dir","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","defaultValue","themeSpacing","transformed","createUnarySpacing","cssProperties","getStyleFromPropValue","resolveCssProperty","spacing","createSpacing","spacingInput","mui","argsInput","argument","styles","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","gap","columnGap","rowGap","paletteTransform","sizingTransform","maxWidth","minWidth","maxHeight","minHeight","defaultSxConfig","bgcolor","backgroundColor","pr","pb","pl","px","py","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mr","mb","ml","mx","my","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","display","overflow","textOverflow","visibility","whiteSpace","flexBasis","flexDirection","flexWrap","justifyContent","alignItems","alignContent","flex","flexGrow","flexShrink","alignSelf","justifyItems","justifySelf","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","boxShadow","boxSizing","font","fontFamily","fontStyle","fontWeight","textTransform","lineHeight","typography","styleFunctionSx","getThemeValue","sx","nested","unstable_sxConfig","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsInput","breakpointsInOrder","createEmptyBreakpointObject","breakpointsKeys","styleKey","maybeFn","callIfFn","breakpointsValues","objects","allKeys","union","objectsHaveSameKeys","modularCssLayers","unstable_createStyleFunctionSx","applyStyles","colorSchemes","getColorSchemeSelector","palette","paletteInput","shape","shapeInput","muiTheme","themeInput","toContainerQuery","mediaQuery","attachCq","cssContainerQueries","unstable_sx","StyleSheet","_this","_insertTag","tag","before","tags","insertionPoint","nextSibling","prepend","container","firstChild","insertBefore","isSpeedy","speedy","ctr","nonce","_proto","hydrate","nodes","insert","rule","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","flush","_tag$parentNode","pattern","replacement","indexof","begin","column","character","characters","return","caret","alloc","dealloc","delimit","delimiter","whitespace","escaping","commenter","COMMENT","compile","rules","rulesets","pseudo","declarations","atrule","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","identifierWithPointTracking","fixedElements","compat","isImplicitRule","parsed","toRules","getRules","parentRules","removeLabel","defaultStylisPlugins","ssrStyles","querySelectorAll","_insert","stylisPlugins","inserted","nodesToHydrate","attrib","currentSheet","collection","finalizingPlugins","serialized","shouldCache","stylis","registered","registeredStyles","classNames","rawClassName","className","isStringTag","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexPositive","flexNegative","flexOrder","gridRowEnd","gridRowSpan","gridRowStart","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","orphans","tabSize","widows","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p1","p2","cursor","handleInterpolation","mergedProps","interpolation","componentSelector","__emotion_styles","keyframes","anim","serializedStyles","asString","interpolated","_i","createStringFromObject","previousCursor","cached","labelPattern","stringMode","strings","raw","identifierName","str","len","useInsertionEffect","useInsertionEffectWithLayoutFallback","EmotionCacheContext","HTMLElement","forwardRef","useContext","typePropName","Insertion","Emotion$1","cssProp","WrappedComponent","newProps","_key2","defaultTheme","contextTheme","systemDefaultTheme","useThemeWithoutDefault","clampWrapper","decomposeColor","hexToRgb","marker","colorSpace","shift","private_safeColorChannel","warning","decomposedColor","idx","colorChannel","recomposeColor","hslToRgb","getLuminance","alpha","private_safeAlpha","darken","private_safeDarken","lighten","private_safeLighten","private_safeEmphasize","emphasize","A100","A200","A400","A700","getLight","primary","secondary","disabled","divider","background","paper","default","action","active","hover","hoverOpacity","selected","selectedOpacity","disabledBackground","disabledOpacity","focusOpacity","activatedOpacity","light","getDark","icon","dark","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","main","createPalette","contrastThreshold","getDefaultPrimary","getDefaultSecondary","getDefaultError","info","getDefaultInfo","success","getDefaultSuccess","getDefaultWarning","getContrastText","contrastText","foreground","lumA","lumB","getContrastRatio","augmentColor","mainShade","lightShade","darkShade","modeHydrated","common","createGetCssVar","appendVar","fallbacks","prepareTypographyVars","fontVariant","fontStretch","assignNestedKeys","arrayKeys","cssVarsParser","shouldSkipGeneratingVar","varsWithDefaults","shouldSkipPaths","cssVar","resolvedValue","getCssValue","recurse","parentKeys","caseAllCaps","defaultFontFamily","createTypography","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem","pxToRem2","coef","buildVariant","casing","variants","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","inherit","createShadow","easing","easeInOut","easeOut","easeIn","sharp","shortest","shorter","short","standard","complex","enteringScreen","leavingScreen","formatMs","getAutoHeightDuration","createTransitions","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","delay","animatedProp","mobileStepper","fab","speedDial","appBar","drawer","modal","snackbar","isSerializable","stringifyTheme","baseTheme","serializableTheme","serializeTheme","mixinsInput","transitions","transitionsInput","typographyInput","generateThemeVars","systemTheme","toolbar","shadows","toRuntimeSource","getOverlayAlpha","elevation","alphaValue","defaultDarkOverlays","overlay","getOpacity","inputPlaceholder","inputUnderline","switchTrackDisabled","switchTrack","getOverlays","colorScheme","rootSelector","colorSchemeSelector","defaultColorScheme","excludedVariables","cssVarPrefix","setColor","toRgb","setColorChannel","silent","attachColorScheme","scheme","restTheme","overlays","rest","createColorScheme","createThemeWithVars","colorSchemesInput","defaultColorSchemeInput","disableCssColorScheme","firstColorScheme","getCssVar","defaultSchemeInput","builtInLight","builtInDark","customColorSchemes","defaultScheme","setCssVarColor","tokens","colorToken","Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","snackbarContentBackground","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip","parserConfig","getSelector","generateStyleSheets","defaultGetSelector","otherTheme","rootVars","rootCss","rootVarsWithDefaults","themeVars","colorSchemesMap","otherColorSchemes","cssObject","schemeVars","stylesheets","insertStyleSheet","defaultSchemeVal","cssColorSheme","finalCss","generateSpacing","createGetColorSchemeSelector","cssVariables","initialColorSchemes","initialDefaultColorScheme","paletteOptions","themeId","imageMimeTypes","enUSLocaleText","loading","noData","zoomIn","zoomOut","toolbarExport","toolbarExportPrint","toolbarExportImage","mimeType","chartTypeBar","chartTypeColumn","chartTypeLine","chartTypeArea","chartTypePie","chartPaletteLabel","chartPaletteNameRainbowSurge","chartPaletteNameBlueberryTwilight","chartPaletteNameMangoFusion","chartPaletteNameCheerfulFiesta","chartPaletteNameStrawberrySky","chartPaletteNameBlue","chartPaletteNameGreen","chartPaletteNamePurple","chartPaletteNameRed","chartPaletteNameOrange","chartPaletteNameYellow","chartPaletteNameCyan","chartPaletteNamePink","chartConfigurationSectionChart","chartConfigurationSectionColumns","chartConfigurationSectionBars","chartConfigurationSectionAxes","chartConfigurationGrid","chartConfigurationBorderRadius","chartConfigurationCategoryGapRatio","chartConfigurationBarGapRatio","chartConfigurationStacked","chartConfigurationShowToolbar","chartConfigurationSkipAnimation","chartConfigurationInnerRadius","chartConfigurationOuterRadius","chartConfigurationColors","chartConfigurationHideLegend","chartConfigurationShowMark","chartConfigurationHeight","chartConfigurationWidth","chartConfigurationSeriesGap","chartConfigurationTickPlacement","chartConfigurationTickLabelPlacement","chartConfigurationCategoriesAxisLabel","chartConfigurationSeriesAxisLabel","chartConfigurationXAxisPosition","chartConfigurationYAxisPosition","chartConfigurationSeriesAxisReverse","chartConfigurationTooltipPlacement","chartConfigurationTooltipTrigger","chartConfigurationLegendPosition","chartConfigurationLegendDirection","chartConfigurationBarLabels","chartConfigurationColumnLabels","chartConfigurationInterpolation","chartConfigurationSectionTooltip","chartConfigurationSectionLegend","chartConfigurationSectionLines","chartConfigurationSectionAreas","chartConfigurationSectionArcs","chartConfigurationPaddingAngle","chartConfigurationCornerRadius","chartConfigurationArcLabels","chartConfigurationStartAngle","chartConfigurationEndAngle","chartConfigurationPieTooltipTrigger","chartConfigurationPieLegendPosition","chartConfigurationPieLegendDirection","chartConfigurationOptionNone","chartConfigurationOptionValue","chartConfigurationOptionAuto","chartConfigurationOptionTop","chartConfigurationOptionTopLeft","chartConfigurationOptionTopRight","chartConfigurationOptionBottom","chartConfigurationOptionBottomLeft","chartConfigurationOptionBottomRight","chartConfigurationOptionLeft","chartConfigurationOptionRight","chartConfigurationOptionAxis","chartConfigurationOptionItem","chartConfigurationOptionHorizontal","chartConfigurationOptionVertical","chartConfigurationOptionBoth","chartConfigurationOptionStart","chartConfigurationOptionMiddle","chartConfigurationOptionEnd","chartConfigurationOptionExtremities","chartConfigurationOptionTick","chartConfigurationOptionMonotoneX","chartConfigurationOptionMonotoneY","chartConfigurationOptionCatmullRom","chartConfigurationOptionLinear","chartConfigurationOptionNatural","chartConfigurationOptionStep","chartConfigurationOptionStepBefore","chartConfigurationOptionStepAfter","chartConfigurationOptionBumpX","chartConfigurationOptionBumpY","DEFAULT_LOCALE","ChartsLocalizationContext","ChartsLocalizationProvider","inProps","localeText","inLocaleText","parentLocaleText","themeLocaleText","Timeout","currentId","disposeEffect","useTimeout","composeClasses","getUtilityClass","classes","slotName","slot","RtlContext","useRtl","isFocusVisible","getReactElementRef","reactPropsRegex","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","isReal","shouldForwardProp","optionsShouldForwardProp","__emotion_forwardProp","styled","createStyled","targetClassName","__emotion_real","baseTag","__emotion_base","defaultShouldForwardProp","shouldUseAs","templateStringsArr","Styled","FinalTag","as","classInterpolations","finalShouldForwardProp","withComponent","nextTag","nextOptions","wrapper","internal_serializeStyles","preprocessStyles","isProcessed","variant","shallowLayer","layerName","defaultOverridesResolver","_props","processStyle","resolvedStyle","subStyle","rootStyle","otherStyles","processStyleVariants","mergedState","variantLoop","ownerState","lowercaseFirstLetter","rootShouldForwardProp","slotShouldForwardProp","styleAttachTheme","attachTheme","inputOptions","componentName","componentSlot","skipVariantsResolver","inputSkipVariantsResolver","skipSx","inputSkipSx","overridesResolver","shouldForwardPropOption","defaultStyledResolver","generateStyledLabel","transformStyle","muiStyledResolver","expressionsInput","expressionsHead","expressionsBody","expressionsTail","styleOverrides","resolvedStyleOverrides","themeVariants","inputStrings","placeholdersHead","placeholdersTail","outputStrings","expressions","Component","muiName","withConfig","styleFn","lastValue","lastTheme","PropsContext","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","prevState","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","scrollTop","forceReflow","performEnter","performExit","_this2","appearing","_ref2","maybeNode","maybeAppearing","timeouts","enterTimeout","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","_this3","onExit","onExiting","onExited","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","_this$props","childProps","TransitionGroupContext","reflow","getTransitionProps","transitionDuration","transitionTimingFunction","transitionDelay","useForkRef","refs","cleanupRef","refEffect","cleanups","refCallback","refCleanup","entering","entered","isWebKit154","userAgent","Grow","inProp","TransitionComponent","timer","autoTimeout","handleRef","normalizedTransitionCallback","maybeIsAppearing","handleEntering","handleEnter","isAppearing","clientHeight","transition","handleEntered","handleExiting","handleExit","handleExited","restChildProps","muiSupportAuto","getWindow","isHTMLElement","isShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","offsetTop","getWindowScroll","win","scrollLeft","pageXOffset","pageYOffset","getNodeName","nodeName","getDocumentElement","documentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","rect","isElementScaled","getNodeScroll","clientLeft","clientTop","getLayoutRect","getParentNode","assignedSlot","host","getScrollParent","listScrollParents","list","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","perspective","contain","willChange","getContainingBlock","auto","basePlacements","viewport","popper","variationPlacements","modifierPhases","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","_len","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","modifiersData","elements","attributes","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","merged","orderModifiers","existing","_ref$options","cleanupFn","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","_options","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","removeAttribute","initialStyles","arrow","attribute","getOppositePlacement","matched","getOppositeVariationPlacement","rootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","html","clientWidth","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","fittingPlacement","within","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","querySelector","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$scroll","_options$resize","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","elementType","otherProps","excludeKeys","parameters","getSlotProps","additionalProps","externalSlotProps","externalForwardedProps","joinedClasses","mergedStyle","internalRef","eventHandlers","componentsPropsWithoutEventHandlers","otherPropsWithoutEventHandlers","internalSlotProps","componentProps","slotState","skipResolvingSlotProps","resolvedComponentsProps","setRef","forwardedRef","disablePortal","mountNode","setMountNode","getContainer","defaultGenerator","generate","configure","generator","createClassNameGenerator","globalStateClasses","checked","completed","expanded","focused","focusVisible","open","readOnly","required","globalStatePrefix","globalStateClass","generateUtilityClasses","getPopperUtilityClass","resolveAnchorEl","anchorEl","defaultPopperOptions","PopperTooltip","initialPlacement","popperOptions","popperRef","popperRefProp","TransitionProps","ownerStateProp","tooltipRef","ownRef","handlePopperRef","handlePopperRefRef","rtlPlacement","flipPlacement","setPlacement","resolvedAnchorElement","setResolvedAnchorElement","popperModifiers","useUtilityClasses","Root","rootProps","role","PopperRoot","containerProp","keepMounted","exited","setExited","resolvedAnchorEl","nodeType","transitionProps","isRtl","componentsProps","RootComponent","useControlled","controlled","defaultProp","valueState","setValue","useSlot","initialElementType","internalForwardedProps","shouldForwardComponentProp","useSlotPropsParams","rootComponent","slotComponent","LeafComponent","getTooltipUtilityClass","TooltipPopper","disableInteractive","popperInteractive","popperArrow","popperClose","transformOrigin","TooltipTooltip","touch","tooltipArrow","bg","wordWrap","TooltipArrow","content","hystersisOpen","hystersisTimer","cursorPosition","composeEventHandler","eventHandler","childrenProp","classesProp","describeChild","disableFocusListener","disableHoverListener","disableInteractiveProp","disableTouchListener","enterDelay","enterNextDelay","enterTouchDelay","followCursor","idProp","leaveDelay","leaveTouchDelay","onClose","onOpen","openProp","PopperComponent","PopperComponentProp","PopperProps","title","TransitionComponentProp","childNode","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","openState","setOpenState","prevUserSelect","stopTouchInteraction","WebkitUserSelect","handleOpen","handleClose","handleMouseOver","handleMouseLeave","setChildIsFocusVisible","handleBlur","handleFocus","currentTarget","detectTouchStart","childrenProps","onTouchStart","nativeEvent","nameOrDescProps","titleIsString","onMouseMove","interactiveWrapperListeners","onTouchEnd","onMouseOver","onMouseLeave","onFocus","onBlur","resolvedPopperProps","tooltipModifiers","resolvedTransitionProps","Popper","Arrow","PopperSlot","popperSlotProps","TransitionSlot","transitionSlotProps","TooltipSlot","tooltipSlotProps","ArrowSlot","arrowSlotProps","TransitionPropsInner","getListUtilityClass","ListRoot","disablePadding","dense","subheader","listStyle","List","getScrollbarSize","documentWidth","nextItem","disableListWrap","nextElementSibling","previousItem","lastChild","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","innerText","repeating","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","hasAttribute","actions","autoFocus","autoFocusItem","onKeyDown","listRef","textCriteriaRef","previousKeyMatched","adjustStyleForScrollbar","containerElement","noExplicitWidth","scrollbarSize","activeItemIndex","muiSkipListHighlight","items","newChildProps","tabIndex","ctrlKey","metaKey","altKey","activeElement","criteria","lowerKey","currTime","performance","now","keepFocusOnCurrent","getDividerUtilityClass","DividerRoot","absolute","orientation","flexItem","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","borderWidth","borderStyle","borderBottomWidth","dividerChannel","borderRightWidth","borderTopStyle","borderLeftStyle","DividerWrapper","wrapperVertical","Divider","createSimplePaletteValueFilter","additionalPropertiesToCheck","hasCorrectMainProperty","checkSimplePaletteColorValues","LazyRipple","ripple","shouldMount","setShouldMount","mountEffect","mounted","didMount","mount","resolveFn","rejectFn","createControlledPromise","pulsate","getChildMapping","mapFn","Children","isValidElement","mapper","getProp","getNextChildMapping","nextProps","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","cloneElement","TransitionGroup","ReferenceError","_assertThisInitialized","firstRender","currentChildMapping","childFactory","_jsx","JSX","createElementArgArray","createEmotionProps","Global","sheetRef","rehydrating","sheetRefCurrent","insertable","enterKeyframe","exitKeyframe","pulsateKeyframe","TouchRippleRoot","TouchRippleRipple","rippleX","rippleY","rippleSize","leaving","setLeaving","rippleClassName","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","timeoutId","TouchRipple","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","startCommit","cb","oldRipples","fakeElement","touches","sizeX","sizeY","getButtonBaseUtilityClass","ButtonBaseRoot","WebkitTapHighlightColor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","textDecoration","colorAdjust","ButtonBase","centerRipple","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onClick","onContextMenu","onDragLeave","onFocusVisible","onKeyUp","onMouseDown","onMouseUp","onTouchMove","TouchRippleProps","touchRippleRef","buttonRef","handleRippleRef","setFocusVisible","enableTouchRipple","handleMouseDown","useRippleHandler","handleContextMenu","handleDragLeave","handleMouseUp","handleTouchStart","handleTouchEnd","handleTouchMove","isNonNativeButton","href","repeat","defaultPrevented","ComponentProp","to","buttonProps","composedClasses","rippleAction","eventCallback","skipRippleAction","getCircularProgressUtilityClass","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","CircularProgressSVG","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","CircularProgress","thickness","circleStyle","circumference","viewBox","getIconButtonUtilityClass","IconButtonRoot","edge","activeChannel","mainChannel","IconButtonLoadingIndicator","loadingIndicator","IconButton","disableFocusRipple","loadingIndicatorProp","loadingId","loadingWrapper","getButtonUtilityClass","commonIconStyles","ButtonRoot","colorInherit","disableElevation","fullWidth","inheritContainedBackgroundColor","inheritContainedHoverBackgroundColor","inheritContainedBg","inheritContainedHoverBg","primaryChannel","loadingPosition","ButtonStartIcon","startIcon","startIconLoadingStart","ButtonEndIcon","endIcon","endIconLoadingEnd","ButtonLoadingIndicator","ButtonLoadingIconPlaceholder","loadingIconPlaceholder","contextProps","buttonGroupButtonContextPositionClassName","endIconProp","startIconProp","positionClassName","loader","defaultSlotsMaterial","baseButton","baseIconButton","getListItemIconUtilityClass","getListItemTextUtilityClass","getMenuItemUtilityClass","MenuItemRoot","disableGutters","gutters","inset","backgroundClip","MenuItem","tabIndexProp","childContext","menuItemRef","ListItemIconRoot","alignItemsFlexStart","getTypographyUtilityClass","v6Colors","textPrimary","textSecondary","textDisabled","inSx","systemProps","splitProps","finalSx","TypographyRoot","noWrap","gutterBottom","paragraph","defaultVariantMapping","Typography","themeProps","variantMapping","ListItemTextRoot","multiline","disableTypography","primaryProp","primaryTypographyProps","secondaryProp","secondaryTypographyProps","RootSlot","rootSlotProps","PrimarySlot","primarySlotProps","SecondarySlot","secondarySlotProps","candidatesSelector","defaultGetTabbable","regularTabNodes","orderedTabNodes","nodeTabIndex","tabindexAttr","contentEditable","getTabIndex","getRadio","roving","isNonTabbableRadio","isNodeMatchingSelectorFocusable","documentOrder","defaultIsEnabled","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","getTabbable","isEnabled","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","reactFocusEventTarget","activated","rootRef","lastKeydown","loopFocus","shiftKey","rootElement","hasFocus","tabbable","isShiftTab","focusNext","focusPrevious","setInterval","clearInterval","handleFocusSentinel","relatedTarget","childrenPropsHandler","mapEventPropToEvent","eventProp","ClickAwayListener","disableReactTree","mouseEvent","onClickAway","touchEvent","movedRef","activatedRef","syntheticEventRef","handleClickAway","insideReactTree","clickedRootScrollbar","insideDOM","createHandleSynthetic","handlerName","mappedTouchEvent","mappedMouseEvent","getPaperUtilityClass","PaperRoot","square","rounded","backgroundImage","Paper","wrappers","focusTrap","focusTrapWrapper","clickAwayTouchEvent","clickAwayMouseEvent","clickAwayWrapper","getSvgIconUtilityClass","SvgIconRoot","hasSvgAsChild","SvgIcon","htmlColor","inheritViewBox","titleAccess","instanceFontSize","more","focusable","createSvgIcon","ChartsZoomInIcon","ChartsZoomOutIcon","ChartsExportIcon","baseTooltip","basePopper","flip","onDidShow","onDidHide","popperOnExited","baseMenuList","baseMenuItem","inert","iconStart","iconEnd","baseDivider","zoomInIcon","zoomOutIcon","exportIcon","selectorBrush","brush","selectorBrushStartX","selectorBrushStartY","selectorBrushCurrentX","selectorBrushCurrentY","selectorBrushState","startX","startY","currentY","selectorBrushConfigNoZoom","hasHorizontal","isBothDirections","selectorBrushConfigZoom","optionsLookup","selectorBrushConfig","configNoZoom","configZoom","selectorIsBrushEnabled","isZoomBrushEnabled","selectorIsBrushSelectionActive","isBrushEnabled","selectorBrushShouldPreventAxisHighlight","isBrushSelectionActive","preventHighlight","selectorBrushShouldPreventTooltip","preventTooltip","useChartBrush","brushConfig","setBrushCoordinates","clearBrush","setZoomBrushEnabled","brushStartHandler","brushHandler","currentPoint","brushCancelHandler","brushEndHandler","defaultizeAxis","inAxis","axisName","DEFAULT_AXIS_KEY","isPolarSeriesType","angles","extremums","charType","rotationExtremumGetter","radiusExtremumGetter","minChartTypeData","maxChartTypeData","getAxisExtremum","axisExtremums","finalScale","minDomain","maxDomain","selectorChartPolarAxisState","polarAxis","selectorChartRawRotationAxis","rotation","selectorChartRawRadiusAxis","selectorChartRotationAxis","selectorChartPolarCenter","generateSvg2rotation","clampAngle","TWO_PI","angleGap","useChartPolarAxis","rotationAxis","radiusAxis","rotationAxisWithScale","rotationAxisIds","radiusAxisWithScale","radiusAxisIds","svg2rotation","svg2polar","generateSvg2polar","polar2svg","generatePolar2svg","usedRotationAxisId","usedRadiusAxisId","mousePosition","isInChart","svgRect","isRotationAxis","rotationIndex","EMPTY_VISIBILITY_MAP","visibilityParamToMap","visibilityManager","visibilityMap","uniqueId","isIdentifierVisible","hiddenItems","useChartVisibilityManager","hideItem","newVisibilityMap","onHiddenItemsChange","showItem","toggleItem","toggleItemVisibility","loadStyleSheets","stylesheetLoadPromises","headStyleElements","newHeadStyleElement","styleCSS","cssText","attr","nodeValue","createExportIframe","iframeEl","previousStyles","getPropertyValue","setProperty","chartsToolbarClasses","defaultOnBeforeExport","iframe","chartsToolbarEl","contentDocument","remove","waitForAnimationFrame","res","useChartProExport","exportAsPrint","chartRoot","enableAnimation","fileName","onBeforeExport","copyStyles","printWindow","printDoc","elementClone","cloneNode","replaceChildren","rootCandidate","contentWindow","print","printChart","exportAsImage","quality","drawDocumentPromise","drawDocument","cause","getDrawDocument","iframeLoadPromise","exportDoc","exportDocBodySize","canvas","ratio","resolveBlobPromise","blobPromise","blob","toBlob","createObjectURL","download","triggerDownload","revokeObjectURL","exportImage","rafThrottle","lastArgs","rafRef","later","throttled","export","zoomAtPoint","centerRatio","scaleRatio","currentZoomData","MIN_RANGE","MAX_RANGE","MIN_ALLOWED_SPAN","minRange","maxRange","newMinRange","newMaxRange","minSpillover","maxSpillover","isSpanValid","isZoomIn","option","newSpanPercent","getHorizontalCenterRatio","getVerticalCenterRatio","translateZoom","initialZoomData","movement","span","MIN_PERCENT","MAX_PERCENT","rawDisplacement","displacement","newMinPercent","newMaxPercent","selectorChartZoomIsEnabled","selectorChartCanZoomOut","zoomState","selectorChartCanZoomIn","selectorZoomInteractionConfig","interactionName","zoomInteractionConfig","selectorPanInteractionConfig","useZoomOnWheel","setZoomDataCallback","startedOutsideRef","startedOutsideTimeoutRef","isZoomOnWheelEnabled","rafThrottledSetZoomData","zoomOnWheelHandler","multiplier","ctrlMultiplier","getMultiplier","scaledStep","getWheelScaleRatio","initializeZoomInteractionConfig","defaultizedConfig","initializeFor","mouse","pinch","hasXZoom","hasYZoom","allowedDirection","interactionType","aggregation","lastEmpty","lastMouse","lastTouch","initializeZoomData","zoomDataMap","useChartProZoom","pluginData","paramsZoomData","onZoomChange","onZoomChangeProp","removeIsInteracting","wait","debounced","newZoomData","setAxisZoomData","prevZoom","moveZoomRange","by","prevZoomData","isPanOnDragEnabled","accumulatedChange","throttledCallback","panStartHandler","usePanOnDrag","isPanOnPressAndDragEnabled","pressAndDragHandler","pressAndDragStartHandler","pressAndDragEndHandler","usePanOnPressAndDrag","isPanOnWheelEnabled","wheelHandler","movementX","movementY","usePanOnWheel","isZoomOnPinchEnabled","rafThrottledCallback","zoomHandler","useZoomOnPinch","isZoomOnTapAndDragEnabled","useZoomOnTapAndDrag","isZoomOnBrushEnabled","startPoint","endPoint","startRatio","endRatio","minRatio","maxRatio","currentStart","currentSpan","newStart","newEnd","clampedStart","clampedEnd","useZoomOnBrush","isZoomOnDoubleTapResetEnabled","doubleTapResetHandler","useZoomOnDoubleTapReset","calculateZoom","setZoomData","initialZoom","DEFAULT_PLUGINS","useChartKeyboardNavigation","removeFocus","keyboardNavigation","enableKeyboardNavigation","keyboardHandler","newFocusedItem","calculateFocusedItem","findClosestPoints","xZoomStart","xZoomEnd","yZoomStart","yZoomEnd","svgPointX","svgPointY","maxRadius","fx","fy","fxSq","fySq","pointX","invertScale","pointY","getDataPoint","useChartClosestPoint","disableVoronoi","voronoiMaxRadius","onItemClick","zoomIsInteracting","isVoronoiEnabled","getClosestPoint","closestPoint","aSeries","xAxisZoom","yAxisZoom","closestPointIndex","scaledX","scaledY","distSq","distanceSq","enableVoronoi","voronoi","useChartDataProviderProps","chartProviderProps","useChartDataProviderProProps","packageIdentifier","defaultSeriesConfigPro","ChartDataProviderPro","useDrawingArea","useXAxes","useYAxes","useRotationAxes","ChartsPiecewiseGradient","isReversed","gradientId","x2","y2","gradientUnits","stopColor","ChartsContinuousGradient","extremumValues","extremumPositions","numberOfPoints","keyPrefix","ChartsContinuousGradientObjectBound","selectorChartZAxis","useZAxes","zAxisIds","selectorChartId","idState","useChartGradientIdBuilder","useChartGradientIdObjectBoundBuilder","ChartsAxesGradients","svgHeight","svgWidth","getGradientId","getObjectBoundGradientId","filteredYAxisIds","filteredXAxisIds","filteredZAxisIds","objectBoundGradientId","useSvgRef","selectKeyboardNavigation","selectorChartsItemIsFocused","keyboardNavigationState","selectorChartsHasFocusedItem","selectorChartsFocusedItem","selectorChartsIsKeyboardNavigationEnabled","createSelectAxisHighlight","selectorChartsKeyboardXAxisIndex","selectorChartsKeyboardYAxisIndex","selectorChartsKeyboardItem","keyboardState","getSurfaceUtilityClass","ChartsSurfaceStyles","hasZoom","ChartsSurface","isKeyboardNavigationEnabled","hasFocusedItem","desc","hasIntrinsicSize","onPointerDown","useInteractionItemProps","interactionActive","onPointerEnter","onPointerLeave","alwaysFalse","createIsHighlighted","highlightScope","createIsFaded","fade","isSeriesHighlighted","scope","getSeriesHighlightedItem","selectorChartsHighlightScopePerSeriesId","selectorChartsHighlightedItem","keyboardItem","selectorChartsHighlightScope","seriesIdToHighlightScope","selectorChartsIsHighlightedCallback","selectorChartsIsFadedCallback","selectorChartsIsHighlighted","selectorChartIsSeriesHighlighted","selectorChartIsSeriesFaded","selectorChartSeriesUnfadedItem","selectorChartSeriesHighlightedItem","selectorChartsIsFaded","useItemHighlighted","isHighlighted","isFaded","ANIMATION_DURATION_MS","ANIMATION_TIMING_FUNCTION","ANIMATION_TIMING_FUNCTION_JS","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","clearNow","Timer","_call","_time","_next","restart","wake","timerFlush","sleep","nap","poke","elapsed","easingFn","onTick","onTickCallback","resume","running","timerCallback","easedT","useAnimate","createInterpolator","transformProps","applyProps","initialProps","animateRef","lastInterpolatedProps","lastInterpolatedPropsRef","transitionRef","elementRef","lastPropsRef","animate","interpolatedProps","lastElement","objA","objB","keysA","keysB","currentKey","shallowEqual","useAnimateInternal","animatedProps","cleanId","appearingMaskClasses","AnimatedRect","animationName","animationTimingFunction","animationDuration","AppearingMask","clipId","clipPath","AnimatedArea","lastProps","useAnimateArea","getAreaElementUtilityClass","areaElementClasses","AreaElement","innerClasses","interactionProps","Area","areaProps","selectorChartSkipAnimation","useSkipAnimation","storeSkipAnimation","useInternalIsZoomInteracting","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","closePath","lineTo","moveTo","tauEpsilon","Path","digits","_x0","_y0","_x1","_y1","_append","appendRound","quadraticCurveTo","bezierCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","ccw","cw","withPath","RangeError","defined","curve","defined0","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","that","_k","_x2","_y2","Cardinal","tension","CatmullRom","_alpha","custom","cardinal","_l01_a","_l12_a","_l23_a","_l01_2a","_l12_2a","_l23_2a","x23","y23","catmullRom","slope3","h0","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","Step","_t","stepBefore","stepAfter","_t0","_x","_y","Bump","bumpX","bumpY","getCurveFactory","curveType","selectorAllSeriesOfType","selectorSeriesOfType","failedIds","useAllSeriesOfType","useLineSeriesContext","getValueToPositionMapper","useXScale","useYScale","useAreaPlotData","allData","areaPlotData","groupIds","connectNulls","strictStepCurve","xPosition","xData","shouldExpand","formattedData","nullData","rep","isExtension","d3Data","areaPath","AreaPlotRoot","transitionProperty","useAggregatedData","AreaPlot","inSkipAnimation","completedData","AnimatedLine","animateProps","useAnimateLine","fadedOpacity","strokeLinejoin","hidden","getLineElementUtilityClass","lineElementClasses","LineElement","Line","lineProps","useLinePlotData","linePlotData","linePath","LinePlotRoot","LinePlot","getMarkElementUtilityClass","markElementClasses","Circle","CircleMarkElement","draw","tan30","tan30_2","kr","kx","ky","symbolsFill","cross","diamond","star","triangle","wye","getSymbol","MarkElementPath","MarkElement","useItemHighlightedGetter","selectorChartControlledCartesianAxisHighlight","selectAxisHighlight","computedIndex","axisItems","selectorChartsHighlightXAxisIndex","selectAxisHighlightWithValue","computedValue","controlledAxisItems","keyboardAxisItem","lastInteractionUpdate","pointerHighlight","keyboardValue","keyboardHighlight","selectorChartsHighlightXAxisValue","selectorChartsHighlightYAxisValue","selectAxis","MarkPlot","xAxisHighlightIndexes","highlightedItems","markPlotData","showMark","marks","xPos","useMarkPlotData","Mark","mark","isSeriesFaded","useIsHydrated","isHydrated","setIsHydrated","isInfinity","monthNumber","dayNumber","tickFrequencies","years","isTick","quarterly","Intl","DateTimeFormat","biweekly","offsetRatio","extremities","middle","getTickPosition","useTicks","tickPlacement","tickLabelPlacement","tickSpacing","isInside","tickPlacementProp","tickLabelPlacementProp","ticksIndexes","ticksFrequencies","startIndex","findLastIndex","startFrequencyIndex","endFrequencyIndex","prevTickCount","nextTickCount","tickIndex","prevDate","currentDate","formatter","getTimeTicks","tickDef","labelOffset","filteredDomain","rangeSpan","applyTickSpacing","defaultTickLabel","getDefaultTicks","visibleTicks","getTicks","segmenter","Segmenter","granularity","getGraphemeCount","segments","segment","_unused","sliceUntil","newText","ELLIPSIS","doesTextFitInRect","measureText","textSize","angledWidth","angledHeight","ellipsize","doesTextFit","shortenedText","graphemeCount","newLength","lastLength","longestFittingText","isSsr","stringCache","MAX_CACHE_NUM","PIXEL_STYLES","convertPixelValue","AZ","camelCaseToDashCase","getStyleString","getStringSize","measurementSpanContainer","getMeasurementContainer","measurementElem","createElementNS","measureSVGTextElement","getBBox","measurementContainer","ANGLE_APPROX","getAxisUtilityClass","axisClasses","tickContainer","tickLabel","TICK_LABEL_GAP","AXIS_LABEL_TICK_LABEL_GAP","disableLine","disableTicks","tickSize","tickLabelMinGap","_excluded2","ChartsText","styleProps","textProps","textAnchor","dominantBaseline","wordsByLines","needsComputation","subText","getWordsByLines","startDy","getDefaultTextAnchor","adjustedAngle","getDefaultBaseline","invertTextAnchor","useAxisTicksProps","_xAxis","themedProps","defaultizedProps","tickLabelStyle","positionSign","Tick","axisTick","TickLabel","axisTickLabel","defaultTextAnchor","defaultDominantBaseline","axisTickLabelProps","ChartsSingleXAxisTicks","axisLabelHeight","isMounted","defer","mountedState","setMountedState","useMounted","tickSizeProp","tickLabelInterval","axisHeight","xTicks","visibleLabels","previousTextLimit","candidateTickLabels","sizeMap","texts","textToMeasure","styleString","measurementSpanStyle","measurementElements","batchMeasureStrings","measureTickLabels","labelIndex","textPosition","lineSize","getTickLabelSize","standardAngle","radAngle","getMinXTranslation","getVisibleLabels","tickLabelsMaxHeight","tickLabels","shortenedLabels","leftBoundFactor","rightBoundFactor","shortenLabels","tickOffset","xTickLabel","yTickLabel","showTick","showTickLabel","useTicksGrouped","groups","mapToGrouping","ignoreTick","tickValues","allTickItems","dataIndexToTickIndex","currentValueCount","tickValue","groupValue","getValue","lastItem","tickIndexes","previousIndex","DEFAULT_GROUPING_CONFIG","getGroupingConfig","defaultTickSize","calculatedTickSize","ChartsGroupedXAxisTicks","groupConfig","tickYSize","labelPositionY","AxisRoot","shapeRendering","XAxisRoot","ChartsXAxisImpl","labelStyle","axisLine","Label","axisLabel","axisLabelProps","labelHeight","labelRefPoint","ChartsXAxis","_yAxis","tickFontSize","ChartsSingleYAxisTicks","axisWidth","yTicks","tickLabelsMaxWidth","topBoundFactor","bottomBoundFactor","skipLabel","showLabel","ChartsGroupedYAxisTicks","tickXSize","labelPositionX","YAxisRoot","ChartsYAxisImpl","settings","strokeLinecap","ChartsYAxis","getChartsGridUtilityClass","chartsGridClasses","GridRoot","verticalLine","horizontalLine","GridLine","ChartsGridVertical","ChartsGridHorizontal","ChartsGrid","horizontalAxis","verticalAxis","getChartsTooltipUtilityClass","chartsTooltipClasses","table","row","cell","markContainer","labelCell","valueCell","axisValueCell","useSeries","selectorChartsTooltipPointerItem","selectorChartsTooltipPointerItemIsDefined","selectorChartsTooltipItem","lastInteraction","pointerItem","selectorChartsTooltipItemIsDefined","pointerItemIsDefined","keyboardItemIsDefined","selectorChartsTooltipAxisConfig","rotationAxes","radiusAxes","selectorChartsTooltipItemPosition","useInternalItemTooltip","zAxisId","rotationAxisId","ChartsTooltipPaper","ChartsTooltipTable","borderSpacing","ChartsTooltipRow","ChartsTooltipCell","getLabelMarkUtilityClass","labelMarkClasses","mergeClassNameAndStyle","consumeThemeProps","InComponent","outProps","classesResolver","OutComponent","mask","ChartsLabelMark","preserveAspectRatio","ChartsItemTooltipContent","propClasses","tooltipData","seriesLabel","useMediaQueryOld","query","defaultMatches","ssrMatchMedia","noSsr","setMatch","queryList","updateMatch","maybeReactUseSyncExternalStore","useMediaQueryNew","getDefaultSnapshot","mediaQueryList","notify","unstable_createUseMediaQuery","queryInput","supportMatchMedia","useIsFineMainPointer","optionalGetAxisId","optionalGetAxisIds","selectorChartsInteractionRotationAngle","selectorChartsInteractionRotationAxisIndex","selectorChartsInteractionRotationAxisIndexes","selectorChartsInteractionTooltipRotationAxes","rotationIndexes","selectorChartsInteractionPolarAxisTooltip","rotationTooltip","defaultAxisTooltipConfig","axisFormattedValue","utcFormatter","seriesItems","useAxesTooltip","multipleAxes","defaultXAxis","defaultYAxis","defaultRotationAxis","tooltipXAxes","tooltipYAxes","tooltipRotationAxes","colorProcessors","seriesT","useColorProcessor","seriesToAdd","tooltipItemIndex","providedRotationAxisId","useAxisTooltip","ChartsAxisTooltipContent","hideTooltip","fallback","selectorReturnFalse","selectorReturnNull","ChartsTooltipRoot","ChartsTooltipContainer","trigger","anchor","anchorRef","setPointerType","handleOut","usePointerType","isFineMainPointer","positionRef","axisSystem","rawRotationAxis","rawXAxis","useAxisSystem","shouldPreventBecauseOfBrush","isOpen","getIsOpenSelector","computedAnchor","itemPosition","svgElement","pointerUpdate","pointerAnchorEl","isMouse","isTouch","ChartsTooltip","getAxisHighlightUtilityClass","ChartsAxisHighlightPath","axisHighlight","ChartsYHighlight","axisYValues","getYPosition","isYScaleOrdinal","ChartsXHighlight","axisXValues","getXPosition","isXScaleOrdinal","ChartsAxisHighlight","xAxisHighlight","yAxisHighlight","getSeriesToDisplay","getLegendUtilityClass","legendClasses","getLabelUtilityClass","ChartsLabel","RootElement","listStyleType","li","ChartsLegend","ConsumeSlotsInternal","propagateSlots","_useSlotProps","omitProps","consumeSlots","ChartsClipPath","offsetProps","createPreviewDrawingArea","mainChartDrawingArea","selectorChartPreviewXScales","chartDrawingArea","normalizedXScales","hasAxis","selectorChartPreviewComputedXAxis","computedAxes","selectorChartPreviewYScales","normalizedYScales","selectorChartPreviewComputedYAxis","getAxisMessage","useBarSeriesContext","useBarPlotData","masks","seriesIds","xMin","xMax","yMin","yMax","lastNegativePerIndex","lastPositivePerIndex","seriesDataLength","discreteAxisConfig","continuousAxisConfig","discreteAxisId","continuousAxisId","discreteAxisDirection","continuousAxisDirection","checkBarChartScaleErrors","xOrigin","yOrigin","seriesDataPoints","barDimensions","stackId","maskId","lastNegative","lastPositive","borderRadiusSide","hasNegative","hasPositive","barLabel","barLabelPlacement","masksData","getBarElementUtilityClass","barElementClasses","barPropsInterpolator","interpolateX","interpolateY","interpolateWidth","interpolateHeight","AnimatedBarElement","useAnimateBar","BarElement","itemIdentifier","isFocused","Bar","barProps","useScatterPlotData","scatterPoint","useScatterSeriesContext","ScatterMarker","ScatterPreviewItems","scatterPlotData","AreaPreviewPlot","useAreaPreviewData","PreviewAreaElement","LinePreviewPlot","useLinePreviewData","PreviewLineElement","seriesPreviewPlotMap","useBarPreviewData","zAxes","defaultZAxisId","ChartAxisZoomSliderPreviewContent","PreviewBackgroundRect","rx","ry","ChartAxisZoomSliderPreview","PreviewRectangles","ZOOM_SLIDER_TRACK_SIZE","ZOOM_SLIDER_ACTIVE_TRACK_SIZE","ZOOM_SLIDER_THUMB_HEIGHT","ZOOM_SLIDER_THUMB_WIDTH","ZOOM_SLIDER_SIZE","calculateZoomFromPoint","pointerZoom","calculateZoomFromPointImpl","calculateZoomStart","currentZoom","calculateZoomEnd","getAxisZoomSliderTrackUtilityClass","ZoomSliderTrack","isSelecting","ChartAxisZoomSliderTrack","onSelectStart","onSelectEnd","setIsSelecting","pointerDownPoint","zoomFromPointerDown","onPointerMove","pointerMoveEvent","pointerMovePoint","zoomFromPointerMove","setPointerCapture","onPointerUp","pointerUpEvent","getDataIndexForOrdinalScaleValue","chartAxisZoomSliderThumbClasses","getAxisZoomSliderThumbUtilityClass","Rect","ChartAxisZoomSliderThumb","onMove","thumbRef","onMoveEvent","thumb","onPointerEnd","ChartsZoomSliderTooltipRoot","MODIFIERS","ChartsTooltipZoomSliderValue","ZoomSliderActiveTrackRect","ChartAxisZoomSliderActiveTrack","axisPosition","activePreviewRectRef","startThumbEl","setStartThumbEl","endThumbEl","setEndThumbEl","tooltipStart","tooltipEnd","formatValue","startValue","endValue","getZoomSliderTooltipsText","previewThumbWidth","previewThumbHeight","previewX","previewY","previewWidth","previewHeight","startThumbX","startThumbY","endThumbX","endThumbY","activePreviewRect","prevPointerZoom","deltaZoom","axisZoomData","pointerDownZoom","previewOffset","ChartAxisZoomSlider","setShowTooltip","showPreview","tooltipConditions","sliderSize","axisSize","backgroundRectOffset","track","ChartZoomSlider","getReferenceLineUtilityClass","referenceLineClasses","ReferenceLineRoot","getTextParams","labelAlign","defaultSpacingOtherAxis","spacingX","spacingY","ChartsXReferenceLine","inClasses","lineStyle","xAxisScale","getXReferenceLineClasses","textParams","ChartsYReferenceLine","yPosition","yAxisScale","getYReferenceLineClasses","ChartsReferenceLine","brushOverlayClasses","BrushRect","ChartsBrushOverlay","brushStartX","brushStartY","brushCurrentX","brushCurrentY","clampX","clampY","rectColor","rectWidth","rectHeight","useComponentRenderer","defaultElement","otherClassName","ToolbarContext","ToolbarContextProvider","focusableItemId","setFocusableItemId","focusableItemIdRef","setItems","getSortedItems","sortByDocumentPosition","findEnabledItem","wrap","sortedItems","itemCount","ariaDisabled","registerItem","itemRef","prevItems","unregisterItem","onItemKeyDown","focusableItemIndex","newIndex","onItemFocus","onItemDisabled","currentIndex","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_CONTAINS","ToolbarButton","_useRegisterToolbarBu","useToolbarContext","previousDisabled","previousAriaDisabled","useRegisterToolbarButton","toolbarButtonProps","ToolbarRoot","Toolbar","useChartsLocalization","localization","ChartsToolbarDivider","ChartsMenu","savedFocusRef","ChartsToolbarZoomInTrigger","ChartsToolbarZoomOutTrigger","useChartProApiContext","useChartApiContext","ChartsToolbarPrintExportTrigger","ChartsToolbarImageExportTrigger","DEFAULT_IMAGE_EXPORT_OPTIONS","ChartsToolbarPro","printOptions","imageExportOptions","rawImageExportOptions","exportMenuOpen","setExportMenuOpen","exportMenuTriggerRef","exportMenuId","exportMenuTriggerId","isZoomEnabled","imageExportOptionList","showExportMenu","disableToolbarButton","ZoomOutIcon","ZoomInIcon","MenuList","ExportIcon","closeExportMenu","handleListKeyDown","licenseKeySet","MONTHS_SHORT","pad2","CustomBrushOverlay","_ref$primaryColor","primaryColor","_ref$positiveColor","positiveColor","_ref$negativeColor","negativeColor","clampedStartX","clampedCurrentX","getIndex","_toConsumableArray","currentValue","percentChange","startLabel","currentLabel","diffColor","LineChart","_series$","_props$series","_props$height","grid","_props$hideLegend","hideLegend","_props$skipAnimation","_props$loading","_props$showSlider","showSlider","_props$referenceLines","referenceLines","_props$brushOverlay","brushOverlay","brushSeriesId","_props$axisHighlight","tooltipItem","_props$showToolbar","showToolbar","_props$n_clicks","brushData","clickData","n_clicks","setProps","clipPathId","_useState2","_slicedToArray","controlledZoom","setControlledZoom","lastKnownZoomRef","_useState4","chartKey","setChartKey","currentZoomStr","lastKnownHighlightedAxisRef","_useState6","controlledHighlightedAxis","setControlledHighlightedAxis","currentStr","lastKnownHighlightedItemRef","_useState8","controlledHighlightedItem","setControlledHighlightedItem","lastKnownTooltipItemRef","_useState0","controlledTooltipItem","setControlledTooltipItem","hasAreaSeries","hasMarks","_objectSpread","hasSliderInAxisConfig","checkAxes","_typeof","processedXAxis","dateFormat","tf","formatDateStr","dateTickFormat","resolved","registry","dashMuiChartsFunctions","resolveFunctionProp","existingZoom","zoomConfig","providerProps","resolvedZoomData","onTooltipItemChange","AXIS_RENDER_PROPS","extractRenderProps","renderProps","_AXIS_RENDER_PROPS","xAxisConfigs","resolvedXAxis","yAxisConfigs","_extends","timestamp","refLine","getBarLabelUtilityClass","PropTypes","function","isRequired","barLabelClasses","barLabelPropsInterpolator","LABEL_OFFSET","BarLabelComponent","faded","highlighted","BarLabel","initialX","initialY","getOutsidePlacement","getCenterPlacement","useAnimateBarLabel","getTextAnchor","getDominantBaseline","BarLabelItem","barLabelOwnerState","barLabelProps","formattedLabelText","getBarLabel","BarLabelPlot","getBarUtilityClass","seriesLabels","barClipPathPropsInterpolator","interpolateBorderRadius","BarClipPath","generateClipPath","useAnimateBarClipPath","bR","IndividualBarPlot","withoutBorderRadius","barElement","selectorBarItemAtPosition","bandAxis","bandScale","svgPointBandCoordinate","bandValue","bandStart","bandBarStart","bandBarEnd","bandBarMin","bandBarMax","svgPointContinuousCoordinate","continuousMin","continuousMax","appendAtKey","bucket","createPath","barData","topLeftBorderRadius","topRightBorderRadius","bottomRightBorderRadius","bottomLeftBorderRadius","tLBR","tRBR","bRBR","bLBR","generateBarPath","PathGroup","BarGroup","AnimatedGroup","animationFillMode","animateChildren","BatchBarPlot","prevCursorRef","getItemAtPosition","onItemEnter","onItemLeave","lastItemRef","onItemEnterRef","onItemLeaveRef","useRegisterPointerInteractions","lastPointerUp","useRegisterItemClickHandlers","SeriesBatchPlot","MemoFadedHighlightedBars","FadedHighlightedBars","BatchBarSeriesPlot","temporaryPaths","pathString","tempPath","useCreateBarPaths","dArray","seriesHighlightedDataIndex","seriesUnfadedDataIndex","seriesHighlightedItem","seriesUnfadedItem","siblings","BarPlotRoot","BarPlot","renderer","batchSkipAnimation","BarElementPlot","getHighlightElementUtilityClass","LineHighlightElement","LineHighlightPlot","highlightedIndexes","lineHighlight","highlightedIndex","highlightedAxisId","disableHighlight","ChartDataProvider","useFocusedItem","FocusedLineMark","focusedItem","lineSeries","SPARK_LINE_DEFAULT_MARGIN","SparkLineChart","xAxisProps","yAxisProps","showHighlight","inAxisHighlight","plotType","disableClipping","clipAreaOffset","clipPathOffset","defaultXHighlight","SparklineChart","_props$data","_props$plotType","_props$area","_props$curve","_props$showTooltip","_props$showHighlight","_props$disableClippin","_props$n_hovers","hoverIndex","hoverValue","n_hovers","internalHighlightIndex","setInternalHighlightIndex","lastHighlightPropRef","sparklineProps","mergedSlotProps","_axisItems$0$dataInde","_axisItems$","MuiSparkLineChart","ChartsAxis","getJustifyItems","getAlignItems","horizontalPosition","drawingAreaColumn","getTemplateColumns","legendDirection","legendPosition","verticalPosition","drawingAreaRow","getTemplateRows","getGridTemplateAreas","extendVertically","ChartsWrapper","StyledText","ChartsLoadingOverlay","ChartsNoDataOverlay","ChartsOverlay","seriesPerType","seriesOfGivenType","links","useNoData","LoadingOverlay","loadingOverlay","NoDataOverlay","noDataOverlay","getLabelGradientUtilityClass","labelGradientClasses","rotate","getRotation","ChartsLabelGradient","continuousColorLegendClasses","templateAreas","endLabel","extremes","maxLabel","minLabel","gradient","getText","ContinuousColorLegend","labelPosition","rotateGradient","generateGradientId","axisItem","useAxis","minValue","maxValue","formattedMin","formattedMax","minText","maxText","minComponent","maxComponent","useHeatmapSeriesContext","getHeatmapUtilityClass","HeatmapCell","HeatmapItem","Cell","cellProps","HeatmapPlot","useZAxis","useZColorScale","xDomain","yDomain","seriesToDisplay","heatmapSeriesConfig","heatmap","HeatmapTooltipAxesValue","HeatmapTooltipContent","heatmapSeries","formattedX","formattedY","HeatmapTooltip","HEATMAP_PLUGINS","defaultColorMap","getDefaultDataForAxis","getDefaultDataForXAxis","getDefaultDataForYAxis","Heatmap","xAxisWithDefault","yAxisWithDefault","zAxisWithDefault","chartsWrapperProps","legend","DefaultCell","onCellClick","_objectWithoutProperties","RoundedCell","cellConfig","_ref$gap","_ref$borderRadius","_ref$showValue","showValue","_ref$fontSize","_ref$fontWeight","_ref$textColor","textColor","cellStyle","zAxisConfig","_colorScale$min","_colorScale$max","handleCellClick","_params$dataIndex","_params$dataIndex2","heatmapProps","MuiHeatmap","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","d2","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cornerRadius","padRadius","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","oc","x3","y3","x32","y32","intersect","ax","ay","bx","kc","lc","pieArcPropsInterpolator","interpolateStartAngle","interpolateEndAngle","interpolateInnerRadius","interpolateOuterRadius","interpolatePaddingAngle","interpolateCornerRadius","getPieArcUtilityClass","pieArcClasses","PieArcRoot","PieArc","strokeProp","skipInteraction","useAnimatePieArc","getModifiedArcProperties","seriesDef","basePaddingAngle","baseCornerRadius","baseInnerRadius","baseArcLabelRadius","baseOuterRadius","attributesOverride","additionalRadius","useTransformData","isItemFaded","isItemHighlighted","isItemFocused","useIsItemFocusedGetter","arcSizes","PieArcPlot","transformedData","Arc","pieArc","pieArcLabelPropsInterpolator","getPieArcLabelUtilityClass","pieArcLabelClasses","PieArcLabelRoot","PieArcLabel","formattedArcLabel","useAnimatePieArcLabel","RATIO","getItemLabel","arcLabel","arcLabelMinAngle","PieArcLabelPlot","ArcLabel","pieArcLabel","usePieSeriesContext","usePieSeriesLayout","getPieUtilityClass","PiePlot","useChartContainerProps","chartsSurfaceProps","chartDataProviderProps","PIE_CHART_PLUGINS","FocusedPieArc","pieSeriesLayout","pieSeries","focusIndicator","PieChart","marginProps","chartSeries","seriesProp","_props$paddingAngle","_props$cornerRadius","_props$startAngle","_props$endAngle","chartProps","_clickedItem","_clickedItem2","_clickedItem3","clickedItem","_seriesProp$seriesInd","MuiPieChart","selectorChartsIsVoronoiEnabled","getScatterUtilityClass","Scatter","skipInteractionHandlers","disableHover","Marker","markerProps","getInteractionItemProps","ALMOST_ZERO","BatchScatterPaths","useCreatePaths","MemoBatchScatterPaths","Group","BatchScatter","ScatterPlot","DefaultScatterItems","ScatterItems","SCATTER_CHART_PLUGINS","FocusedScatterMark","scatterSeries","ScatterChart","chartContainerProps","chartsAxisProps","gridProps","scatterPlotProps","overlayProps","legendProps","axisHighlightProps","seriesWithDefault","useVoronoiOnItemClick","useScatterChartProps","_props$disableVoronoi","_seriesConfig$data","MuiScatterChart","CrosshairTracker","_useDrawingArea","lastReportedRef","ownerSVGElement","svgPt","xVal","yVal","rawX","crosshairPosition","_unused2","crosshairClick","CompositeAxisTooltipContent","proximity","displayAxisValue","scatterSeriesIds","lineEntries","scatterEntries","_step","numericValue","_iterator","_createForOfIteratorHelper","_step2","_iterator2","maximumFractionDigits","allEntries","rowStyle","dotStyle","ExternalAxisTooltip","xAxisObj","useXAxis","xPixel","_unused3","_unused4","_s$data","_step3","_iterator3","_step4","_iterator4","tooltipLeft","chartMidpoint","showOnLeft","ForecastOverlay","forecast","_ref4$color","_ref4$opacity","pts","yUp","upper","yLo","lower","CompositeChart","_axisHighlight$x","_axisHighlight$y","syncedTooltipIndex","_props$forecastColor","forecastColor","_props$forecastOpacit","forecastOpacity","_props$enableCrosshai","enableCrosshair","lastZoomPropRef","hasScatter","hasLine","hasArea","scatterSeriesData","handleLineClick","scatterProximity","_resolvedXAxis$","minStep","tooltipTrigger","useCustomTooltip","_i4","newZoom","createSeededRng","seed","imul","nextGaussian","u1","u2","CandlestickPlot","candles","upColor","downColor","totalSlots","drawWidth","slotWidth","bodyWidth","wickWidth","yHigh","high","yLow","low","yOpen","yClose","bodyTop","bodyHeight","VolumeBars","volumeHeightPct","_useDrawingArea2","drawHeight","maxVol","volume","volZoneHeight","volZoneTop","isUp","barH","PriceLabels","labelInterval","forecastData","lowerBound","AlertMarks","alerts","alertUpColor","alertDownColor","formatterFn","alert","displayIndex","price","bgColor","labelText","pctChange","labelWidth","ShadedBackground","_ref6","_useDrawingArea3","LiveTradingChart","_grid$horizontal","_grid$vertical","_props$windowSize","windowSize","_props$forecastSize","forecastSize","_props$running","_props$intervalMs","intervalMs","_props$seed","_props$resetTrigger","resetTrigger","_props$initialPrice","initialPrice","_props$volatility","volatility","_props$drift","drift","_props$forecastVolati","forecastVolatility","_props$alertProbabili","alertProbability","_props$alertThreshold","alertThresholdPct","_props$alertLookback","alertLookback","_props$alertMinDistan","alertMinDistance","_props$maxVisibleAler","maxVisibleAlerts","alertFilter","alertFormatter","_props$candleUpColor","candleUpColor","_props$candleDownColo","candleDownColor","_props$alertUpColor","_props$alertDownColor","_props$uncertaintyOpa","uncertaintyOpacity","_props$showVolume","showVolume","_props$showLabels","showLabels","_props$volumeHeightPc","_props$showGrid","showGrid","_props$xAxisLabel","xAxisLabel","_props$yAxisLabel","yAxisLabel","alertHistory","currentPrice","tickCount","rngRef","candleBufferRef","alertBufferRef","intervalRef","lastResetRef","forecastStartIndex","displayData","setDisplayData","generateForecast","useCallback","lastClose","rng","numPoints","cumUncertainty","shock","prevClose","vol","dft","r2","r3","buf","candle","candidateIdx","candidate","alertFilterFn","alertType","lookback","rangeStart","rangeEnd","isSwingHigh","isSwingLow","lastAlertTick","windowStart","windowed","_generateForecast","visibleAlerts","_useMemo","totalLen","closeData","allValues","xAxisData","forecastStartIdx","BAR_CHART_PLUGINS","useBarChartProps","hasHorizontalSeries","defaultBandXAxis","defaultBandYAxis","processedYAxis","barPlotProps","clipPathGroupProps","clipPathProps","FocusedBar","barSeries","BarChart","BAR_CHART_PRO_PLUGINS","BarChartPro","chartDataProviderProProps","baseProps","useChartContainerProProps","_props$layout","axisClickData","usePro","handleHighlightChange","handleZoomChange","handleItemClick","barItemIdentifier","handleAxisClick","refLineChildren","ChartComponent","MuiBarChart","CandlePlot","ohlcData","labels","bodyWidthRatio","onCandleClick","xBase","bodyBottom","wickTop","wickBottom","VolumePlot","volumeData","maxHeightRatio","volumeHeight","baseY","CandleTooltip","tooltipEnabled","setHoverIndex","CandlestickChart","volumeHeightRatio","hoverData","cats","vols","volumeKey","computedYDomain","allLows","allHighs","dataMin","dataMax","handleCandleClick","ohlc","baseAxis","useMergedRefs","forkRef","createForkRef","didChange","cleanupCallbacks","cleanupCallback","getAlertUtilityClass","AlertRoot","severity","getBackgroundColor","colorSeverity","AlertIcon","AlertMessage","AlertAction","defaultIconMapping","SuccessOutlined","ReportProblemOutlined","ErrorOutline","InfoOutlined","closeText","iconMapping","closeButton","CloseButton","closeIcon","CloseIcon","IconSlot","iconSlotProps","MessageSlot","messageSlotProps","ActionSlot","actionSlotProps","CloseButtonSlot","closeButtonProps","CloseIconSlot","closeIconProps","Close","getRichTreeViewUtilityClass","createUseThemeProps","freeze","EMPTY_OBJECT","TreeViewContext","useTreeViewContext","TreeViewStyleContext","useTreeViewStyleContext","TreeViewProvider","buildPublicAPI","runItemPlugins","itemPluginProps","finalRootRef","finalContentRef","pluginPropEnhancers","pluginPropEnhancersNames","itemPluginManager","listPlugins","itemPlugin","itemPluginResponse","contentRef","propsEnhancers","propsEnhancerName","propEnhancerName","currentSlotName","currentSlotParams","enhancedProps","propsEnhancersForCurrentPlugin","propsEnhancerForCurrentPluginAndSlot","wrapItem","idAttribute","finalChildren","itemsWrapper","listWrappers","itemWrapper","useTreeViewBuildContext","styleContextValue","collapseIcon","expandIcon","getCollapseUtilityClass","CollapseRoot","collapsedSize","CollapseWrapper","CollapseWrapperInner","wrapperInner","Collapse","collapsedSizeProp","wrapperRef","autoTransitionDuration","isHorizontal","getWrapperSize","wrapperSize","duration2","incomingOwnerState","getSwitchBaseUtilityClass","SwitchBaseRoot","SwitchBaseInput","SwitchBase","checkedProp","checkedIcon","defaultChecked","disabledProp","inputProps","inputRef","onChange","setCheckedState","muiFormControl","hasLabelFor","InputSlot","inputSlotProps","newChecked","handleInputChange","getCheckboxUtilityClass","defaultSlotPropsValue","externalSlotPropsValue","typedDefaultSlotProps","CheckboxRoot","indeterminate","defaultCheckedIcon","CheckBox","defaultIcon","CheckBoxOutlineBlank","defaultIndeterminateIcon","IndeterminateCheckBox","Checkbox","iconProp","indeterminateIcon","indeterminateIconProp","externalInputProps","TREE_VIEW_ROOT_PARENT_ID","buildSiblingIndexes","siblingsIndexLookup","childId","isItemDisabled","itemMetaLookup","itemMeta","parentId","buildItemsLookups","storeParameters","depth","isItemExpandable","otherItemsMetaLookup","metaLookup","modelLookup","orderedChildrenIds","itemsChildren","processItem","getItemId","siblingsMetaLookup","checkId","getItemChildren","expandable","selectable","isItemSelectionDisabled","childrenIndexes","EMPTY_CHILDREN","itemsSelectors","domStructure","disabledItemFocusable","itemOrderedChildrenIdsLookup","itemOrderedChildrenIds","itemModel","itemModelLookup","itemChildrenIndexesLookup","itemParentId","itemDepth","canItemBeFocused","itemChildrenIndentation","expandedItemMapSelector","expandedItems","expandedItemsMap","expansionSelectors","expandedItemsRaw","flatList","appendChildren","itemsWithDescendants","triggerSlot","expansionTrigger","isItemExpanded","_itemId","selectedItemsSelector","selectedItems","selectedItemsRaw","selectedItemsMapSelector","selectedItemsMap","isItemSelectableSelector","selectionSelectors","disableSelection","isMultiSelectEnabled","multiSelect","isCheckboxSelectionEnabled","checkboxSelection","propagationRules","selectionPropagation","isItemSelected","isFeatureEnabledForItem","isItemSelectable","isSelectionEnabled","canItemBeSelected","defaultFocusableItemIdSelector","orderedRootItemIds","firstSelectedItem","firstNavigableItem","focusSelectors","defaultFocusableItemId","isItemTheDefaultFocusableItem","focusedItemId","lazyLoadingSelectors","isEmpty","lazyLoadedItems","errors","isItemLoading","itemHasError","itemError","labelSelectors","isItemEditable","isItemBeingEdited","editedItemId","isAnyItemBeingEdited","itemHasChildren","reactChildren","TreeViewItemDepthContext","getLastNavigableItemInArray","getPreviousNavigableItem","previousNavigableSiblingIndex","currentItemId","lastNavigableChild","getNextNavigableItem","firstNavigableChild","currentItemIndex","nextItemIndex","getLastNavigableItem","getFirstNavigableItem","findOrderInTremauxTree","itemAId","itemBId","itemMetaA","itemMetaB","aFamily","bFamily","aAncestor","bAncestor","aAncestorIsCommon","bAncestorIsCommon","continueA","continueB","commonAncestor","ancestorFamily","aSide","bSide","isTargetInDescendants","itemRoot","treeIdSelector","providedTreeId","treeId","idSelectors","treeItemIdAttribute","providedIdAttribute","depthSelector","depthContext","getTreeItemUtilityClass","TreeViewExpandIcon","TreeViewCollapseIcon","pickIcon","treeItemIcon","treeViewIcon","TreeItemIcon","slotsFromTreeItem","slotPropsFromTreeItem","slotsFromTreeView","slotPropsFromTreeView","iconName","Icon","iconProps","tempOwnerState","TreeItemDragAndDropOverlayRoot","darkChannel","TreeItemDragAndDropOverlay","TreeItemProvider","TreeItemLabelInput","TreeItemRoot","TreeItemContent","TreeItemLabel","editable","TreeItemIconContainer","TreeItemGroupTransition","groupTransition","TreeItemErrorContainer","TreeItemLoadingContainer","TreeItemCheckbox","visible","TreeItem","getContextProviderProps","getRootProps","getContentProps","getIconContainerProps","getCheckboxProps","getLabelProps","getGroupTransitionProps","getLabelInputProps","getDragAndDropOverlayProps","getErrorContainerProps","getLoadingContainerProps","pluginRootRef","interactions","isLoading","hasError","isExpandable","isExpanded","isSelected","isDisabled","isEditing","isEditable","editing","toggleItemEditing","labelEditing","setEditedItem","handleExpansion","focusItem","multiple","expansion","setItemExpansion","handleSelection","selection","expandSelectionRange","setItemSelection","keepExistingSelection","shouldBeSelected","handleCheckboxSelection","hasShift","handleSaveItemLabel","newLabel","updateItemLabel","handleCancelItemLabelEditing","useTreeItemUtils","rootRefObject","contentRefObject","handleRootRef","handleContentRef","checkboxRef","shouldBeAccessibleWithTab","sharedPropsEnhancerParams","createRootHandleBlur","otherHandlers","defaultMuiPrevented","getItemDOMElement","removeFocusedItem","createRootHandleKeyDown","handleItemKeyDown","createContentHandleMouseDown","externalProps","externalEventHandlers","enhancedRootProps","enhancedContentProps","enhancedCheckboxProps","checkbox","onDoubleClick","enhancedLabelProps","enhancedLabelInputProps","labelInput","enhancedDragAndDropOverlayProps","dragAndDropOverlay","useTreeItem","classesFromTreeView","iconContainer","errorIcon","loadingIcon","itemContent","itemIconContainer","itemCheckbox","itemLabel","itemGroupTransition","itemLabelInput","itemDragAndDropOverlay","itemErrorIcon","itemLoadingIcon","Content","contentProps","IconContainer","iconContainerProps","labelProps","checkboxProps","GroupTransition","groupTransitionProps","LabelInput","labelInputProps","DragAndDropOverlay","dragAndDropOverlayProps","ErrorIcon","errorContainerProps","LoadingIcon","loadingContainerProps","RichTreeViewItemsContext","selectorNoChildren","selectorChildrenIdsNull","WrappedTreeItem","itemSlot","itemSlotProps","skipChildren","renderItemForRichTreeView","Item","itemProps","RichTreeViewItems","renderItem","useTreeViewRootProps","forwardedProps","handleRootFocus","handleRootBlur","useIsoLayoutEffect","useTreeViewStore","StoreClass","updateStateFromParameters","useLabelEditingItemPlugin","labelInputValue","setLabelInputValue","TreeViewLabelEditingPlugin","register","onItemLabelChange","EventManager","maxListeners","warnOnce","events","on","highPriority","regular","isFirst","removeListener","removeAllListeners","emit","highPriorityListeners","regularListeners","once","oneTimeListener","getExpansionTrigger","TreeViewItemsPlugin","static","newParameters","previousParameters","typedKey","processSiblings","parentIdWithDefault","getItem","getItemTree","getItemFromItemId","itemToMutate","newChildren","getItemOrderedChildrenIds","getParentId","setIsItemDisabled","shouldBeDisabled","getElementById","setItemChildren","getChildrenCount","parentDepth","removeChildren","newMetaMap","newItemOrderedChildrenIdsLookup","newItemChildrenIndexesLookup","deriveStateFromParameters","applyModelInitialValue","controlledValue","globalTreeViewDefaultId","TimeoutManager","timeoutIds","intervalIds","startTimeout","startInterval","clearAll","TreeViewKeyboardNavigationPlugin","typeaheadQuery","labelMap","createLabelMapFromItemMetaLookup","registerStoreEffect","shouldIgnoreItemsStateUpdate","canToggleItemSelection","canToggleItemExpansion","getFirstItemMatchingTypeaheadQuery","newKey","getNextItem","itemIdToCheck","nextItemId","getNextMatchingItemId","matchingItemId","checkedItems","cleanNewKey","concatenatedQuery","concatenatedQueryMatchingItemId","newKeyMatchingItemId","updateLabelMap","ctrlPressed","selectItemFromArrowNavigation","selectRangeFromStartToItem","selectRangeFromItemToEnd","expandAllSiblings","keyCode","selectAllNavigableItems","isPrintableKey","timeoutManager","matchingItem","TreeViewFocusPlugin","checkItemInNewTree","itemToFocusId","setFocusedItemId","applyItemFocus","itemElement","selectorCheckboxSelectionStatus","hasSelectedDescendant","hasUnSelectedDescendant","traverseDescendants","itemToTraverseId","parents","useSelectionItemPlugin","selectionStatus","ariaChecked","TreeViewSelectionPlugin","lastSelectedItem","lastSelectedRange","setSelectedItems","newModel","additionalItemsToPropagate","onItemSelectionToggle","onSelectedItemsChange","oldModel","cleanModel","descendants","shouldRegenerateModel","newModelLookup","getLookupFromArray","getAddedAndRemovedItems","added","removed","addedItemId","selectDescendants","checkAllDescendantsSelected","selectParents","removedItemId","deSelectDescendants","propagateSelection","selectRange","newSelectedItems","selectedItemsLookup","first","getNonDisabledItemsInRange","itemsToAddToModel","newSelected","oldSelected","isSelectedBefore","navigableItems","getAllNavigableItems","newModelMap","lookup","TreeViewExpansionPlugin","setExpandedItems","onExpandedItemsChange","shouldBeExpanded","isExpandedBefore","cleanShouldBeExpanded","eventParameters","isExpansionPrevented","publishEvent","applyItemExpansion","oldExpanded","newExpanded","onItemExpansionToggle","newlyExpandedItemId","addExpandableItems","newItemMetaLookup","TreeViewItemPluginManager","itemPlugins","itemWrappers","MinimalTreeViewStore","initialParameters","eventManager","instanceName","minimalInitialState","buildItemsStateIfNeeded","defaultExpandedItems","defaultSelectedItems","createMinimalInitialState","updateModel","mutableNewState","controlledProp","newMinimalState","shouldRebuildItemsState","previousValue","isPropagationStopped","isSyntheticEvent","subscribeEvent","parametersToStateMapper","ExtendableRichTreeViewStore","RichTreeViewStore","RichTreeViewRoot","RichTreeView","useExtractRichTreeViewParameters","ICON_MAP","ExpandMore","ExpandMoreIcon","ChevronRight","ChevronRightIcon","Folder","FolderIcon","FolderOpen","FolderOpenIcon","InsertDriveFile","InsertDriveFileIcon","Remove","RemoveIcon","Add","AddIcon","ArrowDropDown","ArrowDropDownIcon","ArrowRight","ArrowRightIcon","AccountTree","AccountTreeIcon","Description","DescriptionIcon","Code","CodeIcon","Image","ImageIcon","Settings","SettingsIcon","Home","HomeIcon","Star","StarIcon","Delete","DeleteIcon","Edit","EditIcon","Visibility","VisibilityIcon","Lock","LockIcon","ShowChart","ShowChartIcon","BarChartIcon","PieChartIcon","ScatterPlotIcon","GridOn","GridOnIcon","Timeline","TimelineIcon","CandlestickChartIcon","Speed","SpeedIcon","Layers","LayersIcon","TrendingUp","TrendingUpIcon","History","HistoryIcon","PlayArrow","PlayArrowIcon","Tune","TuneIcon","Brush","BrushIcon","Highlight","HighlightIcon","Sync","SyncIcon","ZoomIn","TouchApp","TouchAppIcon","TableChart","TableChartIcon","StackedBarChart","StackedBarChartIcon","Palette","PaletteIcon","Rule","RuleIcon","Mouse","MouseIcon","CheckBoxIcon","UnfoldMore","UnfoldMoreIcon","Block","BlockIcon","Diamond","DiamondIcon","AutoGraph","AutoGraphIcon","ViewList","ViewListIcon","GpsFixed","GpsFixedIcon","ContentCopy","ContentCopyIcon","PersonAdd","PersonAddIcon","CheckCircle","CheckCircleIcon","Archive","ArchiveIcon","MoreVert","MoreVertIcon","resolveIcon","TreeView","getItemIdProp","getItemLabelProp","getItemChildrenProp","editableItems","disabledItems","ariaLabel","ariaLabelledBy","isItemDisabledFn","disabledSet","isItemEditableFn","editableSet","handleSelectedItemsChange","itemIds","handleExpandedItemsChange","event_timestamp","handleItemFocus","handleItemLabelChange","editedItemLabel","containerStyle","getSimpleTreeViewUtilityClass","TreeViewChildrenItemContext","TreeViewChildrenItemProvider","childrenIdAttrToIdRef","previousChildrenIds","escapedIdAttr","childrenElements","childrenIds","jsxItems","setJSXItemsOrderedChildrenIds","registerChild","childIdAttribute","childItemId","unregisterChild","useJSXItemsItemPlugin","parentContext","pluginContentRef","isMountedRef","ownerTokenRef","upsertJSXItem","mapLabelFromJSX","jsxItemsitemWrapper","TreeViewJSXItemsPlugin","itemOwners","ownerToken","currentOwner","existingMeta","hasChanges","newItemModelLookup","newMap","SimpleTreeViewStore","SimpleTreeViewRoot","useExtractSimpleTreeViewParameters","renderItems","IconComponent","SimpleTreeView","_ref$items","_ref$multiSelect","_ref$checkboxSelectio","_ref$disableSelection","_ref$expansionTrigger","_ref$disabledItemsFoc","_ref$itemChildrenInde","MuiSimpleTreeView","getRichTreeViewProUtilityClass","DataSourceCacheDefault","ttl","expiry","RequestStatus","NestedDataManager","pendingRequests","queuedRequests","settledRequests","lazyLoadingPlugin","maxConcurrentRequests","MAX_CONCURRENT_REQUESTS","processQueue","loopLength","fetchQueue","fetchPromises","fetchItemChildren","loadingIds","setRequestSettled","clearPendingRequest","getRequestStatus","PENDING","QUEUED","SETTLED","UNKNOWN","getActiveRequestsCount","TREE_VIEW_LAZY_LOADED_ITEMS_INITIAL_STATE","TreeViewLazyLoadingPlugin","nestedDataManager","dataSourceCache","dataSource","handleBeforeItemToggleExpansion","newlyExpandableItems","getExpandableItemsFromDataSource","fetchChildrenIfExpanded","parentIds","itemsToLazyLoad","fetchItems","fetchAllExpandedItems","setItemLoading","itemIdWithDefault","setItemError","updateItemChildren","forceRefresh","getTreeItems","cachedData","response","childrenFetchError","itemsReorderingSelectors","currentReorder","draggedItemProperties","targetItemId","targetDepth","newPosition","isDragging","draggedItemId","canItemBeReordered","isItemReorderable","isAncestor","itemIdA","itemIdB","useTreeViewItemsReorderingItemPlugin","validActionsRef","draggable","onDragStart","dataTransfer","effectAllowed","setDragImage","setData","itemsReordering","startDraggingItem","onDragOver","onDragEnd","dropEffect","completeDraggingItem","cancelDraggingItem","onDragEnter","getDroppingTargetValidActions","setDragTargetItem","validActions","targetHeight","cursorY","cursorX","contentElement","TreeViewItemsReorderingPlugin","canMoveItemToNewPosition","targetItemMeta","targetItemIndex","draggedItemMeta","draggedItemIndex","isTargetLastSibling","oldPosition","positionsAfterAction","positionAfterAction","checkIfPositionIsValid","itemToMoveId","itemToMoveMeta","oldParentId","newParentId","updatedChildren","updatedOldParentChildren","updatedNewParentChildren","itemChildrenIndexes","updateExpandable","itemToMoveDepth","updateItemDepth","moveItemInTree","onItemPositionChange","prevItemReorder","itemChildrenIndentationPx","pixelExec","tempElement","parseItemChildrenIndentation","chooseActionToApply","DEFAULT_IS_ITEM_REORDERABLE_WHEN_ENABLED","DEFAULT_IS_ITEM_REORDERABLE_WHEN_DISABLED","rawMapper","RichTreeViewProStore","lazyLoading","RichTreeViewProRoot","RichTreeViewPro","useExtractRichTreeViewProParameters","localTheme","outerTheme","mergeOuterLocalTheme","globalStyles","wrapGlobalLayer","upperTheme","resolvedTheme","styleArg","EMPTY_THEME","useThemeScoping","isPrivate","mergedTheme","upperPrivateTheme","engineTheme","privateTheme","rtlValue","layerOrder","styleElement","useLayerOrder","ThemeProviderNoVars","scopedTheme","DEFAULT_MODE_STORAGE_KEY","DEFAULT_COLOR_SCHEME_STORAGE_KEY","DEFAULT_ATTRIBUTE","storageWindow","localStorage","setItem","getSystemMode","processState","systemMode","defaultConfig","CssVarsProvider","InternalCssVarsProvider","useColorScheme","getInitColorSchemeScript","deprecatedGetInitColorSchemeScript","modeStorageKey","defaultModeStorageKey","colorSchemeStorageKey","defaultColorSchemeStorageKey","disableTransitionOnChange","designSystemTransitionOnChange","resolveTheme","defaultContext","allColorSchemes","darkColorScheme","lightColorScheme","setColorScheme","setMode","ColorSchemeContext","defaultColorSchemes","defaultComponents","defaultLightColorScheme","defaultDarkColorScheme","themeProp","storageManager","documentNode","colorSchemeNode","disableNestedContext","disableStyleSheetGeneration","defaultMode","initialMode","hasMounted","ctx","initialTheme","restThemeProp","joinedColorSchemes","stateMode","stateColorScheme","supportedColorSchemes","isMultiSchemes","modeStorage","lightStorage","darkStorage","isClient","setIsClient","getColorScheme","currentState","newMode","newLightColorScheme","newDarkColorScheme","handleMediaQuery","mediaListener","media","addListener","unsubscribeMode","unsubscribeLight","unsubscribeDark","useCurrentColorScheme","memoTheme","calculatedColorScheme","schemeKey","classList","shouldGenerateStyleSheet","initialAttribute","setter","suppressHydrationWarning","dangerouslySetInnerHTML","__html","InitColorSchemeScript","createCssVarsProvider","newTheme","noVarsTheme","clip","getNewValue","asc","findClosest","trackFinger","touchId","changedTouches","valueToPercent","setValueIndex","focusThumb","sliderRef","activeIndex","setActive","areValuesEqual","oldValue","array1","array2","itemComparer","axisProps","leap","Identity","cachedSupportsTouchActionNone","doesSupportTouchActionNone","CSS","supports","useSlider","ariaLabelledby","disableSwap","marksProp","onChangeCommitted","shiftStep","valueProp","setOpen","dragging","setDragging","moveCount","lastChangedValue","valueDerived","setValueState","handleChange","thumbIndex","clonedEvent","writable","marksValues","focusedThumbIndex","setFocusedThumbIndex","createHandleHiddenInputFocus","createHandleHiddenInputBlur","changeValue","valueInput","marksIndex","maxMarksValue","createHandleHiddenInputKeyDown","stepSize","currentMarkIndex","incrementKeys","getFingerNewValue","finger","percentToValue","nearest","num","parts","matissaDecimalPart","decimalPart","getDecimalPrecision","roundValueToStep","stopListening","trackOffset","trackLeap","createHandleMouseLeave","cssWritingMode","getHiddenInputProps","externalHandlers","ownEventHandlers","mergedEventHandlers","writingMode","getThumbProps","getThumbStyle","getSliderUtilityClass","SliderRoot","marked","trackInverted","trackFalse","SliderRail","rail","SliderTrack","SliderThumb","valueLabelOpen","valueLabelCircle","valueLabelLabel","useValueLabelClasses","valueLabel","SliderMark","markActive","SliderMarkLabel","markLabel","markLabelActive","Forward","ariaValuetext","getAriaLabel","getAriaValueText","valueLabelDisplay","valueLabelFormat","RailSlot","Rail","TrackSlot","Track","ThumbSlot","Thumb","ValueLabelSlot","ValueLabel","MarkSlot","MarkLabelSlot","MarkLabel","Input","railSlotProps","trackSlotProps","thumbSlotProps","valueLabelSlotProps","markSlotProps","markLabelSlotProps","Slot","railProps","trackProps","thumbProps","valueLabelProps","markProps","markLabelProps","inputSliderProps","ValueLabelComponent","Fade","defaultTimeout","webkitTransition","getBackdropUtilityClass","BackdropRoot","invisible","Backdrop","createChainedFunction","funcs","ariaHidden","hide","getPaddingRight","ariaHiddenSiblings","mountElement","currentElement","elementsToExclude","isNotExcludedElement","isNotForbiddenElement","isForbiddenTagName","isInputHidden","isAriaHiddenForbiddenOnElement","findIndexOf","manager","modals","containers","modalIndex","modalRef","hiddenSiblings","getHiddenSiblings","containerIndex","restore","containerInfo","restoreStyle","disableScrollLock","isOverflowing","scrollContainer","DocumentFragment","parentElement","containerWindow","removeProperty","handleContainer","ariaHiddenState","nextTop","isTopModal","getModalUtilityClass","ModalRoot","ModalBackdrop","backdrop","Modal","BackdropComponent","BackdropProps","closeAfterTransition","disableEscapeKeyDown","hideBackdrop","onBackdropClick","onTransitionEnter","onTransitionExited","propsWithDefaults","getBackdropProps","portalRef","hasTransition","mountNodeRef","getHasTransition","ariaHiddenProp","getModal","handleMounted","resolvedContainer","handlePortalRef","createHandleKeyDown","which","createHandleBackdropClick","propsEventHandlers","BackdropSlot","backdropProps","getPopoverUtilityClass","getOffsetTop","getOffsetLeft","getTransformOriginValue","PopoverRoot","PopoverPaper","Popover","anchorOrigin","anchorPosition","anchorReference","marginThreshold","PaperProps","PaperPropsProp","transitionDurationProp","paperRef","getAnchorOffset","anchorRect","getTransformOrigin","elemRect","getPositioningStyle","elemTransformOrigin","anchorOffset","heightThreshold","widthThreshold","isPositioned","setIsPositioned","setPositioningStyles","positioning","updatePosition","handleResize","rootSlotsProp","rootSlotPropsProp","PaperSlot","paperProps","getMenuUtilityClass","RTL_ORIGIN","LTR_ORIGIN","MenuRoot","MenuPaper","WebkitOverflowScrolling","MenuMenuList","disableAutoFocusItem","MenuListProps","PopoverClasses","menuListActionsRef","paperSlotProps","ListSlot","listSlotProps","readMantineScheme","lightTheme","createTheme","darkTheme","MANTINE_NAME_RE","ItemControlsContext","KebabSubMenu","onLeaf","setAnchor","IconComp","onMouseEnter","ListItemIcon","ListItemText","Menu","KebabEntries","ItemLabelWithControls","_ctx$sliderValues","menuAnchor","setMenuAnchor","externalValue","sliderValues","initial","localValue","setLocalValue","isDraggingRef","controlsItemSet","sliderMin","sliderMax","sliderStep","sliderColor","onSliderChange","kebabMenuItems","kebabMenuItemsById","onKebabAction","menuEntries","stopReact","blockNativeDrag","EditableLabelInput","innerRef","restoreRef","setRefs","stopOnly","CustomTreeItem","TreeViewPro","setScheme","_ref4$items","itemsProp","_ref4$licenseKey","_ref4$getItemId","_ref4$getItemLabel","_ref4$getItemChildren","_ref4$multiSelect","_ref4$checkboxSelecti","_ref4$disableSelectio","_ref4$expansionTrigge","_ref4$isItemEditable","_ref4$disabledItemsFo","_ref4$itemChildrenInd","_ref4$itemsReordering","reorderableItems","_ref4$lazyLoading","lazyLoadedChildren","_ref4$showItemControl","showItemControls","controlsItems","_ref4$sliderMin","_ref4$sliderMax","_ref4$sliderStep","sync","obs","MutationObserver","attributeFilter","disconnect","mergeChildren","nodeList","nodeId","loadedKids","existingChildren","mergedChildren","_defineProperty","isItemReorderableFn","sliderValuesRef","handleSliderChange","committed","sliderChange","handleKebabAction","kebabAction","resolvedSliderColor","resolveSliderColor","controlsContextValue","findItem","targetId","found","lazyLoadRequest","orderedRef","handleItemPositionChange","updated","idField","childrenField","idK","childK","moved","removeFrom","kids","insertTo","applyReorder","itemPositionChanged","orderedItems","ThemeProvider","PickerAdapterContext","otherInProps","adapter","parentAdapter","utils","dateAdapter","DateAdapter","dateFormats","dateLibInstance","adapterLocale","isMUIAdapter","defaultDates","minDate","maxDate","localizedFormat","weekOfYear","advancedFormat","formatTokenMap","sectionType","contentType","dd","ddd","dddd","defaultFormats","monthShort","dayOfMonth","dayOfMonthFull","weekday","weekdayShort","hours24h","hours12h","fullDate","keyboardDate","shortDate","normalDate","normalDateWithWeekday","fullTime12h","fullTime24h","keyboardDateTime12h","keyboardDateTime24h","MISSING_UTC_PLUGIN","MISSING_TIMEZONE_PLUGIN","AdapterDayjs","isTimezoneCompatible","lib","escapedCharacters","setLocaleToValue","expectedLocale","getCurrentLocaleCode","hasUTCPlugin","hasTimezonePlugin","comparing","comparisonTemplate","comparingInValueTimezone","setTimezone","getTimezone","cleanTimezone","timezone","guess","createSystemDate","createUTCDate","createTZDate","keepLocalTime","tz","getLocaleFormats","locales","localeObject","adjustOffset","fixedValue","getInvalidDate","$timezone","isUTC","local","toJsDate","is12HourCycleInCurrentLocale","expandFormat","localeFormats","formatKey","formatByString","formatString","formatNumber","numberToFormat","isSameYear","isSameMonth","isSameDay","isSameHour","isAfterYear","isAfterDay","isBeforeYear","isBeforeDay","isWithinRange","startOfYear","startOfMonth","startOfWeek","startOfDay","endOfYear","endOfMonth","endOfWeek","endOfDay","addYears","amount","addMonths","addWeeks","addDays","addHours","addMinutes","addSeconds","getYear","setYear","setMinutes","setSeconds","setMilliseconds","getDaysInMonth","getWeekArray","nestedWeeks","weekNumber","getWeekNumber","getDayOfWeek","getYearRange","startDate","endDate","enUSPickers","previousMonth","nextMonth","openPreviousView","openNextView","calendarViewSwitchingButtonAriaLabel","view","endTime","cancelButtonLabel","clearButtonLabel","okButtonLabel","todayButtonLabel","nextStepButtonLabel","datePickerToolbarTitle","dateTimePickerToolbarTitle","timePickerToolbarTitle","dateRangePickerToolbarTitle","timeRangePickerToolbarTitle","clockLabelText","formattedTime","hoursClockNumberText","minutesClockNumberText","secondsClockNumberText","selectViewText","calendarWeekNumberHeaderLabel","calendarWeekNumberHeaderText","calendarWeekNumberAriaLabelText","calendarWeekNumberText","openDatePickerDialogue","formattedDate","openTimePickerDialogue","openRangePickerDialogue","formattedRange","fieldClearLabel","timeTableLabel","dateTableLabel","fieldYearPlaceholder","digitAmount","fieldMonthPlaceholder","fieldDayPlaceholder","fieldWeekDayPlaceholder","fieldHoursPlaceholder","fieldMinutesPlaceholder","fieldSecondsPlaceholder","fieldMeridiemPlaceholder","weekDay","empty","usePickerTranslations","ArrowLeftIcon","getPickersArrowSwitcherUtilityClass","PickerPrivateContext","isPickerDisabled","isPickerReadOnly","isPickerValueEmpty","isPickerOpen","pickerVariant","pickerOrientation","labelId","dismissViews","hasUIView","getCurrentViewMode","triggerElement","viewContainerRole","defaultActionBarActions","onPopperExited","usePickerPrivateContext","_excluded3","PickersArrowSwitcherRoot","PickersArrowSwitcherSpacer","PickersArrowSwitcherButton","isButtonHidden","PickersArrowSwitcher","isNextDisabled","isNextHidden","onGoToNext","nextLabel","isPreviousDisabled","isPreviousHidden","onGoToPrevious","previousLabel","spacer","previousIconButton","nextIconButton","leftArrowIcon","rightArrowIcon","isHidden","goTo","previousProps","PreviousIconButton","previousIconButtonProps","NextIconButton","nextIconButtonProps","LeftArrowIcon","leftArrowIconProps","RightArrowIcon","rightArrowIconProps","convertValueToMeridiem","ampm","getSecondsInDay","createIsAfterIgnoreDatePart","disableIgnoringDatePartForTimeValidation","dateLeft","dateRight","DEFAULT_STEP_NAVIGATION","hasNextStep","hasSeveralSteps","goToNextStep","areViewsInSameStep","PickerViewRoot","getTimeClockUtilityClass","clockCenter","CLOCK_WIDTH","getAngleValue","deg","getClockPointerUtilityClass","ClockPointerRoot","isClockPointerAnimated","ClockPointerThumb","isClockPointerBetweenTwoValues","ClockPointer","isBetweenTwoClockValues","isInner","viewValue","previousType","pickerOwnerState","getAngleStyle","getClockUtilityClass","mergeDateAndTime","dateParam","timeParam","mergedDate","getTodayDate","valueType","formatMeridiem","ClockRoot","ClockClock","ClockWrapper","ClockSquareMask","isClockDisabled","ClockPin","meridiemButtonCommonStyles","clockMeridiemMode","ClockAmButton","ClockPmButton","ClockMeridiemText","Clock","ampmInClock","handleMeridiemChange","isTimeDisabled","meridiemMode","minutesStep","selectedId","viewRange","minViewValue","maxViewValue","translations","isMoving","squareMask","pin","amButton","pmButton","meridiemText","isSelectedTimeDisabled","isPointerInner","handleValueChange","isFinish","newSelectedValue","angleStep","handleTouchSelection","isPointerBetweenTwoClockValues","keyboardControlStep","listboxRef","clampValue","circleValue","getClockNumberUtilityClass","clockNumberClasses","ClockNumberRoot","isClockNumberInInnerRing","ClockNumber","isClockNumberSelected","isClockNumberDisabled","getHourNumbers","getClockNumberText","currentHours","hourNumbers","endHour","getMinutesNumbers","numberValue","SECTION_TYPE_GRANULARITY","roundDate","roundedDate","singleItemValueManager","emptyValue","getTodayValue","getInitialReferenceValue","referenceDate","inGetTodayDate","minTime","maxTime","getDefaultReferenceDate","cleanValue","isSameError","defaultErrorState","TimeClockRoot","TimeClockArrowSwitcher","TIME_CLOCK_DEFAULT_VIEWS","referenceDateProp","disableFuture","disablePast","shouldDisableTime","showViewSwitcher","inView","views","openTo","onViewChange","focusedView","onFocusedViewChange","timezoneProp","onChangeProp","valueManager","valueWithInputTimezone","inputTimezone","setInputTimezone","timezoneToRender","otherParams","newValueWithInputTimezone","useControlledValue","valueOrReferenceDate","useClockReferenceDate","useNow","setView","previousView","nextView","setValueAndGoToNextView","inFocusedView","getStepNavigation","previousOpenTo","previousViews","defaultFocusedView","setFocusedView","stepNavigation","viewIndex","handleFocusedViewChange","viewToFocus","prevFocusedView","handleChangeView","newView","goToNextView","currentViewSelectionState","selectedView","isSelectionFinishedOnCurrentView","hasMoreViews","currentView","viewToNavigateTo","useViews","selectionState","cleanDate","getMeridiem","timeWithMeridiem","newHoursAmount","convertToMeridiem","useMeridiemMode","rawValue","viewType","shouldCheckPastEnd","containsValidTime","isValidValue","timeValue","valueWithMeridiem","dateWithNewHours","dateWithNewMinutes","dateWithNewSeconds","viewProps","handleHoursChange","hourValue","minutesValue","handleMinutesChange","minuteValue","secondsValue","handleSecondsChange","secondValue","arrowSwitcher","TIME_ONLY_RE","parseToDayjs","withTime","dayjs","TimeClock","dValue","dDefault","dMinTime","dMaxTime","newVal","timeData","formatted","handleViewChange","clockProps","LocalizationProvider","MuiTimeClock"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/dash_mui_charts/metadata.json b/dash_mui_charts/metadata.json index 97df806..43b1f5b 100644 --- a/dash_mui_charts/metadata.json +++ b/dash_mui_charts/metadata.json @@ -1 +1 @@ -{"src/lib/components/BarChart.react.js":{"description":"BarChart \u2014 Dash wrapper for MUI X BarChart (Community) and BarChartPro (Pro).\n\nRenders vertical or horizontal bar charts with support for stacking, bar labels,\ndataset mode, color maps, reference lines, highlighting, and Pro features\n(zoom, toolbar, brush).","displayName":"BarChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"series":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Array of bar series objects. Each series can contain:\n- data (number[]): Bar values\n- dataKey (string): Column key when using dataset prop\n- label (string): Series label for legend/tooltip\n- color (string): Series color\n- stack (string): Stack group ID (series with same value are stacked)\n- stackOffset (string): 'none', 'expand', 'diverging', 'silhouette', 'wiggle'\n- stackOrder (string): 'none', 'appearance', 'ascending', 'descending', 'insideOut', 'reverse'\n- barLabel (string): 'value' or 'formattedValue' to show labels on bars\n- barLabelPlacement (string): 'center' or 'outside'\n- highlightScope (object): {highlight, fade} highlight behavior\n- yAxisId (string): Y-axis binding for biaxial charts\n- id (string): Unique series identifier"},"dataset":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Array of row objects for dataKey-based series.\nExample: [{month: 'Jan', sales: 100}, {month: 'Feb', sales: 150}]"},"xAxis":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"X-axis configuration array. For bar charts, typically uses scaleType: 'band'.\nEach axis can contain:\n- data (array): Category labels\n- dataKey (string): Column key from dataset\n- scaleType (string): 'band' (required for bars), 'linear', 'log', etc.\n- label (string): Axis label text\n- categoryGapRatio (number): Gap between categories (0-1)\n- barGapRatio (number): Gap between bars in same category (-1 to Infinity)\n- tickPlacement (string): 'start', 'end', 'middle', 'extremities'\n- tickLabelPlacement (string): 'tick' or 'middle'\n- colorMap (object): Color mapping configuration\n- zoom (object): Zoom config for Pro features\n- id (string): Axis identifier\n- position (string): 'top', 'bottom', 'none'\n- min/max (number): Domain limits\n- reverse (bool): Reverse axis direction\n- tickNumber (number): Approximate tick count\n- tickMinStep/tickMaxStep (number): Control tick spacing\n- tickLabelStyle (object): CSS for tick labels\n- labelStyle (object): CSS for axis label\n- disableLine (bool): Hide axis line\n- disableTicks (bool): Hide tick marks\n- domainLimit (string): 'nice' or 'strict'\n- height (number): Space reserved for axis"},"yAxis":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Y-axis configuration array. Same structure as xAxis."},"layout":{"type":{"name":"enum","value":[{"value":"'vertical'","computed":false},{"value":"'horizontal'","computed":false}]},"required":false,"description":"Bar direction: 'vertical' (default) or 'horizontal'."},"borderRadius":{"type":{"name":"number"},"required":false,"description":"Border radius for bar corners in pixels."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not set, uses parent container width."},"margin":{"type":{"name":"exact","value":{"top":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false},"right":{"name":"number","required":false}}},"required":false,"description":"Chart margins: {top, bottom, left, right} in pixels."},"grid":{"type":{"name":"exact","value":{"horizontal":{"name":"bool","required":false},"vertical":{"name":"bool","required":false}}},"required":false,"description":"Background grid lines: {horizontal: bool, vertical: bool}."},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Color palette array for series colors."},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"Disable animations."},"loading":{"type":{"name":"bool"},"required":false,"description":"Show loading overlay."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"Hide the legend."},"renderer":{"type":{"name":"enum","value":[{"value":"'svg-single'","computed":false},{"value":"'svg-batch'","computed":false}]},"required":false,"description":"Renderer strategy: 'svg-single' (default) or 'svg-batch' for large datasets."},"axisHighlight":{"type":{"name":"exact","value":{"x":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'line'","computed":false},{"value":"'none'","computed":false}],"required":false},"y":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'line'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Axis highlight configuration: {x: 'band'|'line'|'none', y: 'band'|'line'|'none'}."},"tooltip":{"type":{"name":"exact","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'axis'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration: {trigger: 'item'|'axis'|'none'}."},"highlightedItem":{"type":{"name":"object"},"required":false,"description":"Controlled highlight state. Both input (to set highlight) and output\n(fires on hover). Object: {seriesId, dataIndex} or null."},"referenceLines":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Reference lines array. Each object:\n- x (string|number): Vertical line at this x value\n- y (number): Horizontal line at this y value\n- axisId (string): Which axis (when multiple)\n- label (string): Text label\n- labelAlign (string): 'start', 'middle', 'end'\n- lineStyle (object): SVG style for the line\n- labelStyle (object): SVG style for the label\n- spacing (object): Label offset"},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required for zoom, brush, and toolbar features."},"initialZoom":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Initial zoom state (Pro). Array of {axisId, start, end}."},"showSlider":{"type":{"name":"bool"},"required":false,"description":"Show zoom range slider below the chart (Pro)."},"showToolbar":{"type":{"name":"bool"},"required":false,"description":"Show zoom/export toolbar above the chart (Pro)."},"brushConfig":{"type":{"name":"object"},"required":false,"description":"Brush selection config (Pro): {enabled: bool, preventTooltip: bool, preventHighlight: bool}."},"zoomInteractionConfig":{"type":{"name":"object"},"required":false,"description":"Zoom interaction configuration (Pro). Controls drag, wheel, pinch, brush zoom behaviors."},"clickData":{"type":{"name":"object"},"required":false,"description":"Fires on bar click. Contains: {seriesId, dataIndex, timestamp}."},"axisClickData":{"type":{"name":"object"},"required":false,"description":"Fires on axis area click. Contains: {axisValue, dataIndex, seriesValues, timestamp}."},"zoomData":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Zoom state output (Pro). Fires on zoom change."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times bars have been clicked."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash callback function."}}},"src/lib/components/CandlestickChart.react.js":{"description":"CandlestickChart \u2014 Dash wrapper that renders OHLC candlestick charts\nusing MUI X Charts Pro composition API with custom SVG candle rendering.\n\nSupports:\n- Array format: series[0].data = [[open, high, low, close], ...]\n- Dataset format: dataset + series[0].datasetKeys = {open, high, low, close}\n- Volume overlay (optional)\n- Reference lines\n- Grid, axes, zoom (Pro), toolbar (Pro)\n- Click events","displayName":"CandlestickChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"series":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"OHLC candlestick series. Typically a single series with two data formats:\n\nArray format:\n series=[{data: [[open,high,low,close], ...], upColor: '#4caf50', downColor: '#f44336'}]\n\nDataset format (use with dataset prop):\n series=[{datasetKeys: {open:'open', high:'high', low:'low', close:'close'},\n upColor: '#4caf50', downColor: '#f44336'}]\n\nOptional volume:\n series=[{..., volume: [100, 200, ...]}] (array format)\n series=[{..., volumeKey: 'volume'}] (dataset format)\n\nSeries properties:\n- data (array): Array of [open, high, low, close] tuples or {open, high, low, close} objects\n- datasetKeys (object): {open, high, low, close} mapping to dataset columns\n- upColor (string): Color when close >= open (default: '#4caf50')\n- downColor (string): Color when close < open (default: '#f44336')\n- volume (array): Volume values for each candle\n- volumeKey (string): Dataset column name for volume data"},"dataset":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Dataset for datasetKeys mode. Array of row objects.\nExample: [{date: '2025-01-02', open: 100, high: 110, low: 95, close: 105, volume: 1000}, ...]"},"xAxis":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"X-axis configuration. Typically band scale with dates/labels.\n- data (array): Category labels (dates, day names, etc.)\n- dataKey (string): Column from dataset for labels\n- label (string): Axis label text\n- scaleType (string): Always 'band' for candlestick (set automatically)\n- zoom (object): Zoom config for Pro features\n- tickLabelStyle (object): CSS for tick labels\n- tickPlacement (string): 'start', 'end', 'middle', 'extremities'"},"yAxis":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Y-axis configuration for price values.\n- label (string): Axis label (e.g., 'Price ($)')\n- min/max (number): Override auto-computed domain from OHLC data\n- position (string): 'left' or 'right'"},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not set, uses parent container width."},"margin":{"type":{"name":"exact","value":{"top":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false},"right":{"name":"number","required":false}}},"required":false,"description":"Chart margins: {top, bottom, left, right} in pixels."},"grid":{"type":{"name":"exact","value":{"horizontal":{"name":"bool","required":false},"vertical":{"name":"bool","required":false}}},"required":false,"description":"Background grid lines: {horizontal: bool, vertical: bool}."},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"Disable animations."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"Hide the legend (default: true for candlestick)."},"tooltip":{"type":{"name":"exact","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration: {trigger: 'item'|'none'}.\nSet trigger to 'none' to disable the OHLC tooltip."},"bodyWidthRatio":{"type":{"name":"number"},"required":false,"description":"Candle body width as a ratio of the band width (0-1). Default: 0.6."},"wickWidth":{"type":{"name":"number"},"required":false,"description":"Wick (shadow) line width in pixels. Default: 2."},"showVolume":{"type":{"name":"bool"},"required":false,"description":"Show volume bars below candles. Requires volume data in series."},"volumeHeightRatio":{"type":{"name":"number"},"required":false,"description":"Volume bars maximum height as ratio of chart height (0-1). Default: 0.2."},"referenceLines":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Reference lines array. Same format as BarChart/LineChart."},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required for zoom, slider, and toolbar."},"initialZoom":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Initial zoom state (Pro). Array of {axisId, start, end}."},"showSlider":{"type":{"name":"bool"},"required":false,"description":"Show zoom range slider (Pro)."},"showToolbar":{"type":{"name":"bool"},"required":false,"description":"Show toolbar (Pro)."},"zoomInteractionConfig":{"type":{"name":"object"},"required":false,"description":"Zoom interaction configuration (Pro)."},"clickData":{"type":{"name":"object"},"required":false,"description":"Fires on candle click. Contains: {dataIndex, label, open, high, low, close, timestamp}."},"hoverData":{"type":{"name":"object"},"required":false,"description":"Hover data output (reserved for future use)."},"zoomData":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Zoom state output (Pro)."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash callback function."}}},"src/lib/components/CompositeChart.react.js":{"description":"CompositeChart component for layering multiple chart types together.\nUses MUI X Charts composition API to render scatter, line, and area plots\non a single chart surface. Each series must specify its type ('scatter' or 'line').\nSupports Pro features like zoom/pan with a license key.","displayName":"CompositeChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required for zoom/pan/toolbar features."},"series":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"type":{"name":"enum","value":[{"value":"'scatter'","computed":false},{"value":"'line'","computed":false}],"required":true},"id":{"name":"string","required":false},"label":{"name":"string","required":false},"color":{"name":"string","required":false},"data":{"name":"union","value":[{"name":"arrayOf","value":{"name":"number"}},{"name":"arrayOf","value":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false},"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false}}}}],"required":false},"datasetKeys":{"name":"shape","value":{"x":{"name":"string","required":false},"y":{"name":"string","required":false}},"required":false},"markerSize":{"name":"number","required":false},"preview":{"name":"shape","value":{"markerSize":{"name":"number","required":false}},"required":false},"area":{"name":"bool","required":false},"curve":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'monotoneX'","computed":false},{"value":"'monotoneY'","computed":false},{"value":"'natural'","computed":false},{"value":"'step'","computed":false},{"value":"'stepBefore'","computed":false},{"value":"'stepAfter'","computed":false},{"value":"'catmullRom'","computed":false},{"value":"'bumpX'","computed":false},{"value":"'bumpY'","computed":false}],"required":false},"showMark":{"name":"bool","required":false},"yAxisId":{"name":"string","required":false},"xAxisId":{"name":"string","required":false},"highlightScope":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'series'","computed":false},{"value":"'none'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'global'","computed":false},{"value":"'series'","computed":false},{"value":"'none'","computed":false}],"required":false}},"required":false},"stack":{"name":"string","required":false},"connectNulls":{"name":"bool","required":false}}}},"required":false,"description":"Array of series to display. Each series MUST include a 'type' field.\n\nScatter series:\n{type: 'scatter', id, label, color, markerSize, data: [{x, y, id}], highlightScope}\n\nLine series:\n{type: 'line', id, label, color, data: [...], area, curve, showMark, highlightScope, yAxisId}"},"xAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'sqrt'","computed":false},{"value":"'symlog'","computed":false},{"value":"'utc'","computed":false},{"value":"'pow'","computed":false}],"required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"position":{"name":"enum","value":[{"value":"'top'","computed":false},{"value":"'bottom'","computed":false},{"value":"'none'","computed":false}],"required":false},"reverse":{"name":"bool","required":false},"colorMap":{"name":"object","required":false},"tickLabelStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickNumber":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickLabelMinGap":{"name":"number","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'end'","computed":false},{"value":"'middle'","computed":false},{"value":"'extremities'","computed":false}],"required":false},"height":{"name":"number","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false},"dateFormat":{"name":"string","required":false},"dateTickFormat":{"name":"string","required":false},"valueFormatter":{"name":"union","value":[{"name":"func"},{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}}],"required":false}}}},"required":false,"description":"X-axis configuration. Array of axis config objects."},"yAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'sqrt'","computed":false},{"value":"'symlog'","computed":false},{"value":"'utc'","computed":false},{"value":"'pow'","computed":false}],"required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"position":{"name":"enum","value":[{"value":"'left'","computed":false},{"value":"'right'","computed":false},{"value":"'none'","computed":false}],"required":false},"reverse":{"name":"bool","required":false},"colorMap":{"name":"object","required":false},"tickLabelStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickNumber":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickLabelMinGap":{"name":"number","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'end'","computed":false},{"value":"'middle'","computed":false},{"value":"'extremities'","computed":false}],"required":false},"width":{"name":"number","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false},"valueFormatter":{"name":"union","value":[{"name":"func"},{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}}],"required":false}}}},"required":false,"description":"Y-axis configuration. Array of axis config objects."},"zAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"string","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"colorMap":{"name":"object","required":false}}}},"required":false,"description":"Z-axis configuration for color mapping scatter points."},"dataset":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Dataset array for datasetKeys-driven series."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 400."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not set, fills available space."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels."},"grid":{"type":{"name":"shape","value":{"horizontal":{"name":"bool","required":false},"vertical":{"name":"bool","required":false}}},"required":false,"description":"Grid configuration."},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Color palette array."},"voronoiMaxRadius":{"type":{"name":"union","value":[{"name":"number"},{"name":"enum","value":[{"value":"'item'","computed":false}]}]},"required":false,"description":"Maximum distance for Voronoi scatter interaction."},"disableVoronoi":{"type":{"name":"bool"},"required":false,"description":"If true, disables Voronoi cell interaction."},"axisHighlight":{"type":{"name":"shape","value":{"x":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false},{"value":"'band'","computed":false}],"required":false},"y":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false},{"value":"'band'","computed":false}],"required":false}}},"required":false,"description":"Axis highlight configuration."},"tooltip":{"type":{"name":"shape","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'axis'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"If true, the legend is hidden."},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"If true, animations are disabled."},"loading":{"type":{"name":"bool"},"required":false,"description":"If true, shows a loading overlay."},"slotProps":{"type":{"name":"object"},"required":false,"description":"Props passed to internal slot components."},"referenceLines":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"x":{"name":"union","value":[{"name":"number"},{"name":"string"}],"required":false},"y":{"name":"number","required":false},"label":{"name":"string","required":false},"lineStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"labelAlign":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'middle'","computed":false},{"value":"'end'","computed":false}],"required":false},"spacing":{"name":"object","required":false}}}},"required":false,"description":"Reference lines to display on the chart.\nArray of objects with:\n- x (number|string): Vertical reference line at x value\n- y (number): Horizontal reference line at y value\n- label (string): Label text\n- lineStyle (object): CSS for line element\n- labelStyle (object): CSS for label text\n- labelAlign (string): 'start', 'middle', 'end'"},"initialZoom":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},"required":false,"description":"Initial zoom configuration (Pro). Array of {axisId, start, end} objects.\nstart/end are percentages (0-100) of the axis range."},"showToolbar":{"type":{"name":"bool"},"required":false,"description":"If true, shows the Pro toolbar for zoom/export controls."},"showSlider":{"type":{"name":"bool"},"required":false,"description":"If true, shows the zoom slider below the chart.\nInjects zoom.slider.enabled into x-axis config."},"zoomInteractionConfig":{"type":{"name":"shape","value":{"zoom":{"name":"array","required":false},"pan":{"name":"array","required":false}}},"required":false,"description":"Fine-grained control over zoom/pan interactions (Pro).\n- zoom: Array of interaction types ['wheel', 'pinch', 'brush', 'tapAndDrag', 'doubleTapReset']\n- pan: Array of interaction types ['drag', 'pressAndDrag', 'wheel']"},"highlightedAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":true},"dataIndex":{"name":"number","required":true}}}},"required":false,"description":"Controlled axis highlight state. Array of objects specifying which axis values\nare highlighted. Each object has:\n- axisId (string|number): The axis identifier\n- dataIndex (number): The data index to highlight\nSet to empty array [] to clear highlights."},"highlightedItem":{"type":{"name":"object"},"required":false,"description":"Currently highlighted item (controlled input/output)."},"tooltipItem":{"type":{"name":"shape","value":{"type":{"name":"string","required":false},"seriesId":{"name":"string","required":false},"dataIndex":{"name":"number","required":false}}},"required":false,"description":"Controlled tooltip item state. Used to synchronize tooltips across multiple charts.\nObject with:\n- type (string): Chart type ('line', 'scatter', etc.)\n- seriesId (string): The series identifier\n- dataIndex (number): The data index within the series\nSet to null to hide tooltip."},"forecast":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"x":{"name":"number","required":true},"y":{"name":"number","required":true},"upper":{"name":"number","required":false},"lower":{"name":"number","required":false}}}},"required":false,"description":"Forecast overlay data. Array of objects with x, y (center), upper, and lower\nvalues. Renders a dashed trend line with a shaded uncertainty band in the\nchart's SVG layer, matching the LiveTradingChart forecast style."},"forecastColor":{"type":{"name":"string"},"required":false,"description":"Forecast line and band color. Default '#ff9800' (orange)."},"forecastOpacity":{"type":{"name":"number"},"required":false,"description":"Forecast band fill opacity. Default 0.15."},"enableCrosshair":{"type":{"name":"bool"},"required":false,"description":"Enable crosshair position tracking. When true, the crosshairPosition\noutput prop reports the pointer's x/y data-space coordinates in real time\nas the user moves the mouse over the chart. Requires axisHighlight\nset to {x: 'line', y: 'line'} for the visual crosshair."},"crosshairPosition":{"type":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false}}},"required":false,"description":"Current crosshair position in data coordinates. Read-only output that\nupdates as the user moves the mouse. Object with:\n- x (number): x-axis data value (epoch ms for time scales)\n- y (number): y-axis data value\nSet to null when the pointer leaves the chart area."},"crosshairClick":{"type":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false},"button":{"name":"string","required":false},"timestamp":{"name":"string","required":false}}},"required":false,"description":"Fires on right-click within the chart drawing area when enableCrosshair\nis true. Object with:\n- x (number): x-axis data value at click position\n- y (number): y-axis data value at click position\n- button (string): always 'right'\n- timestamp (string): ISO timestamp of the click\nUse this to implement context menus (e.g. \"Set Alert\") at precise\ndata coordinates."},"syncedTooltipIndex":{"type":{"name":"number"},"required":false,"description":"Synced tooltip data index. When set to a non-negative integer, renders a\ntooltip overlay at that x-axis data index position, even without pointer hover.\nUse this to synchronize tooltip display across multiple CompositeCharts:\nread highlightedAxis.dataIndex from one chart, write it to syncedTooltipIndex\non the other charts. Set to null or -1 to hide."},"clickData":{"type":{"name":"object"},"required":false,"description":"Data from the most recent click event.\nContains type ('scatter'|'line'), seriesId, dataIndex, and timestamp."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times the chart has been clicked."},"zoomData":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},"required":false,"description":"Current zoom state. Read-only output updated on zoom/pan.\nArray of {axisId, start, end} objects."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/Heatmap.react.js":{"description":"Heatmap component wrapping MUI X Charts Pro Heatmap.\nRenders a matrix visualization where color intensity represents values.\nThis is a Pro feature - requires MUI X Pro license key.","displayName":"Heatmap","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required to enable Pro features without watermarks.\nGet your license key from https://mui.com/x/introduction/licensing/"},"data":{"type":{"name":"arrayOf","value":{"name":"arrayOf","value":{"name":"number"}}},"required":false,"description":"Heatmap data as an array of [x, y, value] tuples.\n- x: X-axis index (0-based)\n- y: Y-axis index (0-based)\n- value: Numeric value for the cell (mapped to color)\n\nExample: [[0, 0, 25], [0, 1, 45], [1, 0, 30], [1, 1, 60]]"},"xAxis":{"type":{"name":"shape","value":{"data":{"name":"array","required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'point'","computed":false}],"required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false}}},"required":false,"description":"X-axis configuration object.\n- data (array): Category labels for x-axis\n- label (string): Axis label\n- scaleType (string): Scale type, defaults to 'band' for heatmaps\n- zoom (boolean or object): Enable zoom on this axis. Can be true or object with:\n - minStart (number): Minimum start position (0-100)\n - maxEnd (number): Maximum end position (0-100)\n - minSpan (number): Minimum zoom span\n - maxSpan (number): Maximum zoom span\n - step (number): Zoom step size\n - panning (boolean): Enable panning\n - filterMode (string): 'keep' or 'discard'\n - slider (object): Slider config with { enabled, preview, size, showTooltip }"},"yAxis":{"type":{"name":"shape","value":{"data":{"name":"array","required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'point'","computed":false}],"required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false}}},"required":false,"description":"Y-axis configuration object.\n- data (array): Category labels for y-axis\n- label (string): Axis label\n- scaleType (string): Scale type, defaults to 'band' for heatmaps\n- zoom (boolean or object): Enable zoom on this axis (same options as xAxis)"},"colorScale":{"type":{"name":"shape","value":{"type":{"name":"enum","value":[{"value":"'continuous'","computed":false},{"value":"'piecewise'","computed":false}],"required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"colors":{"name":"arrayOf","value":{"name":"string"},"required":false},"thresholds":{"name":"arrayOf","value":{"name":"number"},"required":false}}},"required":false,"description":"Color scale configuration for mapping values to colors.\n\nContinuous scale (interpolates between colors):\n{ type: 'continuous', min: 0, max: 100, colors: ['#e3f2fd', '#1565c0'] }\n\nPiecewise scale (discrete color bands):\n{ type: 'piecewise', thresholds: [20, 40, 60, 80],\n colors: ['#color1', '#color2', '#color3', '#color4', '#color5'] }\n\nNote: For piecewise, you need n+1 colors for n thresholds."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not specified, the chart expands to fill\nthe available space."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 400."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels. Object with top, right, bottom, left keys."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"If true, the color legend is hidden."},"tooltip":{"type":{"name":"shape","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration.\n- trigger (string): 'item' to show on cell hover, 'none' to disable"},"highlightScope":{"type":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'global'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Highlight scope configuration for cell highlighting behavior.\n- highlight: 'item' or 'none'\n- fade: 'global' or 'none'"},"cellStyle":{"type":{"name":"union","value":[{"name":"enum","value":[{"value":"'rounded'","computed":false}]},{"name":"shape","value":{"gap":{"name":"number","required":false},"borderRadius":{"name":"number","required":false},"showValue":{"name":"bool","required":false},"fontSize":{"name":"number","required":false},"fontWeight":{"name":"number","required":false},"textColor":{"name":"string","required":false}}}]},"required":false,"description":"Custom cell style. Use 'rounded' for default rounded corners with gap,\nor provide an object for detailed configuration:\n- gap (number): Spacing between cells in pixels (default: 4)\n- borderRadius (number): Corner radius in pixels (default: 10)\n- showValue (boolean): Display value text in cells (default: true)\n- fontSize (number): Font size for value text (default: 12)\n- fontWeight (number): Font weight for value text (default: 500)\n- textColor (string): Color for value text (default: '#ffffff')"},"slotProps":{"type":{"name":"object"},"required":false,"description":"Props passed to internal slot components for customization."},"highlightedItem":{"type":{"name":"object"},"required":false,"description":"Currently highlighted item. Read-only output property updated when\nthe user hovers over a cell."},"clickData":{"type":{"name":"object"},"required":false,"description":"Data from the most recent click event. Read-only output property.\nContains x, y, value, seriesId, and timestamp."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times the chart has been clicked. Increments on each click event."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/LineChart.react.js":{"description":"LineChart component wrapping MUI X Charts Pro with composition API.\nRenders interactive line charts with support for multiple series,\ncustomizable axes, tooltips, click event callbacks, and Pro features\nlike zoom, pan, and zoom slider.","displayName":"LineChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required to enable Pro features like zoom/pan\nwithout watermarks. Get your license key from https://mui.com/x/introduction/licensing/"},"series":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"string","required":false},"data":{"name":"arrayOf","value":{"name":"number"},"required":false},"label":{"name":"string","required":false},"color":{"name":"string","required":false},"area":{"name":"bool","required":false},"stack":{"name":"string","required":false},"curve":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'monotoneX'","computed":false},{"value":"'monotoneY'","computed":false},{"value":"'natural'","computed":false},{"value":"'step'","computed":false},{"value":"'stepBefore'","computed":false},{"value":"'stepAfter'","computed":false},{"value":"'catmullRom'","computed":false},{"value":"'bumpX'","computed":false},{"value":"'bumpY'","computed":false}],"required":false},"showMark":{"name":"bool","required":false},"connectNulls":{"name":"bool","required":false},"yAxisId":{"name":"string","required":false},"xAxisId":{"name":"string","required":false},"highlightScope":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'item'","computed":false},{"value":"'series'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'series'","computed":false},{"value":"'global'","computed":false}],"required":false}},"required":false}}}},"required":false,"description":"Array of series configurations. Each series represents a line in the chart.\nEach series object can have:\n- id (string): Unique identifier for the series\n- data (array of numbers): Y-axis values, supports null for gaps\n- label (string): Label shown in legend and tooltip\n- color (string): Custom color for this series\n- area (boolean): Fill area under the line\n- stack (string): Stack identifier for stacked area charts\n- curve (string): Interpolation method - 'linear', 'monotoneX', 'monotoneY',\n 'natural', 'step', 'stepBefore', 'stepAfter', 'catmullRom', 'bumpX', 'bumpY'\n- showMark (boolean): Whether to show data point markers\n- connectNulls (boolean): Whether to bridge gaps across null values\n- yAxisId (string): ID of the y-axis to use for this series (for biaxial charts)\n- xAxisId (string): ID of the x-axis to use for this series\n- highlightScope (object): Per-series highlight behavior with:\n - highlight: 'none', 'item', or 'series'\n - fade: 'none', 'series', or 'global'"},"xAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'utc'","computed":false},{"value":"'symlog'","computed":false},{"value":"'sqrt'","computed":false}],"required":false},"position":{"name":"enum","value":[{"value":"'top'","computed":false},{"value":"'bottom'","computed":false},{"value":"'none'","computed":false}],"required":false},"id":{"name":"string","required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"reverse":{"name":"bool","required":false},"tickNumber":{"name":"number","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickInterval":{"name":"array","required":false},"tickLabelStyle":{"name":"object","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'end'","computed":false},{"value":"'extremities'","computed":false},{"value":"'middle'","computed":false},{"value":"'start'","computed":false}],"required":false},"tickLabelMinGap":{"name":"number","required":false},"labelStyle":{"name":"object","required":false},"height":{"name":"number","required":false},"dateFormat":{"name":"string","required":false},"dateTickFormat":{"name":"string","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false},"categoryGapRatio":{"name":"number","required":false},"barGapRatio":{"name":"number","required":false},"colorMap":{"name":"object","required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false},"valueFormatter":{"name":"union","value":[{"name":"func"},{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}}],"required":false}}}},"required":false,"description":"X-axis configuration. Array of axis config objects.\nEach axis object can have:\n- data (array): X-axis values (timestamps in ms for 'time' scaleType)\n- dataKey (string): Key to use from dataset for axis values\n- label (string): Axis label\n- scaleType (string): 'band', 'point', 'linear', 'log', 'time', 'utc', 'symlog', 'sqrt'\n- position (string): 'top', 'bottom', or 'none' (hidden but still computed)\n- id (string): Axis identifier for referencing in series and zoom\n- min (number): Minimum domain value\n- max (number): Maximum domain value\n- reverse (boolean): Reverse axis direction\n- tickNumber (number): Approximate number of ticks\n- tickMinStep (number): Minimum step between ticks (ms for time axes)\n- tickMaxStep (number): Maximum step between ticks\n- tickSize (number): Tick mark length in pixels (default: 6)\n- tickSpacing (number): Minimum spacing in px between ticks (ordinal axes only)\n- tickInterval (array): Fixed tick positions as array of values\n- tickLabelStyle (object): CSS style for tick labels (e.g. {angle: 45, fontSize: 12})\n- tickLabelPlacement (string): 'middle' or 'tick' (band scale only)\n- tickPlacement (string): 'end', 'extremities', 'middle', 'start' (band scale only)\n- tickLabelMinGap (number): Minimum gap in px between tick labels (default: 4)\n- labelStyle (object): CSS style for the axis label\n- height (number): Space reserved for this x-axis in pixels\n- disableLine (boolean): Hide the axis line\n- disableTicks (boolean): Hide tick marks\n- domainLimit (string): 'nice' (default, rounds to friendly values) or 'strict'\n- categoryGapRatio (number): Gap ratio between bands (0-1, band scale only)\n- barGapRatio (number): Gap ratio between bars within a band (band scale only)\n- colorMap (object): Axis color mapping configuration\n- zoom (boolean or object): Enable zoom on this axis. Can be true or object with:\n - minStart (number): Minimum start position (0-100)\n - maxEnd (number): Maximum end position (0-100)\n - minSpan (number): Minimum zoom span\n - maxSpan (number): Maximum zoom span\n - step (number): Zoom step size\n - panning (boolean): Enable panning\n - filterMode (string): 'keep' or 'discard'\n - slider (object): Slider config with { enabled, preview, size, showTooltip }"},"yAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'utc'","computed":false},{"value":"'symlog'","computed":false},{"value":"'sqrt'","computed":false}],"required":false},"position":{"name":"enum","value":[{"value":"'left'","computed":false},{"value":"'right'","computed":false},{"value":"'none'","computed":false}],"required":false},"id":{"name":"string","required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"width":{"name":"number","required":false},"reverse":{"name":"bool","required":false},"dateFormat":{"name":"string","required":false},"dateTickFormat":{"name":"string","required":false},"tickNumber":{"name":"number","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickInterval":{"name":"array","required":false},"tickLabelStyle":{"name":"object","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'end'","computed":false},{"value":"'extremities'","computed":false},{"value":"'middle'","computed":false},{"value":"'start'","computed":false}],"required":false},"tickLabelMinGap":{"name":"number","required":false},"labelStyle":{"name":"object","required":false},"height":{"name":"number","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false},"categoryGapRatio":{"name":"number","required":false},"barGapRatio":{"name":"number","required":false},"colorMap":{"name":"object","required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false},"valueFormatter":{"name":"union","value":[{"name":"func"},{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}}],"required":false}}}},"required":false,"description":"Y-axis configuration. Array of axis config objects.\nEach axis object can have:\n- data (array): Y-axis values (for horizontal bar charts)\n- dataKey (string): Key to use from dataset for axis values\n- label (string): Axis label\n- scaleType (string): 'band', 'point', 'linear', 'log', 'time', 'utc', 'symlog', 'sqrt'\n- position (string): 'left', 'right', or 'none' (hidden but still computed)\n- id (string): Axis identifier for referencing in series\n- min (number): Minimum domain value\n- max (number): Maximum domain value\n- width (number): Width allocated for axis in pixels\n- reverse (boolean): Reverse axis direction\n- tickNumber (number): Approximate number of ticks\n- tickMinStep (number): Minimum step between ticks\n- tickMaxStep (number): Maximum step between ticks\n- tickSize (number): Tick mark length in pixels (default: 6)\n- tickSpacing (number): Minimum spacing in px between ticks (ordinal axes only)\n- tickInterval (array): Fixed tick positions as array of values\n- tickLabelStyle (object): CSS style for tick labels (e.g. {angle: 45, fontSize: 12})\n- tickLabelPlacement (string): 'middle' or 'tick' (band scale only)\n- tickPlacement (string): 'end', 'extremities', 'middle', 'start' (band scale only)\n- tickLabelMinGap (number): Minimum gap in px between tick labels (default: 4)\n- labelStyle (object): CSS style for the axis label\n- height (number): Space reserved for this y-axis in pixels\n- disableLine (boolean): Hide the axis line\n- disableTicks (boolean): Hide tick marks\n- domainLimit (string): 'nice' (default, rounds to friendly values) or 'strict'\n- categoryGapRatio (number): Gap ratio between bands (0-1, band scale only)\n- barGapRatio (number): Gap ratio between bars within a band (band scale only)\n- colorMap (object): Axis color mapping configuration\n- zoom (boolean or object): Enable zoom on this axis (same options as xAxis)"},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 400."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not specified, the chart expands to fill\nthe available space."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels. Object with top, right, bottom, left keys."},"grid":{"type":{"name":"shape","value":{"vertical":{"name":"bool","required":false},"horizontal":{"name":"bool","required":false}}},"required":false,"description":"Grid configuration. Object with vertical and horizontal boolean keys."},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Array of colors for the series palette."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"If true, the legend is hidden."},"tooltip":{"type":{"name":"shape","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'axis'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration. Object with trigger key.\n- trigger (string): 'item', 'axis', or 'none'"},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"If true, animations are skipped."},"loading":{"type":{"name":"bool"},"required":false,"description":"If true, a loading overlay is displayed."},"zoom":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"string","required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},"required":false,"description":"Controlled zoom state for the chart. Array of objects with:\n- axisId (string): The axis identifier\n- start (number): Start position (0-100)\n- end (number): End position (0-100)"},"initialZoom":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"string","required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},"required":false,"description":"Initial zoom state for uncontrolled mode. Array of objects with:\n- axisId (string): The axis identifier\n- start (number): Start position (0-100)\n- end (number): End position (0-100)"},"showSlider":{"type":{"name":"bool"},"required":false,"description":"If true, shows a zoom slider below the chart for easy zoom control.\nThe slider allows users to select a range and pan through the data."},"zoomInteractionConfig":{"type":{"name":"shape","value":{"zoom":{"name":"arrayOf","value":{"name":"union","value":[{"name":"string"},{"name":"shape","value":{"type":{"name":"string","required":false},"requiredKeys":{"name":"arrayOf","value":{"name":"string"},"required":false},"pointerMode":{"name":"enum","value":[{"value":"'mouse'","computed":false},{"value":"'touch'","computed":false}],"required":false}}}]},"required":false},"pan":{"name":"arrayOf","value":{"name":"union","value":[{"name":"string"},{"name":"shape","value":{"type":{"name":"string","required":false},"requiredKeys":{"name":"arrayOf","value":{"name":"string"},"required":false},"pointerMode":{"name":"enum","value":[{"value":"'mouse'","computed":false},{"value":"'touch'","computed":false}],"required":false}}}]},"required":false}}},"required":false,"description":"Zoom interaction configuration. Controls which interactions are enabled for\nzooming and panning. Object with:\n- zoom (array): Zoom interactions - 'wheel', 'pinch', 'tapAndDrag', 'brush', 'doubleTapReset',\n or objects with { type, requiredKeys, pointerMode }\n- pan (array): Pan interactions - 'drag', 'pressAndDrag', 'wheel',\n or objects with { type, requiredKeys, pointerMode }"},"referenceLines":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"x":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"y":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"axisId":{"name":"string","required":false},"label":{"name":"string","required":false},"labelAlign":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'middle'","computed":false},{"value":"'end'","computed":false}],"required":false},"lineStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"spacing":{"name":"union","value":[{"name":"number"},{"name":"object"}],"required":false}}}},"required":false,"description":"Array of reference line configurations. Each reference line can be vertical (x) or horizontal (y).\n- x (string|number): X-axis value for a vertical reference line\n- y (number): Y-axis value for a horizontal reference line\n- axisId (string): The axis ID to use for the reference value\n- label (string): Label text displayed along the reference line\n- labelAlign (string): 'start', 'middle', or 'end' alignment\n- lineStyle (object): CSS style object for the line (e.g. {stroke: 'red', strokeDasharray: '4 4'})\n- labelStyle (object): CSS style object for the label\n- spacing (number|object): Space around label in px, or {x, y} object"},"brushConfig":{"type":{"name":"shape","value":{"enabled":{"name":"bool","required":false},"preventTooltip":{"name":"bool","required":false},"preventHighlight":{"name":"bool","required":false}}},"required":false,"description":"Brush configuration for range selection. Object with:\n- enabled (boolean): Whether brush interaction is enabled (default: false)\n- preventTooltip (boolean): Prevent tooltip during brush (default: true)\n- preventHighlight (boolean): Prevent highlight during brush (default: true)"},"brushOverlay":{"type":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'default'","computed":false},{"value":"'values'","computed":false}]},"required":false,"description":"Type of brush overlay to display:\n- 'none': No overlay (default)\n- 'default': Standard MUI selection rectangle\n- 'values': Custom overlay showing start/end values with difference and percentage"},"brushSeriesId":{"type":{"name":"string"},"required":false,"description":"Series ID for the custom 'values' brush overlay to read data from.\nIf not specified, uses the first series."},"brushData":{"type":{"name":"shape","value":{"start":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false}},"required":false},"current":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false}},"required":false},"timestamp":{"name":"string","required":false}}},"required":false,"description":"Current brush selection data. Read-only output property.\nContains pixel coordinates of the brush selection."},"axisHighlight":{"type":{"name":"shape","value":{"x":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false},{"value":"'band'","computed":false}],"required":false},"y":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false}],"required":false}}},"required":false,"description":"Axis highlight configuration. Controls how axes are highlighted on hover.\n- x (string): 'none', 'line', or 'band'\n- y (string): 'none' or 'line'"},"highlightedAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":true},"dataIndex":{"name":"number","required":true}}}},"required":false,"description":"Controlled axis highlight state. Array of objects specifying which axis values\nare highlighted. Each object has:\n- axisId (string|number): The axis identifier\n- dataIndex (number): The data index to highlight\nSet to empty array [] to clear highlights."},"highlightedItem":{"type":{"name":"shape","value":{"seriesId":{"name":"string","required":true},"dataIndex":{"name":"number","required":false}}},"required":false,"description":"Controlled item highlight state. Specifies which data point is highlighted.\nObject with:\n- seriesId (string): The series identifier\n- dataIndex (number): The data index within the series (optional)\nSet to null to clear highlight."},"showToolbar":{"type":{"name":"bool"},"required":false,"description":"Show chart toolbar with zoom/export controls. This is a Pro feature\nthat requires a valid licenseKey."},"tooltipItem":{"type":{"name":"shape","value":{"type":{"name":"string","required":false},"seriesId":{"name":"string","required":false},"dataIndex":{"name":"number","required":false}}},"required":false,"description":"Controlled tooltip item state. Used to synchronize tooltips across multiple charts.\nObject with:\n- type (string): Chart type ('line', 'bar', 'pie', etc.)\n- seriesId (string): The series identifier\n- dataIndex (number): The data index within the series\nSet to null to hide tooltip."},"zoomData":{"type":{"name":"union","value":[{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"string","required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},{"name":"any"}]},"required":false,"description":"Current zoom state. Read-only output property updated when zoom changes.\nArray of objects with axisId, start, and end values."},"clickData":{"type":{"name":"object"},"required":false,"description":"Data from the most recent click event. Read-only output property.\nContains type ('axis', 'mark', 'line', 'area'), relevant IDs/values,\nand timestamp."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times the chart has been clicked. Increments on each click event."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/LiveTradingChart.react.js":{"description":"LiveTradingChart simulates real-time candlestick trading data with volume bars,\nforecast line with uncertainty bands, alert labels, and optional price labels.\nUses an internal React timer for smooth high-speed updates.","displayName":"LiveTradingChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default 500."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not set, fills available space."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins."},"windowSize":{"type":{"name":"number"},"required":false,"description":"Number of visible candles in the sliding window. Default 60."},"forecastSize":{"type":{"name":"number"},"required":false,"description":"Number of forecast points beyond the window. Default 15."},"running":{"type":{"name":"bool"},"required":false,"description":"Whether the simulation is running. Default false."},"intervalMs":{"type":{"name":"number"},"required":false,"description":"Tick interval in milliseconds. Default 300."},"seed":{"type":{"name":"number"},"required":false,"description":"RNG seed for reproducible randomness. Default 42."},"resetTrigger":{"type":{"name":"number"},"required":false,"description":"Increment this to reset the simulation."},"initialPrice":{"type":{"name":"number"},"required":false,"description":"Starting price. Default 100."},"volatility":{"type":{"name":"number"},"required":false,"description":"Price volatility factor. Default 0.02."},"drift":{"type":{"name":"number"},"required":false,"description":"Price drift/trend factor. Default 0.001."},"forecastVolatility":{"type":{"name":"number"},"required":false,"description":"Forecast uncertainty multiplier. Default 1.5."},"alertProbability":{"type":{"name":"number"},"required":false,"description":"(Legacy) Probability of alert per tick \u2014 unused by default swing detection."},"alertThresholdPct":{"type":{"name":"number"},"required":false,"description":"(Legacy) Minimum % change to flag as alert \u2014 unused by default swing detection."},"alertLookback":{"type":{"name":"number"},"required":false,"description":"Number of candles on each side to confirm a swing high/low. Default 5."},"alertMinDistance":{"type":{"name":"number"},"required":false,"description":"Minimum ticks between consecutive alerts to prevent clustering. Default 10."},"maxVisibleAlerts":{"type":{"name":"number"},"required":false,"description":"Maximum number of alert labels visible in the window. Default 6."},"alertFilter":{"type":{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}},"required":false,"description":"Functions-as-props: custom alert detection. {function: 'name', options: {...}}"},"alertFormatter":{"type":{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}},"required":false,"description":"Functions-as-props: custom alert label formatting. {function: 'name', options: {...}}"},"candleUpColor":{"type":{"name":"string"},"required":false,"description":"Candle color for upward (close >= open) moves. Default '#4caf50'."},"candleDownColor":{"type":{"name":"string"},"required":false,"description":"Candle color for downward (close < open) moves. Default '#f44336'."},"forecastColor":{"type":{"name":"string"},"required":false,"description":"Forecast line/area color. Default '#ff9800'."},"alertUpColor":{"type":{"name":"string"},"required":false,"description":"Alert label color for upward moves. Default '#4caf50'."},"alertDownColor":{"type":{"name":"string"},"required":false,"description":"Alert label color for downward moves. Default '#f44336'."},"uncertaintyOpacity":{"type":{"name":"number"},"required":false,"description":"Opacity of the forecast uncertainty shaded area. Default 0.15."},"showVolume":{"type":{"name":"bool"},"required":false,"description":"Show volume bars. Default true."},"showLabels":{"type":{"name":"bool"},"required":false,"description":"Show price labels on candles. Default false."},"volumeHeightPct":{"type":{"name":"number"},"required":false,"description":"Volume bars height as percentage of chart area. Default 20."},"showGrid":{"type":{"name":"bool"},"required":false,"description":"Show grid lines. Default true."},"showSlider":{"type":{"name":"bool"},"required":false,"description":"Show zoom slider below the chart (Pro). Default false."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"Hide the legend. Default true."},"grid":{"type":{"name":"shape","value":{"horizontal":{"name":"bool","required":false},"vertical":{"name":"bool","required":false}}},"required":false,"description":"Grid configuration."},"xAxisLabel":{"type":{"name":"string"},"required":false,"description":"X-axis label text. Default 'Tick'."},"yAxisLabel":{"type":{"name":"string"},"required":false,"description":"Y-axis label text. Default 'Price'."},"currentPrice":{"type":{"name":"number"},"required":false,"description":"Current price (read-only output)."},"tickCount":{"type":{"name":"number"},"required":false,"description":"Total ticks elapsed (read-only output)."},"alertHistory":{"type":{"name":"array"},"required":false,"description":"Recent alert history (read-only output)."},"zoomData":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},"required":false,"description":"Current zoom state (read-only output)."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback for reporting property changes."}}},"src/lib/components/PieChart.react.js":{"description":"PieChart component wrapping MUI X Charts PieChart.\nRenders pie and donut charts with customizable arcs, labels, and interactions.\nSupports single series (via data prop) or multiple series (via series prop) for nested pies.\nThis is a free feature - no MUI X Pro license required.","displayName":"PieChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"data":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"number"},{"name":"string"}],"required":false},"value":{"name":"number","required":true},"label":{"name":"string","required":false},"color":{"name":"string","required":false}}}},"required":false,"description":"Pie chart data as an array of objects (for single series).\nEach object should have:\n- id (number/string): Unique identifier for the slice\n- value (number): The numeric value (required)\n- label (string): Display label for the slice\n- color (string): Optional color override for this slice\n\nExample: [\n { id: 0, value: 35, label: 'Marketing' },\n { id: 1, value: 25, label: 'Engineering', color: '#1976d2' },\n]\n\nNote: Use either 'data' for single series or 'series' for multiple series (nested pies)."},"series":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"string","required":false},"data":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"number"},{"name":"string"}],"required":false},"value":{"name":"number","required":true},"label":{"name":"string","required":false},"color":{"name":"string","required":false}}},"required":true},"innerRadius":{"name":"union","value":[{"name":"number"},{"name":"string"}],"required":false},"outerRadius":{"name":"union","value":[{"name":"number"},{"name":"string"}],"required":false},"paddingAngle":{"name":"number","required":false},"cornerRadius":{"name":"number","required":false},"startAngle":{"name":"number","required":false},"endAngle":{"name":"number","required":false},"arcLabel":{"name":"enum","value":[{"value":"'value'","computed":false},{"value":"'label'","computed":false},{"value":"'formattedValue'","computed":false}],"required":false},"arcLabelMinAngle":{"name":"number","required":false},"arcLabelRadius":{"name":"number","required":false},"highlightScope":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'global'","computed":false},{"value":"'none'","computed":false}],"required":false}},"required":false}}}},"required":false,"description":"Array of series configurations for multi-series/nested pie charts.\nEach series can have its own data, geometry, and styling.\nWhen provided, the 'data' prop and individual geometry props are ignored.\n\nExample for nested pie:\n[\n {\n data: innerRingData,\n innerRadius: 0,\n outerRadius: 80,\n cornerRadius: 3,\n highlightScope: { fade: 'global', highlight: 'item' },\n },\n {\n data: outerRingData,\n innerRadius: 90,\n outerRadius: 120,\n cornerRadius: 3,\n highlightScope: { fade: 'global', highlight: 'item' },\n },\n]"},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not specified, the chart expands to fill\nthe available space."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 300."},"innerRadius":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Inner radius of the pie in pixels or percentage string.\nSet to a value > 0 to create a donut chart.\nExamples: 50, '50%', '40%'"},"outerRadius":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Outer radius of the pie in pixels or percentage string.\nExamples: 100, '80%'"},"paddingAngle":{"type":{"name":"number"},"required":false,"description":"Gap between arcs in degrees. Creates visual separation between slices."},"cornerRadius":{"type":{"name":"number"},"required":false,"description":"Corner radius of the arcs in pixels. Rounds the corners of each slice."},"startAngle":{"type":{"name":"number"},"required":false,"description":"Start angle of the first arc in degrees. Default is 0 (3 o'clock position).\nUse -90 for 12 o'clock start position."},"endAngle":{"type":{"name":"number"},"required":false,"description":"End angle of the last arc in degrees. Default is 360 (full circle).\nUse 90 with startAngle=-90 for a half-pie/gauge chart."},"cx":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"X position of the pie center. Can be pixels or percentage string.\nDefault is '50%' (centered)."},"cy":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Y position of the pie center. Can be pixels or percentage string.\nDefault is '50%' (centered)."},"arcLabel":{"type":{"name":"enum","value":[{"value":"'value'","computed":false},{"value":"'label'","computed":false},{"value":"'formattedValue'","computed":false}]},"required":false,"description":"Type of label to display on arcs.\n- 'value': Shows the numeric value\n- 'label': Shows the label text\n- 'formattedValue': Shows formatted value"},"arcLabelMinAngle":{"type":{"name":"number"},"required":false,"description":"Minimum arc angle in degrees required to display a label.\nPrevents labels from appearing on very small slices."},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Array of colors to use for the pie slices.\nIf not provided, uses the default MUI color palette.\nExample: ['#1976d2', '#dc004e', '#ff9800', '#4caf50']"},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"If true, the legend is hidden."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels. Object with top, right, bottom, left keys."},"highlightScope":{"type":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'global'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Highlight scope configuration for slice highlighting behavior.\n- highlight: 'item' or 'none'\n- fade: 'global' or 'none'\n\nExample: { highlight: 'item', fade: 'global' }"},"tooltip":{"type":{"name":"shape","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration.\n- trigger (string): 'item' to show on slice hover, 'none' to disable"},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"If true, disables chart animations. Also respects prefers-reduced-motion."},"clickData":{"type":{"name":"object"},"required":false,"description":"Data from the most recent click event. Read-only output property.\nContains id, dataIndex, value, label, and timestamp."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times the chart has been clicked. Increments on each click event."},"highlightedItem":{"type":{"name":"shape","value":{"seriesId":{"name":"string","required":false},"dataIndex":{"name":"number","required":false}}},"required":false,"description":"Currently highlighted item. Can be used as both input (controlled mode) and\noutput (updated when user hovers over a slice).\nObject with:\n- seriesId (string): The series identifier\n- dataIndex (number): The data index within the series\nSet to null to clear highlight."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/ScatterChart.react.js":{"description":"ScatterChart component wrapping MUI X Charts ScatterChart.\nRenders scatter/point charts showing relationships between two variables.\nSupports multiple series, z-axis color mapping, voronoi interaction,\ncustom marker sizes, and click/highlight callbacks.","displayName":"ScatterChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"series":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"string","required":false},"label":{"name":"string","required":false},"color":{"name":"string","required":false},"data":{"name":"arrayOf","value":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false},"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"z":{"name":"number","required":false}}},"required":false},"datasetKeys":{"name":"shape","value":{"x":{"name":"string","required":false},"y":{"name":"string","required":false},"id":{"name":"string","required":false},"z":{"name":"string","required":false}},"required":false},"markerSize":{"name":"number","required":false},"highlightScope":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'series'","computed":false},{"value":"'none'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'global'","computed":false},{"value":"'series'","computed":false},{"value":"'none'","computed":false}],"required":false}},"required":false},"xAxisId":{"name":"string","required":false},"yAxisId":{"name":"string","required":false}}}},"required":false,"description":"Array of scatter series to display. Each series contains:\n- id (string): Unique series identifier\n- label (string): Display label for legend/tooltip\n- color (string): Series color\n- data (array): Array of {x, y, id, z?} point objects\n- datasetKeys (object): {x, y, id?, z?} keys mapping to dataset columns\n- markerSize (number): Radius of scatter markers in pixels\n- highlightScope (object): {highlight, fade} highlighting behavior"},"xAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'sqrt'","computed":false},{"value":"'symlog'","computed":false},{"value":"'utc'","computed":false},{"value":"'pow'","computed":false}],"required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"position":{"name":"enum","value":[{"value":"'top'","computed":false},{"value":"'bottom'","computed":false},{"value":"'none'","computed":false}],"required":false},"reverse":{"name":"bool","required":false},"colorMap":{"name":"object","required":false},"tickLabelStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickNumber":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickLabelMinGap":{"name":"number","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'end'","computed":false},{"value":"'middle'","computed":false},{"value":"'extremities'","computed":false}],"required":false},"height":{"name":"number","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false},"categoryGapRatio":{"name":"number","required":false},"barGapRatio":{"name":"number","required":false},"width":{"name":"number","required":false}}}},"required":false,"description":"X-axis configuration. Array of axis config objects.\n- id (string): Axis identifier\n- label (string): Axis label\n- scaleType (string): 'linear', 'log', 'time', 'band', 'point', 'sqrt', 'symlog', 'utc'\n- min/max (number): Domain bounds\n- data (array): Axis data values\n- dataKey (string): Key for dataset-driven axis\n- position (string): 'top', 'bottom', 'none'\n- reverse (bool): Reverse axis direction\n- colorMap (object): Color mapping configuration\n- tickLabelStyle (object): CSS for tick labels\n- labelStyle (object): CSS for axis label\n- tickMinStep (number): Minimum step between ticks\n- tickMaxStep (number): Maximum step between ticks\n- tickNumber (number): Approximate tick count\n- tickSize (number): Tick mark length in pixels\n- height (number): Space reserved for axis\n- disableLine (bool): Hide axis line\n- disableTicks (bool): Hide tick marks\n- domainLimit (string): 'nice' or 'strict'"},"yAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'sqrt'","computed":false},{"value":"'symlog'","computed":false},{"value":"'utc'","computed":false},{"value":"'pow'","computed":false}],"required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"position":{"name":"enum","value":[{"value":"'left'","computed":false},{"value":"'right'","computed":false},{"value":"'none'","computed":false}],"required":false},"reverse":{"name":"bool","required":false},"colorMap":{"name":"object","required":false},"tickLabelStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickNumber":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickLabelMinGap":{"name":"number","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'end'","computed":false},{"value":"'middle'","computed":false},{"value":"'extremities'","computed":false}],"required":false},"width":{"name":"number","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false}}}},"required":false,"description":"Y-axis configuration. Array of axis config objects.\nSame properties as xAxis, plus:\n- width (number): Space reserved for axis\n- position (string): 'left', 'right', 'none'"},"zAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"string","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"colorMap":{"name":"object","required":false}}}},"required":false,"description":"Z-axis configuration for color mapping scatter points.\nColor priority: z-axis > y-axis > x-axis > series color.\n- data (array): Z-axis values\n- dataKey (string): Key for dataset-driven z values\n- id (string): Axis identifier\n- min/max (number): Domain bounds\n- colorMap (object): Color mapping - continuous, piecewise, or ordinal\n Continuous: {type: 'continuous', min, max, color: ['#start', '#end']}\n Piecewise: {type: 'piecewise', thresholds: [...], colors: [...]}\n Ordinal: {type: 'ordinal', values: [...], colors: [...]}"},"dataset":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Dataset array for datasetKeys-driven series.\nArray of objects where keys map to series datasetKeys.\nExample: [{x1: 10, y1: 20, x2: 30, y2: 40}, ...]"},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 400."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not set, fills available space."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels. Object with top, right, bottom, left keys."},"grid":{"type":{"name":"shape","value":{"horizontal":{"name":"bool","required":false},"vertical":{"name":"bool","required":false}}},"required":false,"description":"Grid configuration. Object with horizontal and vertical boolean keys."},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Color palette array for multiple series."},"voronoiMaxRadius":{"type":{"name":"union","value":[{"name":"number"},{"name":"enum","value":[{"value":"'item'","computed":false}]}]},"required":false,"description":"Maximum distance between pointer and scatter point for interaction.\n- number: Distance in pixels\n- 'item': Only trigger on direct hover over marker\n- undefined: Infinite radius (default)"},"disableVoronoi":{"type":{"name":"bool"},"required":false,"description":"If true, disables Voronoi cell interaction and falls back to hover events."},"axisHighlight":{"type":{"name":"shape","value":{"x":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false},{"value":"'band'","computed":false}],"required":false},"y":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false},{"value":"'band'","computed":false}],"required":false}}},"required":false,"description":"Axis highlight configuration on hover.\n- x: 'none', 'line', or 'band'\n- y: 'none', 'line', or 'band'"},"tooltip":{"type":{"name":"shape","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'axis'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration.\n- trigger: 'item' (on point hover), 'axis' (all at x position), 'none' (disabled)"},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"If true, the legend is hidden."},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"If true, animations are disabled."},"loading":{"type":{"name":"bool"},"required":false,"description":"If true, shows a loading overlay."},"renderer":{"type":{"name":"enum","value":[{"value":"'svg-single'","computed":false},{"value":"'svg-batch'","computed":false}]},"required":false,"description":"Renderer type for performance optimization.\n- 'svg-single': Default, renders each point as a element\n- 'svg-batch': Batch renders points in elements for large datasets\n Note: svg-batch has limitations (no CSS per-point, no custom markers)"},"slotProps":{"type":{"name":"object"},"required":false,"description":"Props passed to internal slot components for customization."},"highlightedItem":{"type":{"name":"object"},"required":false,"description":"Currently highlighted item. Works as both input (controlled) and output.\nObject with seriesId and dataIndex."},"clickData":{"type":{"name":"object"},"required":false,"description":"Data from the most recent click event. Read-only output property.\nContains seriesId, dataIndex, x, y, and timestamp."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times the chart has been clicked. Increments on each click event."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/SimpleTreeView.react.js":{"description":"","displayName":"SimpleTreeView","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"Dash component id"},"items":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"itemId":{"name":"string","required":true},"label":{"name":"string","required":true},"children":{"name":"array","required":false},"disabled":{"name":"bool","required":false},"disableSelection":{"name":"bool","required":false}}}},"required":false,"description":"Nested items array. Each item: {itemId: string, label: string, children?: [], disabled?: bool, disableSelection?: bool}","defaultValue":{"value":"[]","computed":false}},"selectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Controlled selected item(s). String when multiSelect=false, array when true."},"defaultSelectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Default selected items (uncontrolled)."},"multiSelect":{"type":{"name":"bool"},"required":false,"description":"Allow selecting multiple items.","defaultValue":{"value":"false","computed":false}},"checkboxSelection":{"type":{"name":"bool"},"required":false,"description":"Show checkboxes for selection.","defaultValue":{"value":"false","computed":false}},"disableSelection":{"type":{"name":"bool"},"required":false,"description":"Disable all selection.","defaultValue":{"value":"false","computed":false}},"expandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Controlled expanded item IDs."},"defaultExpandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Default expanded items (uncontrolled)."},"expansionTrigger":{"type":{"name":"enum","value":[{"value":"'content'","computed":false},{"value":"'iconContainer'","computed":false}]},"required":false,"description":"What triggers expansion: \"content\" or \"iconContainer\".","defaultValue":{"value":"'content'","computed":false}},"disabledItemsFocusable":{"type":{"name":"bool"},"required":false,"description":"Allow focus on disabled items.","defaultValue":{"value":"false","computed":false}},"itemChildrenIndentation":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Indentation of children. Number (px) or string (\"24px\", \"2rem\").","defaultValue":{"value":"'12px'","computed":false}},"height":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Container height."},"sx":{"type":{"name":"object"},"required":false,"description":"MUI sx styling object."},"collapseIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for collapse icon (e.g. \"ExpandMore\")."},"expandIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for expand icon (e.g. \"ChevronRight\")."},"endIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for leaf/end icon."},"ariaLabel":{"type":{"name":"string"},"required":false,"description":"ARIA label for the tree."},"ariaLabelledBy":{"type":{"name":"string"},"required":false,"description":"ID of element that labels the tree."},"clickedItem":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when item is clicked. {itemId, event_timestamp}"},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash setProps callback"}}},"src/lib/components/SparklineChart.react.js":{"description":"SparklineChart component wrapping MUI X Charts SparkLineChart.\nRenders compact, inline charts perfect for dashboards, tables, and KPI cards.\nThis is a Community feature - no license key required.\n\nSupports both controlled and uncontrolled highlight states for interactive\ndashboards where hovering on a sparkline updates other components.","displayName":"SparklineChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"data":{"type":{"name":"arrayOf","value":{"name":"number"}},"required":true,"description":"Array of numeric values to display in the sparkline.\nThis is the primary data for the chart."},"plotType":{"type":{"name":"enum","value":[{"value":"'line'","computed":false},{"value":"'bar'","computed":false}]},"required":false,"description":"Type of plot to render.\n- 'line': Renders a line chart (default)\n- 'bar': Renders a bar chart"},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not specified, the chart will\nexpand to fill the available space."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 36 for compact inline display."},"color":{"type":{"name":"string"},"required":false,"description":"Single color for the sparkline. Can be any valid CSS color string.\nExample: '#1976d2', 'rgb(25, 118, 210)', 'blue'"},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Array of colors for the sparkline. Use this for multi-color configurations."},"area":{"type":{"name":"bool"},"required":false,"description":"If true, fills the area under the line. Only applies when plotType is 'line'."},"curve":{"type":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'monotoneX'","computed":false},{"value":"'monotoneY'","computed":false},{"value":"'natural'","computed":false},{"value":"'step'","computed":false},{"value":"'stepBefore'","computed":false},{"value":"'stepAfter'","computed":false},{"value":"'catmullRom'","computed":false},{"value":"'bumpX'","computed":false},{"value":"'bumpY'","computed":false}]},"required":false,"description":"Curve interpolation method for line charts.\nOptions: 'linear', 'monotoneX', 'monotoneY', 'natural', 'step',\n'stepBefore', 'stepAfter', 'catmullRom', 'bumpX', 'bumpY'"},"showTooltip":{"type":{"name":"bool"},"required":false,"description":"If true, shows a tooltip on hover displaying the value."},"showHighlight":{"type":{"name":"bool"},"required":false,"description":"If true, shows a visual highlight on the hovered data point.\nFor line charts, shows a dot. For bar charts, shows a band."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels. Object with top, right, bottom, left keys.\nDefault is { top: 5, right: 5, bottom: 5, left: 5 }."},"xAxis":{"type":{"name":"shape","value":{"id":{"name":"string","required":false},"data":{"name":"array","required":false},"scaleType":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false}],"required":false}}},"required":false,"description":"X-axis configuration object. Unlike LineChart, this is a single object,\nnot an array. The axis is hidden by default for compact display.\n- id (string): Axis identifier for controlled highlighting\n- data (array): X-axis labels/values\n- scaleType (string): Scale type"},"yAxis":{"type":{"name":"shape","value":{"min":{"name":"number","required":false},"max":{"name":"number","required":false}}},"required":false,"description":"Y-axis configuration object. Unlike LineChart, this is a single object,\nnot an array. The axis is hidden by default for compact display."},"axisHighlight":{"type":{"name":"shape","value":{"x":{"name":"enum","value":[{"value":"'line'","computed":false},{"value":"'band'","computed":false},{"value":"'none'","computed":false}],"required":false},"y":{"name":"enum","value":[{"value":"'line'","computed":false},{"value":"'band'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Axis highlight configuration. Controls how the axis is highlighted on hover.\n- x: 'line' | 'band' | 'none' - highlight style for x-axis\n- y: 'line' | 'band' | 'none' - highlight style for y-axis"},"slotProps":{"type":{"name":"object"},"required":false,"description":"Props passed to internal slot components for customization.\n- lineHighlight: { r: number } - radius of the highlight dot\n- tooltip: tooltip configuration"},"clipAreaOffset":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Offset for the clip area to prevent cutting off elements at edges.\nObject with top, right, bottom, left keys (in pixels)."},"baseline":{"type":{"name":"union","value":[{"name":"enum","value":[{"value":"'min'","computed":false},{"value":"'max'","computed":false}]},{"name":"number"}]},"required":false,"description":"Baseline for area charts. Determines where the area fill starts.\n- 'min': fills from minimum value (default)\n- 'max': fills from maximum value\n- number: fills from a specific value"},"strokeWidth":{"type":{"name":"number"},"required":false,"description":"Stroke width for the line in pixels. Only applies when plotType is 'line'.\nDefault is 2. Higher values create thicker lines."},"disableClipping":{"type":{"name":"bool"},"required":false,"description":"If true, disables clipping of the chart content.\nUseful when elements extend beyond the chart boundaries."},"highlightedIndex":{"type":{"name":"number"},"required":false,"description":"Controlled highlight index. Set this to programmatically highlight\na specific data point. Requires xAxis.id to be set."},"highlightedItem":{"type":{"name":"object"},"required":false,"description":"Currently highlighted item. Read-only output property updated when\nthe user hovers over a data point (requires showHighlight=true).\nContains the data index of the highlighted point."},"hoverIndex":{"type":{"name":"number"},"required":false,"description":"Index of the currently hovered data point. Read-only output.\nUse this to sync hover state with other components."},"hoverValue":{"type":{"name":"number"},"required":false,"description":"Value at the currently hovered data point. Read-only output.\nUse this to display the hovered value in other components."},"n_hovers":{"type":{"name":"number"},"required":false,"description":"Number of hover events. Increments each time a data point is hovered."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/TimeClock.react.js":{"description":"TimeClock lets the user pick a time on an inline clock face (hours, minutes,\nand optionally seconds) without any input, popper, or modal. Values are\nexchanged with Dash as strings; on change it emits `value` (wall-time ISO),\nthe current `view`, and a parsed `timeData` convenience object.","displayName":"TimeClock","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"Dash component id"},"value":{"type":{"name":"string"},"required":false,"description":"Controlled value. Full wall-time ISO (\"2022-04-17T15:30:00\") or time-only\n(\"15:30\" / \"15:30:45\"). Also an OUTPUT: updated on every change with a\nfull wall-time ISO string."},"defaultValue":{"type":{"name":"string"},"required":false,"description":"Uncontrolled initial value (same string formats as `value`)."},"views":{"type":{"name":"arrayOf","value":{"name":"enum","value":[{"value":"'hours'","computed":false},{"value":"'minutes'","computed":false},{"value":"'seconds'","computed":false}]}},"required":false,"description":"Which views to render, in order. Default [\"hours\", \"minutes\"].","defaultValue":{"value":"['hours', 'minutes']","computed":false}},"view":{"type":{"name":"enum","value":[{"value":"'hours'","computed":false},{"value":"'minutes'","computed":false},{"value":"'seconds'","computed":false}]},"required":false,"description":"Controlled visible view. Also an OUTPUT \u2014 updated when the view changes."},"openTo":{"type":{"name":"enum","value":[{"value":"'hours'","computed":false},{"value":"'minutes'","computed":false},{"value":"'seconds'","computed":false}]},"required":false,"description":"Which view to open first (uncontrolled)."},"ampm":{"type":{"name":"bool"},"required":false,"description":"Force 12h (true) or 24h (false). Omit to use the locale default."},"disabled":{"type":{"name":"bool"},"required":false,"description":"Disable the whole clock.","defaultValue":{"value":"false","computed":false}},"readOnly":{"type":{"name":"bool"},"required":false,"description":"Make the clock read-only (no editing).","defaultValue":{"value":"false","computed":false}},"autoFocus":{"type":{"name":"bool"},"required":false,"description":"Auto-focus the clock on mount.","defaultValue":{"value":"false","computed":false}},"minutesStep":{"type":{"name":"number"},"required":false,"description":"Step (in minutes) between selectable minute values."},"minTime":{"type":{"name":"string"},"required":false,"description":"Minimum selectable time (ISO or time-only string)."},"maxTime":{"type":{"name":"string"},"required":false,"description":"Maximum selectable time (ISO or time-only string)."},"disableFuture":{"type":{"name":"bool"},"required":false,"description":"Disable times in the future (relative to now).","defaultValue":{"value":"false","computed":false}},"disablePast":{"type":{"name":"bool"},"required":false,"description":"Disable times in the past (relative to now).","defaultValue":{"value":"false","computed":false}},"disableIgnoringDatePartForTimeValidation":{"type":{"name":"bool"},"required":false,"description":"When true, min/max time comparisons include the date part. When false\n(default), only the time-of-day is compared.","defaultValue":{"value":"false","computed":false}},"showViewSwitcher":{"type":{"name":"bool"},"required":false,"description":"Show the hours/minutes/seconds view-switch arrow buttons.","defaultValue":{"value":"false","computed":false}},"className":{"type":{"name":"string"},"required":false,"description":"CSS class applied to the wrapping div."},"sx":{"type":{"name":"object"},"required":false,"description":"MUI sx styling object applied to the TimeClock."},"timeData":{"type":{"name":"exact","value":{"hours":{"name":"number","required":false},"minutes":{"name":"number","required":false},"seconds":{"name":"number","required":false},"formatted":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Parsed convenience output, updated on every change:\n{ hours, minutes, seconds, formatted (\"HH:mm:ss\"), event_timestamp }."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash setProps callback"}}},"src/lib/components/TreeView.react.js":{"description":"","displayName":"TreeView","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"Dash component id"},"items":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Array of item objects. Each must have an id and label (or use getItemId/getItemLabel).","defaultValue":{"value":"[]","computed":false}},"getItemId":{"type":{"name":"string"},"required":false,"description":"Property name for item ID (default: \"id\")","defaultValue":{"value":"'id'","computed":false}},"getItemLabel":{"type":{"name":"string"},"required":false,"description":"Property name for item label (default: \"label\")","defaultValue":{"value":"'label'","computed":false}},"getItemChildren":{"type":{"name":"string"},"required":false,"description":"Property name for item children (default: \"children\")","defaultValue":{"value":"'children'","computed":false}},"selectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Controlled selected item(s). String when multiSelect=false, array when true."},"defaultSelectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Default selected items (uncontrolled)."},"multiSelect":{"type":{"name":"bool"},"required":false,"description":"Allow selecting multiple items.","defaultValue":{"value":"false","computed":false}},"checkboxSelection":{"type":{"name":"bool"},"required":false,"description":"Show checkboxes for selection.","defaultValue":{"value":"false","computed":false}},"disableSelection":{"type":{"name":"bool"},"required":false,"description":"Disable all selection.","defaultValue":{"value":"false","computed":false}},"selectionPropagation":{"type":{"name":"exact","value":{"parents":{"name":"bool","required":false},"descendants":{"name":"bool","required":false}}},"required":false,"description":"Auto-propagate selection to parents/descendants. {parents: bool, descendants: bool}"},"expandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Controlled expanded item IDs."},"defaultExpandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Default expanded items (uncontrolled)."},"expansionTrigger":{"type":{"name":"enum","value":[{"value":"'content'","computed":false},{"value":"'iconContainer'","computed":false}]},"required":false,"description":"What triggers expansion: \"content\" or \"iconContainer\".","defaultValue":{"value":"'content'","computed":false}},"isItemEditable":{"type":{"name":"bool"},"required":false,"description":"Enable label editing. true = all items, or use editableItems for per-item control.","defaultValue":{"value":"false","computed":false}},"editableItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"List of item IDs that are editable (alternative to isItemEditable=true)."},"disabledItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"List of item IDs that should be disabled."},"disabledItemsFocusable":{"type":{"name":"bool"},"required":false,"description":"Allow focus on disabled items.","defaultValue":{"value":"false","computed":false}},"itemChildrenIndentation":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Indentation of children. Number (px) or string (\"24px\", \"2rem\").","defaultValue":{"value":"'12px'","computed":false}},"height":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Container height."},"sx":{"type":{"name":"object"},"required":false,"description":"MUI sx styling object."},"collapseIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for collapse icon (e.g. \"ExpandMore\")."},"expandIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for expand icon (e.g. \"ChevronRight\")."},"endIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for leaf/end icon."},"ariaLabel":{"type":{"name":"string"},"required":false,"description":"ARIA label for the tree."},"ariaLabelledBy":{"type":{"name":"string"},"required":false,"description":"ID of element that labels the tree."},"clickedItem":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when item is clicked. {itemId, event_timestamp}"},"focusedItem":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when item is focused. {itemId, event_timestamp}"},"editedItemLabel":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"newLabel":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when label edit completes. {itemId, newLabel, event_timestamp}"},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash setProps callback"}}},"src/lib/components/TreeViewPro.react.js":{"description":"","displayName":"TreeViewPro","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"Dash component id"},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required for Pro features.","defaultValue":{"value":"''","computed":false}},"items":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Array of item objects.","defaultValue":{"value":"[]","computed":false}},"getItemId":{"type":{"name":"string"},"required":false,"description":"Property name for item ID (default: \"id\")","defaultValue":{"value":"'id'","computed":false}},"getItemLabel":{"type":{"name":"string"},"required":false,"description":"Property name for item label (default: \"label\")","defaultValue":{"value":"'label'","computed":false}},"getItemChildren":{"type":{"name":"string"},"required":false,"description":"Property name for item children (default: \"children\")","defaultValue":{"value":"'children'","computed":false}},"selectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Controlled selected item(s). String when multiSelect=false, array when true."},"defaultSelectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Default selected items (uncontrolled)."},"multiSelect":{"type":{"name":"bool"},"required":false,"description":"Allow selecting multiple items.","defaultValue":{"value":"false","computed":false}},"checkboxSelection":{"type":{"name":"bool"},"required":false,"description":"Show checkboxes for selection.","defaultValue":{"value":"false","computed":false}},"disableSelection":{"type":{"name":"bool"},"required":false,"description":"Disable all selection.","defaultValue":{"value":"false","computed":false}},"selectionPropagation":{"type":{"name":"exact","value":{"parents":{"name":"bool","required":false},"descendants":{"name":"bool","required":false}}},"required":false,"description":"Auto-propagate selection to parents/descendants."},"expandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Controlled expanded item IDs."},"defaultExpandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Default expanded items (uncontrolled)."},"expansionTrigger":{"type":{"name":"enum","value":[{"value":"'content'","computed":false},{"value":"'iconContainer'","computed":false}]},"required":false,"description":"What triggers expansion: \"content\" or \"iconContainer\".","defaultValue":{"value":"'content'","computed":false}},"isItemEditable":{"type":{"name":"bool"},"required":false,"description":"Enable label editing for all items.","defaultValue":{"value":"false","computed":false}},"editableItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"List of item IDs that are editable."},"disabledItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"List of item IDs that should be disabled."},"disabledItemsFocusable":{"type":{"name":"bool"},"required":false,"description":"Allow focus on disabled items.","defaultValue":{"value":"false","computed":false}},"itemChildrenIndentation":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Indentation of children.","defaultValue":{"value":"'12px'","computed":false}},"height":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Container height."},"sx":{"type":{"name":"object"},"required":false,"description":"MUI sx styling object."},"collapseIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for collapse icon."},"expandIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for expand icon."},"endIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for leaf/end icon."},"ariaLabel":{"type":{"name":"string"},"required":false,"description":"ARIA label for the tree."},"ariaLabelledBy":{"type":{"name":"string"},"required":false,"description":"ID of element that labels the tree."},"itemsReordering":{"type":{"name":"bool"},"required":false,"description":"Enable drag-and-drop item reordering.","defaultValue":{"value":"false","computed":false}},"reorderableItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"List of item IDs that can be reordered. If empty, all items are reorderable."},"itemPositionChanged":{"type":{"name":"object"},"required":false,"description":"Output: Fired after item reorder. {itemId, oldPosition, newPosition, event_timestamp}"},"orderedItems":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Output: the current tree after any drag-and-drop reorder, preserving\neach node's original fields (id, label, children, etc.). Updates on\nevery reorder so Python callbacks can render the live order."},"lazyLoading":{"type":{"name":"bool"},"required":false,"description":"Enable lazy loading mode.","defaultValue":{"value":"false","computed":false}},"lazyLoadedChildren":{"type":{"name":"object"},"required":false,"description":"Input: Children loaded by Dash callback. {parentItemId: [childItems]}"},"lazyLoadRequest":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Output: Fired when unloaded node is expanded. {itemId, event_timestamp}"},"showItemControls":{"type":{"name":"bool"},"required":false,"description":"Show a Slider + kebab menu on each item row.","defaultValue":{"value":"false","computed":false}},"controlsItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Restrict slider+kebab to a subset of item IDs. Empty/omitted means all items."},"sliderValues":{"type":{"name":"object"},"required":false,"description":"Controlled slider values keyed by itemId, e.g. {\"task-1\": 40}. Also updated as user drags."},"sliderMin":{"type":{"name":"number"},"required":false,"description":"Slider minimum.","defaultValue":{"value":"0","computed":false}},"sliderMax":{"type":{"name":"number"},"required":false,"description":"Slider maximum.","defaultValue":{"value":"100","computed":false}},"sliderStep":{"type":{"name":"number"},"required":false,"description":"Slider step.","defaultValue":{"value":"1","computed":false}},"sliderColor":{"type":{"name":"string"},"required":false,"description":"Slider color. Accepts a Mantine theme color name (\"teal\", \"blue.5\"),\na CSS color literal (\"#ff6b6b\", \"rgb(...)\"), or a CSS expression\n(\"var(--mantine-color-teal-6)\", \"light-dark(...)\"). Bare names use\nshade 6 by default. When omitted, the slider falls back to MUI's\n`primary` palette color."},"kebabMenuItems":{"type":{"name":"arrayOf","value":{"name":"exact","value":{"label":{"name":"string","required":true},"value":{"name":"string","required":true},"icon":{"name":"string","required":false}}}},"required":false,"description":"Kebab menu options: [{label, value, icon?}]. `value` is sent back as `action`."},"sliderChange":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"value":{"name":"number","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Output: fires once on each commit (mouse-up) of a slider drag. {itemId, value, event_timestamp}"},"kebabAction":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"action":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Output: fires when a kebab menu item is chosen. {itemId, action, event_timestamp}"},"clickedItem":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when item is clicked. {itemId, event_timestamp}"},"focusedItem":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when item is focused. {itemId, event_timestamp}"},"editedItemLabel":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"newLabel":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when label edit completes. {itemId, newLabel, event_timestamp}"},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash setProps callback"}}}} \ No newline at end of file +{"src/lib/components/BarChart.react.js":{"description":"BarChart \u2014 Dash wrapper for MUI X BarChart (Community) and BarChartPro (Pro).\n\nRenders vertical or horizontal bar charts with support for stacking, bar labels,\ndataset mode, color maps, reference lines, highlighting, and Pro features\n(zoom, toolbar, brush).","displayName":"BarChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"series":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Array of bar series objects. Each series can contain:\n- data (number[]): Bar values\n- dataKey (string): Column key when using dataset prop\n- label (string): Series label for legend/tooltip\n- color (string): Series color\n- stack (string): Stack group ID (series with same value are stacked)\n- stackOffset (string): 'none', 'expand', 'diverging', 'silhouette', 'wiggle'\n- stackOrder (string): 'none', 'appearance', 'ascending', 'descending', 'insideOut', 'reverse'\n- barLabel (string): 'value' or 'formattedValue' to show labels on bars\n- barLabelPlacement (string): 'center' or 'outside'\n- highlightScope (object): {highlight, fade} highlight behavior\n- yAxisId (string): Y-axis binding for biaxial charts\n- id (string): Unique series identifier"},"dataset":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Array of row objects for dataKey-based series.\nExample: [{month: 'Jan', sales: 100}, {month: 'Feb', sales: 150}]"},"xAxis":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"X-axis configuration array. For bar charts, typically uses scaleType: 'band'.\nEach axis can contain:\n- data (array): Category labels\n- dataKey (string): Column key from dataset\n- scaleType (string): 'band' (required for bars), 'linear', 'log', etc.\n- label (string): Axis label text\n- categoryGapRatio (number): Gap between categories (0-1)\n- barGapRatio (number): Gap between bars in same category (-1 to Infinity)\n- tickPlacement (string): 'start', 'end', 'middle', 'extremities'\n- tickLabelPlacement (string): 'tick' or 'middle'\n- colorMap (object): Color mapping configuration\n- zoom (object): Zoom config for Pro features\n- id (string): Axis identifier\n- position (string): 'top', 'bottom', 'none'\n- min/max (number): Domain limits\n- reverse (bool): Reverse axis direction\n- tickNumber (number): Approximate tick count\n- tickMinStep/tickMaxStep (number): Control tick spacing\n- tickLabelStyle (object): CSS for tick labels\n- labelStyle (object): CSS for axis label\n- disableLine (bool): Hide axis line\n- disableTicks (bool): Hide tick marks\n- domainLimit (string): 'nice' or 'strict'\n- height (number): Space reserved for axis"},"yAxis":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Y-axis configuration array. Same structure as xAxis."},"layout":{"type":{"name":"enum","value":[{"value":"'vertical'","computed":false},{"value":"'horizontal'","computed":false}]},"required":false,"description":"Bar direction: 'vertical' (default) or 'horizontal'."},"borderRadius":{"type":{"name":"number"},"required":false,"description":"Border radius for bar corners in pixels."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not set, uses parent container width."},"margin":{"type":{"name":"exact","value":{"top":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false},"right":{"name":"number","required":false}}},"required":false,"description":"Chart margins: {top, bottom, left, right} in pixels."},"grid":{"type":{"name":"exact","value":{"horizontal":{"name":"bool","required":false},"vertical":{"name":"bool","required":false}}},"required":false,"description":"Background grid lines: {horizontal: bool, vertical: bool}."},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Color palette array for series colors."},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"Disable animations."},"loading":{"type":{"name":"bool"},"required":false,"description":"Show loading overlay."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"Hide the legend."},"renderer":{"type":{"name":"enum","value":[{"value":"'svg-single'","computed":false},{"value":"'svg-batch'","computed":false}]},"required":false,"description":"Renderer strategy: 'svg-single' (default) or 'svg-batch' for large datasets."},"axisHighlight":{"type":{"name":"exact","value":{"x":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'line'","computed":false},{"value":"'none'","computed":false}],"required":false},"y":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'line'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Axis highlight configuration: {x: 'band'|'line'|'none', y: 'band'|'line'|'none'}."},"tooltip":{"type":{"name":"exact","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'axis'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration: {trigger: 'item'|'axis'|'none'}."},"highlightedItem":{"type":{"name":"object"},"required":false,"description":"Controlled highlight state. Both input (to set highlight) and output\n(fires on hover). Object: {seriesId, dataIndex} or null."},"referenceLines":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Reference lines array. Each object:\n- x (string|number): Vertical line at this x value\n- y (number): Horizontal line at this y value\n- axisId (string): Which axis (when multiple)\n- label (string): Text label\n- labelAlign (string): 'start', 'middle', 'end'\n- lineStyle (object): SVG style for the line\n- labelStyle (object): SVG style for the label\n- spacing (object): Label offset"},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required for zoom, brush, and toolbar features."},"initialZoom":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Initial zoom state (Pro). Array of {axisId, start, end}."},"showSlider":{"type":{"name":"bool"},"required":false,"description":"Show zoom range slider below the chart (Pro)."},"showToolbar":{"type":{"name":"bool"},"required":false,"description":"Show zoom/export toolbar above the chart (Pro)."},"brushConfig":{"type":{"name":"object"},"required":false,"description":"Brush selection config (Pro): {enabled: bool, preventTooltip: bool, preventHighlight: bool}."},"zoomInteractionConfig":{"type":{"name":"object"},"required":false,"description":"Zoom interaction configuration (Pro). Controls drag, wheel, pinch, brush zoom behaviors."},"clickData":{"type":{"name":"object"},"required":false,"description":"Fires on bar click. Contains: {seriesId, dataIndex, timestamp}."},"axisClickData":{"type":{"name":"object"},"required":false,"description":"Fires on axis area click. Contains: {axisValue, dataIndex, seriesValues, timestamp}."},"zoomData":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Zoom state output (Pro). Fires on zoom change."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times bars have been clicked."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash callback function."}}},"src/lib/components/CandlestickChart.react.js":{"description":"CandlestickChart \u2014 Dash wrapper that renders OHLC candlestick charts\nusing MUI X Charts Pro composition API with custom SVG candle rendering.\n\nSupports:\n- Array format: series[0].data = [[open, high, low, close], ...]\n- Dataset format: dataset + series[0].datasetKeys = {open, high, low, close}\n- Volume overlay (optional)\n- Reference lines\n- Grid, axes, zoom (Pro), toolbar (Pro)\n- Click events","displayName":"CandlestickChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"series":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"OHLC candlestick series. Typically a single series with two data formats:\n\nArray format:\n series=[{data: [[open,high,low,close], ...], upColor: '#4caf50', downColor: '#f44336'}]\n\nDataset format (use with dataset prop):\n series=[{datasetKeys: {open:'open', high:'high', low:'low', close:'close'},\n upColor: '#4caf50', downColor: '#f44336'}]\n\nOptional volume:\n series=[{..., volume: [100, 200, ...]}] (array format)\n series=[{..., volumeKey: 'volume'}] (dataset format)\n\nSeries properties:\n- data (array): Array of [open, high, low, close] tuples or {open, high, low, close} objects\n- datasetKeys (object): {open, high, low, close} mapping to dataset columns\n- upColor (string): Color when close >= open (default: '#4caf50')\n- downColor (string): Color when close < open (default: '#f44336')\n- volume (array): Volume values for each candle\n- volumeKey (string): Dataset column name for volume data"},"dataset":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Dataset for datasetKeys mode. Array of row objects.\nExample: [{date: '2025-01-02', open: 100, high: 110, low: 95, close: 105, volume: 1000}, ...]"},"xAxis":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"X-axis configuration. Typically band scale with dates/labels.\n- data (array): Category labels (dates, day names, etc.)\n- dataKey (string): Column from dataset for labels\n- label (string): Axis label text\n- scaleType (string): Always 'band' for candlestick (set automatically)\n- zoom (object): Zoom config for Pro features\n- tickLabelStyle (object): CSS for tick labels\n- tickPlacement (string): 'start', 'end', 'middle', 'extremities'"},"yAxis":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Y-axis configuration for price values.\n- label (string): Axis label (e.g., 'Price ($)')\n- min/max (number): Override auto-computed domain from OHLC data\n- position (string): 'left' or 'right'"},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not set, uses parent container width."},"margin":{"type":{"name":"exact","value":{"top":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false},"right":{"name":"number","required":false}}},"required":false,"description":"Chart margins: {top, bottom, left, right} in pixels."},"grid":{"type":{"name":"exact","value":{"horizontal":{"name":"bool","required":false},"vertical":{"name":"bool","required":false}}},"required":false,"description":"Background grid lines: {horizontal: bool, vertical: bool}."},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"Disable animations."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"Hide the legend (default: true for candlestick)."},"tooltip":{"type":{"name":"exact","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration: {trigger: 'item'|'none'}.\nSet trigger to 'none' to disable the OHLC tooltip."},"bodyWidthRatio":{"type":{"name":"number"},"required":false,"description":"Candle body width as a ratio of the band width (0-1). Default: 0.6."},"wickWidth":{"type":{"name":"number"},"required":false,"description":"Wick (shadow) line width in pixels. Default: 2."},"showVolume":{"type":{"name":"bool"},"required":false,"description":"Show volume bars below candles. Requires volume data in series."},"volumeHeightRatio":{"type":{"name":"number"},"required":false,"description":"Volume bars maximum height as ratio of chart height (0-1). Default: 0.2."},"referenceLines":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Reference lines array. Same format as BarChart/LineChart."},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required for zoom, slider, and toolbar."},"initialZoom":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Initial zoom state (Pro). Array of {axisId, start, end}."},"showSlider":{"type":{"name":"bool"},"required":false,"description":"Show zoom range slider (Pro)."},"showToolbar":{"type":{"name":"bool"},"required":false,"description":"Show toolbar (Pro)."},"zoomInteractionConfig":{"type":{"name":"object"},"required":false,"description":"Zoom interaction configuration (Pro)."},"clickData":{"type":{"name":"object"},"required":false,"description":"Fires on candle click. Contains: {dataIndex, label, open, high, low, close, timestamp}."},"hoverData":{"type":{"name":"object"},"required":false,"description":"Hover data output (reserved for future use)."},"zoomData":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Zoom state output (Pro)."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash callback function."}}},"src/lib/components/CompositeChart.react.js":{"description":"CompositeChart component for layering multiple chart types together.\nUses MUI X Charts composition API to render scatter, line, and area plots\non a single chart surface. Each series must specify its type ('scatter' or 'line').\nSupports Pro features like zoom/pan with a license key.","displayName":"CompositeChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required for zoom/pan/toolbar features."},"series":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"type":{"name":"enum","value":[{"value":"'scatter'","computed":false},{"value":"'line'","computed":false}],"required":true},"id":{"name":"string","required":false},"label":{"name":"string","required":false},"color":{"name":"string","required":false},"data":{"name":"union","value":[{"name":"arrayOf","value":{"name":"number"}},{"name":"arrayOf","value":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false},"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false}}}}],"required":false},"datasetKeys":{"name":"shape","value":{"x":{"name":"string","required":false},"y":{"name":"string","required":false}},"required":false},"markerSize":{"name":"number","required":false},"preview":{"name":"shape","value":{"markerSize":{"name":"number","required":false}},"required":false},"area":{"name":"bool","required":false},"curve":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'monotoneX'","computed":false},{"value":"'monotoneY'","computed":false},{"value":"'natural'","computed":false},{"value":"'step'","computed":false},{"value":"'stepBefore'","computed":false},{"value":"'stepAfter'","computed":false},{"value":"'catmullRom'","computed":false},{"value":"'bumpX'","computed":false},{"value":"'bumpY'","computed":false}],"required":false},"showMark":{"name":"bool","required":false},"yAxisId":{"name":"string","required":false},"xAxisId":{"name":"string","required":false},"highlightScope":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'series'","computed":false},{"value":"'none'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'global'","computed":false},{"value":"'series'","computed":false},{"value":"'none'","computed":false}],"required":false}},"required":false},"stack":{"name":"string","required":false},"connectNulls":{"name":"bool","required":false}}}},"required":false,"description":"Array of series to display. Each series MUST include a 'type' field.\n\nScatter series:\n{type: 'scatter', id, label, color, markerSize, data: [{x, y, id}], highlightScope}\n\nLine series:\n{type: 'line', id, label, color, data: [...], area, curve, showMark, highlightScope, yAxisId}"},"xAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'sqrt'","computed":false},{"value":"'symlog'","computed":false},{"value":"'utc'","computed":false},{"value":"'pow'","computed":false}],"required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"position":{"name":"enum","value":[{"value":"'top'","computed":false},{"value":"'bottom'","computed":false},{"value":"'none'","computed":false}],"required":false},"reverse":{"name":"bool","required":false},"colorMap":{"name":"object","required":false},"tickLabelStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickNumber":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickLabelMinGap":{"name":"number","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'end'","computed":false},{"value":"'middle'","computed":false},{"value":"'extremities'","computed":false}],"required":false},"height":{"name":"number","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false},"dateFormat":{"name":"string","required":false},"dateTickFormat":{"name":"string","required":false},"valueFormatter":{"name":"union","value":[{"name":"func"},{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}}],"required":false}}}},"required":false,"description":"X-axis configuration. Array of axis config objects."},"yAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'sqrt'","computed":false},{"value":"'symlog'","computed":false},{"value":"'utc'","computed":false},{"value":"'pow'","computed":false}],"required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"position":{"name":"enum","value":[{"value":"'left'","computed":false},{"value":"'right'","computed":false},{"value":"'none'","computed":false}],"required":false},"reverse":{"name":"bool","required":false},"colorMap":{"name":"object","required":false},"tickLabelStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickNumber":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickLabelMinGap":{"name":"number","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'end'","computed":false},{"value":"'middle'","computed":false},{"value":"'extremities'","computed":false}],"required":false},"width":{"name":"number","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false},"valueFormatter":{"name":"union","value":[{"name":"func"},{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}}],"required":false}}}},"required":false,"description":"Y-axis configuration. Array of axis config objects."},"zAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"string","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"colorMap":{"name":"object","required":false}}}},"required":false,"description":"Z-axis configuration for color mapping scatter points."},"dataset":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Dataset array for datasetKeys-driven series."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 400."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not set, fills available space."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels."},"grid":{"type":{"name":"shape","value":{"horizontal":{"name":"bool","required":false},"vertical":{"name":"bool","required":false}}},"required":false,"description":"Grid configuration."},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Color palette array."},"voronoiMaxRadius":{"type":{"name":"union","value":[{"name":"number"},{"name":"enum","value":[{"value":"'item'","computed":false}]}]},"required":false,"description":"Maximum distance for Voronoi scatter interaction."},"disableVoronoi":{"type":{"name":"bool"},"required":false,"description":"If true, disables Voronoi cell interaction."},"axisHighlight":{"type":{"name":"shape","value":{"x":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false},{"value":"'band'","computed":false}],"required":false},"y":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false},{"value":"'band'","computed":false}],"required":false}}},"required":false,"description":"Axis highlight configuration."},"tooltip":{"type":{"name":"shape","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'axis'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"If true, the legend is hidden."},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"If true, animations are disabled."},"loading":{"type":{"name":"bool"},"required":false,"description":"If true, shows a loading overlay."},"slotProps":{"type":{"name":"object"},"required":false,"description":"Props passed to internal slot components."},"referenceLines":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"x":{"name":"union","value":[{"name":"number"},{"name":"string"}],"required":false},"y":{"name":"number","required":false},"label":{"name":"string","required":false},"lineStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"labelAlign":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'middle'","computed":false},{"value":"'end'","computed":false}],"required":false},"spacing":{"name":"object","required":false}}}},"required":false,"description":"Reference lines to display on the chart.\nArray of objects with:\n- x (number|string): Vertical reference line at x value\n- y (number): Horizontal reference line at y value\n- label (string): Label text\n- lineStyle (object): CSS for line element\n- labelStyle (object): CSS for label text\n- labelAlign (string): 'start', 'middle', 'end'"},"initialZoom":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},"required":false,"description":"Initial zoom configuration (Pro). Array of {axisId, start, end} objects.\nstart/end are percentages (0-100) of the axis range."},"showToolbar":{"type":{"name":"bool"},"required":false,"description":"If true, shows the Pro toolbar for zoom/export controls."},"showSlider":{"type":{"name":"bool"},"required":false,"description":"If true, shows the zoom slider below the chart.\nInjects zoom.slider.enabled into x-axis config."},"zoomInteractionConfig":{"type":{"name":"shape","value":{"zoom":{"name":"array","required":false},"pan":{"name":"array","required":false}}},"required":false,"description":"Fine-grained control over zoom/pan interactions (Pro).\n- zoom: Array of interaction types ['wheel', 'pinch', 'brush', 'tapAndDrag', 'doubleTapReset']\n- pan: Array of interaction types ['drag', 'pressAndDrag', 'wheel']"},"highlightedAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":true},"dataIndex":{"name":"number","required":true}}}},"required":false,"description":"Controlled axis highlight state. Array of objects specifying which axis values\nare highlighted. Each object has:\n- axisId (string|number): The axis identifier\n- dataIndex (number): The data index to highlight\nSet to empty array [] to clear highlights."},"highlightedItem":{"type":{"name":"object"},"required":false,"description":"Currently highlighted item (controlled input/output)."},"tooltipItem":{"type":{"name":"shape","value":{"type":{"name":"string","required":false},"seriesId":{"name":"string","required":false},"dataIndex":{"name":"number","required":false}}},"required":false,"description":"Controlled tooltip item state. Used to synchronize tooltips across multiple charts.\nObject with:\n- type (string): Chart type ('line', 'scatter', etc.)\n- seriesId (string): The series identifier\n- dataIndex (number): The data index within the series\nSet to null to hide tooltip."},"forecast":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"x":{"name":"number","required":true},"y":{"name":"number","required":true},"upper":{"name":"number","required":false},"lower":{"name":"number","required":false}}}},"required":false,"description":"Forecast overlay data. Array of objects with x, y (center), upper, and lower\nvalues. Renders a dashed trend line with a shaded uncertainty band in the\nchart's SVG layer, matching the LiveTradingChart forecast style."},"forecastColor":{"type":{"name":"string"},"required":false,"description":"Forecast line and band color. Default '#ff9800' (orange)."},"forecastOpacity":{"type":{"name":"number"},"required":false,"description":"Forecast band fill opacity. Default 0.15."},"enableCrosshair":{"type":{"name":"bool"},"required":false,"description":"Enable crosshair position tracking. When true, the crosshairPosition\noutput prop reports the pointer's x/y data-space coordinates in real time\nas the user moves the mouse over the chart. Requires axisHighlight\nset to {x: 'line', y: 'line'} for the visual crosshair."},"crosshairPosition":{"type":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false}}},"required":false,"description":"Current crosshair position in data coordinates. Read-only output that\nupdates as the user moves the mouse. Object with:\n- x (number): x-axis data value (epoch ms for time scales)\n- y (number): y-axis data value\nSet to null when the pointer leaves the chart area."},"crosshairClick":{"type":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false},"button":{"name":"string","required":false},"timestamp":{"name":"string","required":false}}},"required":false,"description":"Fires on right-click within the chart drawing area when enableCrosshair\nis true. Object with:\n- x (number): x-axis data value at click position\n- y (number): y-axis data value at click position\n- button (string): always 'right'\n- timestamp (string): ISO timestamp of the click\nUse this to implement context menus (e.g. \"Set Alert\") at precise\ndata coordinates."},"syncedTooltipIndex":{"type":{"name":"number"},"required":false,"description":"Synced tooltip data index. When set to a non-negative integer, renders a\ntooltip overlay at that x-axis data index position, even without pointer hover.\nUse this to synchronize tooltip display across multiple CompositeCharts:\nread highlightedAxis.dataIndex from one chart, write it to syncedTooltipIndex\non the other charts. Set to null or -1 to hide."},"clickData":{"type":{"name":"object"},"required":false,"description":"Data from the most recent click event.\nContains type ('scatter'|'line'), seriesId, dataIndex, and timestamp."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times the chart has been clicked."},"zoomData":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},"required":false,"description":"Current zoom state. Read-only output updated on zoom/pan.\nArray of {axisId, start, end} objects."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/Heatmap.react.js":{"description":"Heatmap component wrapping MUI X Charts Pro Heatmap.\nRenders a matrix visualization where color intensity represents values.\nThis is a Pro feature - requires MUI X Pro license key.","displayName":"Heatmap","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required to enable Pro features without watermarks.\nGet your license key from https://mui.com/x/introduction/licensing/"},"data":{"type":{"name":"arrayOf","value":{"name":"arrayOf","value":{"name":"number"}}},"required":false,"description":"Heatmap data as an array of [x, y, value] tuples.\n- x: X-axis index (0-based)\n- y: Y-axis index (0-based)\n- value: Numeric value for the cell (mapped to color)\n\nExample: [[0, 0, 25], [0, 1, 45], [1, 0, 30], [1, 1, 60]]"},"xAxis":{"type":{"name":"shape","value":{"data":{"name":"array","required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'point'","computed":false}],"required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false}}},"required":false,"description":"X-axis configuration object.\n- data (array): Category labels for x-axis\n- label (string): Axis label\n- scaleType (string): Scale type, defaults to 'band' for heatmaps\n- zoom (boolean or object): Enable zoom on this axis. Can be true or object with:\n - minStart (number): Minimum start position (0-100)\n - maxEnd (number): Maximum end position (0-100)\n - minSpan (number): Minimum zoom span\n - maxSpan (number): Maximum zoom span\n - step (number): Zoom step size\n - panning (boolean): Enable panning\n - filterMode (string): 'keep' or 'discard'\n - slider (object): Slider config with { enabled, preview, size, showTooltip }"},"yAxis":{"type":{"name":"shape","value":{"data":{"name":"array","required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'point'","computed":false}],"required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false}}},"required":false,"description":"Y-axis configuration object.\n- data (array): Category labels for y-axis\n- label (string): Axis label\n- scaleType (string): Scale type, defaults to 'band' for heatmaps\n- zoom (boolean or object): Enable zoom on this axis (same options as xAxis)"},"colorScale":{"type":{"name":"shape","value":{"type":{"name":"enum","value":[{"value":"'continuous'","computed":false},{"value":"'piecewise'","computed":false}],"required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"colors":{"name":"arrayOf","value":{"name":"string"},"required":false},"thresholds":{"name":"arrayOf","value":{"name":"number"},"required":false}}},"required":false,"description":"Color scale configuration for mapping values to colors.\n\nContinuous scale (interpolates between colors):\n{ type: 'continuous', min: 0, max: 100, colors: ['#e3f2fd', '#1565c0'] }\n\nPiecewise scale (discrete color bands):\n{ type: 'piecewise', thresholds: [20, 40, 60, 80],\n colors: ['#color1', '#color2', '#color3', '#color4', '#color5'] }\n\nNote: For piecewise, you need n+1 colors for n thresholds."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not specified, the chart expands to fill\nthe available space."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 400."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels. Object with top, right, bottom, left keys."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"If true, the color legend is hidden."},"tooltip":{"type":{"name":"shape","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration.\n- trigger (string): 'item' to show on cell hover, 'none' to disable"},"highlightScope":{"type":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'global'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Highlight scope configuration for cell highlighting behavior.\n- highlight: 'item' or 'none'\n- fade: 'global' or 'none'"},"cellStyle":{"type":{"name":"union","value":[{"name":"enum","value":[{"value":"'rounded'","computed":false}]},{"name":"shape","value":{"gap":{"name":"number","required":false},"borderRadius":{"name":"number","required":false},"showValue":{"name":"bool","required":false},"fontSize":{"name":"number","required":false},"fontWeight":{"name":"number","required":false},"textColor":{"name":"string","required":false}}}]},"required":false,"description":"Custom cell style. Use 'rounded' for default rounded corners with gap,\nor provide an object for detailed configuration:\n- gap (number): Spacing between cells in pixels (default: 4)\n- borderRadius (number): Corner radius in pixels (default: 10)\n- showValue (boolean): Display value text in cells (default: true)\n- fontSize (number): Font size for value text (default: 12)\n- fontWeight (number): Font weight for value text (default: 500)\n- textColor (string): Color for value text (default: '#ffffff')"},"slotProps":{"type":{"name":"object"},"required":false,"description":"Props passed to internal slot components for customization."},"highlightedItem":{"type":{"name":"object"},"required":false,"description":"Currently highlighted item. Read-only output property updated when\nthe user hovers over a cell."},"clickData":{"type":{"name":"object"},"required":false,"description":"Data from the most recent click event. Read-only output property.\nContains x, y, value, seriesId, and timestamp."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times the chart has been clicked. Increments on each click event."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/LineChart.react.js":{"description":"LineChart component wrapping MUI X Charts Pro with composition API.\nRenders interactive line charts with support for multiple series,\ncustomizable axes, tooltips, click event callbacks, and Pro features\nlike zoom, pan, and zoom slider.","displayName":"LineChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required to enable Pro features like zoom/pan\nwithout watermarks. Get your license key from https://mui.com/x/introduction/licensing/"},"series":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"string","required":false},"data":{"name":"arrayOf","value":{"name":"number"},"required":false},"label":{"name":"string","required":false},"color":{"name":"string","required":false},"area":{"name":"bool","required":false},"stack":{"name":"string","required":false},"curve":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'monotoneX'","computed":false},{"value":"'monotoneY'","computed":false},{"value":"'natural'","computed":false},{"value":"'step'","computed":false},{"value":"'stepBefore'","computed":false},{"value":"'stepAfter'","computed":false},{"value":"'catmullRom'","computed":false},{"value":"'bumpX'","computed":false},{"value":"'bumpY'","computed":false}],"required":false},"showMark":{"name":"bool","required":false},"connectNulls":{"name":"bool","required":false},"yAxisId":{"name":"string","required":false},"xAxisId":{"name":"string","required":false},"highlightScope":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'item'","computed":false},{"value":"'series'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'series'","computed":false},{"value":"'global'","computed":false}],"required":false}},"required":false}}}},"required":false,"description":"Array of series configurations. Each series represents a line in the chart.\nEach series object can have:\n- id (string): Unique identifier for the series\n- data (array of numbers): Y-axis values, supports null for gaps\n- label (string): Label shown in legend and tooltip\n- color (string): Custom color for this series\n- area (boolean): Fill area under the line\n- stack (string): Stack identifier for stacked area charts\n- curve (string): Interpolation method - 'linear', 'monotoneX', 'monotoneY',\n 'natural', 'step', 'stepBefore', 'stepAfter', 'catmullRom', 'bumpX', 'bumpY'\n- showMark (boolean): Whether to show data point markers\n- connectNulls (boolean): Whether to bridge gaps across null values\n- yAxisId (string): ID of the y-axis to use for this series (for biaxial charts)\n- xAxisId (string): ID of the x-axis to use for this series\n- highlightScope (object): Per-series highlight behavior with:\n - highlight: 'none', 'item', or 'series'\n - fade: 'none', 'series', or 'global'"},"xAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'utc'","computed":false},{"value":"'symlog'","computed":false},{"value":"'sqrt'","computed":false}],"required":false},"position":{"name":"enum","value":[{"value":"'top'","computed":false},{"value":"'bottom'","computed":false},{"value":"'none'","computed":false}],"required":false},"id":{"name":"string","required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"reverse":{"name":"bool","required":false},"tickNumber":{"name":"number","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickInterval":{"name":"array","required":false},"tickLabelStyle":{"name":"object","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'end'","computed":false},{"value":"'extremities'","computed":false},{"value":"'middle'","computed":false},{"value":"'start'","computed":false}],"required":false},"tickLabelMinGap":{"name":"number","required":false},"labelStyle":{"name":"object","required":false},"height":{"name":"number","required":false},"dateFormat":{"name":"string","required":false},"dateTickFormat":{"name":"string","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false},"categoryGapRatio":{"name":"number","required":false},"barGapRatio":{"name":"number","required":false},"colorMap":{"name":"object","required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false},"valueFormatter":{"name":"union","value":[{"name":"func"},{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}}],"required":false}}}},"required":false,"description":"X-axis configuration. Array of axis config objects.\nEach axis object can have:\n- data (array): X-axis values (timestamps in ms for 'time' scaleType)\n- dataKey (string): Key to use from dataset for axis values\n- label (string): Axis label\n- scaleType (string): 'band', 'point', 'linear', 'log', 'time', 'utc', 'symlog', 'sqrt'\n- position (string): 'top', 'bottom', or 'none' (hidden but still computed)\n- id (string): Axis identifier for referencing in series and zoom\n- min (number): Minimum domain value\n- max (number): Maximum domain value\n- reverse (boolean): Reverse axis direction\n- tickNumber (number): Approximate number of ticks\n- tickMinStep (number): Minimum step between ticks (ms for time axes)\n- tickMaxStep (number): Maximum step between ticks\n- tickSize (number): Tick mark length in pixels (default: 6)\n- tickSpacing (number): Minimum spacing in px between ticks (ordinal axes only)\n- tickInterval (array): Fixed tick positions as array of values\n- tickLabelStyle (object): CSS style for tick labels (e.g. {angle: 45, fontSize: 12})\n- tickLabelPlacement (string): 'middle' or 'tick' (band scale only)\n- tickPlacement (string): 'end', 'extremities', 'middle', 'start' (band scale only)\n- tickLabelMinGap (number): Minimum gap in px between tick labels (default: 4)\n- labelStyle (object): CSS style for the axis label\n- height (number): Space reserved for this x-axis in pixels\n- disableLine (boolean): Hide the axis line\n- disableTicks (boolean): Hide tick marks\n- domainLimit (string): 'nice' (default, rounds to friendly values) or 'strict'\n- categoryGapRatio (number): Gap ratio between bands (0-1, band scale only)\n- barGapRatio (number): Gap ratio between bars within a band (band scale only)\n- colorMap (object): Axis color mapping configuration\n- zoom (boolean or object): Enable zoom on this axis. Can be true or object with:\n - minStart (number): Minimum start position (0-100)\n - maxEnd (number): Maximum end position (0-100)\n - minSpan (number): Minimum zoom span\n - maxSpan (number): Maximum zoom span\n - step (number): Zoom step size\n - panning (boolean): Enable panning\n - filterMode (string): 'keep' or 'discard'\n - slider (object): Slider config with { enabled, preview, size, showTooltip }"},"yAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'utc'","computed":false},{"value":"'symlog'","computed":false},{"value":"'sqrt'","computed":false}],"required":false},"position":{"name":"enum","value":[{"value":"'left'","computed":false},{"value":"'right'","computed":false},{"value":"'none'","computed":false}],"required":false},"id":{"name":"string","required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"width":{"name":"number","required":false},"reverse":{"name":"bool","required":false},"dateFormat":{"name":"string","required":false},"dateTickFormat":{"name":"string","required":false},"tickNumber":{"name":"number","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickInterval":{"name":"array","required":false},"tickLabelStyle":{"name":"object","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'end'","computed":false},{"value":"'extremities'","computed":false},{"value":"'middle'","computed":false},{"value":"'start'","computed":false}],"required":false},"tickLabelMinGap":{"name":"number","required":false},"labelStyle":{"name":"object","required":false},"height":{"name":"number","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false},"categoryGapRatio":{"name":"number","required":false},"barGapRatio":{"name":"number","required":false},"colorMap":{"name":"object","required":false},"zoom":{"name":"union","value":[{"name":"bool"},{"name":"object"}],"required":false},"valueFormatter":{"name":"union","value":[{"name":"func"},{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}}],"required":false}}}},"required":false,"description":"Y-axis configuration. Array of axis config objects.\nEach axis object can have:\n- data (array): Y-axis values (for horizontal bar charts)\n- dataKey (string): Key to use from dataset for axis values\n- label (string): Axis label\n- scaleType (string): 'band', 'point', 'linear', 'log', 'time', 'utc', 'symlog', 'sqrt'\n- position (string): 'left', 'right', or 'none' (hidden but still computed)\n- id (string): Axis identifier for referencing in series\n- min (number): Minimum domain value\n- max (number): Maximum domain value\n- width (number): Width allocated for axis in pixels\n- reverse (boolean): Reverse axis direction\n- tickNumber (number): Approximate number of ticks\n- tickMinStep (number): Minimum step between ticks\n- tickMaxStep (number): Maximum step between ticks\n- tickSize (number): Tick mark length in pixels (default: 6)\n- tickSpacing (number): Minimum spacing in px between ticks (ordinal axes only)\n- tickInterval (array): Fixed tick positions as array of values\n- tickLabelStyle (object): CSS style for tick labels (e.g. {angle: 45, fontSize: 12})\n- tickLabelPlacement (string): 'middle' or 'tick' (band scale only)\n- tickPlacement (string): 'end', 'extremities', 'middle', 'start' (band scale only)\n- tickLabelMinGap (number): Minimum gap in px between tick labels (default: 4)\n- labelStyle (object): CSS style for the axis label\n- height (number): Space reserved for this y-axis in pixels\n- disableLine (boolean): Hide the axis line\n- disableTicks (boolean): Hide tick marks\n- domainLimit (string): 'nice' (default, rounds to friendly values) or 'strict'\n- categoryGapRatio (number): Gap ratio between bands (0-1, band scale only)\n- barGapRatio (number): Gap ratio between bars within a band (band scale only)\n- colorMap (object): Axis color mapping configuration\n- zoom (boolean or object): Enable zoom on this axis (same options as xAxis)"},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 400."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not specified, the chart expands to fill\nthe available space."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels. Object with top, right, bottom, left keys."},"grid":{"type":{"name":"shape","value":{"vertical":{"name":"bool","required":false},"horizontal":{"name":"bool","required":false}}},"required":false,"description":"Grid configuration. Object with vertical and horizontal boolean keys."},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Array of colors for the series palette."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"If true, the legend is hidden."},"tooltip":{"type":{"name":"shape","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'axis'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration. Object with trigger key.\n- trigger (string): 'item', 'axis', or 'none'"},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"If true, animations are skipped."},"loading":{"type":{"name":"bool"},"required":false,"description":"If true, a loading overlay is displayed."},"zoom":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"string","required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},"required":false,"description":"Controlled zoom state for the chart. Array of objects with:\n- axisId (string): The axis identifier\n- start (number): Start position (0-100)\n- end (number): End position (0-100)"},"initialZoom":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"string","required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},"required":false,"description":"Initial zoom state for uncontrolled mode. Array of objects with:\n- axisId (string): The axis identifier\n- start (number): Start position (0-100)\n- end (number): End position (0-100)"},"showSlider":{"type":{"name":"bool"},"required":false,"description":"If true, shows a zoom slider below the chart for easy zoom control.\nThe slider allows users to select a range and pan through the data."},"zoomInteractionConfig":{"type":{"name":"shape","value":{"zoom":{"name":"arrayOf","value":{"name":"union","value":[{"name":"string"},{"name":"shape","value":{"type":{"name":"string","required":false},"requiredKeys":{"name":"arrayOf","value":{"name":"string"},"required":false},"pointerMode":{"name":"enum","value":[{"value":"'mouse'","computed":false},{"value":"'touch'","computed":false}],"required":false}}}]},"required":false},"pan":{"name":"arrayOf","value":{"name":"union","value":[{"name":"string"},{"name":"shape","value":{"type":{"name":"string","required":false},"requiredKeys":{"name":"arrayOf","value":{"name":"string"},"required":false},"pointerMode":{"name":"enum","value":[{"value":"'mouse'","computed":false},{"value":"'touch'","computed":false}],"required":false}}}]},"required":false}}},"required":false,"description":"Zoom interaction configuration. Controls which interactions are enabled for\nzooming and panning. Object with:\n- zoom (array): Zoom interactions - 'wheel', 'pinch', 'tapAndDrag', 'brush', 'doubleTapReset',\n or objects with { type, requiredKeys, pointerMode }\n- pan (array): Pan interactions - 'drag', 'pressAndDrag', 'wheel',\n or objects with { type, requiredKeys, pointerMode }"},"referenceLines":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"x":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"y":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"axisId":{"name":"string","required":false},"label":{"name":"string","required":false},"labelAlign":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'middle'","computed":false},{"value":"'end'","computed":false}],"required":false},"lineStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"spacing":{"name":"union","value":[{"name":"number"},{"name":"object"}],"required":false}}}},"required":false,"description":"Array of reference line configurations. Each reference line can be vertical (x) or horizontal (y).\n- x (string|number): X-axis value for a vertical reference line\n- y (number): Y-axis value for a horizontal reference line\n- axisId (string): The axis ID to use for the reference value\n- label (string): Label text displayed along the reference line\n- labelAlign (string): 'start', 'middle', or 'end' alignment\n- lineStyle (object): CSS style object for the line (e.g. {stroke: 'red', strokeDasharray: '4 4'})\n- labelStyle (object): CSS style object for the label\n- spacing (number|object): Space around label in px, or {x, y} object"},"brushConfig":{"type":{"name":"shape","value":{"enabled":{"name":"bool","required":false},"preventTooltip":{"name":"bool","required":false},"preventHighlight":{"name":"bool","required":false}}},"required":false,"description":"Brush configuration for range selection. Object with:\n- enabled (boolean): Whether brush interaction is enabled (default: false)\n- preventTooltip (boolean): Prevent tooltip during brush (default: true)\n- preventHighlight (boolean): Prevent highlight during brush (default: true)"},"brushOverlay":{"type":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'default'","computed":false},{"value":"'values'","computed":false}]},"required":false,"description":"Type of brush overlay to display:\n- 'none': No overlay (default)\n- 'default': Standard MUI selection rectangle\n- 'values': Custom overlay showing start/end values with difference and percentage"},"brushSeriesId":{"type":{"name":"string"},"required":false,"description":"Series ID for the custom 'values' brush overlay to read data from.\nIf not specified, uses the first series."},"brushData":{"type":{"name":"shape","value":{"start":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false}},"required":false},"current":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false}},"required":false},"timestamp":{"name":"string","required":false}}},"required":false,"description":"Current brush selection data. Read-only output property.\nContains pixel coordinates of the brush selection."},"axisHighlight":{"type":{"name":"shape","value":{"x":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false},{"value":"'band'","computed":false}],"required":false},"y":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false}],"required":false}}},"required":false,"description":"Axis highlight configuration. Controls how axes are highlighted on hover.\n- x (string): 'none', 'line', or 'band'\n- y (string): 'none' or 'line'"},"highlightedAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":true},"dataIndex":{"name":"number","required":true}}}},"required":false,"description":"Controlled axis highlight state. Array of objects specifying which axis values\nare highlighted. Each object has:\n- axisId (string|number): The axis identifier\n- dataIndex (number): The data index to highlight\nSet to empty array [] to clear highlights."},"highlightedItem":{"type":{"name":"shape","value":{"seriesId":{"name":"string","required":true},"dataIndex":{"name":"number","required":false}}},"required":false,"description":"Controlled item highlight state. Specifies which data point is highlighted.\nObject with:\n- seriesId (string): The series identifier\n- dataIndex (number): The data index within the series (optional)\nSet to null to clear highlight."},"showToolbar":{"type":{"name":"bool"},"required":false,"description":"Show chart toolbar with zoom/export controls. This is a Pro feature\nthat requires a valid licenseKey."},"tooltipItem":{"type":{"name":"shape","value":{"type":{"name":"string","required":false},"seriesId":{"name":"string","required":false},"dataIndex":{"name":"number","required":false}}},"required":false,"description":"Controlled tooltip item state. Used to synchronize tooltips across multiple charts.\nObject with:\n- type (string): Chart type ('line', 'bar', 'pie', etc.)\n- seriesId (string): The series identifier\n- dataIndex (number): The data index within the series\nSet to null to hide tooltip."},"zoomData":{"type":{"name":"union","value":[{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"string","required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},{"name":"any"}]},"required":false,"description":"Current zoom state. Read-only output property updated when zoom changes.\nArray of objects with axisId, start, and end values."},"clickData":{"type":{"name":"object"},"required":false,"description":"Data from the most recent click event. Read-only output property.\nContains type ('axis', 'mark', 'line', 'area'), relevant IDs/values,\nand timestamp."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times the chart has been clicked. Increments on each click event."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/LiveTradingChart.react.js":{"description":"LiveTradingChart simulates real-time candlestick trading data with volume bars,\nforecast line with uncertainty bands, alert labels, and optional price labels.\nUses an internal React timer for smooth high-speed updates.","displayName":"LiveTradingChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default 500."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not set, fills available space."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins."},"windowSize":{"type":{"name":"number"},"required":false,"description":"Number of visible candles in the sliding window. Default 60."},"forecastSize":{"type":{"name":"number"},"required":false,"description":"Number of forecast points beyond the window. Default 15."},"running":{"type":{"name":"bool"},"required":false,"description":"Whether the simulation is running. Default false."},"intervalMs":{"type":{"name":"number"},"required":false,"description":"Tick interval in milliseconds. Default 300."},"seed":{"type":{"name":"number"},"required":false,"description":"RNG seed for reproducible randomness. Default 42."},"resetTrigger":{"type":{"name":"number"},"required":false,"description":"Increment this to reset the simulation."},"initialPrice":{"type":{"name":"number"},"required":false,"description":"Starting price. Default 100."},"volatility":{"type":{"name":"number"},"required":false,"description":"Price volatility factor. Default 0.02."},"drift":{"type":{"name":"number"},"required":false,"description":"Price drift/trend factor. Default 0.001."},"forecastVolatility":{"type":{"name":"number"},"required":false,"description":"Forecast uncertainty multiplier. Default 1.5."},"alertProbability":{"type":{"name":"number"},"required":false,"description":"(Legacy) Probability of alert per tick \u2014 unused by default swing detection."},"alertThresholdPct":{"type":{"name":"number"},"required":false,"description":"(Legacy) Minimum % change to flag as alert \u2014 unused by default swing detection."},"alertLookback":{"type":{"name":"number"},"required":false,"description":"Number of candles on each side to confirm a swing high/low. Default 5."},"alertMinDistance":{"type":{"name":"number"},"required":false,"description":"Minimum ticks between consecutive alerts to prevent clustering. Default 10."},"maxVisibleAlerts":{"type":{"name":"number"},"required":false,"description":"Maximum number of alert labels visible in the window. Default 6."},"alertFilter":{"type":{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}},"required":false,"description":"Functions-as-props: custom alert detection. {function: 'name', options: {...}}"},"alertFormatter":{"type":{"name":"shape","value":{"function":{"name":"string","required":true},"options":{"name":"object","required":false}}},"required":false,"description":"Functions-as-props: custom alert label formatting. {function: 'name', options: {...}}"},"candleUpColor":{"type":{"name":"string"},"required":false,"description":"Candle color for upward (close >= open) moves. Default '#4caf50'."},"candleDownColor":{"type":{"name":"string"},"required":false,"description":"Candle color for downward (close < open) moves. Default '#f44336'."},"forecastColor":{"type":{"name":"string"},"required":false,"description":"Forecast line/area color. Default '#ff9800'."},"alertUpColor":{"type":{"name":"string"},"required":false,"description":"Alert label color for upward moves. Default '#4caf50'."},"alertDownColor":{"type":{"name":"string"},"required":false,"description":"Alert label color for downward moves. Default '#f44336'."},"uncertaintyOpacity":{"type":{"name":"number"},"required":false,"description":"Opacity of the forecast uncertainty shaded area. Default 0.15."},"showVolume":{"type":{"name":"bool"},"required":false,"description":"Show volume bars. Default true."},"showLabels":{"type":{"name":"bool"},"required":false,"description":"Show price labels on candles. Default false."},"volumeHeightPct":{"type":{"name":"number"},"required":false,"description":"Volume bars height as percentage of chart area. Default 20."},"showGrid":{"type":{"name":"bool"},"required":false,"description":"Show grid lines. Default true."},"showSlider":{"type":{"name":"bool"},"required":false,"description":"Show zoom slider below the chart (Pro). Default false."},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"Hide the legend. Default true."},"grid":{"type":{"name":"shape","value":{"horizontal":{"name":"bool","required":false},"vertical":{"name":"bool","required":false}}},"required":false,"description":"Grid configuration."},"xAxisLabel":{"type":{"name":"string"},"required":false,"description":"X-axis label text. Default 'Tick'."},"yAxisLabel":{"type":{"name":"string"},"required":false,"description":"Y-axis label text. Default 'Price'."},"currentPrice":{"type":{"name":"number"},"required":false,"description":"Current price (read-only output)."},"tickCount":{"type":{"name":"number"},"required":false,"description":"Total ticks elapsed (read-only output)."},"alertHistory":{"type":{"name":"array"},"required":false,"description":"Recent alert history (read-only output)."},"zoomData":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"axisId":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"start":{"name":"number","required":false},"end":{"name":"number","required":false}}}},"required":false,"description":"Current zoom state (read-only output)."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback for reporting property changes."}}},"src/lib/components/PieChart.react.js":{"description":"PieChart component wrapping MUI X Charts PieChart.\nRenders pie and donut charts with customizable arcs, labels, and interactions.\nSupports single series (via data prop) or multiple series (via series prop) for nested pies.\nThis is a free feature - no MUI X Pro license required.","displayName":"PieChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"data":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"number"},{"name":"string"}],"required":false},"value":{"name":"number","required":true},"label":{"name":"string","required":false},"color":{"name":"string","required":false}}}},"required":false,"description":"Pie chart data as an array of objects (for single series).\nEach object should have:\n- id (number/string): Unique identifier for the slice\n- value (number): The numeric value (required)\n- label (string): Display label for the slice\n- color (string): Optional color override for this slice\n\nExample: [\n { id: 0, value: 35, label: 'Marketing' },\n { id: 1, value: 25, label: 'Engineering', color: '#1976d2' },\n]\n\nNote: Use either 'data' for single series or 'series' for multiple series (nested pies)."},"series":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"string","required":false},"data":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"number"},{"name":"string"}],"required":false},"value":{"name":"number","required":true},"label":{"name":"string","required":false},"color":{"name":"string","required":false}}},"required":true},"innerRadius":{"name":"union","value":[{"name":"number"},{"name":"string"}],"required":false},"outerRadius":{"name":"union","value":[{"name":"number"},{"name":"string"}],"required":false},"paddingAngle":{"name":"number","required":false},"cornerRadius":{"name":"number","required":false},"startAngle":{"name":"number","required":false},"endAngle":{"name":"number","required":false},"arcLabel":{"name":"enum","value":[{"value":"'value'","computed":false},{"value":"'label'","computed":false},{"value":"'formattedValue'","computed":false}],"required":false},"arcLabelMinAngle":{"name":"number","required":false},"arcLabelRadius":{"name":"number","required":false},"highlightScope":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'global'","computed":false},{"value":"'none'","computed":false}],"required":false}},"required":false}}}},"required":false,"description":"Array of series configurations for multi-series/nested pie charts.\nEach series can have its own data, geometry, and styling.\nWhen provided, the 'data' prop and individual geometry props are ignored.\n\nExample for nested pie:\n[\n {\n data: innerRingData,\n innerRadius: 0,\n outerRadius: 80,\n cornerRadius: 3,\n highlightScope: { fade: 'global', highlight: 'item' },\n },\n {\n data: outerRingData,\n innerRadius: 90,\n outerRadius: 120,\n cornerRadius: 3,\n highlightScope: { fade: 'global', highlight: 'item' },\n },\n]"},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not specified, the chart expands to fill\nthe available space."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 300."},"innerRadius":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Inner radius of the pie in pixels or percentage string.\nSet to a value > 0 to create a donut chart.\nExamples: 50, '50%', '40%'"},"outerRadius":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Outer radius of the pie in pixels or percentage string.\nExamples: 100, '80%'"},"paddingAngle":{"type":{"name":"number"},"required":false,"description":"Gap between arcs in degrees. Creates visual separation between slices."},"cornerRadius":{"type":{"name":"number"},"required":false,"description":"Corner radius of the arcs in pixels. Rounds the corners of each slice."},"startAngle":{"type":{"name":"number"},"required":false,"description":"Start angle of the first arc in degrees. Default is 0 (3 o'clock position).\nUse -90 for 12 o'clock start position."},"endAngle":{"type":{"name":"number"},"required":false,"description":"End angle of the last arc in degrees. Default is 360 (full circle).\nUse 90 with startAngle=-90 for a half-pie/gauge chart."},"cx":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"X position of the pie center. Can be pixels or percentage string.\nDefault is '50%' (centered)."},"cy":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Y position of the pie center. Can be pixels or percentage string.\nDefault is '50%' (centered)."},"arcLabel":{"type":{"name":"enum","value":[{"value":"'value'","computed":false},{"value":"'label'","computed":false},{"value":"'formattedValue'","computed":false}]},"required":false,"description":"Type of label to display on arcs.\n- 'value': Shows the numeric value\n- 'label': Shows the label text\n- 'formattedValue': Shows formatted value"},"arcLabelMinAngle":{"type":{"name":"number"},"required":false,"description":"Minimum arc angle in degrees required to display a label.\nPrevents labels from appearing on very small slices."},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Array of colors to use for the pie slices.\nIf not provided, uses the default MUI color palette.\nExample: ['#1976d2', '#dc004e', '#ff9800', '#4caf50']"},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"If true, the legend is hidden."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels. Object with top, right, bottom, left keys."},"highlightScope":{"type":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'global'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Highlight scope configuration for slice highlighting behavior.\n- highlight: 'item' or 'none'\n- fade: 'global' or 'none'\n\nExample: { highlight: 'item', fade: 'global' }"},"tooltip":{"type":{"name":"shape","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration.\n- trigger (string): 'item' to show on slice hover, 'none' to disable"},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"If true, disables chart animations. Also respects prefers-reduced-motion."},"clickData":{"type":{"name":"object"},"required":false,"description":"Data from the most recent click event. Read-only output property.\nContains id, dataIndex, value, label, and timestamp."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times the chart has been clicked. Increments on each click event."},"highlightedItem":{"type":{"name":"shape","value":{"seriesId":{"name":"string","required":false},"dataIndex":{"name":"number","required":false}}},"required":false,"description":"Currently highlighted item. Can be used as both input (controlled mode) and\noutput (updated when user hovers over a slice).\nObject with:\n- seriesId (string): The series identifier\n- dataIndex (number): The data index within the series\nSet to null to clear highlight."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/ScatterChart.react.js":{"description":"ScatterChart component wrapping MUI X Charts ScatterChart.\nRenders scatter/point charts showing relationships between two variables.\nSupports multiple series, z-axis color mapping, voronoi interaction,\ncustom marker sizes, and click/highlight callbacks.","displayName":"ScatterChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"series":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"string","required":false},"label":{"name":"string","required":false},"color":{"name":"string","required":false},"data":{"name":"arrayOf","value":{"name":"shape","value":{"x":{"name":"number","required":false},"y":{"name":"number","required":false},"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"z":{"name":"number","required":false}}},"required":false},"datasetKeys":{"name":"shape","value":{"x":{"name":"string","required":false},"y":{"name":"string","required":false},"id":{"name":"string","required":false},"z":{"name":"string","required":false}},"required":false},"markerSize":{"name":"number","required":false},"highlightScope":{"name":"shape","value":{"highlight":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'series'","computed":false},{"value":"'none'","computed":false}],"required":false},"fade":{"name":"enum","value":[{"value":"'global'","computed":false},{"value":"'series'","computed":false},{"value":"'none'","computed":false}],"required":false}},"required":false},"xAxisId":{"name":"string","required":false},"yAxisId":{"name":"string","required":false}}}},"required":false,"description":"Array of scatter series to display. Each series contains:\n- id (string): Unique series identifier\n- label (string): Display label for legend/tooltip\n- color (string): Series color\n- data (array): Array of {x, y, id, z?} point objects\n- datasetKeys (object): {x, y, id?, z?} keys mapping to dataset columns\n- markerSize (number): Radius of scatter markers in pixels\n- highlightScope (object): {highlight, fade} highlighting behavior"},"xAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'sqrt'","computed":false},{"value":"'symlog'","computed":false},{"value":"'utc'","computed":false},{"value":"'pow'","computed":false}],"required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"position":{"name":"enum","value":[{"value":"'top'","computed":false},{"value":"'bottom'","computed":false},{"value":"'none'","computed":false}],"required":false},"reverse":{"name":"bool","required":false},"colorMap":{"name":"object","required":false},"tickLabelStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickNumber":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickLabelMinGap":{"name":"number","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'end'","computed":false},{"value":"'middle'","computed":false},{"value":"'extremities'","computed":false}],"required":false},"height":{"name":"number","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false},"categoryGapRatio":{"name":"number","required":false},"barGapRatio":{"name":"number","required":false},"width":{"name":"number","required":false}}}},"required":false,"description":"X-axis configuration. Array of axis config objects.\n- id (string): Axis identifier\n- label (string): Axis label\n- scaleType (string): 'linear', 'log', 'time', 'band', 'point', 'sqrt', 'symlog', 'utc'\n- min/max (number): Domain bounds\n- data (array): Axis data values\n- dataKey (string): Key for dataset-driven axis\n- position (string): 'top', 'bottom', 'none'\n- reverse (bool): Reverse axis direction\n- colorMap (object): Color mapping configuration\n- tickLabelStyle (object): CSS for tick labels\n- labelStyle (object): CSS for axis label\n- tickMinStep (number): Minimum step between ticks\n- tickMaxStep (number): Maximum step between ticks\n- tickNumber (number): Approximate tick count\n- tickSize (number): Tick mark length in pixels\n- height (number): Space reserved for axis\n- disableLine (bool): Hide axis line\n- disableTicks (bool): Hide tick marks\n- domainLimit (string): 'nice' or 'strict'"},"yAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"union","value":[{"name":"string"},{"name":"number"}],"required":false},"label":{"name":"string","required":false},"scaleType":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false},{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'sqrt'","computed":false},{"value":"'symlog'","computed":false},{"value":"'utc'","computed":false},{"value":"'pow'","computed":false}],"required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"position":{"name":"enum","value":[{"value":"'left'","computed":false},{"value":"'right'","computed":false},{"value":"'none'","computed":false}],"required":false},"reverse":{"name":"bool","required":false},"colorMap":{"name":"object","required":false},"tickLabelStyle":{"name":"object","required":false},"labelStyle":{"name":"object","required":false},"tickMinStep":{"name":"number","required":false},"tickMaxStep":{"name":"number","required":false},"tickNumber":{"name":"number","required":false},"tickSize":{"name":"number","required":false},"tickSpacing":{"name":"number","required":false},"tickLabelMinGap":{"name":"number","required":false},"tickLabelPlacement":{"name":"enum","value":[{"value":"'middle'","computed":false},{"value":"'tick'","computed":false}],"required":false},"tickPlacement":{"name":"enum","value":[{"value":"'start'","computed":false},{"value":"'end'","computed":false},{"value":"'middle'","computed":false},{"value":"'extremities'","computed":false}],"required":false},"width":{"name":"number","required":false},"disableLine":{"name":"bool","required":false},"disableTicks":{"name":"bool","required":false},"domainLimit":{"name":"enum","value":[{"value":"'nice'","computed":false},{"value":"'strict'","computed":false}],"required":false}}}},"required":false,"description":"Y-axis configuration. Array of axis config objects.\nSame properties as xAxis, plus:\n- width (number): Space reserved for axis\n- position (string): 'left', 'right', 'none'"},"zAxis":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"id":{"name":"string","required":false},"data":{"name":"array","required":false},"dataKey":{"name":"string","required":false},"min":{"name":"number","required":false},"max":{"name":"number","required":false},"colorMap":{"name":"object","required":false}}}},"required":false,"description":"Z-axis configuration for color mapping scatter points.\nColor priority: z-axis > y-axis > x-axis > series color.\n- data (array): Z-axis values\n- dataKey (string): Key for dataset-driven z values\n- id (string): Axis identifier\n- min/max (number): Domain bounds\n- colorMap (object): Color mapping - continuous, piecewise, or ordinal\n Continuous: {type: 'continuous', min, max, color: ['#start', '#end']}\n Piecewise: {type: 'piecewise', thresholds: [...], colors: [...]}\n Ordinal: {type: 'ordinal', values: [...], colors: [...]}"},"dataset":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Dataset array for datasetKeys-driven series.\nArray of objects where keys map to series datasetKeys.\nExample: [{x1: 10, y1: 20, x2: 30, y2: 40}, ...]"},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 400."},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not set, fills available space."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels. Object with top, right, bottom, left keys."},"grid":{"type":{"name":"shape","value":{"horizontal":{"name":"bool","required":false},"vertical":{"name":"bool","required":false}}},"required":false,"description":"Grid configuration. Object with horizontal and vertical boolean keys."},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Color palette array for multiple series."},"voronoiMaxRadius":{"type":{"name":"union","value":[{"name":"number"},{"name":"enum","value":[{"value":"'item'","computed":false}]}]},"required":false,"description":"Maximum distance between pointer and scatter point for interaction.\n- number: Distance in pixels\n- 'item': Only trigger on direct hover over marker\n- undefined: Infinite radius (default)"},"disableVoronoi":{"type":{"name":"bool"},"required":false,"description":"If true, disables Voronoi cell interaction and falls back to hover events."},"axisHighlight":{"type":{"name":"shape","value":{"x":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false},{"value":"'band'","computed":false}],"required":false},"y":{"name":"enum","value":[{"value":"'none'","computed":false},{"value":"'line'","computed":false},{"value":"'band'","computed":false}],"required":false}}},"required":false,"description":"Axis highlight configuration on hover.\n- x: 'none', 'line', or 'band'\n- y: 'none', 'line', or 'band'"},"tooltip":{"type":{"name":"shape","value":{"trigger":{"name":"enum","value":[{"value":"'item'","computed":false},{"value":"'axis'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Tooltip configuration.\n- trigger: 'item' (on point hover), 'axis' (all at x position), 'none' (disabled)"},"hideLegend":{"type":{"name":"bool"},"required":false,"description":"If true, the legend is hidden."},"skipAnimation":{"type":{"name":"bool"},"required":false,"description":"If true, animations are disabled."},"loading":{"type":{"name":"bool"},"required":false,"description":"If true, shows a loading overlay."},"renderer":{"type":{"name":"enum","value":[{"value":"'svg-single'","computed":false},{"value":"'svg-batch'","computed":false}]},"required":false,"description":"Renderer type for performance optimization.\n- 'svg-single': Default, renders each point as a element\n- 'svg-batch': Batch renders points in elements for large datasets\n Note: svg-batch has limitations (no CSS per-point, no custom markers)"},"slotProps":{"type":{"name":"object"},"required":false,"description":"Props passed to internal slot components for customization."},"highlightedItem":{"type":{"name":"object"},"required":false,"description":"Currently highlighted item. Works as both input (controlled) and output.\nObject with seriesId and dataIndex."},"clickData":{"type":{"name":"object"},"required":false,"description":"Data from the most recent click event. Read-only output property.\nContains seriesId, dataIndex, x, y, and timestamp."},"n_clicks":{"type":{"name":"number"},"required":false,"description":"Number of times the chart has been clicked. Increments on each click event."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/SimpleTreeView.react.js":{"description":"","displayName":"SimpleTreeView","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"Dash component id"},"items":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"itemId":{"name":"string","required":true},"label":{"name":"string","required":true},"children":{"name":"array","required":false},"disabled":{"name":"bool","required":false},"disableSelection":{"name":"bool","required":false}}}},"required":false,"description":"Nested items array. Each item: {itemId: string, label: string, children?: [], disabled?: bool, disableSelection?: bool}","defaultValue":{"value":"[]","computed":false}},"selectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Controlled selected item(s). String when multiSelect=false, array when true."},"defaultSelectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Default selected items (uncontrolled)."},"multiSelect":{"type":{"name":"bool"},"required":false,"description":"Allow selecting multiple items.","defaultValue":{"value":"false","computed":false}},"checkboxSelection":{"type":{"name":"bool"},"required":false,"description":"Show checkboxes for selection.","defaultValue":{"value":"false","computed":false}},"disableSelection":{"type":{"name":"bool"},"required":false,"description":"Disable all selection.","defaultValue":{"value":"false","computed":false}},"expandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Controlled expanded item IDs."},"defaultExpandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Default expanded items (uncontrolled)."},"expansionTrigger":{"type":{"name":"enum","value":[{"value":"'content'","computed":false},{"value":"'iconContainer'","computed":false}]},"required":false,"description":"What triggers expansion: \"content\" or \"iconContainer\".","defaultValue":{"value":"'content'","computed":false}},"disabledItemsFocusable":{"type":{"name":"bool"},"required":false,"description":"Allow focus on disabled items.","defaultValue":{"value":"false","computed":false}},"itemChildrenIndentation":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Indentation of children. Number (px) or string (\"24px\", \"2rem\").","defaultValue":{"value":"'12px'","computed":false}},"height":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Container height."},"sx":{"type":{"name":"object"},"required":false,"description":"MUI sx styling object."},"collapseIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for collapse icon (e.g. \"ExpandMore\")."},"expandIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for expand icon (e.g. \"ChevronRight\")."},"endIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for leaf/end icon."},"ariaLabel":{"type":{"name":"string"},"required":false,"description":"ARIA label for the tree."},"ariaLabelledBy":{"type":{"name":"string"},"required":false,"description":"ID of element that labels the tree."},"clickedItem":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when item is clicked. {itemId, event_timestamp}"},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash setProps callback"}}},"src/lib/components/SparklineChart.react.js":{"description":"SparklineChart component wrapping MUI X Charts SparkLineChart.\nRenders compact, inline charts perfect for dashboards, tables, and KPI cards.\nThis is a Community feature - no license key required.\n\nSupports both controlled and uncontrolled highlight states for interactive\ndashboards where hovering on a sparkline updates other components.","displayName":"SparklineChart","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"The ID used to identify this component in Dash callbacks."},"data":{"type":{"name":"arrayOf","value":{"name":"number"}},"required":true,"description":"Array of numeric values to display in the sparkline.\nThis is the primary data for the chart."},"plotType":{"type":{"name":"enum","value":[{"value":"'line'","computed":false},{"value":"'bar'","computed":false}]},"required":false,"description":"Type of plot to render.\n- 'line': Renders a line chart (default)\n- 'bar': Renders a bar chart"},"width":{"type":{"name":"number"},"required":false,"description":"Chart width in pixels. If not specified, the chart will\nexpand to fill the available space."},"height":{"type":{"name":"number"},"required":false,"description":"Chart height in pixels. Default is 36 for compact inline display."},"color":{"type":{"name":"string"},"required":false,"description":"Single color for the sparkline. Can be any valid CSS color string.\nExample: '#1976d2', 'rgb(25, 118, 210)', 'blue'"},"colors":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Array of colors for the sparkline. Use this for multi-color configurations."},"area":{"type":{"name":"bool"},"required":false,"description":"If true, fills the area under the line. Only applies when plotType is 'line'."},"curve":{"type":{"name":"enum","value":[{"value":"'linear'","computed":false},{"value":"'monotoneX'","computed":false},{"value":"'monotoneY'","computed":false},{"value":"'natural'","computed":false},{"value":"'step'","computed":false},{"value":"'stepBefore'","computed":false},{"value":"'stepAfter'","computed":false},{"value":"'catmullRom'","computed":false},{"value":"'bumpX'","computed":false},{"value":"'bumpY'","computed":false}]},"required":false,"description":"Curve interpolation method for line charts.\nOptions: 'linear', 'monotoneX', 'monotoneY', 'natural', 'step',\n'stepBefore', 'stepAfter', 'catmullRom', 'bumpX', 'bumpY'"},"showTooltip":{"type":{"name":"bool"},"required":false,"description":"If true, shows a tooltip on hover displaying the value."},"showHighlight":{"type":{"name":"bool"},"required":false,"description":"If true, shows a visual highlight on the hovered data point.\nFor line charts, shows a dot. For bar charts, shows a band."},"margin":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Chart margins in pixels. Object with top, right, bottom, left keys.\nDefault is { top: 5, right: 5, bottom: 5, left: 5 }."},"xAxis":{"type":{"name":"shape","value":{"id":{"name":"string","required":false},"data":{"name":"array","required":false},"scaleType":{"name":"enum","value":[{"value":"'band'","computed":false},{"value":"'point'","computed":false},{"value":"'linear'","computed":false},{"value":"'log'","computed":false},{"value":"'time'","computed":false}],"required":false}}},"required":false,"description":"X-axis configuration object. Unlike LineChart, this is a single object,\nnot an array. The axis is hidden by default for compact display.\n- id (string): Axis identifier for controlled highlighting\n- data (array): X-axis labels/values\n- scaleType (string): Scale type"},"yAxis":{"type":{"name":"shape","value":{"min":{"name":"number","required":false},"max":{"name":"number","required":false}}},"required":false,"description":"Y-axis configuration object. Unlike LineChart, this is a single object,\nnot an array. The axis is hidden by default for compact display."},"axisHighlight":{"type":{"name":"shape","value":{"x":{"name":"enum","value":[{"value":"'line'","computed":false},{"value":"'band'","computed":false},{"value":"'none'","computed":false}],"required":false},"y":{"name":"enum","value":[{"value":"'line'","computed":false},{"value":"'band'","computed":false},{"value":"'none'","computed":false}],"required":false}}},"required":false,"description":"Axis highlight configuration. Controls how the axis is highlighted on hover.\n- x: 'line' | 'band' | 'none' - highlight style for x-axis\n- y: 'line' | 'band' | 'none' - highlight style for y-axis"},"slotProps":{"type":{"name":"object"},"required":false,"description":"Props passed to internal slot components for customization.\n- lineHighlight: { r: number } - radius of the highlight dot\n- tooltip: tooltip configuration"},"clipAreaOffset":{"type":{"name":"shape","value":{"top":{"name":"number","required":false},"right":{"name":"number","required":false},"bottom":{"name":"number","required":false},"left":{"name":"number","required":false}}},"required":false,"description":"Offset for the clip area to prevent cutting off elements at edges.\nObject with top, right, bottom, left keys (in pixels)."},"baseline":{"type":{"name":"union","value":[{"name":"enum","value":[{"value":"'min'","computed":false},{"value":"'max'","computed":false}]},{"name":"number"}]},"required":false,"description":"Baseline for area charts. Determines where the area fill starts.\n- 'min': fills from minimum value (default)\n- 'max': fills from maximum value\n- number: fills from a specific value"},"strokeWidth":{"type":{"name":"number"},"required":false,"description":"Stroke width for the line in pixels. Only applies when plotType is 'line'.\nDefault is 2. Higher values create thicker lines."},"disableClipping":{"type":{"name":"bool"},"required":false,"description":"If true, disables clipping of the chart content.\nUseful when elements extend beyond the chart boundaries."},"highlightedIndex":{"type":{"name":"number"},"required":false,"description":"Controlled highlight index. Set this to programmatically highlight\na specific data point. Requires xAxis.id to be set."},"highlightedItem":{"type":{"name":"object"},"required":false,"description":"Currently highlighted item. Read-only output property updated when\nthe user hovers over a data point (requires showHighlight=true).\nContains the data index of the highlighted point."},"hoverIndex":{"type":{"name":"number"},"required":false,"description":"Index of the currently hovered data point. Read-only output.\nUse this to sync hover state with other components."},"hoverValue":{"type":{"name":"number"},"required":false,"description":"Value at the currently hovered data point. Read-only output.\nUse this to display the hovered value in other components."},"n_hovers":{"type":{"name":"number"},"required":false,"description":"Number of hover events. Increments each time a data point is hovered."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash-assigned callback that should be called to report property changes\nto Dash, to make them available for callbacks."}}},"src/lib/components/TimeClock.react.js":{"description":"TimeClock lets the user pick a time on an inline clock face (hours, minutes,\nand optionally seconds) without any input, popper, or modal. Values are\nexchanged with Dash as strings; on change it emits `value` (wall-time ISO),\nthe current `view`, and a parsed `timeData` convenience object.","displayName":"TimeClock","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"Dash component id"},"value":{"type":{"name":"string"},"required":false,"description":"Controlled value. Full wall-time ISO (\"2022-04-17T15:30:00\") or time-only\n(\"15:30\" / \"15:30:45\"). Also an OUTPUT: updated on every change with a\nfull wall-time ISO string."},"defaultValue":{"type":{"name":"string"},"required":false,"description":"Uncontrolled initial value (same string formats as `value`)."},"views":{"type":{"name":"arrayOf","value":{"name":"enum","value":[{"value":"'hours'","computed":false},{"value":"'minutes'","computed":false},{"value":"'seconds'","computed":false}]}},"required":false,"description":"Which views to render, in order. Default [\"hours\", \"minutes\"].","defaultValue":{"value":"['hours', 'minutes']","computed":false}},"view":{"type":{"name":"enum","value":[{"value":"'hours'","computed":false},{"value":"'minutes'","computed":false},{"value":"'seconds'","computed":false}]},"required":false,"description":"Controlled visible view. Also an OUTPUT \u2014 updated when the view changes."},"openTo":{"type":{"name":"enum","value":[{"value":"'hours'","computed":false},{"value":"'minutes'","computed":false},{"value":"'seconds'","computed":false}]},"required":false,"description":"Which view to open first (uncontrolled)."},"ampm":{"type":{"name":"bool"},"required":false,"description":"Force 12h (true) or 24h (false). Omit to use the locale default."},"disabled":{"type":{"name":"bool"},"required":false,"description":"Disable the whole clock.","defaultValue":{"value":"false","computed":false}},"readOnly":{"type":{"name":"bool"},"required":false,"description":"Make the clock read-only (no editing).","defaultValue":{"value":"false","computed":false}},"autoFocus":{"type":{"name":"bool"},"required":false,"description":"Auto-focus the clock on mount.","defaultValue":{"value":"false","computed":false}},"minutesStep":{"type":{"name":"number"},"required":false,"description":"Step (in minutes) between selectable minute values."},"minTime":{"type":{"name":"string"},"required":false,"description":"Minimum selectable time (ISO or time-only string)."},"maxTime":{"type":{"name":"string"},"required":false,"description":"Maximum selectable time (ISO or time-only string)."},"disableFuture":{"type":{"name":"bool"},"required":false,"description":"Disable times in the future (relative to now).","defaultValue":{"value":"false","computed":false}},"disablePast":{"type":{"name":"bool"},"required":false,"description":"Disable times in the past (relative to now).","defaultValue":{"value":"false","computed":false}},"disableIgnoringDatePartForTimeValidation":{"type":{"name":"bool"},"required":false,"description":"When true, min/max time comparisons include the date part. When false\n(default), only the time-of-day is compared.","defaultValue":{"value":"false","computed":false}},"showViewSwitcher":{"type":{"name":"bool"},"required":false,"description":"Show the hours/minutes/seconds view-switch arrow buttons.","defaultValue":{"value":"false","computed":false}},"className":{"type":{"name":"string"},"required":false,"description":"CSS class applied to the wrapping div."},"sx":{"type":{"name":"object"},"required":false,"description":"MUI sx styling object applied to the TimeClock."},"timeData":{"type":{"name":"exact","value":{"hours":{"name":"number","required":false},"minutes":{"name":"number","required":false},"seconds":{"name":"number","required":false},"formatted":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Parsed convenience output, updated on every change:\n{ hours, minutes, seconds, formatted (\"HH:mm:ss\"), event_timestamp }."},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash setProps callback"}}},"src/lib/components/TreeView.react.js":{"description":"","displayName":"TreeView","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"Dash component id"},"items":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Array of item objects. Each must have an id and label (or use getItemId/getItemLabel).","defaultValue":{"value":"[]","computed":false}},"getItemId":{"type":{"name":"string"},"required":false,"description":"Property name for item ID (default: \"id\")","defaultValue":{"value":"'id'","computed":false}},"getItemLabel":{"type":{"name":"string"},"required":false,"description":"Property name for item label (default: \"label\")","defaultValue":{"value":"'label'","computed":false}},"getItemChildren":{"type":{"name":"string"},"required":false,"description":"Property name for item children (default: \"children\")","defaultValue":{"value":"'children'","computed":false}},"selectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Controlled selected item(s). String when multiSelect=false, array when true."},"defaultSelectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Default selected items (uncontrolled)."},"multiSelect":{"type":{"name":"bool"},"required":false,"description":"Allow selecting multiple items.","defaultValue":{"value":"false","computed":false}},"checkboxSelection":{"type":{"name":"bool"},"required":false,"description":"Show checkboxes for selection.","defaultValue":{"value":"false","computed":false}},"disableSelection":{"type":{"name":"bool"},"required":false,"description":"Disable all selection.","defaultValue":{"value":"false","computed":false}},"selectionPropagation":{"type":{"name":"exact","value":{"parents":{"name":"bool","required":false},"descendants":{"name":"bool","required":false}}},"required":false,"description":"Auto-propagate selection to parents/descendants. {parents: bool, descendants: bool}"},"expandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Controlled expanded item IDs."},"defaultExpandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Default expanded items (uncontrolled)."},"expansionTrigger":{"type":{"name":"enum","value":[{"value":"'content'","computed":false},{"value":"'iconContainer'","computed":false}]},"required":false,"description":"What triggers expansion: \"content\" or \"iconContainer\".","defaultValue":{"value":"'content'","computed":false}},"isItemEditable":{"type":{"name":"bool"},"required":false,"description":"Enable label editing. true = all items, or use editableItems for per-item control.","defaultValue":{"value":"false","computed":false}},"editableItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"List of item IDs that are editable (alternative to isItemEditable=true)."},"disabledItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"List of item IDs that should be disabled."},"disabledItemsFocusable":{"type":{"name":"bool"},"required":false,"description":"Allow focus on disabled items.","defaultValue":{"value":"false","computed":false}},"itemChildrenIndentation":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Indentation of children. Number (px) or string (\"24px\", \"2rem\").","defaultValue":{"value":"'12px'","computed":false}},"height":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Container height."},"sx":{"type":{"name":"object"},"required":false,"description":"MUI sx styling object."},"collapseIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for collapse icon (e.g. \"ExpandMore\")."},"expandIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for expand icon (e.g. \"ChevronRight\")."},"endIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for leaf/end icon."},"ariaLabel":{"type":{"name":"string"},"required":false,"description":"ARIA label for the tree."},"ariaLabelledBy":{"type":{"name":"string"},"required":false,"description":"ID of element that labels the tree."},"clickedItem":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when item is clicked. {itemId, event_timestamp}"},"focusedItem":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when item is focused. {itemId, event_timestamp}"},"editedItemLabel":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"newLabel":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when label edit completes. {itemId, newLabel, event_timestamp}"},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash setProps callback"}}},"src/lib/components/TreeViewPro.react.js":{"description":"","displayName":"TreeViewPro","methods":[],"props":{"id":{"type":{"name":"string"},"required":false,"description":"Dash component id"},"licenseKey":{"type":{"name":"string"},"required":false,"description":"MUI X Pro license key. Required for Pro features.","defaultValue":{"value":"''","computed":false}},"items":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Array of item objects.","defaultValue":{"value":"[]","computed":false}},"getItemId":{"type":{"name":"string"},"required":false,"description":"Property name for item ID (default: \"id\")","defaultValue":{"value":"'id'","computed":false}},"getItemLabel":{"type":{"name":"string"},"required":false,"description":"Property name for item label (default: \"label\")","defaultValue":{"value":"'label'","computed":false}},"getItemChildren":{"type":{"name":"string"},"required":false,"description":"Property name for item children (default: \"children\")","defaultValue":{"value":"'children'","computed":false}},"selectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Controlled selected item(s). String when multiSelect=false, array when true."},"defaultSelectedItems":{"type":{"name":"union","value":[{"name":"string"},{"name":"arrayOf","value":{"name":"string"}}]},"required":false,"description":"Default selected items (uncontrolled)."},"multiSelect":{"type":{"name":"bool"},"required":false,"description":"Allow selecting multiple items.","defaultValue":{"value":"false","computed":false}},"checkboxSelection":{"type":{"name":"bool"},"required":false,"description":"Show checkboxes for selection.","defaultValue":{"value":"false","computed":false}},"disableSelection":{"type":{"name":"bool"},"required":false,"description":"Disable all selection.","defaultValue":{"value":"false","computed":false}},"selectionPropagation":{"type":{"name":"exact","value":{"parents":{"name":"bool","required":false},"descendants":{"name":"bool","required":false}}},"required":false,"description":"Auto-propagate selection to parents/descendants."},"expandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Controlled expanded item IDs."},"defaultExpandedItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Default expanded items (uncontrolled)."},"expansionTrigger":{"type":{"name":"enum","value":[{"value":"'content'","computed":false},{"value":"'iconContainer'","computed":false}]},"required":false,"description":"What triggers expansion: \"content\" or \"iconContainer\".","defaultValue":{"value":"'content'","computed":false}},"isItemEditable":{"type":{"name":"bool"},"required":false,"description":"Enable label editing for all items.","defaultValue":{"value":"false","computed":false}},"editableItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"List of item IDs that are editable."},"disabledItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"List of item IDs that should be disabled."},"disabledItemsFocusable":{"type":{"name":"bool"},"required":false,"description":"Allow focus on disabled items.","defaultValue":{"value":"false","computed":false}},"itemChildrenIndentation":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Indentation of children.","defaultValue":{"value":"'12px'","computed":false}},"height":{"type":{"name":"union","value":[{"name":"number"},{"name":"string"}]},"required":false,"description":"Container height."},"sx":{"type":{"name":"object"},"required":false,"description":"MUI sx styling object."},"collapseIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for collapse icon."},"expandIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for expand icon."},"endIcon":{"type":{"name":"string"},"required":false,"description":"MUI icon name for leaf/end icon."},"ariaLabel":{"type":{"name":"string"},"required":false,"description":"ARIA label for the tree."},"ariaLabelledBy":{"type":{"name":"string"},"required":false,"description":"ID of element that labels the tree."},"itemsReordering":{"type":{"name":"bool"},"required":false,"description":"Enable drag-and-drop item reordering.","defaultValue":{"value":"false","computed":false}},"reorderableItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"List of item IDs that can be reordered. If empty, all items are reorderable."},"itemPositionChanged":{"type":{"name":"object"},"required":false,"description":"Output: Fired after item reorder. {itemId, oldPosition, newPosition, event_timestamp}"},"orderedItems":{"type":{"name":"arrayOf","value":{"name":"object"}},"required":false,"description":"Output: the current tree after any drag-and-drop reorder, preserving\neach node's original fields (id, label, children, etc.). Updates on\nevery reorder so Python callbacks can render the live order."},"lazyLoading":{"type":{"name":"bool"},"required":false,"description":"Enable lazy loading mode.","defaultValue":{"value":"false","computed":false}},"lazyLoadedChildren":{"type":{"name":"object"},"required":false,"description":"Input: Children loaded by Dash callback. {parentItemId: [childItems]}"},"lazyLoadRequest":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Output: Fired when unloaded node is expanded. {itemId, event_timestamp}"},"showItemControls":{"type":{"name":"bool"},"required":false,"description":"Show a Slider + kebab menu on each item row.","defaultValue":{"value":"false","computed":false}},"controlsItems":{"type":{"name":"arrayOf","value":{"name":"string"}},"required":false,"description":"Restrict slider+kebab to a subset of item IDs. Empty/omitted means all items."},"sliderValues":{"type":{"name":"object"},"required":false,"description":"Controlled slider values keyed by itemId, e.g. {\"task-1\": 40}. Also updated as user drags."},"sliderMin":{"type":{"name":"number"},"required":false,"description":"Slider minimum.","defaultValue":{"value":"0","computed":false}},"sliderMax":{"type":{"name":"number"},"required":false,"description":"Slider maximum.","defaultValue":{"value":"100","computed":false}},"sliderStep":{"type":{"name":"number"},"required":false,"description":"Slider step.","defaultValue":{"value":"1","computed":false}},"sliderColor":{"type":{"name":"string"},"required":false,"description":"Slider color. Accepts a Mantine theme color name (\"teal\", \"blue.5\"),\na CSS color literal (\"#ff6b6b\", \"rgb(...)\"), or a CSS expression\n(\"var(--mantine-color-teal-6)\", \"light-dark(...)\"). Bare names use\nshade 6 by default. When omitted, the slider falls back to MUI's\n`primary` palette color."},"kebabMenuItems":{"type":{"name":"arrayOf","value":{"name":"shape","value":{"label":{"name":"string","required":false},"value":{"name":"string","required":false},"icon":{"name":"string","required":false},"divider":{"name":"bool","required":false},"children":{"name":"array","required":false}}}},"required":false,"description":"Kebab menu entries. Each entry is one of:\na LEAF {label, value, icon?} \u2014 picking it fires `kebabAction` with\n`action` = its `value`; a DIVIDER {divider: true}; or a SUBMENU\n{label, icon?, children: [entries]} that opens on hover/click\n(nesting is recursive)."},"kebabMenuItemsById":{"type":{"name":"objectOf","value":{"name":"array"}},"required":false,"description":"Per-node kebab menus: {itemId: [entries]} (same entry shape as\n`kebabMenuItems`, submenus/dividers included). A node listed here gets\nits own menu; all other nodes fall back to `kebabMenuItems`."},"sliderChange":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"value":{"name":"number","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Output: fires once on each commit (mouse-up) of a slider drag. {itemId, value, event_timestamp}"},"kebabAction":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"action":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Output: fires when a kebab menu item is chosen. {itemId, action, event_timestamp}"},"clickedItem":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when item is clicked. {itemId, event_timestamp}"},"focusedItem":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when item is focused. {itemId, event_timestamp}"},"editedItemLabel":{"type":{"name":"exact","value":{"itemId":{"name":"string","required":false},"newLabel":{"name":"string","required":false},"event_timestamp":{"name":"number","required":false}}},"required":false,"description":"Fired when label edit completes. {itemId, newLabel, event_timestamp}"},"setProps":{"type":{"name":"func"},"required":false,"description":"Dash setProps callback"}}}} \ No newline at end of file diff --git a/dash_mui_charts/package-info.json b/dash_mui_charts/package-info.json index af7d52e..7c9fd2f 100644 --- a/dash_mui_charts/package-info.json +++ b/dash_mui_charts/package-info.json @@ -1,4 +1,4 @@ { "name": "dash_mui_charts", - "version": "1.3.0" + "version": "1.4.0" } diff --git a/package.json b/package.json index 3da794f..03ecbf1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dash_mui_charts", - "version": "1.3.0", + "version": "1.4.0", "description": "Dash components wrapping MUI X Charts for creating interactive data visualizations", "main": "build/index.js", "repository": { diff --git a/src/lib/components/TreeViewPro.react.js b/src/lib/components/TreeViewPro.react.js index ffce87f..048f412 100644 --- a/src/lib/components/TreeViewPro.react.js +++ b/src/lib/components/TreeViewPro.react.js @@ -27,9 +27,11 @@ import Slider from '@mui/material/Slider'; import IconButton from '@mui/material/IconButton'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; +import Divider from '@mui/material/Divider'; import ListItemIcon from '@mui/material/ListItemIcon'; import ListItemText from '@mui/material/ListItemText'; import MoreVertIcon from '@mui/icons-material/MoreVert'; +import ChevronRightIcon from '@mui/icons-material/ChevronRight'; import {resolveIcon} from '../fragments/iconResolver'; let licenseKeySet = false; @@ -136,6 +138,92 @@ const applyReorder = (items, change, idField, childrenField) => { // --- Shared context for per-item slider + kebab ------------------------------ const ItemControlsContext = React.createContext(null); +// --- Kebab menu entries (recursive: leaves, dividers, hover submenus) -------- +// An entry is one of: +// {label, value, icon} — a leaf; picking it fires kebabAction +// {divider: true} — a horizontal rule +// {label, icon, children: [entries]} — a submenu (opens on hover or click) +const KebabSubMenu = ({entry, onLeaf}) => { + const [anchor, setAnchor] = useState(null); + const IconComp = entry.icon ? resolveIcon(entry.icon) : null; + return ( + + { + e.stopPropagation(); + setAnchor(e.currentTarget); + }} + onMouseEnter={(e) => setAnchor(e.currentTarget)} + > + {IconComp ? ( + + + + ) : null} + {entry.label} + + + setAnchor(null)} + onClick={(e) => e.stopPropagation()} + anchorOrigin={{vertical: 'top', horizontal: 'right'}} + transformOrigin={{vertical: 'top', horizontal: 'left'}} + // hover-opened: let the pointer travel into the submenu + sx={{pointerEvents: 'auto'}} + MenuListProps={{onMouseLeave: () => setAnchor(null)}} + > + { + setAnchor(null); + onLeaf(v); + }} + /> + + + ); +}; + +KebabSubMenu.propTypes = { + entry: PropTypes.object, + onLeaf: PropTypes.func, +}; + +const KebabEntries = ({entries, onLeaf}) => { + return (entries || []).map((m, i) => { + if (m.divider) { + return ; + } + if (m.children && m.children.length) { + return ; + } + const IconComp = m.icon ? resolveIcon(m.icon) : null; + return ( + { + e.stopPropagation(); + onLeaf(m.value); + }} + > + {IconComp ? ( + + + + ) : null} + {m.label} + + ); + }); +}; + +KebabEntries.propTypes = { + entries: PropTypes.array, + onLeaf: PropTypes.func, +}; + // Rendered as the TreeItem `label` *slot* (not the `label` prop). MUI passes // the real string label as `children`, plus `onDoubleClick`/`className` that // drive the built-in editing flow — we forward those untouched so editing and @@ -182,9 +270,14 @@ const ItemLabelWithControls = ({ sliderColor, onSliderChange, kebabMenuItems, + kebabMenuItemsById, onKebabAction, } = ctx; + // per-node menu override wins over the global menu + const menuEntries = + (kebabMenuItemsById && kebabMenuItemsById[itemId]) || kebabMenuItems; + const showControls = !controlsItemSet || controlsItemSet.has(itemId); if (!showControls) { return ( @@ -312,26 +405,13 @@ const ItemLabelWithControls = ({ onClose={() => setMenuAnchor(null)} onClick={stopReact} > - {(kebabMenuItems || []).map((m) => { - const IconComp = m.icon ? resolveIcon(m.icon) : null; - return ( - { - e.stopPropagation(); - setMenuAnchor(null); - onKebabAction(itemId, m.value); - }} - > - {IconComp ? ( - - - - ) : null} - {m.label} - - ); - })} + { + setMenuAnchor(null); + onKebabAction(itemId, value); + }} + />
); @@ -488,6 +568,7 @@ const TreeViewPro = ({ sliderStep = 1, sliderColor, kebabMenuItems, + kebabMenuItemsById, // Dash setProps, }) => { @@ -618,6 +699,7 @@ const TreeViewPro = ({ sliderColor: resolvedSliderColor, onSliderChange: handleSliderChange, kebabMenuItems: kebabMenuItems || [], + kebabMenuItemsById: kebabMenuItemsById || null, onKebabAction: handleKebabAction, }), [ @@ -628,6 +710,7 @@ const TreeViewPro = ({ sliderStep, resolvedSliderColor, kebabMenuItems, + kebabMenuItemsById, handleSliderChange, handleKebabAction, ] @@ -945,15 +1028,30 @@ TreeViewPro.propTypes = { */ sliderColor: PropTypes.string, - /** Kebab menu options: [{label, value, icon?}]. `value` is sent back as `action`. */ + /** + * Kebab menu entries. Each entry is one of: + * a LEAF {label, value, icon?} — picking it fires `kebabAction` with + * `action` = its `value`; a DIVIDER {divider: true}; or a SUBMENU + * {label, icon?, children: [entries]} that opens on hover/click + * (nesting is recursive). + */ kebabMenuItems: PropTypes.arrayOf( - PropTypes.exact({ - label: PropTypes.string.isRequired, - value: PropTypes.string.isRequired, + PropTypes.shape({ + label: PropTypes.string, + value: PropTypes.string, icon: PropTypes.string, + divider: PropTypes.bool, + children: PropTypes.array, }) ), + /** + * Per-node kebab menus: {itemId: [entries]} (same entry shape as + * `kebabMenuItems`, submenus/dividers included). A node listed here gets + * its own menu; all other nodes fall back to `kebabMenuItems`. + */ + kebabMenuItemsById: PropTypes.objectOf(PropTypes.array), + /** Output: fires once on each commit (mouse-up) of a slider drag. {itemId, value, event_timestamp} */ sliderChange: PropTypes.exact({ itemId: PropTypes.string, From c1bc464463d89a009ed993ada44c4f3fd29fc76f Mon Sep 17 00:00:00 2001 From: pip-install-python Date: Sat, 1 Aug 2026 19:32:30 -0500 Subject: [PATCH 03/22] Phase 0: route-parity gate, requirements collapse, stray artifact fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scripts/route_parity.py — the migration's proof gate: fingerprints all 40 routes (component tree by type, ids, dash_mui_charts mount counts), the app shell, the callback census and an HTTP status sweep against a committed baseline (40 routes, 194 mounts, 113 callbacks, all 200). requirements-deploy.txt deleted: it had drifted (no `requests`), so the Docker image could not import app.py while Render, installing requirements.txt, masked it. One requirements file now serves both; Dockerfile gains PYTHONUNBUFFERED=1 so boot diagnostics reach logs. dash_mui_charts/dash_mui_charts (a stray full copy of package.json) removed: build:backends passed the package name to -p/--package-info-filename; the flag now says package-info.json, which also restores the standard full package-info copy the generator writes. Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 19 + Dockerfile | 12 +- dash_mui_charts/dash_mui_charts | 61 -- dash_mui_charts/package-info.json | 61 +- package.json | 2 +- requirements-deploy.txt | 6 - scripts/route_parity.py | 188 +++++ scripts/route_parity_baseline.json | 1247 ++++++++++++++++++++++++++++ 8 files changed, 1523 insertions(+), 73 deletions(-) delete mode 100644 dash_mui_charts/dash_mui_charts delete mode 100644 requirements-deploy.txt create mode 100644 scripts/route_parity.py create mode 100644 scripts/route_parity_baseline.json diff --git a/CHANGELOG.md b/CHANGELOG.md index ae52e96..c661428 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Network-standard pass — Phase 0 (stabilize) + +- **Satellite analytics committed** — `lib/analytics.py` (SPA-aware hit + recorder), `lib/traffic_report.py` (hourly signed rollup + `/healthz`), + `verify_traffic.py` (headless pipeline verification against the hub's own + ingest verifier). All checks green. +- **Route-parity gate** — `scripts/route_parity.py` fingerprints all 40 + routes (component tree, ids, chart-mount counts, callback census, HTTP + sweep) against a committed baseline; every migration phase must keep it + green. +- **Requirements drift fixed** — `requirements-deploy.txt` deleted (it had + lost `requests`, so the Docker image could not import `app.py`); + `requirements.txt` is now the single dependency file for Render and the + Dockerfile alike. Dockerfile gains `PYTHONUNBUFFERED=1`. +- **Stray build artifact removed** — `dash_mui_charts/dash_mui_charts` was a + full copy of `package.json`, created by `build:backends` passing the + package name to `-p/--package-info-filename`; the flag now correctly says + `package-info.json` and the artifact is deleted. + --- ## [1.4.0] - 2026-07-19 diff --git a/Dockerfile b/Dockerfile index 01c68e5..68aeac5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,16 @@ FROM python:3.11-slim +# Block-buffered stdout never reaches platform logs through gunicorn — +# boot diagnostics (traffic reporter state, license warnings) must flush. +ENV PYTHONUNBUFFERED=1 + WORKDIR /app -# Install deploy dependencies first (cached layer) -COPY requirements-deploy.txt . -RUN pip install --no-cache-dir -r requirements-deploy.txt +# ONE requirements file, shared with Render (render.yaml buildCommand). +# A separate deploy file drifted once — it lost `requests` and the image +# could not import app.py while Render, reading requirements.txt, masked it. +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt # Copy project and install dash-mui-charts from local source COPY . . diff --git a/dash_mui_charts/dash_mui_charts b/dash_mui_charts/dash_mui_charts deleted file mode 100644 index 3da794f..0000000 --- a/dash_mui_charts/dash_mui_charts +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "dash_mui_charts", - "version": "1.3.0", - "description": "Dash components wrapping MUI X Charts for creating interactive data visualizations", - "main": "build/index.js", - "repository": { - "type": "git", - "url": "git://github.com/pip-install-python/dash-mui-charts.git" - }, - "bugs": { - "url": "https://github.com/pip-install-python/dash-mui-charts/issues" - }, - "homepage": "https://github.com/pip-install-python/dash-mui-charts", - "scripts": { - "start": "webpack serve --config webpack.serve.config.js --open", - "build:js": "webpack --mode production", - "build:backends": "dash-generate-components ./src/lib/components dash_mui_charts -p dash_mui_charts --ignore \\.test\\.", - "build": "npm run build:js && npm run build:backends", - "validate-init": "python _validate_init.py" - }, - "author": "Pip Install Python", - "license": "MIT", - "dependencies": { - "@emotion/react": "^11.14.0", - "@emotion/styled": "^11.14.1", - "@mui/icons-material": "^6.5.0", - "@mui/material": "^6.5.0", - "@mui/x-charts": "^8.24.0", - "@mui/x-charts-pro": "^8.24.0", - "@mui/x-date-pickers": "8.24.0", - "@mui/x-license": "^7.24.0", - "@mui/x-tree-view": "^8.27.2", - "@mui/x-tree-view-pro": "^8.27.2", - "dayjs": "1.11.13", - "ramda": "^0.26.1" - }, - "devDependencies": { - "@babel/core": "^7.22.10", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", - "@babel/preset-env": "^7.22.10", - "@babel/preset-react": "^7.22.5", - "@plotly/webpack-dash-dynamic-import": "^1.2.0", - "babel-loader": "^9.1.3", - "css-loader": "^6.8.1", - "prop-types": "^15.8.1", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "style-loader": "^3.3.3", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.15.1" - }, - "peerDependencies": { - "react": ">=17.0.0", - "react-dom": ">=17.0.0" - }, - "engines": { - "node": ">=14.0.0", - "npm": ">=6.1.0" - } -} diff --git a/dash_mui_charts/package-info.json b/dash_mui_charts/package-info.json index 7c9fd2f..1482401 100644 --- a/dash_mui_charts/package-info.json +++ b/dash_mui_charts/package-info.json @@ -1,4 +1,61 @@ { - "name": "dash_mui_charts", - "version": "1.4.0" + "name": "dash_mui_charts", + "version": "1.4.0", + "description": "Dash components wrapping MUI X Charts for creating interactive data visualizations", + "main": "build/index.js", + "repository": { + "type": "git", + "url": "git://github.com/pip-install-python/dash-mui-charts.git" + }, + "bugs": { + "url": "https://github.com/pip-install-python/dash-mui-charts/issues" + }, + "homepage": "https://github.com/pip-install-python/dash-mui-charts", + "scripts": { + "start": "webpack serve --config webpack.serve.config.js --open", + "build:js": "webpack --mode production", + "build:backends": "dash-generate-components ./src/lib/components dash_mui_charts -p package-info.json --ignore \\.test\\.", + "build": "npm run build:js && npm run build:backends", + "validate-init": "python _validate_init.py" + }, + "author": "Pip Install Python", + "license": "MIT", + "dependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", + "@mui/icons-material": "^6.5.0", + "@mui/material": "^6.5.0", + "@mui/x-charts": "^8.24.0", + "@mui/x-charts-pro": "^8.24.0", + "@mui/x-date-pickers": "8.24.0", + "@mui/x-license": "^7.24.0", + "@mui/x-tree-view": "^8.27.2", + "@mui/x-tree-view-pro": "^8.27.2", + "dayjs": "1.11.13", + "ramda": "^0.26.1" + }, + "devDependencies": { + "@babel/core": "^7.22.10", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/preset-env": "^7.22.10", + "@babel/preset-react": "^7.22.5", + "@plotly/webpack-dash-dynamic-import": "^1.2.0", + "babel-loader": "^9.1.3", + "css-loader": "^6.8.1", + "prop-types": "^15.8.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "style-loader": "^3.3.3", + "webpack": "^5.88.2", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1" + }, + "peerDependencies": { + "react": ">=17.0.0", + "react-dom": ">=17.0.0" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6.1.0" + } } diff --git a/package.json b/package.json index 03ecbf1..1482401 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "scripts": { "start": "webpack serve --config webpack.serve.config.js --open", "build:js": "webpack --mode production", - "build:backends": "dash-generate-components ./src/lib/components dash_mui_charts -p dash_mui_charts --ignore \\.test\\.", + "build:backends": "dash-generate-components ./src/lib/components dash_mui_charts -p package-info.json --ignore \\.test\\.", "build": "npm run build:js && npm run build:backends", "validate-init": "python _validate_init.py" }, diff --git a/requirements-deploy.txt b/requirements-deploy.txt deleted file mode 100644 index a59039c..0000000 --- a/requirements-deploy.txt +++ /dev/null @@ -1,6 +0,0 @@ -dash>=3.0.0 -dash-mantine-components>=2.6.0 -dash-iconify>=0.1.2 -dash-widgetbot>=0.1.0 -python-dotenv>=1.0.0 -gunicorn>=21.2.0,<23.0.0 diff --git a/scripts/route_parity.py b/scripts/route_parity.py new file mode 100644 index 0000000..70fec92 --- /dev/null +++ b/scripts/route_parity.py @@ -0,0 +1,188 @@ +"""Route-parity gate — proof that a migration phase changed no page. + +The network-standard pass (kickoff: pip-docs+/kickoff/KICKOFF-muicharts.md) +is allowed to touch identity, analytics, CI and deploy plumbing, but every +one of the 40 doc routes must render exactly as before. This script is that +proof: it fingerprints each route's fully-constructed layout tree plus the +app shell, and compares against a committed baseline. + + python scripts/route_parity.py --write-baseline # record current truth + python scripts/route_parity.py # gate: green or exit 1 + +What a fingerprint is (and deliberately is not): + +- per route: component counts by "namespace.Type", the sorted set of + component ids, and the count of dash_mui_charts.* instances — the + component-mount marker proving the charts actually sit in the tree. + Prop VALUES stay out (pages may generate demo data), and page TITLES / + descriptions stay out (Phase 1 changes register_page metadata on + purpose; the layout must not change with it). +- app-wide: the route set, the app-shell fingerprint (nav tree, url store, + ad slot), the registered-callback count, and an HTTP status sweep of + every route + /healthz through the Flask test client. + +Needs MUI_PRO_API_KEY in the environment or .env (17 pages hard-require it +at import); analytics writes are redirected to a temp dir so a gate run +never lands in the real hit log. +""" +from __future__ import annotations + +import argparse +import json +import os +import sys +import tempfile +from pathlib import Path + +REPO = Path(__file__).resolve().parent.parent +BASELINE = Path(__file__).resolve().parent / "route_parity_baseline.json" + +sys.path.insert(0, str(REPO)) + +# Keep gate runs out of the real analytics log, and the reporter asleep. +os.environ["ANALYTICS_DIR"] = tempfile.mkdtemp(prefix="route-parity-") +os.environ.pop("CROSS_APP_WEBHOOK_SECRET", None) + + +def component_iter(node): + """Depth-first over every Dash component reachable from ``node`` — + through children AND through any component-valued prop (dmc uses + label=/leftSection=/etc. freely).""" + from dash.development.base_component import Component + + stack = [node] + while stack: + cur = stack.pop() + if isinstance(cur, Component): + yield cur + for name in cur._prop_names: + val = getattr(cur, name, None) + if val is not None and name != "id": + stack.append(val) + elif isinstance(cur, (list, tuple)): + stack.extend(cur) + elif isinstance(cur, dict): + stack.extend(cur.values()) + + +def fingerprint(layout) -> dict: + counts: dict[str, int] = {} + ids: list[str] = [] + mui_mounts = 0 + for comp in component_iter(layout): + key = f"{comp._namespace}.{comp._type}" + counts[key] = counts.get(key, 0) + 1 + if comp._namespace == "dash_mui_charts": + mui_mounts += 1 + cid = getattr(comp, "id", None) + if cid is not None: + ids.append(cid if isinstance(cid, str) + else json.dumps(cid, sort_keys=True)) + return { + "components": dict(sorted(counts.items())), + "ids": sorted(ids), + "mui_mounts": mui_mounts, + } + + +def measure() -> dict: + import dash + + import app as site # noqa: F401 — imports all pages, builds the shell + + routes = {} + for entry in dash.page_registry.values(): + layout = entry.get("layout") + if layout is None: + layout = getattr(sys.modules[entry["module"]], "layout", None) + if callable(layout): + layout = layout() + routes[entry["path"]] = fingerprint(layout) + + client = site.server.test_client() + statuses = {} + for path in routes: + statuses[path] = client.get(path).status_code + hz = client.get("/healthz") + plumbing = { + "/healthz": [hz.status_code, bool((hz.get_json() or {}).get("ok"))], + "/_dash-layout": client.get("/_dash-layout").status_code, + "/_dash-dependencies": client.get("/_dash-dependencies").status_code, + } + + return { + "routes": routes, + "route_statuses": statuses, + "plumbing": plumbing, + "shell": fingerprint(site.app.layout), + "callback_count": len(site.app.callback_map), + "total_mui_mounts": sum(r["mui_mounts"] for r in routes.values()), + } + + +def diff(baseline: dict, current: dict) -> list[str]: + problems = [] + base_routes, cur_routes = baseline["routes"], current["routes"] + for path in sorted(set(base_routes) - set(cur_routes)): + problems.append(f"route GONE: {path}") + for path in sorted(set(cur_routes) - set(base_routes)): + problems.append(f"route ADDED (update baseline deliberately): {path}") + for path in sorted(set(base_routes) & set(cur_routes)): + b, c = base_routes[path], cur_routes[path] + if b["components"] != c["components"]: + gone = {k: v for k, v in b["components"].items() + if c["components"].get(k) != v} + new = {k: v for k, v in c["components"].items() + if b["components"].get(k) != v} + problems.append(f"{path}: component tree changed " + f"(was {gone} → now {new})") + if b["ids"] != c["ids"]: + problems.append( + f"{path}: ids changed " + f"(-{sorted(set(b['ids']) - set(c['ids']))} " + f"+{sorted(set(c['ids']) - set(b['ids']))})") + if b["mui_mounts"] != c["mui_mounts"]: + problems.append(f"{path}: mui mounts {b['mui_mounts']} → " + f"{c['mui_mounts']}") + for surface in ("route_statuses", "plumbing", "shell", "callback_count", + "total_mui_mounts"): + if baseline[surface] != current[surface]: + problems.append(f"{surface} changed: {baseline[surface]!r} → " + f"{current[surface]!r}") + return problems + + +def main() -> int: + ap = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + ap.add_argument("--write-baseline", action="store_true", + help="record the current state as the committed truth") + args = ap.parse_args() + + current = measure() + n = len(current["routes"]) + print(f"measured {n} routes, {current['total_mui_mounts']} " + f"dash_mui_charts mounts, {current['callback_count']} callbacks") + + if args.write_baseline: + BASELINE.write_text(json.dumps(current, indent=1, sort_keys=True) + + "\n", encoding="utf-8") + print(f"baseline written → {BASELINE.relative_to(REPO)}") + return 0 + + if not BASELINE.exists(): + print("no baseline — run with --write-baseline first", file=sys.stderr) + return 2 + baseline = json.loads(BASELINE.read_text(encoding="utf-8")) + problems = diff(baseline, current) + if problems: + print(f"\nROUTE PARITY BROKEN — {len(problems)} problem(s):", + file=sys.stderr) + for p in problems: + print(f" ✗ {p}", file=sys.stderr) + return 1 + print(f"route parity GREEN — all {n} routes identical to baseline") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/route_parity_baseline.json b/scripts/route_parity_baseline.json new file mode 100644 index 0000000..8e2cbb4 --- /dev/null +++ b/scripts/route_parity_baseline.json @@ -0,0 +1,1247 @@ +{ + "callback_count": 113, + "plumbing": { + "/_dash-dependencies": 200, + "/_dash-layout": 200, + "/healthz": [ + 200, + true + ] + }, + "route_statuses": { + "/": 200, + "/barchart-basic": 200, + "/barchart-dataset": 200, + "/barchart-interaction": 200, + "/barchart-pro": 200, + "/barchart-reference": 200, + "/barchart-stacking": 200, + "/candlestick": 200, + "/changelog": 200, + "/composite": 200, + "/composite-render-bp": 200, + "/composite-v120": 200, + "/crosshair": 200, + "/heatmap": 200, + "/heatmap-props": 200, + "/highlighting-sync": 200, + "/linechart-basic": 200, + "/linechart-brush": 200, + "/linechart-highlighting": 200, + "/linechart-pro": 200, + "/linechart-referencelines": 200, + "/linechart-tick-hover": 200, + "/linechart-zoom-preview": 200, + "/live-trading": 200, + "/pie": 200, + "/pie-props": 200, + "/scatter": 200, + "/sparkline": 200, + "/sparkline-style": 200, + "/sparkline-style-advanced": 200, + "/time-clock": 200, + "/time-clock-lab": 200, + "/tree-basic": 200, + "/tree-disabled": 200, + "/tree-editing": 200, + "/tree-expansion": 200, + "/tree-icons": 200, + "/tree-pro": 200, + "/tree-selection": 200, + "/tree-simple": 200 + }, + "routes": { + "/": { + "components": { + "dash_core_components.Link": 9, + "dash_html_components.Div": 1, + "dash_mantine_components.Badge": 43, + "dash_mantine_components.CodeHighlight": 4, + "dash_mantine_components.Group": 19, + "dash_mantine_components.Paper": 12, + "dash_mantine_components.SimpleGrid": 2, + "dash_mantine_components.Stack": 1, + "dash_mantine_components.Text": 21, + "dash_mantine_components.Title": 8 + }, + "ids": [], + "mui_mounts": 0 + }, + "/barchart-basic": { + "components": { + "dash_html_components.Div": 7, + "dash_html_components.H2": 1, + "dash_html_components.H4": 6, + "dash_html_components.P": 7, + "dash_mui_charts.BarChart": 6 + }, + "ids": [ + "bar-basic-horizontal", + "bar-basic-labels", + "bar-basic-multi", + "bar-basic-negative", + "bar-basic-rounded", + "bar-basic-stacked" + ], + "mui_mounts": 6 + }, + "/barchart-dataset": { + "components": { + "dash_html_components.Div": 4, + "dash_html_components.H2": 1, + "dash_html_components.H4": 3, + "dash_html_components.P": 4, + "dash_mui_charts.BarChart": 3 + }, + "ids": [ + "bar-ds-gaps", + "bar-ds-stacked", + "bar-ds-temps" + ], + "mui_mounts": 3 + }, + "/barchart-interaction": { + "components": { + "dash_html_components.Div": 13, + "dash_html_components.H2": 1, + "dash_html_components.H4": 5, + "dash_html_components.P": 14, + "dash_html_components.Pre": 3, + "dash_mui_charts.BarChart": 8 + }, + "ids": [ + "bar-int-ax-band", + "bar-int-ax-line", + "bar-int-ax-none", + "bar-int-axis-click", + "bar-int-axis-click-out", + "bar-int-click", + "bar-int-click-out", + "bar-int-highlight", + "bar-int-highlight-out", + "bar-int-tt-axis", + "bar-int-tt-item" + ], + "mui_mounts": 8 + }, + "/barchart-pro": { + "components": { + "dash_html_components.Div": 5, + "dash_html_components.H2": 1, + "dash_html_components.H4": 3, + "dash_html_components.P": 5, + "dash_mui_charts.BarChart": 3 + }, + "ids": [ + "bar-pro-slider", + "bar-pro-stacked-zoom", + "bar-pro-toolbar" + ], + "mui_mounts": 3 + }, + "/barchart-reference": { + "components": { + "dash_html_components.Div": 7, + "dash_html_components.H2": 1, + "dash_html_components.H4": 6, + "dash_html_components.P": 7, + "dash_mui_charts.BarChart": 6 + }, + "ids": [ + "bar-ref-colors", + "bar-ref-multi", + "bar-ref-noanim", + "bar-ref-nolegend", + "bar-ref-target", + "bar-ref-vertical" + ], + "mui_mounts": 6 + }, + "/barchart-stacking": { + "components": { + "dash_html_components.Div": 6, + "dash_html_components.H2": 1, + "dash_html_components.H4": 5, + "dash_html_components.P": 6, + "dash_mui_charts.BarChart": 5 + }, + "ids": [ + "bar-stack-diverging", + "bar-stack-expand", + "bar-stack-groups", + "bar-stack-horizontal", + "bar-stack-normal" + ], + "mui_mounts": 5 + }, + "/candlestick": { + "components": { + "dash_html_components.Div": 8, + "dash_html_components.H2": 1, + "dash_html_components.H4": 7, + "dash_html_components.P": 9, + "dash_html_components.Pre": 1, + "dash_mui_charts.CandlestickChart": 7 + }, + "ids": [ + "candle-basic", + "candle-click", + "candle-click-out", + "candle-dataset", + "candle-no-tooltip", + "candle-refs", + "candle-styled", + "candle-volume" + ], + "mui_mounts": 7 + }, + "/changelog": { + "components": { + "dash_core_components.Markdown": 1, + "dash_html_components.Div": 1, + "dash_mantine_components.Paper": 1, + "dash_mantine_components.Text": 1, + "dash_mantine_components.Title": 1 + }, + "ids": [], + "mui_mounts": 0 + }, + "/composite": { + "components": { + "dash_html_components.Details": 4, + "dash_html_components.Div": 9, + "dash_html_components.H1": 1, + "dash_html_components.H2": 4, + "dash_html_components.H4": 1, + "dash_html_components.Hr": 3, + "dash_html_components.Label": 2, + "dash_html_components.P": 5, + "dash_html_components.Pre": 1, + "dash_html_components.Span": 2, + "dash_html_components.Summary": 4, + "dash_mantine_components.CodeHighlight": 4, + "dash_mantine_components.Slider": 2, + "dash_mui_charts.CompositeChart": 4 + }, + "ids": [ + "anomaly-marker-slider", + "composite-multiaxis", + "composite-reference", + "composite-trend", + "composite-zoom", + "composite-zoom-output", + "preview-marker-slider" + ], + "mui_mounts": 4 + }, + "/composite-render-bp": { + "components": { + "dash_core_components.Store": 1, + "dash_html_components.Div": 5, + "dash_html_components.H1": 1, + "dash_html_components.Hr": 1, + "dash_html_components.Img": 1, + "dash_html_components.Li": 4, + "dash_html_components.P": 1, + "dash_html_components.Span": 1, + "dash_html_components.Ul": 1, + "dash_mantine_components.Box": 1, + "dash_mantine_components.LoadingOverlay": 1, + "dash_mantine_components.Stack": 1, + "dash_mantine_components.Text": 1 + }, + "ids": [ + "bp-deferred-content", + "bp-loading-overlay", + "bp-page-loaded" + ], + "mui_mounts": 0 + }, + "/composite-v120": { + "components": { + "dash_html_components.Details": 3, + "dash_html_components.Div": 14, + "dash_html_components.H1": 1, + "dash_html_components.H2": 4, + "dash_html_components.H4": 5, + "dash_html_components.Hr": 3, + "dash_html_components.P": 5, + "dash_html_components.Pre": 2, + "dash_html_components.Span": 1, + "dash_html_components.Summary": 3, + "dash_mantine_components.CodeHighlight": 3, + "dash_mantine_components.Switch": 2, + "dash_mui_charts.CompositeChart": 7 + }, + "ids": [ + "v120-axis-output", + "v120-axis-tooltip", + "v120-compact-switch", + "v120-highlighted-axis", + "v120-stack-container", + "v120-stack-humidity", + "v120-stack-pressure", + "v120-stack-temp", + "v120-sync-humidity", + "v120-sync-output", + "v120-sync-switch", + "v120-sync-temp" + ], + "mui_mounts": 7 + }, + "/crosshair": { + "components": { + "dash_core_components.Store": 2, + "dash_html_components.Details": 1, + "dash_html_components.Div": 24, + "dash_html_components.H1": 1, + "dash_html_components.H2": 3, + "dash_html_components.Hr": 2, + "dash_html_components.P": 4, + "dash_html_components.Span": 8, + "dash_html_components.Summary": 1, + "dash_iconify.DashIconify": 2, + "dash_mantine_components.Button": 2, + "dash_mantine_components.CodeHighlight": 1, + "dash_mui_charts.CompositeChart": 5 + }, + "ids": [ + "cross-basic", + "cross-coord-display", + "sec2-alert-status", + "sec2-chart", + "sec2-clear", + "sec2-count", + "sec2-store", + "sec2-tags", + "sec3-clear", + "sec3-coord", + "sec3-count", + "sec3-humidity", + "sec3-pressure", + "sec3-store", + "sec3-tags-humidity", + "sec3-tags-pressure", + "sec3-tags-temp", + "sec3-temp" + ], + "mui_mounts": 5 + }, + "/heatmap": { + "components": { + "dash_html_components.Details": 7, + "dash_html_components.Div": 12, + "dash_html_components.H1": 1, + "dash_html_components.H2": 8, + "dash_html_components.H4": 1, + "dash_html_components.Hr": 7, + "dash_html_components.P": 9, + "dash_html_components.Pre": 4, + "dash_html_components.Span": 6, + "dash_html_components.Summary": 7, + "dash_html_components.Table": 1, + "dash_html_components.Tbody": 1, + "dash_html_components.Td": 9, + "dash_html_components.Th": 3, + "dash_html_components.Thead": 1, + "dash_html_components.Tr": 4, + "dash_mantine_components.CodeHighlight": 7, + "dash_mui_charts.Heatmap": 7 + }, + "ids": [ + "basic-heatmap", + "correlation-heatmap", + "custom-cell-heatmap", + "heatmap-click-output", + "interactive-heatmap", + "piecewise-heatmap", + "rounded-heatmap", + "temperature-heatmap" + ], + "mui_mounts": 7 + }, + "/heatmap-props": { + "components": { + "dash_core_components.Clipboard": 1, + "dash_html_components.Div": 6, + "dash_html_components.H1": 1, + "dash_html_components.P": 1, + "dash_html_components.Pre": 1, + "dash_mantine_components.Button": 1, + "dash_mantine_components.ColorInput": 3, + "dash_mantine_components.Group": 2, + "dash_mantine_components.NumberInput": 6, + "dash_mantine_components.Paper": 9, + "dash_mantine_components.SegmentedControl": 2, + "dash_mantine_components.SimpleGrid": 3, + "dash_mantine_components.Slider": 5, + "dash_mantine_components.Stack": 5, + "dash_mantine_components.Switch": 3, + "dash_mantine_components.Text": 16 + }, + "ids": [ + "ctrl-border-radius", + "ctrl-cell-style", + "ctrl-font-size", + "ctrl-gap", + "ctrl-height", + "ctrl-hide-legend", + "ctrl-highlight", + "ctrl-margin-bottom", + "ctrl-margin-left", + "ctrl-margin-right", + "ctrl-margin-top", + "ctrl-max-color", + "ctrl-max-value", + "ctrl-min-color", + "ctrl-min-value", + "ctrl-scale-type", + "ctrl-show-values", + "ctrl-text-color", + "ctrl-width", + "generated-heatmap-code", + "heatmap-click-info", + "heatmap-hover-info", + "heatmap-preview", + "heatmap-preview-container", + "reset-heatmap-btn" + ], + "mui_mounts": 0 + }, + "/highlighting-sync": { + "components": { + "dash_html_components.Details": 2, + "dash_html_components.Div": 21, + "dash_html_components.H1": 1, + "dash_html_components.H2": 3, + "dash_html_components.H4": 10, + "dash_html_components.Hr": 2, + "dash_html_components.P": 7, + "dash_html_components.Pre": 2, + "dash_html_components.Summary": 2, + "dash_mantine_components.CodeHighlight": 2, + "dash_mui_charts.LineChart": 3, + "dash_mui_charts.PieChart": 1 + }, + "ids": [ + "chart-wrapper-a", + "chart-wrapper-b", + "custom-tooltip-a", + "custom-tooltip-b", + "profit-display", + "sync-axis-output", + "sync-highlight-output", + "sync-line-a", + "sync-line-b", + "sync-line-chart", + "sync-pie-chart" + ], + "mui_mounts": 4 + }, + "/linechart-basic": { + "components": { + "dash_html_components.Details": 6, + "dash_html_components.Div": 7, + "dash_html_components.H1": 1, + "dash_html_components.H2": 6, + "dash_html_components.H4": 1, + "dash_html_components.Hr": 5, + "dash_html_components.P": 7, + "dash_html_components.Pre": 1, + "dash_html_components.Summary": 6, + "dash_mantine_components.CodeHighlight": 6, + "dash_mui_charts.LineChart": 6 + }, + "ids": [ + "area-linechart", + "basic-linechart", + "biaxial-linechart", + "click-output", + "custom-linechart", + "interactive-linechart", + "stacked-area-linechart" + ], + "mui_mounts": 6 + }, + "/linechart-brush": { + "components": { + "dash_html_components.Button": 3, + "dash_html_components.Details": 3, + "dash_html_components.Div": 10, + "dash_html_components.H1": 1, + "dash_html_components.H2": 4, + "dash_html_components.H4": 3, + "dash_html_components.Hr": 3, + "dash_html_components.Label": 1, + "dash_html_components.P": 5, + "dash_html_components.Span": 1, + "dash_html_components.Summary": 3, + "dash_html_components.Table": 3, + "dash_html_components.Tbody": 3, + "dash_html_components.Td": 24, + "dash_html_components.Th": 9, + "dash_html_components.Thead": 3, + "dash_html_components.Tr": 11, + "dash_mantine_components.CodeHighlight": 3, + "dash_mui_charts.LineChart": 3 + }, + "ids": [ + "axis-highlight-chart", + "brush-toggle-chart", + "brush-values-chart", + "overlay-default-btn", + "overlay-none-btn", + "overlay-values-btn" + ], + "mui_mounts": 3 + }, + "/linechart-highlighting": { + "components": { + "dash_html_components.Button": 6, + "dash_html_components.Div": 7, + "dash_html_components.H2": 1, + "dash_html_components.H4": 4, + "dash_html_components.P": 8, + "dash_html_components.Pre": 2, + "dash_mantine_components.CodeHighlight": 3, + "dash_mantine_components.Paper": 5, + "dash_mantine_components.SimpleGrid": 2, + "dash_mantine_components.Text": 17, + "dash_mui_charts.LineChart": 3 + }, + "ids": [ + "axis-highlight-chart", + "axis-highlight-output", + "clear-axis-btn", + "clear-highlight-btn", + "highlight-jan-btn", + "highlight-jun-btn", + "highlight-mar-axis-btn", + "highlight-scope-chart", + "highlight-sep-axis-btn", + "item-highlight-chart", + "item-highlight-output" + ], + "mui_mounts": 3 + }, + "/linechart-pro": { + "components": { + "dash_html_components.Button": 2, + "dash_html_components.Details": 2, + "dash_html_components.Div": 8, + "dash_html_components.H1": 1, + "dash_html_components.H2": 4, + "dash_html_components.H4": 3, + "dash_html_components.Hr": 3, + "dash_html_components.Li": 3, + "dash_html_components.P": 6, + "dash_html_components.Pre": 2, + "dash_html_components.Span": 1, + "dash_html_components.Strong": 3, + "dash_html_components.Summary": 2, + "dash_html_components.Table": 1, + "dash_html_components.Tbody": 1, + "dash_html_components.Td": 18, + "dash_html_components.Th": 3, + "dash_html_components.Thead": 1, + "dash_html_components.Tr": 7, + "dash_html_components.Ul": 1, + "dash_mantine_components.CodeHighlight": 2, + "dash_mui_charts.LineChart": 4 + }, + "ids": [ + "biaxial-zoom-chart", + "controlled-zoom-chart", + "controlled-zoom-output", + "reset-zoom-btn", + "zoom-config-chart", + "zoom-decade-btn", + "zoom-slider-chart", + "zoom-slider-output" + ], + "mui_mounts": 4 + }, + "/linechart-referencelines": { + "components": { + "dash_core_components.Input": 1, + "dash_html_components.Button": 2, + "dash_html_components.Details": 7, + "dash_html_components.Div": 12, + "dash_html_components.H1": 1, + "dash_html_components.H2": 9, + "dash_html_components.H4": 1, + "dash_html_components.Hr": 8, + "dash_html_components.Label": 1, + "dash_html_components.P": 10, + "dash_html_components.Summary": 7, + "dash_html_components.Table": 2, + "dash_html_components.Tbody": 2, + "dash_html_components.Td": 41, + "dash_html_components.Th": 7, + "dash_html_components.Thead": 2, + "dash_html_components.Tr": 13, + "dash_mantine_components.CodeHighlight": 7, + "dash_mui_charts.LineChart": 8 + }, + "ids": [ + "combined-ref-chart", + "dynamic-ref-chart", + "hide-avg-btn", + "horizontal-ref-chart", + "label-align-chart", + "line-style-chart", + "multiaxis-ref-chart", + "show-avg-btn", + "spacing-chart", + "threshold-input", + "vertical-ref-chart" + ], + "mui_mounts": 8 + }, + "/linechart-tick-hover": { + "components": { + "dash_html_components.Details": 8, + "dash_html_components.Div": 15, + "dash_html_components.H1": 1, + "dash_html_components.H2": 7, + "dash_html_components.H3": 3, + "dash_html_components.H4": 2, + "dash_html_components.Hr": 6, + "dash_html_components.P": 10, + "dash_html_components.Pre": 1, + "dash_html_components.Summary": 8, + "dash_html_components.Table": 2, + "dash_html_components.Tbody": 2, + "dash_html_components.Td": 55, + "dash_html_components.Th": 5, + "dash_html_components.Thead": 2, + "dash_html_components.Tr": 23, + "dash_mantine_components.CodeHighlight": 8, + "dash_mui_charts.LineChart": 8 + }, + "ids": [ + "tick-hover-click-output", + "tick-hover-config", + "tick-hover-interactive", + "tick-hover-quarter", + "tick-hover-week", + "tick-hover-year-linear", + "tick-hover-year-point", + "tick-hover-zoom-pro", + "tick-hover-zoom-slider" + ], + "mui_mounts": 8 + }, + "/linechart-zoom-preview": { + "components": { + "dash_html_components.Details": 2, + "dash_html_components.Div": 8, + "dash_html_components.H1": 1, + "dash_html_components.H2": 4, + "dash_html_components.H4": 3, + "dash_html_components.Hr": 3, + "dash_html_components.P": 6, + "dash_html_components.Pre": 1, + "dash_html_components.Span": 2, + "dash_html_components.Summary": 2, + "dash_html_components.Table": 2, + "dash_html_components.Tbody": 2, + "dash_html_components.Td": 72, + "dash_html_components.Th": 6, + "dash_html_components.Thead": 2, + "dash_html_components.Tr": 26, + "dash_mantine_components.CodeHighlight": 2, + "dash_mui_charts.LineChart": 4 + }, + "ids": [ + "axis-config-chart", + "zoom-interaction-chart", + "zoom-preview-biaxial", + "zoom-preview-chart", + "zoom-preview-output" + ], + "mui_mounts": 4 + }, + "/live-trading": { + "components": { + "dash_html_components.Details": 1, + "dash_html_components.Div": 22, + "dash_html_components.H1": 1, + "dash_html_components.H4": 1, + "dash_html_components.Label": 4, + "dash_html_components.P": 1, + "dash_html_components.Pre": 1, + "dash_html_components.Summary": 1, + "dash_mantine_components.Button": 3, + "dash_mantine_components.CodeHighlight": 1, + "dash_mantine_components.Slider": 4, + "dash_mantine_components.Switch": 3, + "dash_mui_charts.LiveTradingChart": 1 + }, + "ids": [ + "lt-alert-count", + "lt-alert-log", + "lt-chart", + "lt-drift", + "lt-labels-toggle", + "lt-price-display", + "lt-reset-btn", + "lt-slider-toggle", + "lt-speed", + "lt-start-btn", + "lt-status", + "lt-stop-btn", + "lt-tick-display", + "lt-volatility", + "lt-volume-toggle", + "lt-window" + ], + "mui_mounts": 1 + }, + "/pie": { + "components": { + "dash_html_components.Div": 17, + "dash_html_components.H1": 1, + "dash_html_components.H2": 6, + "dash_html_components.H4": 2, + "dash_html_components.P": 7, + "dash_html_components.Pre": 8, + "dash_mui_charts.PieChart": 6 + }, + "ids": [ + "basic-pie", + "donut-pie", + "gauge-pie", + "interactive-pie", + "labeled-pie", + "pie-click-data", + "pie-highlight-data", + "styled-pie" + ], + "mui_mounts": 6 + }, + "/pie-props": { + "components": { + "dash_core_components.Clipboard": 1, + "dash_html_components.Div": 6, + "dash_html_components.H1": 1, + "dash_html_components.P": 1, + "dash_html_components.Pre": 1, + "dash_mantine_components.Button": 1, + "dash_mantine_components.Group": 3, + "dash_mantine_components.NumberInput": 4, + "dash_mantine_components.Paper": 10, + "dash_mantine_components.SegmentedControl": 1, + "dash_mantine_components.Select": 1, + "dash_mantine_components.SimpleGrid": 3, + "dash_mantine_components.Slider": 12, + "dash_mantine_components.Stack": 6, + "dash_mantine_components.Switch": 5, + "dash_mantine_components.Text": 23 + }, + "ids": [ + "pie-click-info", + "pie-ctrl-arc-label", + "pie-ctrl-arc-label-min-angle", + "pie-ctrl-fade-others", + "pie-ctrl-height", + "pie-ctrl-hide-legend", + "pie-ctrl-highlight", + "pie-ctrl-inner-corner-radius", + "pie-ctrl-inner-inner-radius", + "pie-ctrl-inner-outer-radius", + "pie-ctrl-inner-padding-angle", + "pie-ctrl-margin-bottom", + "pie-ctrl-margin-left", + "pie-ctrl-margin-right", + "pie-ctrl-margin-top", + "pie-ctrl-outer-corner-radius", + "pie-ctrl-outer-inner-radius", + "pie-ctrl-outer-outer-radius", + "pie-ctrl-outer-padding-angle", + "pie-ctrl-ring-gap", + "pie-ctrl-show-tooltip", + "pie-ctrl-skip-animation", + "pie-ctrl-width", + "pie-generated-code", + "pie-hover-info", + "pie-preview", + "pie-preview-container", + "pie-reset-btn", + "pie-view-toggle" + ], + "mui_mounts": 0 + }, + "/scatter": { + "components": { + "dash_html_components.Details": 6, + "dash_html_components.Div": 9, + "dash_html_components.H1": 1, + "dash_html_components.H2": 7, + "dash_html_components.H4": 1, + "dash_html_components.Hr": 6, + "dash_html_components.P": 8, + "dash_html_components.Pre": 1, + "dash_html_components.Span": 1, + "dash_html_components.Summary": 6, + "dash_mantine_components.CodeHighlight": 6, + "dash_mui_charts.ScatterChart": 7 + }, + "ids": [ + "scatter-axis-styling", + "scatter-basic", + "scatter-click", + "scatter-click-output", + "scatter-colormap", + "scatter-dataset", + "scatter-log", + "scatter-sizes" + ], + "mui_mounts": 7 + }, + "/sparkline": { + "components": { + "dash_core_components.Dropdown": 1, + "dash_core_components.Store": 1, + "dash_html_components.Details": 8, + "dash_html_components.Div": 50, + "dash_html_components.H1": 1, + "dash_html_components.H2": 9, + "dash_html_components.Hr": 8, + "dash_html_components.Label": 1, + "dash_html_components.P": 10, + "dash_html_components.Pre": 1, + "dash_html_components.Span": 22, + "dash_html_components.Strong": 1, + "dash_html_components.Summary": 8, + "dash_html_components.Table": 1, + "dash_html_components.Tbody": 1, + "dash_html_components.Td": 16, + "dash_html_components.Th": 4, + "dash_html_components.Thead": 1, + "dash_html_components.Tr": 5, + "dash_mantine_components.CodeHighlight": 8, + "dash_mui_charts.SparklineChart": 20 + }, + "ids": [ + "dynamic-metric-label", + "dynamic-metric-value", + "dynamic-sparkline-container", + "interactive-stock-sparkline", + "metric-selector", + "npm-download-count", + "npm-sparkline", + "npm-week-label", + "shared-hover-index", + "stock-hover-output", + "stock-price-display", + "sync-revenue-label", + "sync-revenue-spark", + "sync-revenue-value", + "sync-sessions-label", + "sync-sessions-spark", + "sync-sessions-value", + "sync-users-label", + "sync-users-spark", + "sync-users-value" + ], + "mui_mounts": 20 + }, + "/sparkline-style": { + "components": { + "dash_core_components.Clipboard": 1, + "dash_html_components.Div": 4, + "dash_html_components.H1": 1, + "dash_html_components.P": 1, + "dash_mantine_components.Button": 1, + "dash_mantine_components.Code": 1, + "dash_mantine_components.ColorInput": 2, + "dash_mantine_components.Group": 2, + "dash_mantine_components.NumberInput": 8, + "dash_mantine_components.Paper": 8, + "dash_mantine_components.SegmentedControl": 1, + "dash_mantine_components.Select": 3, + "dash_mantine_components.SimpleGrid": 3, + "dash_mantine_components.Slider": 4, + "dash_mantine_components.Stack": 6, + "dash_mantine_components.Switch": 4, + "dash_mantine_components.Text": 14 + }, + "ids": [ + "axis-highlight-x", + "baseline", + "chart-height", + "chart-width", + "clip-bottom", + "clip-left", + "clip-right", + "clip-top", + "color-background", + "color-line", + "curve-type", + "disable-clipping", + "generated-code", + "highlight-dot-size", + "hover-info", + "margin-bottom", + "margin-left", + "margin-right", + "margin-top", + "plot-type", + "preview-container", + "reset-button", + "show-area", + "show-highlight", + "show-tooltip", + "sparkline-preview", + "stroke-width" + ], + "mui_mounts": 0 + }, + "/sparkline-style-advanced": { + "components": { + "dash_html_components.Div": 14, + "dash_html_components.H1": 1, + "dash_html_components.P": 2, + "dash_html_components.Span": 2, + "dash_mui_charts.SparklineChart": 1 + }, + "ids": [ + "change-display", + "glass-sparkline", + "hover-index-display", + "hover-instruction", + "hover-value-display", + "sparkline-container" + ], + "mui_mounts": 1 + }, + "/time-clock": { + "components": { + "dash_mantine_components.Badge": 1, + "dash_mantine_components.Button": 3, + "dash_mantine_components.Code": 2, + "dash_mantine_components.Container": 1, + "dash_mantine_components.Group": 6, + "dash_mantine_components.Paper": 11, + "dash_mantine_components.Stack": 16, + "dash_mantine_components.Text": 16, + "dash_mantine_components.Title": 6, + "dash_mui_charts.TimeClock": 11 + }, + "ids": [ + "tc-ampm-default", + "tc-ampm-off", + "tc-ampm-on", + "tc-basic", + "tc-controlled", + "tc-controlled-out", + "tc-disabled", + "tc-readonly", + "tc-set-0900", + "tc-set-1430", + "tc-set-1845", + "tc-uncontrolled", + "tc-views-h", + "tc-views-hms", + "tc-views-ms", + "tc-views-out" + ], + "mui_mounts": 11 + }, + "/time-clock-lab": { + "components": { + "dash_core_components.Interval": 1, + "dash_core_components.Store": 1, + "dash_html_components.Div": 1, + "dash_iconify.DashIconify": 34, + "dash_mantine_components.Accordion": 6, + "dash_mantine_components.AccordionControl": 6, + "dash_mantine_components.AccordionItem": 6, + "dash_mantine_components.AccordionPanel": 6, + "dash_mantine_components.Badge": 2, + "dash_mantine_components.Button": 8, + "dash_mantine_components.Card": 7, + "dash_mantine_components.Code": 4, + "dash_mantine_components.CodeHighlightTabs": 7, + "dash_mantine_components.ColorInput": 2, + "dash_mantine_components.ColorPicker": 1, + "dash_mantine_components.Container": 1, + "dash_mantine_components.DateTimePicker": 1, + "dash_mantine_components.Divider": 7, + "dash_mantine_components.Group": 19, + "dash_mantine_components.Paper": 6, + "dash_mantine_components.Stack": 8, + "dash_mantine_components.Text": 12, + "dash_mantine_components.ThemeIcon": 7, + "dash_mantine_components.TimeGrid": 1, + "dash_mantine_components.TimeInput": 1, + "dash_mantine_components.TimePicker": 1, + "dash_mantine_components.Title": 10, + "dash_mui_charts.TimeClock": 7 + }, + "ids": [ + "lab-color-clock", + "lab-color-face", + "lab-color-hand", + "lab-color-num", + "lab-color-reset", + "lab-dtp", + "lab-dtp-clock", + "lab-dtp-out", + "lab-glass-clock", + "lab-glass-readout", + "lab-sw-clock", + "lab-sw-interval", + "lab-sw-readout", + "lab-sw-restart", + "lab-sw-start", + "lab-sw-stop", + "lab-sw-store", + "lab-sw-unit", + "lab-tg", + "lab-tg-clock", + "lab-tg-out", + "lab-ti-0900", + "lab-ti-1730", + "lab-ti-clock", + "lab-ti-input", + "lab-ti-now", + "lab-ti-out", + "lab-ti-reset", + "lab-tp-clock", + "lab-tp-input", + "lab-tp-out" + ], + "mui_mounts": 7 + }, + "/tree-basic": { + "components": { + "dash_html_components.Div": 6, + "dash_html_components.H2": 1, + "dash_html_components.H3": 5, + "dash_html_components.P": 8, + "dash_html_components.Pre": 2, + "dash_mui_charts.TreeView": 5 + }, + "ids": [ + "tree-basic-click-out", + "tree-basic-clicks", + "tree-basic-custom-keys", + "tree-basic-expanded", + "tree-basic-focus", + "tree-basic-focus-out", + "tree-basic-minimal" + ], + "mui_mounts": 5 + }, + "/tree-disabled": { + "components": { + "dash_html_components.Div": 5, + "dash_html_components.H2": 1, + "dash_html_components.H3": 4, + "dash_html_components.P": 5, + "dash_html_components.Pre": 1, + "dash_mui_charts.TreeView": 4 + }, + "ids": [ + "tree-dis-basic", + "tree-dis-checkbox", + "tree-dis-checkbox-out", + "tree-dis-focusable", + "tree-dis-parents" + ], + "mui_mounts": 4 + }, + "/tree-editing": { + "components": { + "dash_html_components.Div": 4, + "dash_html_components.H2": 1, + "dash_html_components.H3": 3, + "dash_html_components.P": 7, + "dash_html_components.Pre": 3, + "dash_mui_charts.TreeView": 3 + }, + "ids": [ + "tree-edit-all", + "tree-edit-all-out", + "tree-edit-log", + "tree-edit-log-out", + "tree-edit-specific", + "tree-edit-specific-out" + ], + "mui_mounts": 3 + }, + "/tree-expansion": { + "components": { + "dash_html_components.Button": 3, + "dash_html_components.Div": 6, + "dash_html_components.H2": 1, + "dash_html_components.H3": 4, + "dash_html_components.P": 7, + "dash_html_components.Pre": 2, + "dash_mui_charts.TreeView": 4 + }, + "ids": [ + "tree-exp-btn-all", + "tree-exp-btn-none", + "tree-exp-btn-root", + "tree-exp-content", + "tree-exp-controlled", + "tree-exp-controlled-out", + "tree-exp-icon", + "tree-exp-track", + "tree-exp-track-out" + ], + "mui_mounts": 4 + }, + "/tree-icons": { + "components": { + "dash_html_components.Div": 12, + "dash_html_components.H2": 1, + "dash_html_components.H3": 7, + "dash_html_components.P": 11, + "dash_mui_charts.TreeView": 9 + }, + "ids": [ + "tree-icon-addremove", + "tree-icon-arrow", + "tree-icon-default", + "tree-icon-file", + "tree-icon-height", + "tree-icon-indent-24", + "tree-icon-indent-48", + "tree-icon-indent-8", + "tree-icon-sx" + ], + "mui_mounts": 9 + }, + "/tree-pro": { + "components": { + "dash_core_components.Store": 3, + "dash_html_components.Pre": 4, + "dash_iconify.DashIconify": 2, + "dash_mantine_components.Badge": 1, + "dash_mantine_components.Divider": 1, + "dash_mantine_components.Grid": 1, + "dash_mantine_components.GridCol": 2, + "dash_mantine_components.Group": 3, + "dash_mantine_components.Paper": 4, + "dash_mantine_components.Stack": 10, + "dash_mantine_components.Text": 16, + "dash_mantine_components.ThemeIcon": 2, + "dash_mantine_components.Title": 4, + "dash_mui_charts.TreeViewPro": 3 + }, + "ids": [ + "tps-label-overrides", + "tps-last-kebab", + "tps-last-slider", + "tree-pro-combo", + "tree-pro-combo-action-log", + "tree-pro-combo-edit", + "tree-pro-combo-menu-label", + "tree-pro-combo-sel", + "tree-pro-combo-slider-label", + "tree-pro-combo-sliders", + "tree-pro-reorder", + "tree-pro-reorder-out", + "tree-pro-reorder-subset" + ], + "mui_mounts": 3 + }, + "/tree-selection": { + "components": { + "dash_html_components.Button": 3, + "dash_html_components.Div": 8, + "dash_html_components.H2": 1, + "dash_html_components.H3": 6, + "dash_html_components.P": 7, + "dash_html_components.Pre": 5, + "dash_mui_charts.TreeView": 6 + }, + "ids": [ + "tree-sel-btn-clear", + "tree-sel-btn-grid", + "tree-sel-btn-pickers", + "tree-sel-checkbox", + "tree-sel-checkbox-out", + "tree-sel-controlled", + "tree-sel-controlled-out", + "tree-sel-disabled", + "tree-sel-multi", + "tree-sel-multi-out", + "tree-sel-propagation", + "tree-sel-propagation-out", + "tree-sel-single", + "tree-sel-single-out" + ], + "mui_mounts": 6 + }, + "/tree-simple": { + "components": { + "dash_html_components.Div": 7, + "dash_html_components.H2": 1, + "dash_html_components.H3": 6, + "dash_html_components.P": 7, + "dash_html_components.Pre": 2, + "dash_mui_charts.SimpleTreeView": 6 + }, + "ids": [ + "tree-simple-basic", + "tree-simple-checkbox", + "tree-simple-checkbox-out", + "tree-simple-disabled", + "tree-simple-icon-trigger", + "tree-simple-icons", + "tree-simple-select", + "tree-simple-select-out" + ], + "mui_mounts": 6 + } + }, + "shell": { + "components": { + "dash_core_components.Location": 2, + "dash_core_components.Store": 4, + "dash_html_components.A": 3, + "dash_html_components.Div": 7, + "dash_html_components.Img": 1, + "dash_iconify.DashIconify": 5, + "dash_mantine_components.ActionIcon": 2, + "dash_mantine_components.AppShell": 1, + "dash_mantine_components.AppShellHeader": 1, + "dash_mantine_components.AppShellMain": 1, + "dash_mantine_components.AppShellNavbar": 1, + "dash_mantine_components.Avatar": 1, + "dash_mantine_components.Badge": 1, + "dash_mantine_components.Box": 1, + "dash_mantine_components.Burger": 1, + "dash_mantine_components.ColorSchemeToggle": 1, + "dash_mantine_components.Group": 3, + "dash_mantine_components.MantineProvider": 1, + "dash_mantine_components.Paper": 1, + "dash_mantine_components.Text": 3, + "dash_mui_charts.SimpleTreeView": 1 + }, + "ids": [ + "_pages_content", + "_pages_dummy", + "_pages_location", + "_pages_store", + "analytics-sink", + "appshell", + "burger", + "header-avatar", + "license-key-store", + "nav-tree", + "url", + "{\"page\": \"__floating__\", \"type\": \"net-ad-container\"}", + "{\"page\": \"__floating__\", \"type\": \"net-ad-data\"}", + "{\"page\": \"__floating__\", \"type\": \"net-ad-img\"}", + "{\"page\": \"__floating__\", \"type\": \"net-ad-link\"}" + ], + "mui_mounts": 1 + }, + "total_mui_mounts": 194 +} From 90c4c93a63f66d445691e1642719cf3761c85284 Mon Sep 17 00:00:00 2001 From: pip-install-python Date: Sat, 1 Aug 2026 19:53:21 -0500 Subject: [PATCH 04/22] Phase 1: network identity, dimll llms surfaces, 40-page metadata MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lib/constants.py — SITE_BRAND/SITE_DESCRIPTION/BASE_URL(APP_BASE_URL -> https://muicharts.2plot.dev)/OG card block/INTERNAL_UA, with require_owned_base_url refusing platform hostnames in production. lib/network_directory.py — cross-host directory (dash-email's verified copy + the muicharts entry this pass ships + MUI X in EXTERNAL). app.py wires dash-improve-my-llms >=2.3.4: robots per-vendor policy, register_page_metadata("/", SITE_BRAND) for the /llms.txt H1, add_llms_routes after prose registrations, analytics before_request kept ahead of the bot middleware. Header badge + JSON-LD + template origin substituted from package version and constants at boot — the five-way version drift and "9 components" claims are gone (13 is the number; README + .claude/CLAUDE.md corrected). All 40 register_page calls gain title/description/image_url (zero empty meta tags verified on every route); 14 pages carry LLMS_DOC prose sourced from SKILLS.md. templates/index.html rebuilt on the dedup rule: only tags Dash does not emit, SPA canonical sync, bounded favicon-avatar retry, GA4 kept. Gates: route parity GREEN (40 routes identical), verify_traffic all green, /llms.txt + /robots.txt + /sitemap.xml serving. Co-Authored-By: Claude Fable 5 --- .claude/CLAUDE.md | 6 +- CHANGELOG.md | 27 +++ README.md | 4 + app.py | 86 +++++++- lib/constants.py | 128 ++++++++++++ lib/network_directory.py | 187 +++++++++++++++++ pages/barchart_basic.py | 98 ++++++++- pages/barchart_candlestick.py | 87 +++++++- pages/barchart_dataset.py | 13 +- pages/barchart_interaction.py | 13 +- pages/barchart_pro.py | 13 +- pages/barchart_reference.py | 13 +- pages/barchart_stacking.py | 13 +- pages/changelog.py | 11 +- pages/composit_render_bp.py | 13 +- pages/composite.py | 98 ++++++++- pages/composite_v120.py | 13 +- pages/crosshair.py | 13 +- pages/heatmap.py | 89 +++++++- pages/heatmap_props.py | 9 +- pages/highlighting_sync.py | 13 +- pages/home.py | 115 ++++++++++- pages/linechart_basic.py | 125 +++++++++++- pages/linechart_brush.py | 13 +- pages/linechart_highlighting.py | 13 +- pages/linechart_pro.py | 13 +- pages/linechart_referencelines.py | 13 +- pages/linechart_tick_hover.py | 13 +- pages/linechart_zoom_preview.py | 13 +- pages/live_trading.py | 93 ++++++++- pages/pie.py | 91 ++++++++- pages/pie_props.py | 9 +- pages/scatter.py | 94 ++++++++- pages/sparkline.py | 72 ++++++- pages/sparkline_style.py | 13 +- pages/sparkline_style_advanced.py | 8 +- pages/time_clock.py | 76 ++++++- pages/time_clock_lab.py | 13 +- pages/tree_basic.py | 77 ++++++- pages/tree_disabled.py | 11 +- pages/tree_editing.py | 11 +- pages/tree_expansion.py | 11 +- pages/tree_icons.py | 11 +- pages/tree_pro.py | 98 ++++++++- pages/tree_selection.py | 11 +- pages/tree_simple.py | 81 +++++++- requirements.txt | 1 + templates/index.html | 323 ++++++++++++++++-------------- 48 files changed, 2172 insertions(+), 197 deletions(-) create mode 100644 lib/constants.py create mode 100644 lib/network_directory.py diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 0aa6661..a7609ae 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -2,7 +2,7 @@ ## Project Overview -**dash_mui_charts** is a Dash component library that wraps [MUI X Charts](https://mui.com/x/react-charts/) for use in Plotly Dash applications. It provides 9 chart components with full Python type hints and interactive callbacks. +**dash_mui_charts** is a Dash component library that wraps [MUI X Charts](https://mui.com/x/react-charts/) (plus MUI X Tree View and Date & Time Pickers) for use in Plotly Dash applications. It provides 13 components with full Python type hints and interactive callbacks. --- @@ -19,6 +19,10 @@ | **Heatmap** | Matrix/grid visualization | Pro | | **SparklineChart** | Compact inline charts | Community | | **LiveTradingChart** | Real-time streaming charts | Community / Pro | +| **TreeView** | Data-driven RichTreeView: selection, expansion, editing | Community | +| **SimpleTreeView** | JSX-driven tree for navigation sidebars | Community | +| **TreeViewPro** | Drag-reorder, lazy loading, per-item slider/kebab controls | Pro | +| **TimeClock** | Inline clock-face time picker (Date & Time Pickers) | Community | ### BarChart Features (v1.2.0) - **Vertical & Horizontal**: `layout='vertical'` (default) or `layout='horizontal'` diff --git a/CHANGELOG.md b/CHANGELOG.md index c661428..e46f920 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Network-standard pass — Phase 1 (identity + llms surfaces) + +- **One brand, every surface** — `lib/constants.py` (SITE_BRAND + "dash-mui-charts — MUI X charts for Dash", SITE_DESCRIPTION, BASE_URL + defaulting to https://muicharts.2plot.dev, OG card block, INTERNAL_UA). + The header version badge, the JSON-LD version and the template origin are + now substituted from single sources of truth at boot — this repo carried + five conflicting version strings and three "9 components" claims (it has + 13; README and .claude/CLAUDE.md corrected). +- **dash-improve-my-llms ≥2.3.4 wired** — /llms.txt (site prose from + pages/home.py's LLMS_DOC), per-page //llms.txt, /robots.txt with + per-vendor bot policy, /sitemap.xml (40 URLs on the canonical origin), + per-route canonical/og prerender, cross-host network directory + (`lib/network_directory.py`). The analytics before_request stays + registered ahead of the bot middleware so crawler hits keep being + counted. +- **Every register_page carries title/description/image_url** — one + missing and Dash emits an empty tag that wins with scrapers; all 40 + routes verified to serve zero empty meta tags. 14 pages (home + one per + component family) carry LLMS_DOC prose sourced from SKILLS.md. +- **templates/index.html rebuilt on the dedup rule** — declares only what + Dash does not emit (og:site_name/locale/url, og:image auxiliaries, + twitter:image:alt); the duplicate hardcoded title, static og/twitter + block, stale JSON-LD and hardcoded canonical are gone. GA4 kept; favicon + randomizer kept but its header-avatar sync now retries bounded instead + of forever; SPA canonical/og:url sync script added. + ### Network-standard pass — Phase 0 (stabilize) - **Satellite analytics committed** — `lib/analytics.py` (SPA-aware hit diff --git a/README.md b/README.md index 55173e8..7801807 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,10 @@ A Dash component library wrapping [MUI X Charts](https://mui.com/x/react-charts/ - **Heatmap** - Matrix visualizations with customizable color scales - **SparklineChart** - Compact inline charts for dashboards and tables - **LiveTradingChart** - Real-time streaming charts for live data visualization +- **TreeView** - Data-driven rich tree with controlled selection, expansion, and label editing +- **SimpleTreeView** - Lightweight JSX-driven tree for navigation sidebars +- **TreeViewPro** - Drag-and-drop reordering, lazy loading, per-item slider + kebab controls (Pro) +- **TimeClock** - Inline clock-face time picker (MUI X Date & Time Pickers) ## Installation diff --git a/app.py b/app.py index 8a886bd..787c88e 100644 --- a/app.py +++ b/app.py @@ -12,18 +12,30 @@ from dash_iconify import DashIconify from dash_mui_charts import SimpleTreeView +from dash_mui_charts import __version__ as _COMPONENT_VERSION -from lib import analytics -from lib.ad_client import create_ad_component, register_shell_ad -from lib.traffic_report import register_healthz, start_traffic_reporter - -# Load .env if available +# Load .env if available — MUST run before the first-party imports below: +# lib/constants.py reads APP_BASE_URL at import time. try: from dotenv import load_dotenv load_dotenv() except ImportError: pass +from lib import analytics, network_directory +from lib.ad_client import create_ad_component, register_shell_ad +from lib.constants import (BASE_URL, ORIGIN_PLACEHOLDER, SITE_BRAND, + SITE_DESCRIPTION, require_owned_base_url) +from lib.traffic_report import register_healthz, start_traffic_reporter + +from dash_improve_my_llms import (LLMSConfig, RobotsConfig, add_llms_routes, + register_page_metadata) + +# Refuses to boot in production if the canonical origin is a +# platform-generated hostname (*.onrender.com keeps resolving after the +# custom domain is attached, splitting link equity across two hosts). +require_owned_base_url() + MUI_LICENSE_KEY = os.environ.get('MUI_PRO_API_KEY', '') # --------------------------------------------------------------------------- @@ -43,16 +55,27 @@ defer=True, ) -# Load custom index template with SEO meta tags, favicon randomizer, and analytics +# Custom index template: GA4, favicon randomizer, and the site-level tags +# Dash does not emit. Its __CANONICAL_ORIGIN__ tokens become BASE_URL and +# __APP_VERSION__ becomes the package version here, so the canonical origin +# and every version string come from single sources of truth — a static file +# cannot import lib/constants, and hand-maintained copies are exactly how +# this template ended up with five conflicting version strings. _template_path = os.path.join(os.path.dirname(__file__), 'templates', 'index.html') with open(_template_path, encoding='utf-8') as _f: - _index_string = _f.read() + _index_string = (_f.read() + .replace(ORIGIN_PLACEHOLDER, BASE_URL) + .replace('__APP_VERSION__', _COMPONENT_VERSION)) app = Dash( __name__, use_pages=True, suppress_callback_exceptions=True, index_string=_index_string, + # fallback for paths outside the page registry, and + # resolve_site_title's second candidate (dimll 2.3.4) — one string, + # every surface. + title=SITE_BRAND, ) server = app.server # WSGI entry point for gunicorn: gunicorn app:server @@ -91,6 +114,47 @@ def _track_document_request(): start_traffic_reporter() +# --------------------------------------------------------------------------- +# AI/LLM & SEO surfaces (dash-improve-my-llms) — /llms.txt, /<page>/llms.txt, +# /robots.txt, /sitemap.xml, per-route canonical/og prerender, bot middleware. +# +# ORDER MATTERS TWICE HERE: +# - the analytics before_request above is registered BEFORE add_llms_routes, +# so crawler hits are recorded before the bot middleware answers them +# with prerendered HTML (a hook added after it never sees bot traffic); +# - register_page_metadata / network_directory.apply come BEFORE +# add_llms_routes so the routes are built with them in place. +# --------------------------------------------------------------------------- + +app._base_url = BASE_URL + +network_directory.apply(BASE_URL) + +# Training crawlers (GPTBot, ClaudeBot, CCBot, …) are disallowed; the +# user-triggered and search fetchers (Claude-User/-SearchBot, ChatGPT-User, +# OAI-SearchBot, PerplexityBot) and traditional engines stay allowed — +# dimll ≥2.3.3 buckets per vendor, so this split is exact. +app._robots_config = RobotsConfig( + block_ai_training=True, + allow_ai_search=True, + allow_traditional=True, + crawl_delay=10, + disallowed_paths=[], +) + +# `name` here is NOT a nav label — pages/home.py owns that ("Home"). This is +# what resolve_site_title reads first, so it is the /llms.txt H1 and the +# llms viewer's brand chip. resolve_site_title SKIPS generic candidates +# ("Home", "Index", "Dash"), so a page display name here would silently +# fall through to app.title instead of erroring. +register_page_metadata( + path="/", + name=SITE_BRAND, + description=SITE_DESCRIPTION, +) + +add_llms_routes(app, LLMSConfig(warn_missing_llms_doc=True)) + # --------------------------------------------------------------------------- # Navigation tree items — groups use "group-*" ids, leaves use page paths # --------------------------------------------------------------------------- @@ -183,8 +247,12 @@ def _track_document_request(): radius="sm", ), dmc.Text("Dash MUI Charts", fw=700, size="lg"), - dmc.Badge("v1.3.0", variant="light", size="sm", color="blue", - visibleFrom="xs"), + # Version comes from the package (package-info.json), the + # same source setup.py builds from — never hardcode it + # here; a stale badge shipped as "v1.3.0" for a full + # release cycle. + dmc.Badge(f"v{_COMPONENT_VERSION}", variant="light", + size="sm", color="blue", visibleFrom="xs"), ], gap="xs", ), diff --git a/lib/constants.py b/lib/constants.py new file mode 100644 index 0000000..d5f7f68 --- /dev/null +++ b/lib/constants.py @@ -0,0 +1,128 @@ +"""Site identity + network contract constants — one string, every surface. + +The network standard (STANDARD.md §1): a site states what it is, in the same +words, on every surface an agent or a reader can reach. The surfaces this +brand reaches, and what serves each: + + Dash(title=SITE_BRAND) -> <title>, and resolve_site_title's + second candidate + register_page_metadata(path="/", -> the /llms.txt H1 and the llms + name=SITE_BRAND) viewer's brand chip (via + dash-improve-my-llms 2.3.4) + templates/index.html og:site_name -> substituted from here at boot + +Naming rules, from the network standard: + - LIBRARY RULE: the package name comes FIRST in the brand (people + install `dash-mui-charts`; the brand must match PyPI and GitHub); + - "Pip Install Python" is the byline (who made it), never the site name. +""" +import os + +SITE_BRAND = "dash-mui-charts — MUI X charts for Dash" + +# The brand without its tagline, for surfaces that prefix something else and +# would otherwise run past platform truncation points. +SITE_SHORT_NAME = "dash-mui-charts" + +# Prefixed to every per-page title. NOT only a browser-tab string: Dash passes +# the page title straight into og:title and twitter:title (dash/_pages.py +# _page_meta_tags), so this is the headline on every share card the site +# produces. Derived, not retyped, so brand and prefix cannot drift apart. +PAGE_TITLE_PREFIX = f"{SITE_SHORT_NAME} | " + +SITE_DESCRIPTION = ( + "dash-mui-charts — 13 Plotly Dash components wrapping MUI X: LineChart, " + "BarChart, CandlestickChart, PieChart, ScatterChart, CompositeChart, " + "Heatmap, SparklineChart, LiveTradingChart, TreeView, SimpleTreeView, " + "TreeViewPro and TimeClock. Interactive documentation with live " + "examples, dark mode and MUI X Pro features. By Pip Install Python." +) + +# --------------------------------------------------------------------------- +# Public origin +# --------------------------------------------------------------------------- +# BASE_URL drives <link rel="canonical"> on every page, the absolute URLs in +# sitemap.xml and llms.txt, and og:url. The name BASE_URL is REQUIRED by the +# network's shared scripts and tests (LESSONS §12) — alias, never rename. +# +# require_owned_base_url() below refuses to boot in production on a +# platform-generated hostname: *.onrender.com keeps resolving after the +# custom domain is attached, and canonicals pointing there split link equity +# across two hosts while nothing about the running site looks wrong. +DEFAULT_BASE_URL = "https://muicharts.2plot.dev" +BASE_URL = os.environ.get("APP_BASE_URL", DEFAULT_BASE_URL).rstrip("/") + +# Token in templates/index.html that app.py substitutes with BASE_URL at +# boot. A static file cannot import this module, and two hand-maintained +# copies of an origin is how half a site ends up pointing at one hostname +# and half at another. +ORIGIN_PLACEHOLDER = "__CANONICAL_ORIGIN__" + +# --------------------------------------------------------------------------- +# The social card +# --------------------------------------------------------------------------- +# Every register_page call passes image_url=OG_IMAGE_URL and a description= +# — one page missing either and Dash emits content="" for it, and the empty +# tag, later in document order, wins with scrapers (LESSONS §1). +# +# THE CARD LIVES ON THE CDN, NOT IN assets/: a card served by the app is +# fetched by the scraper at unfurl time, and on a cold free-tier container +# that request times out and the platform caches the miss. HARD GATE +# (STANDARD §3): the object must answer 200 with IHDR 1200x630 at this URL +# BEFORE a deploy whose og:image points here. +OG_IMAGE_URL = "https://cdn.2plot.ai/github_assets/muicharts.2plot.dev.png" +OG_IMAGE_WIDTH = 1200 +OG_IMAGE_HEIGHT = 630 +OG_IMAGE_TYPE = "image/png" +OG_IMAGE_ALT = SITE_BRAND + +# --------------------------------------------------------------------------- +# The network's internal-traffic contract +# --------------------------------------------------------------------------- +# Any request whose User-Agent contains INTERNAL_UA_TOKEN is 2plot network +# machinery talking to itself — the hub's hourly health sweep, CI smoke +# batteries, this app's own server-to-server calls. It is counted NOWHERE. +# +# inbound — lib/analytics.record drops token-carrying requests at WRITE +# time, before bot classification; +# outbound — every call this host makes to another network host sends +# internal_ua(...), so the far side can apply the same rule. +# +# The token must stay byte-identical across the network; it mirrors +# 2plotai/lib/constants.py and pip-docs+/lib/constants.py. +INTERNAL_UA_TOKEN = "2plot-internal" +INTERNAL_UA = "2plot-internal/1.0 (+https://2plot.ai/docs/satellite-analytics)" + + +def internal_ua(caller: str = "") -> str: + """``INTERNAL_UA`` with a caller suffix, e.g. ``"ad-client"``. + + The suffix is for reading logs on the far side; only the token matters + to the contract, and it stays intact whatever the suffix says. + """ + caller = (caller or "").strip() + return f"{INTERNAL_UA} {caller}" if caller else INTERNAL_UA + + +def require_owned_base_url(base_url: str = BASE_URL) -> None: + """Fail fast in production when BASE_URL isn't this app's real origin. + + Only enforced when a hosting platform is detected (Render sets + ``RENDER``; ``APP_ENV=production`` works anywhere else), so local + development and the test suite are unaffected. + """ + in_production = bool(os.environ.get("RENDER") + or os.environ.get("APP_ENV") == "production") + if not in_production: + return + + for platform_host in ("onrender.com", "herokuapp.com", "railway.app", + "fly.dev"): + if platform_host in base_url: + raise RuntimeError( + f"APP_BASE_URL={base_url!r} is a platform-generated " + "hostname. Canonical tags, sitemap.xml and llms.txt would " + "all point at it instead of the custom domain, splitting " + "link equity across two hosts. Set APP_BASE_URL to the " + "public domain (https://muicharts.2plot.dev)." + ) diff --git a/lib/network_directory.py b/lib/network_directory.py new file mode 100644 index 0000000..2b050b2 --- /dev/null +++ b/lib/network_directory.py @@ -0,0 +1,187 @@ +"""Cross-host directory for the 2plot network — one definition, every satellite. + +Search engines follow links between hosts weakly; agents don't follow them at +all. Landing on muicharts.2plot.dev a model sees one library, with nothing in +the markup saying the other hosts exist — sitemap.xml cannot fix that, being +scoped to its own origin by design. dash-improve-my-llms emits an explicit +machine-readable directory instead: ``<link rel="related">`` tags in +``<head>``, a ``## Network`` section in ``/llms.txt``, and followed links in +the prerendered body. + +The canonical copy lives in the boilerplate; satellites copy it and note any +deliberate divergence. This copy is based on dash-email's (whose peer list +was verified host-by-host on 2026-07-31, dropping two NXDOMAIN entries the +boilerplate still lists) with two changes of its own: + +- dash-mui-charts (muicharts.2plot.dev) is ADDED — this is the change that + ships it; ``peers_for()`` drops it from this host's own peer list, and + every other satellite's copy should gain it via the boilerplate. +- MUI X (mui.com/x) joins EXTERNAL: it is the upstream library all 13 of + this site's components wrap, referenced on nearly every page. + +Usage in app.py, before ``add_llms_routes(app)``:: + + from lib.constants import BASE_URL + from lib import network_directory + + app._base_url = BASE_URL + network_directory.apply(BASE_URL) +""" + +from __future__ import annotations + +from typing import Any, Dict, List + +PEERS: List[Dict[str, str]] = [ + { + "name": "2plot.ai", + "url": "https://2plot.ai", + "description": "Network hub and account origin.", + }, + { + "name": "2plot.dev", + "url": "https://2plot.dev", + "description": "Package index for every open-source component in the network.", + }, + { + "name": "Documentation boilerplate", + "url": "https://boilerplate.2plot.dev", + "description": "The markdown-driven documentation template every satellite site is built from.", + }, + { + "name": "dash-leaflet2", + "url": "https://leaflet.2plot.dev", + "description": "Leaflet 2 maps as Dash components.", + }, + { + "name": "dash-mui-scheduler", + "url": "https://muischeduler.2plot.dev", + "description": "MUI X Scheduler — calendars and event scheduling for Dash.", + }, + { + "name": "dash-mui-charts", + "url": "https://muicharts.2plot.dev", + "description": "MUI X charts, tree views and time pickers for Dash.", + }, + { + "name": "dash-flows", + "url": "https://flows.2plot.dev", + "description": "Node-graph editors built on React Flow.", + }, + { + "name": "dash-improve-my-llms", + "url": "https://llms.2plot.dev", + "description": "The AI/LLM and SEO package every site in this network is built on.", + }, + { + "name": "dash-email", + "url": "https://email.2plot.dev", + "description": "Email composition and delivery components.", + }, + # dash-pannellum (pannellum.2plot.dev) and dash-emoji-mart + # (emojimart.2plot.dev) belong here the day their DNS resolves. Both were + # NXDOMAIN as of 2026-07-31 (dash-email's verified sweep). +] + +AFFILIATED: List[Dict[str, str]] = [ + { + "name": "Pip Install Python", + "url": "https://pip-install-python.com", + "description": "The original component documentation site.", + }, + { + "name": "Pirate's Bargain", + "url": "https://piratesbargain.com", + "description": "Deal aggregator built on the same Dash stack.", + }, + { + "name": "ai-agent.buzz", + "url": "https://ai-agent.buzz", + "description": "Agent tooling directory.", + }, +] + +EXTERNAL: List[Dict[str, Any]] = [ + { + "name": "MUI X Charts", + "url": "https://mui.com/x/react-charts/", + "description": "The upstream React charting library these components wrap.", + }, + { + "name": "Dash Mantine Components", + "url": "https://www.dash-mantine-components.com", + "description": "The UI component layer these docs are built with.", + "llms_txt": "https://www.dash-mantine-components.com/llms.txt", + }, + { + "name": "Plotly Dash documentation", + "url": "https://dash.plotly.com", + "description": "Upstream framework documentation.", + }, +] + +NETWORK_NAME = "The 2plot network" +NETWORK_DESCRIPTION = ( + "Open-source Dash component libraries by Pip Install Python. Each component " + "has its own documentation site and its own llms.txt; 2plot.dev indexes all " + "of them, and 2plot.ai is the hub." +) +HUB_URL = "https://2plot.dev" + +# The mark drawn in the header of the rendered llms.txt view: "2" + morse +# encoding of "plot" + "ai". Defined here rather than per-app because this +# module is copied verbatim into every satellite — that is what keeps one +# mark across the network instead of twelve slightly different ones. +WORDMARK = { + "morse": "plot", + "prefix": "2", + "suffix": "ai", + "label": "2plot.ai", +} + + +def peers_for(app_url: str) -> List[Dict[str, str]]: + """`PEERS` with this app removed. + + A site listing itself as its own peer reads as generated rather than + curated, and it wastes a slot in a list an agent may only skim. + """ + own = app_url.rstrip("/") + return [p for p in PEERS if p["url"].rstrip("/") != own] + + +def apply(app_url: str) -> None: + """Publish the directory for the app served at ``app_url``. + + Degrades rather than fails on older releases of the package: losing the + directory, or losing the wordmark, is a degradation — refusing to start + is not. + """ + try: + from dash_improve_my_llms import register_network + except ImportError: # pragma: no cover - only on <2.1 + import warnings + + warnings.warn( + "dash-improve-my-llms is older than 2.1, so the cross-host network " + "directory will not be published. Upgrade to publish it.", + RuntimeWarning, + stacklevel=2, + ) + return + + import inspect + + extra: Dict[str, Any] = {} + if "wordmark" in inspect.signature(register_network).parameters: + extra["wordmark"] = WORDMARK + + register_network( + name=NETWORK_NAME, + description=NETWORK_DESCRIPTION, + hub_url=HUB_URL, + peers=peers_for(app_url), + affiliated=AFFILIATED, + external=EXTERNAL, + **extra, + ) diff --git a/pages/barchart_basic.py b/pages/barchart_basic.py index 888a8dc..2c9c876 100644 --- a/pages/barchart_basic.py +++ b/pages/barchart_basic.py @@ -9,7 +9,103 @@ import dash from dash import html, callback, Input, Output -dash.register_page(__name__, path='/barchart-basic', name='Bar Chart - Basic') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/barchart-basic', + name='Bar Chart - Basic', + title=PAGE_TITLE_PREFIX + 'BarChart Basics', + description='BarChart basics for Dash: multi-series vertical, stacked and ' + 'horizontal bars, bar labels, rounded corners, custom colors ' + 'and negative values.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """# BarChart + +Vertical and horizontal bar charts for Plotly Dash, wrapping MUI X Charts' +`BarChart`. Community features — bars, stacking, bar labels, dataset mode, +reference lines, click events — need no license. Pro features (zoom, slider, +toolbar, brush) require a MUI X Pro `licenseKey`; the component automatically +switches to `BarChartPro` from `@mui/x-charts-pro` when Pro features are used. + +## Basic usage + +```python +from dash_mui_charts import BarChart + +BarChart( + id='my-bar', + series=[{'data': [4, 3, 5], 'label': 'Sales', 'color': '#1976d2'}], + xAxis=[{'data': ['Q1', 'Q2', 'Q3'], 'scaleType': 'band'}], + height=350, +) +``` + +`scaleType: 'band'` is required on the category axis. For horizontal bars, +put the band axis on `yAxis` and set `layout='horizontal'`; use +`borderRadius=6` for rounded corners. + +## Key props + +- `series` — list of `{data | dataKey, label, color, stack, stackOffset, + stackOrder, barLabel, barLabelPlacement, highlightScope, yAxisId}` +- `dataset` + per-series `dataKey` — table-format data, passed once +- `layout` — `'vertical'` (default) or `'horizontal'` +- `borderRadius` — rounded bar corners (px) +- `referenceLines` — horizontal (`y`) and vertical (`x`) markers +- `categoryGapRatio` (0-1) / `barGapRatio` — bar spacing, set on the band axis +- `clickData` / `axisClickData` — callback outputs for bar and axis clicks +- Pro: `licenseKey`, `showSlider`, `showToolbar`, `initialZoom`, axis `zoom` + +## Stacking + +```python +series=[ + {'data': [40, 35], 'stack': 'g', 'stackOffset': 'expand'}, + {'data': [30, 25], 'stack': 'g', 'stackOffset': 'expand'}, +] +``` + +`stackOffset`: `'none'` (default), `'expand'` (normalized to 100%), or +`'diverging'` (positives above zero, negatives below). Different `stack` +ids render as side-by-side stack groups. + +## Dataset mode + +```python +BarChart( + dataset=[ + {'month': 'Jan', 'london': 18, 'paris': 15}, + {'month': 'Feb', 'london': 22, 'paris': 18}, + ], + xAxis=[{'dataKey': 'month', 'scaleType': 'band'}], + series=[ + {'dataKey': 'london', 'label': 'London'}, + {'dataKey': 'paris', 'label': 'Paris'}, + ], +) +``` + +## Click events + +```python +@callback(Output('display', 'children'), Input('my-bar', 'clickData')) +def show_click(data): + # data: {seriesId, dataIndex, timestamp} + return json.dumps(data) if data else 'Click a bar...' +``` + +## Related pages + +- /barchart-basic — vertical, horizontal, stacked bars, labels, colors +- /barchart-dataset — dataset + dataKey mode, bar spacing +- /barchart-stacking — stack offsets, ordering, diverging stacks +- /barchart-interaction — click events, highlighting, tooltip triggers +- /barchart-reference — reference lines and styling +- /barchart-pro — zoom, slider, toolbar (Pro license) +""" from dash_mui_charts import BarChart diff --git a/pages/barchart_candlestick.py b/pages/barchart_candlestick.py index f129547..19480c7 100644 --- a/pages/barchart_candlestick.py +++ b/pages/barchart_candlestick.py @@ -9,7 +9,92 @@ import dash from dash import html, callback, Input, Output -dash.register_page(__name__, path='/candlestick', name='Candlestick Chart') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/candlestick', + name='Candlestick Chart', + title=PAGE_TITLE_PREFIX + 'CandlestickChart', + description='CandlestickChart OHLC demos: array and dataset formats, ' + 'volume overlay, candle styling, support/resistance reference ' + 'lines and click events.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """# CandlestickChart + +Static OHLC candlestick charts for financial data in Plotly Dash. Built on +the MUI X Charts Pro composition API (`ChartDataProviderPro` plus a custom +SVG `CandlePlot` for candle bodies and wicks), so it does not need +`@mui/x-charts-premium`. Basic charts work without a license; zoom, slider +and toolbar are Pro features that require a MUI X Pro `licenseKey`. Not the +same as LiveTradingChart, which is a real-time streaming chart. + +## Data formats + +Array format — OHLC tuples: + +```python +from dash_mui_charts import CandlestickChart + +CandlestickChart( + id='my-candles', + series=[{ + 'data': [ + [100, 110, 95, 105], # [open, high, low, close] + [105, 115, 100, 112], + ], + 'upColor': '#4caf50', # close >= open + 'downColor': '#f44336', # close < open + }], + xAxis=[{'data': ['Mon', 'Tue']}], +) +``` + +Dataset format — row objects mapped with `datasetKeys`: + +```python +CandlestickChart( + dataset=[ + {'date': '2025-01-02', 'open': 100, 'high': 110, + 'low': 95, 'close': 105, 'volume': 1200}, + ], + series=[{ + 'datasetKeys': {'open': 'open', 'high': 'high', + 'low': 'low', 'close': 'close'}, + 'volumeKey': 'volume', + }], + xAxis=[{'dataKey': 'date'}], +) +``` + +## Key props + +- `showVolume=True` + `volumeHeightRatio` — semi-transparent volume bars; + volume comes from `volumeKey` (dataset mode) or a `volume` array (series) +- `bodyWidthRatio` — candle body width, 0-1 (default 0.6) +- `wickWidth` — wick thickness in px (default 2) +- `referenceLines` — support/resistance markers: `{'y': 110, 'label': + 'Resistance', 'lineStyle': {'stroke': '#f44336', 'strokeDasharray': '6 4'}}` +- Built-in OHLC hover tooltip with vertical crosshair (can be disabled) +- Y-axis domain is computed automatically from the data + +## Click events + +```python +@callback(Output('display', 'children'), Input('my-candles', 'clickData')) +def show_click(data): + # data: {dataIndex, label, open, high, low, close, timestamp} + return json.dumps(data) if data else 'Click a candle...' +``` + +## Related pages + +- /candlestick — this page: array/dataset modes, volume, styling, clicks +- /live-trading — real-time streaming charts (LiveTradingChart) +- /barchart-basic — the BarChart component family +""" from dash_mui_charts import CandlestickChart diff --git a/pages/barchart_dataset.py b/pages/barchart_dataset.py index fafdd96..f80cfc0 100644 --- a/pages/barchart_dataset.py +++ b/pages/barchart_dataset.py @@ -6,7 +6,18 @@ import dash from dash import html -dash.register_page(__name__, path='/barchart-dataset', name='Bar Chart - Dataset') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/barchart-dataset', + name='Bar Chart - Dataset', + title=PAGE_TITLE_PREFIX + 'BarChart Dataset Mode', + description='BarChart dataset mode: pass table-format data once and ' + 'reference columns by dataKey, with stacked series and ' + 'bar/category gap control.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import BarChart diff --git a/pages/barchart_interaction.py b/pages/barchart_interaction.py index a2c3d41..dadea0e 100644 --- a/pages/barchart_interaction.py +++ b/pages/barchart_interaction.py @@ -9,7 +9,18 @@ import dash from dash import html, callback, Input, Output -dash.register_page(__name__, path='/barchart-interaction', name='Bar Chart - Interaction') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/barchart-interaction', + name='Bar Chart - Interaction', + title=PAGE_TITLE_PREFIX + 'BarChart Interaction', + description='BarChart interaction in Dash: bar and axis click callbacks, ' + 'series highlighting, axis highlight modes, and axis vs item ' + 'tooltip triggers.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import BarChart diff --git a/pages/barchart_pro.py b/pages/barchart_pro.py index cdc2722..727be45 100644 --- a/pages/barchart_pro.py +++ b/pages/barchart_pro.py @@ -9,7 +9,18 @@ import dash from dash import html -dash.register_page(__name__, path='/barchart-pro', name='Bar Chart - Pro') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/barchart-pro', + name='Bar Chart - Pro', + title=PAGE_TITLE_PREFIX + 'BarChart Pro Features', + description='BarChart Pro features with a MUI X license key: zoom with ' + 'slider, zoom plus toolbar, and stacked bars with zoom on 52 ' + 'weeks of data.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import BarChart diff --git a/pages/barchart_reference.py b/pages/barchart_reference.py index e393194..3c070f8 100644 --- a/pages/barchart_reference.py +++ b/pages/barchart_reference.py @@ -8,7 +8,18 @@ import dash from dash import html -dash.register_page(__name__, path='/barchart-reference', name='Bar Chart - Reference Lines') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/barchart-reference', + name='Bar Chart - Reference Lines', + title=PAGE_TITLE_PREFIX + 'BarChart Reference Lines', + description='BarChart reference lines and styling: target and threshold ' + 'markers, vertical reference lines, skip animation, hidden ' + 'legend and custom color palettes.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import BarChart diff --git a/pages/barchart_stacking.py b/pages/barchart_stacking.py index 4ee430e..75271d4 100644 --- a/pages/barchart_stacking.py +++ b/pages/barchart_stacking.py @@ -8,7 +8,18 @@ import dash from dash import html -dash.register_page(__name__, path='/barchart-stacking', name='Bar Chart - Stacking') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/barchart-stacking', + name='Bar Chart - Stacking', + title=PAGE_TITLE_PREFIX + 'BarChart Stacking', + description='BarChart stacking options: standard, normalized (expand) and ' + 'diverging stack offsets, multiple stack groups, and ' + 'horizontal stacked bars.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import BarChart diff --git a/pages/changelog.py b/pages/changelog.py index 69cb5b7..32ca247 100644 --- a/pages/changelog.py +++ b/pages/changelog.py @@ -7,7 +7,16 @@ import dash_mantine_components as dmc from dash import html, dcc -dash.register_page(__name__, path='/changelog', name='Changelog') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/changelog', + name='Changelog', + title=PAGE_TITLE_PREFIX + 'Changelog', + description='Release history for dash-mui-charts: all notable changes by version, rendered from the project CHANGELOG.', + image_url=OG_IMAGE_URL, +) # Read the changelog file _changelog_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'CHANGELOG.md') diff --git a/pages/composit_render_bp.py b/pages/composit_render_bp.py index dc31b73..c973589 100644 --- a/pages/composit_render_bp.py +++ b/pages/composit_render_bp.py @@ -17,7 +17,18 @@ import dash_mantine_components as dmc from dash import html, dcc, callback, Input, Output, State, ctx, no_update -dash.register_page(__name__, path='/composite-render-bp', name='Composite Render BP') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/composite-render-bp', + name='Composite Render BP', + title=PAGE_TITLE_PREFIX + 'Composite Render Best Practices', + description='Best-practice CompositeChart rendering for stacked discharge/' + 'temperature/pressure dashboards across 7d-live to 1yr+ date ' + 'ranges (~2k to 150k+ points).', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import CompositeChart diff --git a/pages/composite.py b/pages/composite.py index bcf55d1..0140946 100644 --- a/pages/composite.py +++ b/pages/composite.py @@ -12,7 +12,103 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output -dash.register_page(__name__, path='/composite', name='Composite Chart (0.0.8)') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/composite', + name='Composite Chart (0.0.8)', + title=PAGE_TITLE_PREFIX + 'CompositeChart', + description='CompositeChart demos layering scatter and line series on one ' + 'surface: trend overlays, reference lines, multi-axis charts ' + 'and Pro zoom with slider preview.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """# CompositeChart + +`CompositeChart` layers multiple chart types — `type: 'scatter'` and +`type: 'line'` series — on a single surface using the MUI X Charts composition +API (`ChartDataProviderPro` + `ChartsSurface` + individual plot components). +Basic layering is **Community (free)**; zoom/pan, slider preview, and the +toolbar are **Pro** features that require a `licenseKey`. + +It ships a custom axis tooltip that shows both line and scatter data at the +hovered x-position (scatter matches by proximity, auto-computed from axis data +spacing), and epoch-ms values are converted to Date objects automatically on +`scaleType: 'time'` axes. + +## Basic scatter + line overlay + +```python +from dash_mui_charts import CompositeChart + +CompositeChart( + series=[ + {'type': 'scatter', 'id': 'readings', 'label': 'Sensor Readings', + 'data': [{'x': 0, 'y': 18.5, 'id': 0}], 'markerSize': 4}, + {'type': 'line', 'id': 'trend', 'label': 'Trend Line', + 'data': [20.0, 22.1], # positional values + 'curve': 'natural', 'showMark': False}, + ], + xAxis=[{'data': x_values, 'scaleType': 'linear'}], +) +``` + +## Zoom with slider preview (Pro) + +```python +CompositeChart( + licenseKey=MUI_PRO_LICENSE, + series=[ + {'type': 'line', 'id': 'baseline', 'data': values, 'area': True}, + {'type': 'scatter', 'id': 'anomalies', 'data': scatter_points, + 'markerSize': 6, + 'preview': {'markerSize': 2}, # marker size in the slider preview + 'highlightScope': {'highlight': 'item'}}, + ], + xAxis=[{ + 'data': timestamps, + 'scaleType': 'time', # epoch ms auto-converted to Date objects + 'zoom': {'slider': {'enabled': True, 'preview': True}}, + }], + initialZoom=[{'axisId': 'time-axis', 'start': 0, 'end': 30}], +) +``` + +## Multi-axis + +```python +CompositeChart( + series=[ + {'type': 'scatter', 'yAxisId': 'left-axis'}, + {'type': 'line', 'yAxisId': 'right-axis'}, + ], + yAxis=[ + {'id': 'left-axis', 'position': 'left'}, + {'id': 'right-axis', 'position': 'right'}, + ], +) +``` + +## Reference lines + +```python +CompositeChart( + referenceLines=[ + {'y': 28, 'label': 'Upper Limit', 'lineStyle': {'stroke': 'red'}}, + {'y': 16, 'label': 'Lower Limit', 'lineStyle': {'stroke': 'red'}}, + ], +) +``` + +## Related pages + +- `/composite` — this demo (overlays, reference lines, multi-axis, Pro zoom) +- `/composite-v120` — v1.2.0 axis tooltip fix, highlightedAxis, cross-chart sync +- `/composite-render-bp` — rendering best practices for large time ranges +- `/scatter` — standalone ScatterChart +""" from dash_mui_charts import CompositeChart diff --git a/pages/composite_v120.py b/pages/composite_v120.py index 13f1318..feb5aed 100644 --- a/pages/composite_v120.py +++ b/pages/composite_v120.py @@ -13,7 +13,18 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output, State, ctx, no_update -dash.register_page(__name__, path='/composite-v120', name='CompositeChart v1.2.0') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/composite-v120', + name='CompositeChart v1.2.0', + title=PAGE_TITLE_PREFIX + 'CompositeChart v1.2.0', + description='CompositeChart v1.2.0 demos: the axis tooltip fix, the ' + 'highlightedAxis output, and cross-chart crosshair sync up to ' + 'a 3-chart stacked dashboard.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import CompositeChart diff --git a/pages/crosshair.py b/pages/crosshair.py index fa29b0a..158e5a9 100644 --- a/pages/crosshair.py +++ b/pages/crosshair.py @@ -14,7 +14,18 @@ from dash import html, dcc, callback, Input, Output, State, ctx, no_update, ALL from dash_iconify import DashIconify -dash.register_page(__name__, path='/crosshair', name='Crosshair Explorer') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/crosshair', + name='Crosshair Explorer', + title=PAGE_TITLE_PREFIX + 'Crosshair Explorer', + description='CompositeChart crosshair tracking with live coordinate ' + 'readout, right-click alert placement, and a synced ' + 'three-chart dashboard with HoverCard-managed alerts.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import CompositeChart diff --git a/pages/heatmap.py b/pages/heatmap.py index 5ecb7b9..4f2c2a2 100644 --- a/pages/heatmap.py +++ b/pages/heatmap.py @@ -12,7 +12,94 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output -dash.register_page(__name__, path='/heatmap', name='Heatmap') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/heatmap', + name='Heatmap', + title=PAGE_TITLE_PREFIX + 'Heatmap', + description='Heatmap (MUI X Pro) demos: activity grids, a correlation ' + 'matrix, continuous and piecewise color scales, custom cell ' + 'styling and click interaction.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """# Heatmap + +`Heatmap` renders matrix/grid visualizations with color-coded cells, wrapping +the MUI X Charts Pro heatmap for Plotly Dash. It is a **Pro** component — a +MUI X Pro license key is **required**, passed via the `licenseKey` prop. + +Cells are addressed by x/y index against categorical axis labels, and each +cell's color is derived from its value through a color scale (continuous or +piecewise). Cell clicks flow back to Dash as `clickData` with x, y, and value. + +## Data format + +```python +# Array of [x_index, y_index, value] triples +data = [ + [0, 0, 10], [0, 1, 20], [0, 2, 30], + [1, 0, 40], [1, 1, 50], [1, 2, 60], +] +``` + +## Basic usage + +```python +from dash_mui_charts import Heatmap + +Heatmap( + id='my-heatmap', + licenseKey=MUI_LICENSE_KEY, # Pro license required + data=data, + xAxis={'data': ['Mon', 'Tue', 'Wed'], 'label': 'Day'}, + yAxis={'data': ['Week 1', 'Week 2', 'Week 3'], 'label': 'Week'}, + height=300, + colorScale={ + 'type': 'continuous', + 'min': 0, + 'max': 100, + 'colors': ['#e3f2fd', '#1976d2'], + }, +) +``` + +## Color scales + +```python +# Continuous — interpolate between colors across [min, max] +colorScale = { + 'type': 'continuous', + 'min': 0, + 'max': 100, + 'colors': ['#e3f2fd', '#1976d2'], +} + +# Piecewise — discrete buckets split at thresholds +colorScale = { + 'type': 'piecewise', + 'thresholds': [25, 50, 75], + 'colors': ['#green', '#yellow', '#orange', '#red'], +} +``` + +## Click events + +```python +@callback(Output('out', 'children'), Input('my-heatmap', 'clickData')) +def show(click_data): + # click_data carries the cell's x, y coordinates and value + ... +``` + +## Related pages + +- `/heatmap` — this demo (activity grid, correlation matrix, temperature + matrix, rounded cells, piecewise scales, click interaction) +- `/heatmap-props` — interactive props playground with live controls +""" from dash_mui_charts import Heatmap diff --git a/pages/heatmap_props.py b/pages/heatmap_props.py index fb17d2f..9440af3 100644 --- a/pages/heatmap_props.py +++ b/pages/heatmap_props.py @@ -12,10 +12,17 @@ import dash_mantine_components as dmc from dash_mui_charts import Heatmap +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + dash.register_page( __name__, path='/heatmap-props', - name='Heatmap Props' + name='Heatmap Props', + title=PAGE_TITLE_PREFIX + 'Heatmap Props Playground', + description='Interactive Heatmap props playground (MUI X Pro): live ' + 'controls for color scale, dimensions, cell style, ' + 'interactions and margins on a 5x5 grid.', + image_url=OG_IMAGE_URL, ) # Get license key from environment diff --git a/pages/highlighting_sync.py b/pages/highlighting_sync.py index 8a08c6f..29a0c23 100644 --- a/pages/highlighting_sync.py +++ b/pages/highlighting_sync.py @@ -8,7 +8,18 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output, ctx -dash.register_page(__name__, path='/highlighting-sync', name='Highlighting Sync') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/highlighting-sync', + name='Highlighting Sync', + title=PAGE_TITLE_PREFIX + 'Synchronized Highlighting', + description='Synchronized highlighting across charts: hover one to ' + 'highlight matching data in others — LineChart + PieChart ' + 'and two LineCharts sharing highlightedItem state.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import LineChart, PieChart diff --git a/pages/home.py b/pages/home.py index 8abb95a..90009c7 100644 --- a/pages/home.py +++ b/pages/home.py @@ -6,7 +6,120 @@ import dash_mantine_components as dmc from dash import html, dcc -dash.register_page(__name__, path='/', name='Home') +from lib.constants import OG_IMAGE_URL, SITE_BRAND, SITE_DESCRIPTION + +dash.register_page( + __name__, + path='/', + name='Home', + title=SITE_BRAND, + description=SITE_DESCRIPTION, + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """\ +# dash-mui-charts + +dash-mui-charts is a Plotly Dash component library of 13 components wrapping +MUI X Charts, MUI X Tree View, and MUI X Date & Time Pickers for Python +developers. Every component ships with full Python type hints and exposes +its interactions (clicks, selections, zoom, edits) as Dash callback +properties. Built by Pip Install Python; MIT licensed. + +## Install + +```bash +pip install dash-mui-charts +``` + +## Components + +Charts (MUI X Charts): + +- **LineChart** — line/area charts, biaxial axes, zoom/pan, brush selection, + reference lines (Community / Pro). Docs: /linechart-basic +- **BarChart** — vertical/horizontal bars, stacking, bar labels, dataset + mode, zoom/brush (Community / Pro). Docs: /barchart-basic +- **CandlestickChart** — OHLC candlesticks with volume overlay, reference + lines, click events (Community / Pro). Docs: /candlestick +- **PieChart** — pie, donut, and nested pies (Community). Docs: /pie +- **ScatterChart** — scatter/point charts, z-axis color mapping, voronoi + interaction (Community). Docs: /scatter +- **CompositeChart** — layer scatter + line plots on one surface, multi-axis + (Community / Pro). Docs: /composite +- **Heatmap** — matrix/grid visualization with color scales (Pro). + Docs: /heatmap +- **SparklineChart** — compact inline charts for dashboards and tables + (Community). Docs: /sparkline +- **LiveTradingChart** — real-time streaming charts (Community / Pro). + Docs: /live-trading + +Tree View (MUI X Tree View): + +- **TreeView** — data-driven RichTreeView: selection, expansion, inline + label editing, disabling (Community). Docs: /tree-basic +- **SimpleTreeView** — lightweight JSX-driven tree for navigation sidebars + (Community). Docs: /tree-simple +- **TreeViewPro** — drag-and-drop reordering, lazy loading, per-item + slider + kebab menu controls (Pro). Docs: /tree-pro + +Date & Time Pickers (MUI X Date Pickers): + +- **TimeClock** — inline clock-face time picker, string in/out values + (Community). Docs: /time-clock + +## Community vs Pro + +Community features work with no license. MUI X Pro features — LineChart / +BarChart / CompositeChart zoom, pan, slider, brush and toolbar; Heatmap; +TreeViewPro reordering, lazy loading and per-item controls — require an +MUI X Pro license key passed via the `licenseKey` prop (the demo app reads +it from the `MUI_PRO_API_KEY` environment variable). + +## Quick start + +```python +from dash import Dash, html +from dash_mui_charts import LineChart + +app = Dash(__name__) + +app.layout = html.Div([ + LineChart( + id='my-chart', + height=400, + series=[ + {'data': [1, 4, 2, 5, 7], 'label': 'Series A'}, + ], + xAxis=[{'data': [1, 2, 3, 4, 5]}], + ) +]) + +if __name__ == '__main__': + app.run(debug=True) +``` + +## More documentation pages + +- LineChart: /linechart-pro, /linechart-brush, /linechart-referencelines, + /linechart-highlighting, /highlighting-sync, /linechart-zoom-preview, + /linechart-tick-hover, /crosshair +- BarChart: /barchart-dataset, /barchart-stacking, /barchart-interaction, + /barchart-reference, /barchart-pro +- Pie / Heatmap / Sparkline explorers: /pie-props, /heatmap-props, + /sparkline-style, /sparkline-style-advanced +- CompositeChart: /composite-v120, /composite-render-bp +- Tree View: /tree-selection, /tree-expansion, /tree-editing, /tree-icons, + /tree-disabled, /tree-pro +- TimeClock: /time-clock-lab +- Release history: /changelog + +## Links + +- GitHub: https://github.com/pip-install-python/dash-mui-charts +- PyPI: https://pypi.org/project/dash-mui-charts/ +- MUI X Charts: https://mui.com/x/react-charts/ +""" INSTALL_CODE = "pip install dash-mui-charts" diff --git a/pages/linechart_basic.py b/pages/linechart_basic.py index 34041e9..3d54c74 100644 --- a/pages/linechart_basic.py +++ b/pages/linechart_basic.py @@ -8,7 +8,130 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output -dash.register_page(__name__, path='/linechart-basic', name='LineChart Basics') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/linechart-basic', + name='LineChart Basics', + title=PAGE_TITLE_PREFIX + 'LineChart Basics', + description='Fundamentals of the LineChart Dash component: grid, area and ' + 'stacked-area charts, curve interpolation, dual y-axes, and ' + 'click-event callbacks.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """# LineChart + +`LineChart` is the line and area chart component of dash-mui-charts, a Plotly +Dash wrapper around MUI X Charts. It draws one or more line series with +optional area fill, stacking, curve interpolation, dual y-axes, grid lines, +reference lines, hover highlighting and click-event callbacks — all configured +from Python dicts. + +Core charting is Community tier (no license needed). Pro features require an +MUI X Pro license key passed as `licenseKey`: zoom/pan (`zoom`, `initialZoom`, +`zoomData` output), the zoom range slider (`showSlider`), brush range +selection (`brushConfig`) and the toolbar (`showToolbar`). + +## Basic usage + +```python +from dash_mui_charts import LineChart +LineChart( + height=350, + series=[ + {'data': [2, 5.5, 2, 8.5, 1.5, 5], 'label': 'Series A', 'showMark': True}, + {'data': [4, 3.5, 6, 2.5, 4.5, 3], 'label': 'Series B'}, + ], + xAxis=[{'data': [1, 2, 3, 4, 5, 6], 'scaleType': 'point'}], + grid={'horizontal': True, 'vertical': True}, +) +``` + +## Series options + +Each series dict supports `data` (y values, required), `label`, `color`, +`area` (fill under the line), `curve` ('linear', 'monotoneX', 'monotoneY', +'natural', 'step', 'stepBefore', 'stepAfter', 'catmullRom', 'bumpX', 'bumpY'), +`stack` (group id for stacked areas), `showMark`, and `yAxisId` for biaxial +charts (give each `yAxis` entry an `id` and a `position` of 'left' or +'right', then reference it from the series via `yAxisId`). + +## Reference lines + +Horizontal (`y`) or vertical (`x`) markers; on multi-axis charts, `axisId` +picks which axis the value refers to. + +```python +referenceLines=[ + {'y': 100, 'label': 'Target', 'labelAlign': 'end', + 'lineStyle': {'stroke': '#4caf50', 'strokeWidth': 2}}, + {'x': 'Q2', 'label': 'Launch', + 'lineStyle': {'stroke': '#f44336', 'strokeDasharray': '5 5'}}, +] +``` + +## Highlighting + +`highlightedItem` and `highlightedAxis` are controlled props (input and +output) for cross-chart sync. Per-series `highlightScope` sets hover behavior: +`highlight` 'none' | 'item' | 'series'; `fade` 'none' | 'series' | 'global'. + +```python +series=[{'id': 'sales', 'data': [1, 2, 3], 'showMark': True, + 'highlightScope': {'highlight': 'item', 'fade': 'global'}}], +tooltip={'trigger': 'item'}, +highlightedItem={'seriesId': 'sales', 'dataIndex': 2}, +``` + +## Pro: zoom and brush + +```python +LineChart( + licenseKey=MUI_PRO_LICENSE, + xAxis=[{'id': 'x', 'data': years, 'scaleType': 'point', + 'zoom': {'minSpan': 5, 'maxSpan': 100, 'panning': True}}], + showSlider=True, + initialZoom=[{'axisId': 'x', 'start': 0, 'end': 50}], + brushConfig={'enabled': True}, + brushOverlay='values', # 'none' | 'default' | 'values' + brushSeriesId='my-series', +) +# Current zoom state is reported via the zoomData output prop. +``` + +## Date formatting and functions-as-props + +For time-scale axes, `dateFormat` / `dateTickFormat` set tooltip and tick +label formats without JavaScript (tokens: YYYY, MMM, MM, M, dd, d, HH, mm). +For anything else, `valueFormatter` accepts `{'function': name, 'options': +{...}}` resolved from the `window.dashMuiChartsFunctions` registry defined in +`assets/*.js`. + +```python +xAxis=[{'data': epoch_ms_timestamps, 'scaleType': 'time', + 'dateFormat': 'M/d HH:mm', # tooltip labels + 'dateTickFormat': 'M/d'}] # tick labels +``` + +## Click events + +The `clickData` output prop reports `{'type': 'axis' | 'mark' | 'line' | +'area', 'seriesIndex', 'dataIndex', 'value', 'timestamp'}`; read it with a +Dash callback (`n_clicks` also increments per click). + +## Related pages + +- /linechart-pro — zoom, pan, slider and controlled zoom state (Pro) +- /linechart-brush — brush range selection and overlay types (Pro) +- /linechart-referencelines — reference line styling, spacing, multi-axis +- /linechart-highlighting — controlled highlights and highlightScope +- /linechart-tick-hover — ticks, tooltips and grid across date ranges +- /linechart-zoom-preview — zoom slider preview, zoomInteractionConfig +- /crosshair — crosshair tracking dashboard (CompositeChart) +- /highlighting-sync — synchronized highlights across multiple charts +""" from dash_mui_charts import LineChart diff --git a/pages/linechart_brush.py b/pages/linechart_brush.py index a48cc3c..75926b6 100644 --- a/pages/linechart_brush.py +++ b/pages/linechart_brush.py @@ -8,7 +8,18 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output -dash.register_page(__name__, path='/linechart-brush', name='LineChart Brush') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/linechart-brush', + name='LineChart Brush', + title=PAGE_TITLE_PREFIX + 'LineChart Brush Selection', + description='Pro brush range selection on LineChart: drag to select a ' + 'region, overlay types (none, default, values with % change), ' + 'brushConfig and axis highlight options.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import LineChart diff --git a/pages/linechart_highlighting.py b/pages/linechart_highlighting.py index bb2f5be..2a19904 100644 --- a/pages/linechart_highlighting.py +++ b/pages/linechart_highlighting.py @@ -8,7 +8,18 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output, State, ctx -dash.register_page(__name__, path='/linechart-highlighting', name='LineChart Highlighting') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/linechart-highlighting', + name='LineChart Highlighting', + title=PAGE_TITLE_PREFIX + 'LineChart Highlighting', + description='Controlled highlighting on LineChart: set highlightedItem ' + 'and highlightedAxis from Dash callbacks, plus per-series ' + 'highlightScope highlight/fade behavior.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import LineChart diff --git a/pages/linechart_pro.py b/pages/linechart_pro.py index da8895b..0d4d292 100644 --- a/pages/linechart_pro.py +++ b/pages/linechart_pro.py @@ -8,7 +8,18 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output, State -dash.register_page(__name__, path='/linechart-pro', name='LineChart Pro') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/linechart-pro', + name='LineChart Pro', + title=PAGE_TITLE_PREFIX + 'LineChart Pro', + description='MUI X Pro features on LineChart: zoom and pan with a slider, ' + 'zoom configuration options, biaxial zoom, and controlled zoom ' + 'state via Dash callbacks.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import LineChart diff --git a/pages/linechart_referencelines.py b/pages/linechart_referencelines.py index e42d886..a24d99a 100644 --- a/pages/linechart_referencelines.py +++ b/pages/linechart_referencelines.py @@ -7,7 +7,18 @@ import dash_mantine_components as dmc from dash import html, dcc, callback, Input, Output, State -dash.register_page(__name__, path='/linechart-referencelines', name='LineChart Reference Lines') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/linechart-referencelines', + name='LineChart Reference Lines', + title=PAGE_TITLE_PREFIX + 'LineChart Reference Lines', + description='Horizontal and vertical reference lines on LineChart: ' + 'targets, thresholds, label alignment, dash styles, ' + 'multi-axis axisId, and dynamic updates via callbacks.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import LineChart diff --git a/pages/linechart_tick_hover.py b/pages/linechart_tick_hover.py index 5d375bc..51d7507 100644 --- a/pages/linechart_tick_hover.py +++ b/pages/linechart_tick_hover.py @@ -12,7 +12,18 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output -dash.register_page(__name__, path='/linechart-tick-hover', name='LineChart Ticks & Hover') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/linechart-tick-hover', + name='LineChart Ticks & Hover', + title=PAGE_TITLE_PREFIX + 'LineChart Ticks & Hover', + description='Best practices for LineChart tooltips, reference lines, ' + 'ticks and grid across week, quarter and year date ranges, ' + 'with fixes for alignment at large ranges.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import LineChart diff --git a/pages/linechart_zoom_preview.py b/pages/linechart_zoom_preview.py index d91975d..8dc7ba1 100644 --- a/pages/linechart_zoom_preview.py +++ b/pages/linechart_zoom_preview.py @@ -12,7 +12,18 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output -dash.register_page(__name__, path='/linechart-zoom-preview', name='Zoom Preview (0.0.8)') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/linechart-zoom-preview', + name='Zoom Preview (0.0.8)', + title=PAGE_TITLE_PREFIX + 'LineChart Zoom Slider Preview', + description='LineChart Pro zoom slider with a miniature full-dataset ' + 'preview, zoomInteractionConfig for fine-grained zoom/pan ' + 'control, and enhanced axis tick styling.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import LineChart diff --git a/pages/live_trading.py b/pages/live_trading.py index 238a06f..7137526 100644 --- a/pages/live_trading.py +++ b/pages/live_trading.py @@ -10,7 +10,98 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output, State, ctx -dash.register_page(__name__, path='/live-trading', name='Live Trading Chart') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/live-trading', + name='Live Trading Chart', + title=PAGE_TITLE_PREFIX + 'Live Trading Chart', + description='LiveTradingChart real-time candlestick simulation with OHLCV ' + 'data, volume bars, forecast band, swing-point alert labels, ' + 'and slider-controlled parameters.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """# LiveTradingChart + +`LiveTradingChart` is the real-time streaming chart component of +dash-mui-charts, a Plotly Dash wrapper around MUI X Charts, built for live +data visualization such as trading feeds and sensor streams. The demo renders +a live OHLCV candlestick simulation with volume bars, a forecast line with +uncertainty bands, and alert labels on significant moves; ticks are generated +by the component itself from a seed, so no Dash interval is needed to stream. + +Basic streaming is Community tier. Pro features — zoom and the range slider +(`showSlider`) — require an MUI X Pro license key passed as `licenseKey`. + +## Basic usage + +```python +from dash_mui_charts import LiveTradingChart + +LiveTradingChart( + id='lt-chart', + height=520, + running=True, # start/stop the simulation + intervalMs=200, # tick speed (ms) + windowSize=80, # visible candles + forecastSize=20, # forecast horizon + initialPrice=100, + volatility=0.02, # candle volatility + drift=0.001, # price trend + showVolume=True, # volume bars + showLabels=False, # price labels on candles + showSlider=True, # zoom preview slider (Pro) + volumeHeightPct=20, +) +``` + +## Simulation control + +Simulation props are live-updatable from Dash callbacks: `running`, +`intervalMs`, `volatility`, `drift`, `windowSize`, `seed`, +`forecastVolatility`, and `resetTrigger` (change its value to restart). + +```python +@callback(Output('lt-chart', 'running'), + Input('start-btn', 'n_clicks'), Input('stop-btn', 'n_clicks'), + prevent_initial_call=True) +def toggle(start, stop): + return ctx.triggered_id == 'start-btn' +``` + +## Alerts + +Swing-point alert detection places labels at extreme highs and lows: + +- `alertLookback` — candles on each side needed to confirm a swing point +- `alertMinDistance` — minimum ticks between alerts +- `maxVisibleAlerts` — cap on visible labels in the window +- `alertFormatter` / `alertFilter` — functions-as-props: pass + `{'function': 'name', 'options': {...}}`, resolved from the + `window.dashMuiChartsFunctions` registry defined in `assets/*.js` + +```python +alertFormatter={'function': 'priceAlertFormatter', 'options': {'decimals': 2}} +``` + +## Outputs + +Output props updated as the simulation runs, for use as callback inputs: + +- `currentPrice` — latest price +- `tickCount` — ticks elapsed +- `alertHistory` — list of alerts with `tick`, `type` ('up' | 'down'), + `price`, and `message` + +## Related pages + +- /linechart-basic — LineChart fundamentals +- /linechart-pro — zoom, pan and slider (Pro) +- /crosshair — crosshair tracking dashboard (CompositeChart) +- /highlighting-sync — synchronized highlights across multiple charts +""" from dash_mui_charts import LiveTradingChart diff --git a/pages/pie.py b/pages/pie.py index 22a74c3..0f039fd 100644 --- a/pages/pie.py +++ b/pages/pie.py @@ -10,7 +10,96 @@ import dash from dash import html, callback, Input, Output -dash.register_page(__name__, path='/pie', name='Pie Chart') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/pie', + name='Pie Chart', + title=PAGE_TITLE_PREFIX + 'PieChart', + description='PieChart demos: basic pie, donut, arc labels, styled slices, ' + 'half-pie gauge, and an interactive example with clickData and ' + 'highlightedItem callbacks.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """# PieChart + +`PieChart` renders pie, donut, and nested/concentric pie charts, wrapping the +MUI X Charts pie chart for Plotly Dash. It is a **Community (free)** component — +no MUI X Pro license required. + +Slices come from a flat `data` list (single series) or a `series` list (nested +pies). Interaction flows back to Dash through `clickData` and `highlightedItem`; +`highlightedItem` also works as an input for synchronized highlighting across +charts. + +## Single series (pie / donut) + +```python +from dash_mui_charts import PieChart + +PieChart( + data=[ + {'id': 'a', 'value': 35, 'label': 'Marketing', 'color': '#1976d2'}, + {'id': 'b', 'value': 25, 'label': 'Engineering'}, + ], + innerRadius=50, # >0 creates donut + outerRadius=100, + cornerRadius=5, + paddingAngle=2, +) +``` + +## Nested pies (multi-series) + +```python +PieChart( + series=[ + {'data': inner_data, 'innerRadius': 0, 'outerRadius': 80, + 'highlightScope': {'fade': 'global', 'highlight': 'item'}}, + {'data': outer_data, 'innerRadius': 90, 'outerRadius': 120, + 'highlightScope': {'fade': 'global', 'highlight': 'item'}}, + ], +) +``` + +## Half-pie / gauge + +```python +PieChart( + data=data, + startAngle=-90, # 12 o'clock position + endAngle=90, # Half circle + innerRadius=50, +) +``` + +## Arc labels + +`arcLabel='value'` (or `'label'` / `'formattedValue'`) draws values on the +slices; `arcLabelMinAngle=30` hides labels on slices smaller than 30 degrees. + +## Controlled highlighting + +```python +PieChart( + id='my-pie', + data=[{'id': 0, 'value': 35, 'label': 'A'}, + {'id': 1, 'value': 25, 'label': 'B'}], + highlightScope={'highlight': 'item', 'fade': 'global'}, + highlightedItem={'seriesId': 'auto-generated-id-0', 'dataIndex': 0}, +) +``` + +Note: MUI X Charts uses `seriesId` (a string such as `"auto-generated-id-0"`), +not `seriesIndex`, in event payloads. + +## Related pages + +- `/pie` — this demo (basic, donut, arc labels, styling, gauge, interactivity) +- `/pie-props` — interactive props playground with nested two-ring pies +""" from dash_mui_charts import PieChart diff --git a/pages/pie_props.py b/pages/pie_props.py index 03a64f5..f2fa039 100644 --- a/pages/pie_props.py +++ b/pages/pie_props.py @@ -12,10 +12,17 @@ import dash_mantine_components as dmc from dash_mui_charts import PieChart +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + dash.register_page( __name__, path='/pie-props', - name='Pie Chart Props' + name='Pie Chart Props', + title=PAGE_TITLE_PREFIX + 'PieChart Props Playground', + description='Interactive playground for nested two-ring PieCharts on ' + 'Titanic survival data with live controls for dimensions, ' + 'radii, ring gap, labels and highlighting.', + image_url=OG_IMAGE_URL, ) # ============================================================================= diff --git a/pages/scatter.py b/pages/scatter.py index 8c86938..f5019f8 100644 --- a/pages/scatter.py +++ b/pages/scatter.py @@ -12,7 +12,99 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output -dash.register_page(__name__, path='/scatter', name='Scatter Chart (0.0.8)') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/scatter', + name='Scatter Chart (0.0.8)', + title=PAGE_TITLE_PREFIX + 'ScatterChart', + description='ScatterChart demos: two-series scatter, custom marker sizes, ' + 'z-axis color mapping, log-scale axes, click events, ' + 'dataset-driven series and axis styling.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """# ScatterChart + +`ScatterChart` renders scatter/point charts with optional z-axis color mapping, +voronoi-based proximity interaction, and dataset-driven data, wrapping the +MUI X Charts scatter chart for Plotly Dash. It is a **Community (free)** +component — no MUI X Pro license required. + +## Multi-series scatter + +```python +from dash_mui_charts import ScatterChart + +ScatterChart( + series=[ + { + 'id': 'group-a', + 'label': 'Group A', + 'data': [{'x': 1, 'y': 5, 'id': 0}, {'x': 2, 'y': 8, 'id': 1}], + 'color': '#1976d2', + 'markerSize': 6, + }, + { + 'id': 'group-b', + 'label': 'Group B', + 'data': [{'x': 1.5, 'y': 3, 'id': 0}, {'x': 3, 'y': 7, 'id': 1}], + 'color': '#e53935', + }, + ], + voronoiMaxRadius=30, # proximity-based hover/click + height=400, +) +``` + +## Z-axis color mapping + +Color points by a third variable — continuous, piecewise, or ordinal: + +```python +ScatterChart( + series=[{'id': 'points', + 'data': [{'x': 1, 'y': 5, 'z': 100, 'id': 0}]}], + zAxis=[{ + 'data': z_values, + 'colorMap': { + 'type': 'continuous', + 'min': 0, 'max': 100, + 'color': ['#e3f2fd', '#1565c0'], + }, + }], +) +``` + +## Dataset-driven + +```python +ScatterChart( + dataset=[{'temp': 20, 'humidity': 65}], + series=[{'id': 'weather', + 'datasetKeys': {'x': 'temp', 'y': 'humidity'}}], +) +``` + +## Click events + +`clickData` reports the clicked point: + +```python +{'type': 'scatter', 'seriesId': 'group-a', 'dataIndex': 2, + 'x': 3.5, 'y': 7.2, 'timestamp': '2025-01-10T...'} +``` + +Axes support `scaleType` including log and sqrt scales; `renderer='svg-batch'` +speeds up large datasets. Note MUI X Charts uses `seriesId`, not `seriesIndex`. + +## Related pages + +- `/scatter` — this demo (multi-series, marker sizes, z-axis colors, log + scales, click events, dataset mode, axis styling) +- `/composite` — layer scatter and line series on one surface +""" from dash_mui_charts import ScatterChart diff --git a/pages/sparkline.py b/pages/sparkline.py index 9be0b50..3578bba 100644 --- a/pages/sparkline.py +++ b/pages/sparkline.py @@ -11,7 +11,77 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output, State, dcc -dash.register_page(__name__, path='/sparkline', name='Sparkline') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/sparkline', + name='Sparkline', + title=PAGE_TITLE_PREFIX + 'SparklineChart', + description='SparklineChart demos: line, area and bar sparklines for KPI ' + 'cards and tables, synced multi-metric hover, custom curves ' + 'and callback-driven data.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """# SparklineChart + +Compact inline charts (default 36px height) that show a data trend without +axes or labels — ideal for dashboards, KPI cards and table cells. This is a +Community component: no MUI X license key required. + +## Basic usage + +```python +from dash_mui_charts import SparklineChart + +SparklineChart( + data=[1, 4, 2, 5, 7, 2, 4, 6], + plotType='line', # or 'bar' + color='#1976d2', + area=True, + height=40, + width=150, +) +``` + +## Key props + +- `data` — list of numbers to plot +- `plotType` — `'line'` (default) or `'bar'` +- `area` — fill the region under the line +- `color`, `height`, `width` — appearance and sizing +- `curve` — line interpolation: `'linear'`, `'natural'`, `'monotoneX'`, + `'step'`, and more +- `showTooltip` / `showHighlight` — hover value display and point marker +- `baseline` and `margin` — area baseline and plot margins + +## Controlled highlight + +Sync the highlighted point with an external component (table row, slider, +another chart): + +```python +SparklineChart( + data=data, + highlightedIndex=selected_index, +) +``` + +## Usage patterns on this page + +- KPI cards — sparkline beside a headline metric +- NPM-style downloads card — area sparkline with hover tooltip +- Synchronized multi-metric dashboard — one hover highlights all sparklines +- Sparklines in a table — one per row for at-a-glance trends +- Callback-triggered data changes — swap `data` from a Dash callback + +## Related pages + +- /sparkline-style — interactive styling playground with live preview and + generated code +- /sparkline-style-advanced — liquid glass (glassmorphism) sparkline card +""" from dash_mui_charts import SparklineChart diff --git a/pages/sparkline_style.py b/pages/sparkline_style.py index 690ef24..c9d27b1 100644 --- a/pages/sparkline_style.py +++ b/pages/sparkline_style.py @@ -7,7 +7,18 @@ import dash_mantine_components as dmc from dash_mui_charts import SparklineChart -dash.register_page(__name__, path='/sparkline-style', name='Sparkline Style') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/sparkline-style', + name='Sparkline Style', + title=PAGE_TITLE_PREFIX + 'Sparkline Styling Playground', + description='Interactive SparklineChart styling playground: tweak color, ' + 'plot type, curve, area, size and highlights with a live ' + 'preview and generated code.', + image_url=OG_IMAGE_URL, +) # Sample data for preview PREVIEW_DATA = [ diff --git a/pages/sparkline_style_advanced.py b/pages/sparkline_style_advanced.py index bb66d55..a1c7c74 100644 --- a/pages/sparkline_style_advanced.py +++ b/pages/sparkline_style_advanced.py @@ -13,11 +13,17 @@ from dash import html, callback, Input, Output, State from dash_mui_charts import SparklineChart +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX dash.register_page( __name__, path='/sparkline-style-advanced', - name='Sparkline Advanced' + name='Sparkline Advanced', + title=PAGE_TITLE_PREFIX + 'Sparkline Advanced Styling', + description='Advanced SparklineChart demo: a liquid glass (glassmorphism) ' + 'stock card with reveal animation, hover opacity effects and ' + 'real-time value display.', + image_url=OG_IMAGE_URL, ) # Stock-like data with realistic movement diff --git a/pages/time_clock.py b/pages/time_clock.py index 7e31f95..4525c10 100644 --- a/pages/time_clock.py +++ b/pages/time_clock.py @@ -12,7 +12,81 @@ import dash_mantine_components as dmc from dash import html, callback, Input, Output, ctx, no_update -dash.register_page(__name__, path='/time-clock', name='Time Clock') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/time-clock', + name='Time Clock', + title=PAGE_TITLE_PREFIX + 'TimeClock', + description='TimeClock demos mirroring the MUI docs: basic usage, ' + 'controlled vs uncontrolled values, disabled/readOnly, view ' + 'configuration and 12h/24h format.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """# TimeClock + +`TimeClock` is an inline clock-face time selector — no text input, popper, or +modal; the user drags the hand or clicks the numbers to pick hours, minutes, +and optionally seconds. It is a **Community (free)** component and the +library's first **Date & Time Pickers** component (wrapping +`@mui/x-date-pickers` 8.24.0 with the dayjs adapter), NOT a chart. + +**String <-> dayjs boundary:** dayjs objects can't cross the Dash boundary, so +values are exchanged as strings — full wall-time ISO +(`"2022-04-17T15:30:00"`) or time-only (`"15:30"` / `"15:30:45"`). Strings are +parsed to dayjs on the way in; on the way out the value is formatted as local +wall-time `YYYY-MM-DDTHH:mm:ss` (not `toISOString()`, to avoid a UTC shift). + +## Usage + +```python +from dash_mui_charts import TimeClock + +TimeClock( + id="clock", + value="15:30:00", # controlled, in/out (wall-time ISO out) + defaultValue="15:30:00", # uncontrolled initial (use instead of value) + views=["hours", "minutes", "seconds"], # default ["hours", "minutes"] + view="hours", # controlled view, in/out + ampm=False, # force 12h/24h (omit = locale default) + minutesStep=5, + minTime="09:00", maxTime="18:00", + disabled=False, readOnly=False, + showViewSwitcher=True, +) +``` + +## Outputs + +`value` (wall-time ISO), `view`, and `timeData`: +`{"hours", "minutes", "seconds", "formatted" ("HH:mm:ss"), "event_timestamp"}`. + +```python +@callback(Output("out", "children"), Input("clock", "timeData")) +def show(td): + return td["formatted"] if td else "-" +``` + +## Notes + +- Function-only MUI props are omitted (not serializable across the Dash + boundary): `shouldDisableTime`, `referenceDate`, `slots`/`slotProps`. + `skipDisabled` is intentionally not exposed — it belongs to the digital + clock variants, not the analog `TimeClock`. +- Recolour via `sx` using internal MUI class names: face `.MuiClock-clock`, + hand `.MuiClockPointer-root` + `.MuiClockPointer-thumb` + centre + `.MuiClock-pin`, digits `.MuiClockNumber-root` / `-selected`, meridiem + `.MuiClock-amButton` / `-pmButton`. + +## Related pages + +- `/time-clock` — this demo (basic, controlled vs uncontrolled, form props, + views, 12h/24h) +- `/time-clock-lab` — dynamic colours, liquid glass theme, stopwatch, and + two-way pairings with dmc.TimeInput / TimePicker / TimeGrid / DateTimePicker +""" from dash_mui_charts import TimeClock diff --git a/pages/time_clock_lab.py b/pages/time_clock_lab.py index 73b4fe7..ba79a4a 100644 --- a/pages/time_clock_lab.py +++ b/pages/time_clock_lab.py @@ -20,7 +20,18 @@ from dash import html, dcc, callback, Input, Output, State, ctx, no_update from dash_iconify import DashIconify -dash.register_page(__name__, path='/time-clock-lab', name='TimeClock Lab') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/time-clock-lab', + name='TimeClock Lab', + title=PAGE_TITLE_PREFIX + 'TimeClock Lab', + description='TimeClock experiments: live recoloring, a liquid-glass ' + 'theme, a stopwatch, and two-way pairings with DMC TimeInput, ' + 'TimePicker, TimeGrid and DateTimePicker.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import TimeClock diff --git a/pages/tree_basic.py b/pages/tree_basic.py index b642306..0b48061 100644 --- a/pages/tree_basic.py +++ b/pages/tree_basic.py @@ -9,7 +9,82 @@ import dash from dash import html, callback, Input, Output -dash.register_page(__name__, path='/tree-basic', name='Tree Basic') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/tree-basic', + name='Tree Basic', + title=PAGE_TITLE_PREFIX + 'TreeView Basics', + description='TreeView basics for Dash: data-driven items, defaultExpandedItems, click and focus tracking, and custom getItemId/getItemLabel accessors.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """\ +# TreeView + +TreeView is the data-driven tree component in dash-mui-charts (Community +license — no key needed). It wraps MUI X `RichTreeView`: you pass one nested +`items` list and the component renders the whole tree, with controlled +selection, expansion, in-place label editing, and per-item disabling +available through props. + +## Item shape + +```python +items = [ + {"id": "docs", "label": "Documents", "children": [ + {"id": "docs-resume", "label": "resume.pdf"}, + {"id": "docs-cover", "label": "cover_letter.docx"}, + ]}, +] +``` + +## Basic usage + +```python +from dash_mui_charts import TreeView + +TreeView( + id="tree", + items=items, + defaultExpandedItems=["docs"], +) +``` + +## Key props + +- `items` — nested list of `{id, label, children}` dicts (the whole tree). +- `defaultExpandedItems` — item ids expanded on load (uncontrolled). +- `expandedItems` / `selectedItems` — controlled equivalents, in/out. +- `getItemId` / `getItemLabel` / `getItemChildren` — string accessors for + when your dicts use different keys, e.g. `getItemId="key"`, + `getItemLabel="name"` maps `{"key": "a", "name": "Alpha"}` items. +- `expandIcon` / `collapseIcon` / `endIcon` — MUI icon names as strings. + +## Outputs (use as callback Inputs) + +- `clickedItem` — `{itemId, event_timestamp}` on every item click. +- `focusedItem` — fires when an item receives focus (click or keyboard nav). +- `expandedItems` / `selectedItems` — update as the user toggles/selects. +- `editedItemLabel` — `{itemId, newLabel}` after inline label editing. + +```python +@callback(Output("out", "children"), Input("tree", "clickedItem")) +def show_click(data): + return data["itemId"] if data else "Click an item..." +``` + +## Related pages + +- /tree-selection — single, multi, checkbox and propagated selection +- /tree-expansion — expansion triggers and controlled expand/collapse +- /tree-editing — inline label editing +- /tree-icons — icons, indentation, height and sx styling +- /tree-disabled — disabled items and focusability +- /tree-simple — SimpleTreeView, the lighter JSX-driven tree +- /tree-pro — TreeViewPro: drag-reorder, lazy loading, per-item controls +""" from dash_mui_charts import TreeView diff --git a/pages/tree_disabled.py b/pages/tree_disabled.py index 57c7c48..db3721c 100644 --- a/pages/tree_disabled.py +++ b/pages/tree_disabled.py @@ -9,7 +9,16 @@ import dash from dash import html, callback, Input, Output -dash.register_page(__name__, path='/tree-disabled', name='Tree Disabled') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/tree-disabled', + name='Tree Disabled', + title=PAGE_TITLE_PREFIX + 'TreeView Disabled Items', + description='TreeView disabled items: disabledItems blocking selection, checkbox propagation that skips them, disabledItemsFocusable, and disabled parent nodes.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import TreeView diff --git a/pages/tree_editing.py b/pages/tree_editing.py index 4c08162..2cf9b37 100644 --- a/pages/tree_editing.py +++ b/pages/tree_editing.py @@ -9,7 +9,16 @@ import dash from dash import html, callback, Input, Output -dash.register_page(__name__, path='/tree-editing', name='Tree Editing') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/tree-editing', + name='Tree Editing', + title=PAGE_TITLE_PREFIX + 'TreeView Label Editing', + description='Inline TreeView label editing: isItemEditable for all items, editableItems for a subset, and editedItemLabel callbacks with an edit history log.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import TreeView diff --git a/pages/tree_expansion.py b/pages/tree_expansion.py index 6eeb41e..478407f 100644 --- a/pages/tree_expansion.py +++ b/pages/tree_expansion.py @@ -9,7 +9,16 @@ import dash from dash import html, callback, Input, Output -dash.register_page(__name__, path='/tree-expansion', name='Tree Expansion') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/tree-expansion', + name='Tree Expansion', + title=PAGE_TITLE_PREFIX + 'TreeView Expansion', + description='TreeView expansion control: content vs iconContainer triggers, controlled expandedItems with expand/collapse-all buttons, and expansion tracking.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import TreeView diff --git a/pages/tree_icons.py b/pages/tree_icons.py index 451c182..ac1f54f 100644 --- a/pages/tree_icons.py +++ b/pages/tree_icons.py @@ -7,7 +7,16 @@ import dash from dash import html -dash.register_page(__name__, path='/tree-icons', name='Tree Icons') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/tree-icons', + name='Tree Icons', + title=PAGE_TITLE_PREFIX + 'TreeView Icons & Appearance', + description='TreeView appearance: custom expand/collapse/end icons, itemChildrenIndentation, fixed height with scrolling, and sx styling.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import TreeView diff --git a/pages/tree_pro.py b/pages/tree_pro.py index e52d246..20770fb 100644 --- a/pages/tree_pro.py +++ b/pages/tree_pro.py @@ -25,7 +25,103 @@ from dash import html, dcc, callback, Input, Output, State, no_update from dash_iconify import DashIconify -dash.register_page(__name__, path='/tree-pro', name='Tree Pro') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/tree-pro', + name='Tree Pro', + title=PAGE_TITLE_PREFIX + 'TreeViewPro', + description='TreeViewPro (MUI X Pro): drag-and-drop reordering, reorderable subsets, and per-item 0-100 sliders plus kebab action menus wired to Dash callbacks.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """\ +# TreeViewPro + +TreeViewPro extends `TreeView` with MUI X Pro features — it requires an +MUI X Pro license key, passed as the `licenseKey` prop (this demo reads it +from the `MUI_PRO_API_KEY` environment variable). It is designed for the +"tree paired with a map / canvas" pattern where each leaf is a layer with +a 0-100 value and a row-level actions menu. + +## Pro features + +```python +import os +from dash_mui_charts import TreeViewPro + +TreeViewPro( + id="layers", + items=LAYER_ITEMS, + licenseKey=os.environ["MUI_PRO_API_KEY"], + itemsReordering=True, # drag-and-drop reorder + reorderableItems=["task-1"], # optional subset that may be reordered + lazyLoading=True, # fire `lazyLoadRequest` on expand + lazyLoadedChildren={...}, # parentId -> [child items] +) +``` + +Outputs from reorder / lazy loading: + +- `itemPositionChanged` — `{itemId, oldPosition, newPosition, + event_timestamp}` per move. +- `orderedItems` — the full live tree after each reorder, so Python can + render the current nested order without re-applying deltas. Falls back + to `items` until the first reorder. +- `lazyLoadRequest` — `{itemId, event_timestamp}` when an unloaded node + is expanded. + +## Per-item slider + kebab controls (`showItemControls=True`) + +```python +TreeViewPro( + showItemControls=True, + controlsItems=LEAF_IDS, # optional subset (leaves only) + sliderValues={"layer-a": 80}, # bidirectional {itemId: value} + sliderMin=0, sliderMax=100, sliderStep=1, + sliderColor="teal", # Mantine palette name, hex, or CSS + kebabMenuItems=[ + {"label": "Duplicate", "value": "duplicate", "icon": "ContentCopy"}, + {"label": "Delete", "value": "delete", "icon": "Delete"}, + ], +) +``` + +- `sliderChange` output — `{itemId, value, event_timestamp}` on slider + commit (mouse-up / touch-end); observe `sliderValues` for live mid-drag + values. +- `kebabAction` output — `{itemId, action, event_timestamp}` when a menu + item is picked; `action` is the chosen entry's `value`. +- `sliderColor` accepts Mantine palette names ("teal", "blue.5"), CSS + literals ("#ff6b6b"), or CSS expressions ("var(--mantine-color-...)"). + +## Kebab submenus, dividers, and per-node menus (v1.4.0) + +`kebabMenuItems` entries may be a leaf `{label, value, icon?}`, a +`{divider: True}` rule, or a submenu `{label, icon?, children: [entries]}` +that opens on hover/click (recursive nesting; a leaf anywhere in the chain +closes the whole menu and fires `kebabAction`). `kebabMenuItemsById` +(`{itemId: [entries]}`) overrides the global `kebabMenuItems` for that +node — same entry shape — so one tree can carry different action sets for +different node types. + +## Also supported (inherited patterns) + +Selection (`multiSelect`, `checkboxSelection`), controlled expansion, +inline label editing (`isItemEditable`, `editedItemLabel` output), and +custom icons work the same as on `TreeView`. + +## Related pages + +- /tree-basic — TreeView, the Community data-driven tree +- /tree-simple — SimpleTreeView, the lighter JSX-driven tree +- /tree-selection — selection modes +- /tree-expansion — expansion triggers and controlled expand/collapse +- /tree-editing — inline label editing +- /tree-icons — icons, indentation, height and sx styling +- /tree-disabled — disabled items and focusability +""" from dash_mui_charts import TreeViewPro diff --git a/pages/tree_selection.py b/pages/tree_selection.py index c2d1c8c..d43762e 100644 --- a/pages/tree_selection.py +++ b/pages/tree_selection.py @@ -9,7 +9,16 @@ import dash from dash import html, callback, Input, Output, State -dash.register_page(__name__, path='/tree-selection', name='Tree Selection') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/tree-selection', + name='Tree Selection', + title=PAGE_TITLE_PREFIX + 'TreeView Selection', + description='TreeView selection modes: single, multi-select, checkbox selection, parent/descendant propagation, disabled selection, and controlled selectedItems.', + image_url=OG_IMAGE_URL, +) from dash_mui_charts import TreeView diff --git a/pages/tree_simple.py b/pages/tree_simple.py index fcfb8a2..5c7c1ed 100644 --- a/pages/tree_simple.py +++ b/pages/tree_simple.py @@ -10,7 +10,86 @@ import dash from dash import html, callback, Input, Output -dash.register_page(__name__, path='/tree-simple', name='Tree Simple') +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +dash.register_page( + __name__, + path='/tree-simple', + name='Tree Simple', + title=PAGE_TITLE_PREFIX + 'SimpleTreeView', + description='SimpleTreeView examples: itemId/label items, checkbox multi-select, per-item disabled flags, custom icons, and the iconContainer expansion trigger.', + image_url=OG_IMAGE_URL, +) + +LLMS_DOC = """\ +# SimpleTreeView + +SimpleTreeView is the lightweight, JSX-driven tree in dash-mui-charts +(Community license — no key needed). Unlike the data-driven `TreeView` +(a `RichTreeView` wrapper with an MUI store), SimpleTreeView renders its +items as `TreeItem` JSX children — a lighter alternative that suits +navigation sidebars and small static trees. This documentation site +dogfoods it: the site's own sidebar navigation is a SimpleTreeView +(`NAV_ITEMS` in app.py). + +## Item shape — itemId, not id + +```python +items = [ + {"itemId": "1", "label": "Applications", "children": [ + {"itemId": "1.1", "label": "Calendar"}, + {"itemId": "1.2", "label": "Chrome"}, + ]}, +] +``` + +Items also support per-item flags directly on the dict: + +- `disabled: True` — item is greyed out and inert. +- `disableSelection: True` — item renders normally but cannot be selected. +- `icon` — an MUI icon name, resolved through the library's icon resolver. + +## Basic usage + +```python +from dash_mui_charts import SimpleTreeView + +SimpleTreeView( + id="nav", + items=items, + defaultExpandedItems=["1"], +) +``` + +## Key props + +- `multiSelect=True` + `checkboxSelection=True` — checkbox multi-select. +- `expandIcon` / `collapseIcon` / `endIcon` — MUI icon names, e.g. + `expandIcon="ChevronRight"`, `collapseIcon="ExpandMore"`, + `endIcon="Description"`. +- `expansionTrigger="iconContainer"` — only clicking the expand/collapse + icon toggles the node (default `"content"` toggles on the whole row). + +## Outputs (use as callback Inputs) + +- `selectedItems` — the current selection (string or list with multiSelect). + +```python +@callback(Output("out", "children"), Input("nav", "selectedItems")) +def show_selection(sel): + return json.dumps(sel) if sel else "Select an item..." +``` + +## Related pages + +- /tree-basic — TreeView, the data-driven RichTreeView wrapper +- /tree-selection — selection modes on TreeView +- /tree-expansion — expansion triggers and controlled expand/collapse +- /tree-editing — inline label editing +- /tree-icons — icons, indentation, height and sx styling +- /tree-disabled — disabled items and focusability +- /tree-pro — TreeViewPro: drag-reorder, lazy loading, per-item controls +""" from dash_mui_charts import SimpleTreeView diff --git a/requirements.txt b/requirements.txt index 981811f..fde9d52 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,5 @@ dash-mantine-components>=2.6.0 dash-iconify>=0.1.2 dash-widgetbot>=0.1.0 requests>=2.27.1 # 2plot.dev ad-network client (lib/ad_client.py) +dash-improve-my-llms>=2.3.4 # llms.txt/robots/sitemap/prerender (network standard) gunicorn>=21.2.0,<23.0.0 diff --git a/templates/index.html b/templates/index.html index 2cde350..2a7c67a 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,9 +1,19 @@ <!DOCTYPE html> <html lang="en"> <head> - <!-- ======================================================================== - ANALYTICS - ======================================================================== --> + <!-- CHARSET MUST BE FIRST: the HTML spec requires the encoding + declaration entirely within the first 1024 bytes, and the per-page + meta block Dash prepends inside its placeholder grows with every + description. Declaring it here pins it near byte 60. The duplicate + charset Dash emits later is deliberate and harmless. + + NEVER NAME A DASH PLACEHOLDER INSIDE A COMMENT: Dash substitutes + placeholders by plain string replacement over the whole template, + comments included, and a named one duplicates its entire block on + every response — invisible in a browser, fully visible to + scrapers. --> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-6WYY9JHMP2"></script> @@ -14,69 +24,115 @@ gtag('config', 'G-6WYY9JHMP2'); </script> - <!-- ======================================================================== - BASIC META TAGS - ======================================================================== --> - - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + <!-- Dash emits, per page, from register_page(): description, og:type, + og:title, og:description, og:image and the full twitter set. Do NOT + restate any of those below — a second, site-level copy is strictly + worse than the page-level one, and which duplicate a scraper honours + is undefined (in practice the later tag wins). The hardcoded title, + og/twitter block, canonical and stale JSON-LD that used to live here + were exactly that failure. --> + {%metas%} + <title>{%title%} + {%css%} - - Dash MUI Charts - Interactive MUI X Charts for Python Dash - - - + - - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + - - + - + + + - - + - - - {%metas%} - {%title%} - {%css%} + + + {%app_entry%} - +
+ {%config%} + {%scripts%} + {%renderer%} +
- - - - - - {%app_entry%} - - - -
- {%config%} - {%scripts%} - {%renderer%} -
From 8e7a2cae30315caef385d49796ac017acd1d67de Mon Sep 17 00:00:00 2001 From: pip-install-python Date: Sat, 1 Aug 2026 19:58:52 -0500 Subject: [PATCH 05/22] Phase 2: social card, internal-UA contract, app id muicharts, bulletin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scripts/make_social_card.py (boilerplate template; this site's MUI-blue palette + area-chart mark, upscale-to-fit for the 180px icon) renders the 1200x630 card. HARD GATE outstanding: hand-upload to cdn.2plot.ai/github_assets/muicharts.2plot.dev.png + verify 200/IHDR before the og:image deploy. Internal-traffic contract: lib/analytics.record drops 2plot-internal UAs at write time (before bot classification); the rollup POST and the ad-client session send internal_ua(...) outbound. App id converges on the directory key "muicharts": traffic_report APP_KEY, ad_client AD_APP_ID default, bulletin app_id, /healthz. verify_traffic assertions updated + a write-time drop check added. NOTE: 2plotai's traffic sink still keys this app "charts" — it needs a muicharts fold before deploy or the /traffic series forks. lib/bulletin.py (boilerplate pattern, app_id from traffic_report): opt-in via NETWORK_BULLETIN_URL on the SERVICE; boot line prints wired/off. Gates: verify_traffic all green (incl. hub-verifier round-trip with the new id), route parity GREEN. Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 21 ++++ app.py | 10 ++ lib/ad_client.py | 11 +- lib/analytics.py | 8 ++ lib/bulletin.py | 79 +++++++++++++ lib/traffic_report.py | 11 +- scripts/make_social_card.py | 225 ++++++++++++++++++++++++++++++++++++ verify_traffic.py | 17 ++- 8 files changed, 376 insertions(+), 6 deletions(-) create mode 100644 lib/bulletin.py create mode 100644 scripts/make_social_card.py diff --git a/CHANGELOG.md b/CHANGELOG.md index e46f920..dbcba83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Network-standard pass — Phase 2 (card + traffic + app id + bulletin) + +- **Social card generated** — `scripts/make_social_card.py` (boilerplate + template, this site's MUI-blue palette and area-chart mark) renders + `build/social-cards/muicharts.2plot.dev.png`, 1200×630. HARD GATE + outstanding: hand-upload to cdn.2plot.ai/github_assets/ and verify + 200 + IHDR before the og:image deploy. +- **Internal-traffic contract, both halves** — `lib/analytics.record` + drops `2plot-internal` UAs at write time, before bot classification; + the hourly rollup POST and every ad-server fetch now send + `internal_ua(...)` so the hub stops counting this app as a + python-requests bot. +- **One short app id: `muicharts`** — `traffic_report.APP_KEY`, + `ad_client.AD_APP_ID` default, bulletin app_id and /healthz all + converge on the directory key (legacy "dash-mui-charts" folds in at the + hub). NOTE: the 2plot.ai traffic sink still keys this app "charts" and + must gain a muicharts fold before deploy or its series forks. +- **Bulletin wired opt-in** — `lib/bulletin.py`; boot log states wired/off. + `NETWORK_BULLETIN_URL` must be set on the Render SERVICE (blueprint + envVars only apply on Blueprint sync). + ### Network-standard pass — Phase 1 (identity + llms surfaces) - **One brand, every surface** — `lib/constants.py` (SITE_BRAND diff --git a/app.py b/app.py index 787c88e..f7264f8 100644 --- a/app.py +++ b/app.py @@ -155,6 +155,16 @@ def _track_document_request(): add_llms_routes(app, LLMSConfig(warn_missing_llms_doc=True)) +# The hub's announcement feed, rendered in this site's llms.txt viewer +# header. Opt-in: with NETWORK_BULLETIN_URL unset it wires nothing and the +# viewer renders the package's built-in tips. The boot line says which of +# the two states this process is in — an announcement that never appears +# is not a symptom anyone notices. +from lib import bulletin # noqa: E402 + +print(f"[muicharts] network bulletin: " + f"{'wired -> ' + (bulletin.url() or '') if bulletin.configure() else 'off (NETWORK_BULLETIN_URL unset)'}") + # --------------------------------------------------------------------------- # Navigation tree items — groups use "group-*" ids, leaves use page paths # --------------------------------------------------------------------------- diff --git a/lib/ad_client.py b/lib/ad_client.py index 4b07e1d..3c66481 100644 --- a/lib/ad_client.py +++ b/lib/ad_client.py @@ -41,11 +41,20 @@ logger = logging.getLogger(__name__) AD_SERVER_URL = os.environ.get("AD_SERVER_URL", "https://2plot.dev").rstrip("/") -APP_ID = os.environ.get("AD_APP_ID", "dash-mui-charts") +# The short directory key (STANDARD §5). The hub folds the legacy +# "dash-mui-charts" spelling at ingest, so old deployments keep working. +APP_ID = os.environ.get("AD_APP_ID", "muicharts") _TIMEOUT = 2 # seconds per fetch — never stall a page view longer _COOLDOWN = 60 # seconds to skip fetches after a failure _session = requests.Session() +# Internal-traffic contract: without this the hub's own tracker counts every +# page view here as a "python-requests" bot hit on 2plot.dev. +try: + from lib.constants import internal_ua + _session.headers["User-Agent"] = internal_ua("ad-client") +except Exception: # pragma: no cover — ad serving must survive a bad import + pass _breaker_lock = threading.Lock() _last_failure = 0.0 diff --git a/lib/analytics.py b/lib/analytics.py index 57326d4..d59a459 100644 --- a/lib/analytics.py +++ b/lib/analytics.py @@ -140,6 +140,14 @@ def record(path: str | None, user_agent: str | None, ip: str | None, source: str = "doc", country: str | None = None) -> None: """Append one hit. Never raises — analytics must not break a page view.""" try: + # The network's internal-traffic contract, applied at WRITE time, + # before bot classification: a UA carrying the token is 2plot + # machinery talking to itself (hub health sweeps, CI batteries, + # smoke probes) and is counted NOWHERE — not as a bot, not ever. + from lib.constants import INTERNAL_UA_TOKEN + + if INTERNAL_UA_TOKEN in (user_agent or "").lower(): + return if not trackable_path(path): return row = { diff --git a/lib/bulletin.py b/lib/bulletin.py new file mode 100644 index 0000000..0f62ec6 --- /dev/null +++ b/lib/bulletin.py @@ -0,0 +1,79 @@ +"""Network bulletin — hub-published tips and announcements. + +Adapted from the boilerplate's template copy (its ``app_id()`` reads +``lib.satellite_reporter``; this repo's reporter is ``lib.traffic_report``). + +The hub (2plot.dev) serves one JSON document at ``/api/network/bulletin`` +and every satellite renders it in the header of its llms.txt viewer: a +twenty-site network says "here is what changed" once, in one place. + +The wiring is a function that returns whether it wired, and app.py prints +that at boot — the boilerplate shipped this commented out for weeks against +a hub endpoint that was already serving, and an announcement that never +appears is not a symptom anyone notices. + +Env: + NETWORK_BULLETIN_URL the hub endpoint. Absent -> feature off, silently. + Must be set on the Render SERVICE, not only in + render.yaml — blueprint envVars apply on + Blueprint sync, not git-push autodeploys. + NETWORK_BULLETIN_TTL_S seconds a cached bulletin stays fresh (default 900) +""" + +from __future__ import annotations + +import os +from typing import Optional + +DEFAULT_TTL_S = 900.0 + +# The hub endpoint, for .env.example and the docs to copy from. Not a +# default — configure() requires the env var, because a satellite that +# silently starts calling a hub it was never pointed at is the kind of +# surprise a template must not ship. +HUB_BULLETIN_URL = "https://2plot.dev/api/network/bulletin" + + +def url() -> Optional[str]: + return os.environ.get("NETWORK_BULLETIN_URL") or None + + +def _ttl() -> float: + try: + return max(60.0, float(os.environ.get("NETWORK_BULLETIN_TTL_S", + DEFAULT_TTL_S))) + except (TypeError, ValueError): + return DEFAULT_TTL_S + + +def app_id() -> str: + """This app's key in the hub's network directory. + + Reused from ``lib.traffic_report.APP_KEY`` rather than hard-coded, so + the traffic rollups and the bulletin fetches identify this satellite + the same way on every hub surface. + """ + from lib.traffic_report import APP_KEY + + return APP_KEY + + +def configure() -> bool: + """Point the package at the hub's bulletin. Returns whether it did. + + Fail-open in both directions: with no URL the feature is off and the + llms viewer still renders on the package's built-in tips; with an + unreachable URL the package's client degrades silently — a hub outage + must not take the documentation down with it. + """ + endpoint = url() + if not endpoint: + return False + + try: + from dash_improve_my_llms import configure_bulletin + except ImportError: # pragma: no cover - older releases lack the feature + return False + + configure_bulletin(url=endpoint, ttl=_ttl(), app_id=app_id()) + return True diff --git a/lib/traffic_report.py b/lib/traffic_report.py index c7662b3..9d61733 100644 --- a/lib/traffic_report.py +++ b/lib/traffic_report.py @@ -64,7 +64,11 @@ logger = logging.getLogger(__name__) -APP_KEY = "charts" # our key in the hub's network directory +# Our key on every hub surface — the subdomain slug, per STANDARD §5. The +# pip-docs+ hub already keys this app "muicharts" (legacy "dash-mui-charts" +# folds in at ingest); the 2plot.ai traffic sink must gain the same fold +# before this ships, or its /traffic series forks from the old "charts" row. +APP_KEY = "muicharts" SESSION_GAP_S = 30 * 60 # the hub's session-split rule — keep in sync REPORT_INTERVAL_S = 60 * 60 _STARTUP_DELAY_S = 90 # let the app settle before the first POST @@ -274,9 +278,14 @@ def report_traffic(rollup: dict, *, secret: str | None = None, raise RuntimeError("CROSS_APP_WEBHOOK_SECRET unset") body = json.dumps(rollup).encode() ts = str(int(time.time())) + from lib.constants import internal_ua + req = urllib.request.Request( f"{hub or hub_url()}/api/satellite/traffic", data=body, headers={"Content-Type": "application/json", + # Internal-traffic contract: the hub drops this from its + # own analytics instead of counting us as a bot. + "User-Agent": internal_ua("traffic-report"), "X-AI-Canvas-Timestamp": ts, "X-AI-Canvas-Signature": sign(body, ts, secret)}) with urllib.request.urlopen(req, timeout=timeout) as r: diff --git a/scripts/make_social_card.py b/scripts/make_social_card.py new file mode 100644 index 0000000..a52bd0c --- /dev/null +++ b/scripts/make_social_card.py @@ -0,0 +1,225 @@ +#!/usr/bin/env python3 +"""Render the 1200x630 social card for muicharts.2plot.dev. + + python scripts/make_social_card.py # defaults, this site + python scripts/make_social_card.py --open # ...and preview it + +Adapted from the boilerplate's template copy (satellites pass their own +values so every card in the network is framed identically). Divergences for +this repo: the accent is this site's MUI blue (#1976d2, the template's +theme-color) instead of the boilerplate's manifest teal; artwork smaller +than the art box is upscaled to fit (this site's brand mark is the 180px +area-chart touch icon); and the default artwork/tagline are this site's. + +Output goes to `build/social-cards/.png`, which is gitignored. The +card is NOT served by the app — publish it BY HAND to the CDN: + + https://cdn.2plot.ai/github_assets/.png + +That is the network rule (STANDARD §3): a card served by the app itself is +fetched by the scraper at unfurl time, and on a cold free-tier container +that request times out — the preview renders blank, once, permanently, +because platforms cache the miss. The CDN has no cold start. HARD GATE: +verify the CDN object answers 200 with IHDR 1200x630 (read BYTES — a text +decode destroys the PNG header) BEFORE deploying code whose og:image points +there. + +Pillow is a build-time dependency only, deliberately absent from +requirements.txt: nothing at runtime renders images. +""" +from __future__ import annotations + +import argparse +import subprocess +import sys +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parent.parent +sys.path.insert(0, str(REPO_ROOT)) + +try: + from PIL import Image, ImageDraw, ImageFont +except ImportError: # pragma: no cover - the one dependency, named clearly + sys.exit("This script needs Pillow:\n pip install Pillow") + +# Card geometry. WIDTH/HEIGHT are the contract; everything else is derived. +WIDTH, HEIGHT = 1200, 630 +PAD = 72 +ART_BOX = 430 # the square the artwork is fitted inside, right-hand side +RULE_W = 6 # the accent bar under the brand + +# Palette. Accent = the site's theme-color (templates/index.html), the MUI +# blue every chart demo defaults to — card, browser chrome and charts agree. +BG_TOP = (26, 27, 30) # #1a1b1e +BG_BOTTOM = (17, 20, 26) # a shade deeper, for a gradient with a direction +ACCENT = (25, 118, 210) # #1976d2 +TEXT = (245, 246, 247) +MUTED = (150, 158, 168) + +# Font families in preference order: macOS ships the first group, +# Debian/Ubuntu CI images the second. No bundled font on purpose. +FONT_CANDIDATES = { + "bold": [ + "/System/Library/Fonts/Supplemental/Arial Bold.ttf", + "/System/Library/Fonts/HelveticaNeue.ttc", + "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", + "/usr/share/fonts/truetype/liberation/LiberationSans-Bold.ttf", + ], + "regular": [ + "/System/Library/Fonts/Supplemental/Arial.ttf", + "/System/Library/Fonts/Helvetica.ttc", + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", + "/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf", + ], + "mono": [ + "/System/Library/Fonts/Menlo.ttc", + "/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf", + "/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf", + ], +} + + +def load_font(kind: str, size: int): + for path in FONT_CANDIDATES[kind]: + if Path(path).exists(): + try: + return ImageFont.truetype(path, size) + except OSError: + continue + print(f"[card] WARNING: no {kind} system font found — falling back to " + "Pillow's built-in, which will look wrong. Install DejaVu or " + "Liberation fonts.", file=sys.stderr) + try: + return ImageFont.load_default(size=size) + except TypeError: # pragma: no cover - Pillow < 10.1 + return ImageFont.load_default() + + +def vertical_gradient(size, top, bottom): + """A one-pixel-wide gradient stretched across the canvas.""" + w, h = size + strip = Image.new("RGB", (1, h)) + for y in range(h): + t = y / max(1, h - 1) + strip.putpixel((0, y), tuple( + round(top[i] + (bottom[i] - top[i]) * t) for i in range(3) + )) + return strip.resize((w, h), Image.BILINEAR) + + +def wrap(draw, text, font, max_width): + """Greedy word wrap against measured pixel width, not a character count.""" + words, lines, current = text.split(), [], "" + for word in words: + trial = f"{current} {word}".strip() + if draw.textlength(trial, font=font) <= max_width or not current: + current = trial + else: + lines.append(current) + current = word + if current: + lines.append(current) + return lines + + +def build_card(artwork: Path, brand: str, tagline: str, domain: str) -> Image.Image: + card = vertical_gradient((WIDTH, HEIGHT), BG_TOP, BG_BOTTOM).convert("RGBA") + draw = ImageDraw.Draw(card) + + # --- artwork, right ---------------------------------------------------- + art = Image.open(artwork).convert("RGBA") + bbox = art.getchannel("A").getbbox() + if bbox: + art = art.crop(bbox) + if max(art.size) < ART_BOX: + # thumbnail() only shrinks; this site's mark is a 180px icon, so + # scale UP to fill the box (flat artwork upscales cleanly). + scale = ART_BOX / max(art.size) + art = art.resize((round(art.width * scale), round(art.height * scale)), + Image.LANCZOS) + art.thumbnail((ART_BOX, ART_BOX), Image.LANCZOS) + art_x = WIDTH - PAD - ART_BOX + (ART_BOX - art.width) // 2 + art_y = (HEIGHT - art.height) // 2 + card.alpha_composite(art, (art_x, art_y)) + + # --- text, left -------------------------------------------------------- + text_width = WIDTH - (PAD * 2) - ART_BOX - 48 + + brand_font = load_font("bold", 62) + tagline_font = load_font("regular", 29) + domain_font = load_font("mono", 25) + + brand_lines = wrap(draw, brand, brand_font, text_width) + if len(brand_lines) > 2: + brand_font = load_font("bold", 50) + brand_lines = wrap(draw, brand, brand_font, text_width) + + tagline_lines = wrap(draw, tagline, tagline_font, text_width)[:3] + + brand_lh, tagline_lh = 74, 40 + block_h = (len(brand_lines) * brand_lh) + 26 + (len(tagline_lines) * tagline_lh) + y = (HEIGHT - block_h - 60) // 2 + + draw.rounded_rectangle( + [PAD, y + 6, PAD + RULE_W, y + block_h - 10], radius=RULE_W // 2, fill=ACCENT + ) + text_x = PAD + RULE_W + 28 + + for line in brand_lines: + draw.text((text_x, y), line, font=brand_font, fill=TEXT) + y += brand_lh + y += 26 + for line in tagline_lines: + draw.text((text_x, y), line, font=tagline_font, fill=MUTED) + y += tagline_lh + + draw.text((text_x, HEIGHT - PAD - 26), domain, font=domain_font, fill=ACCENT) + + return card.convert("RGB") + + +def main() -> int: + from lib.constants import BASE_URL, SITE_BRAND + + default_domain = BASE_URL.split("://", 1)[-1].rstrip("/") + + ap = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + ap.add_argument("--artwork", default="assets/apple-touch-icon_areachart.png", + help="source image, transparent PNG (default: %(default)s)") + ap.add_argument("--brand", default=SITE_BRAND.split(" — ")[0], + help="headline (default: the brand, minus its tagline)") + ap.add_argument("--tagline", + default="13 MUI X chart, tree and picker components for " + "Plotly Dash — with live interactive docs.") + ap.add_argument("--domain", default=default_domain) + ap.add_argument("--out", default=None, + help="default: build/social-cards/.png") + ap.add_argument("--open", action="store_true", help="preview when done (macOS)") + args = ap.parse_args() + + artwork = (REPO_ROOT / args.artwork) if not Path(args.artwork).is_absolute() \ + else Path(args.artwork) + if not artwork.exists(): + return print(f"artwork not found: {artwork}", file=sys.stderr) or 1 + + out = Path(args.out) if args.out else \ + REPO_ROOT / "build" / "social-cards" / f"{args.domain}.png" + out.parent.mkdir(parents=True, exist_ok=True) + + card = build_card(artwork, args.brand, args.tagline, args.domain) + card.save(out, "PNG", optimize=True) + + kb = out.stat().st_size // 1024 + print(f"[card] {out.relative_to(REPO_ROOT)} {card.width}x{card.height} {kb} KB") + print(f"[card] ratio {card.width / card.height:.2f}:1") + print(f"[card] publish to: https://cdn.2plot.ai/github_assets/{args.domain}.png") + print("[card] HARD GATE: verify 200 + IHDR 1200x630 at that URL before " + "deploying code whose og:image points there.") + + if args.open and sys.platform == "darwin": + subprocess.run(["open", str(out)], check=False) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/verify_traffic.py b/verify_traffic.py index cc53754..64b54f7 100644 --- a/verify_traffic.py +++ b/verify_traffic.py @@ -53,6 +53,14 @@ def check(name, cond, detail=""): check("recorder skips probes, assets and Dash plumbing", analytics.load_day() == [], analytics.load_day()) +from lib.constants import INTERNAL_UA # noqa: E402 + +analytics.record("/scatter", INTERNAL_UA, "10.0.0.9", source="spa") +analytics.record("/scatter", f"{INTERNAL_UA} smoke-battery", "10.0.0.9", + source="doc") +check("internal-UA traffic is dropped at write time (network contract)", + analytics.load_day() == [], analytics.load_day()) + check("bot UAs classified like the hub", all(analytics.is_bot(ua) for ua in ("Googlebot/2.1", "ClaudeBot/1.0", "python-requests/2.31", "curl/8")) @@ -125,8 +133,8 @@ def row(minutes, path, source="spa", ua="Mozilla/5.0 (Macintosh)", check("bot page views stay out of pages", all(p["path"] != "/scatter" or p["hits"] == 1 for p in r["pages"]), r["pages"]) -check("payload carries app=charts and a YYYY-MM-DD date", - r["app"] == "charts" and len(r["date"]) == 10, r) +check("payload carries app=muicharts and a YYYY-MM-DD date", + r["app"] == "muicharts" and len(r["date"]) == 10, r) empty = tr.build_rollup("1999-01-01", geo=False) check("a day with no traffic is a valid zero rollup", @@ -146,7 +154,8 @@ def row(minutes, path, source="spa", ua="Mozilla/5.0 (Macintosh)", hz = client.get("/healthz") check("GET /healthz answers the hub's sweep without a Dash render", - hz.status_code == 200 and hz.get_json() == {"ok": True, "app": "charts"}, + hz.status_code == 200 + and hz.get_json() == {"ok": True, "app": "muicharts"}, hz.data[:80]) before = len(analytics.load_day()) @@ -220,7 +229,7 @@ def row(minutes, path, source="spa", ua="Mozilla/5.0 (Macintosh)", check("the hub's verifier accepts our signed rollup", status == 200 and reply.get("ok"), (status, reply)) check("every v2 field survives the hub's validation and caps", - stored.get("app") == "charts" + stored.get("app") == "muicharts" and stored.get("human_hits") == r["human_hits"] and stored.get("visitors") == r["visitors"] and stored.get("sessions") == r["sessions"] From 1da4e7c01e8b6926ce10658ee6ba628015b1fba8 Mon Sep 17 00:00:00 2001 From: pip-install-python Date: Sun, 2 Aug 2026 12:34:01 -0500 Subject: [PATCH 06/22] Phase 3: secretless test suite, CI/CD, tag-gated release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tests/ (80 tests, zero secrets by design — the 17 Pro pages degrading to their license banners IS the test): site identity, social card + template division rules, version parity (the five-way drift fix), route smoke + preservation invariants (url Location contract, SimpleTreeView nav, ad-slot fork, asset contracts), internal-traffic contract both halves, and the SPA/doc counting rule as executable arithmetic. .github/workflows mirroring dash-email, adapted: ci.yml (flake8 with a budgeted pages/ debt ledger + actionlint, secretless pytest + gunicorn boot + battery, docker build/boot/battery with in-image version fingerprints, Dash 4.1.0-4.4.1 x py3.10/3.12/3.13 matrix with Node 20 npm ci + build + validate-init, wheel build + clean-venv verify + a measured dash==3.3.0 floor install, package x py3.9-3.13, JS parse, advisory pip-audit); cd.yml (main -> CI -> Render hook -> 120s settle + 5 sustained healthz 200s -> network_smoke + smoke_live against the live domain); release.yml (v* tag -> check_release gate -> OIDC trusted publishing, no stored token). scripts/: network_smoke.py (per-site block: this brand's H1, /sparkline/llms.txt, hidden canaries — battery verified 9/9 in-process), smoke_live.py (canonical copy, LESSONS §21 wake loop), check_release.py, smoke_test.py (the matrix gate: 40 routes, 200s, >=150 chart mounts, node parse of every JS artifact). Two Dash floors made explicit and measured: the site needs >=4.1 (dimll pins dash<5,>=4.1; production already resolves 4.4.x — route parity verified byte-identical under 4.4.1), the package needs >=3.3 (setup.py raised from the unmeasured >=3.0.0; python_requires >=3.9, 3.13 added). gunicorn floor >=23 closes CVE-2024-6827/CVE-2024-1135, asserted inside the Docker image. Route parity GREEN after this phase: 40 routes, 194 mounts, 113 callbacks, identical to baseline. Co-Authored-By: Claude Fable 5 --- .claude/CLAUDE.md | 19 ++ .claude/PYPI_PUBLISH_PLAN.md | 12 + .flake8 | 34 +++ .github/workflows/cd.yml | 117 ++++++++ .github/workflows/ci.yml | 486 ++++++++++++++++++++++++++++++++ .github/workflows/release.yml | 154 +++++++++++ CHANGELOG.md | 57 ++++ app.py | 3 +- lib/analytics.py | 4 +- requirements.txt | 2 +- scripts/check_release.py | 289 +++++++++++++++++++ scripts/network_smoke.py | 291 +++++++++++++++++++ scripts/smoke_live.py | 492 +++++++++++++++++++++++++++++++++ scripts/smoke_test.py | 148 ++++++++++ setup.py | 13 +- tests/conftest.py | 204 ++++++++++++++ tests/test_internal_traffic.py | 164 +++++++++++ tests/test_pages_smoke.py | 227 +++++++++++++++ tests/test_site_identity.py | 185 +++++++++++++ tests/test_social_card.py | 259 +++++++++++++++++ tests/test_traffic_counting.py | 123 +++++++++ tests/test_version_parity.py | 125 +++++++++ 22 files changed, 3400 insertions(+), 8 deletions(-) create mode 100644 .flake8 create mode 100644 .github/workflows/cd.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml create mode 100644 scripts/check_release.py create mode 100644 scripts/network_smoke.py create mode 100644 scripts/smoke_live.py create mode 100644 scripts/smoke_test.py create mode 100644 tests/conftest.py create mode 100644 tests/test_internal_traffic.py create mode 100644 tests/test_pages_smoke.py create mode 100644 tests/test_site_identity.py create mode 100644 tests/test_social_card.py create mode 100644 tests/test_traffic_counting.py create mode 100644 tests/test_version_parity.py diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index a7609ae..dbc9c47 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -129,6 +129,22 @@ python app.py # Run standalone example python usage.py + +# Test suite (zero secrets by design — Pro pages must degrade to banners) +pytest tests -q + +# Route-parity gate (needs MUI_PRO_API_KEY; run after any change to app.py +# or pages/, keep green through every migration phase) +python scripts/route_parity.py + +# Compatibility smoke (what ci.yml's Dash matrix runs) +python scripts/smoke_test.py + +# Pre-release consistency (versions, bundle freshness, packaging) +python scripts/check_release.py + +# Lint (config + budgeted pages/ debt ledger in .flake8) +flake8 lib pages tests scripts app.py usage.py verify_traffic.py _validate_init.py ``` --- @@ -143,6 +159,9 @@ python usage.py | `pages/*.py` | Demo page examples | | `app.py` | Main Dash application | | `setup.py` | Python package configuration | +| `tests/` | Secretless suite: identity, social card, version parity, route smoke, analytics counting rule | +| `scripts/route_parity.py` | Exact-tree migration gate (needs MUI_PRO_API_KEY) | +| `.github/workflows/` | ci.yml (lint/tests/docker/Dash matrix/wheel), cd.yml (deploy + live battery), release.yml (tag → PyPI via OIDC) | --- diff --git a/.claude/PYPI_PUBLISH_PLAN.md b/.claude/PYPI_PUBLISH_PLAN.md index c8908cf..8373a55 100644 --- a/.claude/PYPI_PUBLISH_PLAN.md +++ b/.claude/PYPI_PUBLISH_PLAN.md @@ -1,5 +1,17 @@ # PyPI Publishing Plan for dash-mui-charts +> **2026-08-02 — the mechanics below are now automated.** +> `.github/workflows/release.yml` publishes on any `v*` tag push via PyPI +> **trusted publishing (OIDC)** — no API token, no `~/.pypirc`. It gates on +> the tag matching `package.json`, `scripts/check_release.py` passing, and a +> smoke test, then builds, publishes, and opens a GitHub Release from the +> CHANGELOG section. One-time PyPI setup: add a pending publisher (owner +> `pip-install-python`, repo `dash-mui-charts`, workflow `release.yml`, +> environment `pypi`). The manual twine flow below remains as reference and +> as the fallback if Actions is unavailable. Note PyPI currently serves +> 1.2.3 while the repo is at 1.4.0 — cutting 1.3.0/1.4.0 is a release +> decision made by pushing the tag. + This document outlines the steps to build and publish `dash-mui-charts` to PyPI using twine. --- diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000..ea0849b --- /dev/null +++ b/.flake8 @@ -0,0 +1,34 @@ +[flake8] +# Line length is not policed: this repo's comments carry a lot of explanation +# and reflowing them to 79 columns would make them harder to read, not easier. +max-line-length = 120 +extend-ignore = E203, W503, E501 +exclude = + .git, + .venv, + venv, + __pycache__, + node_modules, + build, + dist, + # Generated wrappers — dash-generate-components owns their style. + dash_mui_charts, + dash_mui_charts.egg-info, + src, + analytics, + .idea, +per-file-ignores = + # app.py imports first-party modules AFTER load_dotenv() on purpose — + # lib/constants.py reads APP_BASE_URL at import time, so loading the + # .env afterwards would silently hand it the default. + app.py: E402 + # BUDGETED FIRST-RUN DEBT (2026-08-02, ~75 findings): the demo pages are + # the product's living examples and the route-parity gate + # (scripts/route_parity.py) pins their layout trees — a style sweep + # through 40 of them belongs in its own change, verified against that + # gate, not in the commit that introduces CI. E402 is also the standing + # pages idiom (dash.register_page before the imports the layout needs). + # Tighten by deleting codes here as pages get touched for real reasons. + pages/*.py: E402, F401, F541, E302, E303, E305, E114, E116, E128, W292 + # usage.py is a standalone example kept deliberately minimal. + usage.py: E402, F401 diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..b00a0f2 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,117 @@ +name: CD + +# Deploys muicharts.2plot.dev, then checks the live site. +# +# The deploy step POSTs to a Render deploy hook held in the +# RENDER_DEPLOY_HOOK_URL secret. Without that secret the step is skipped and +# the workflow goes straight to verification — the right behaviour here, +# because render.yaml sets `autoDeploy: true` and Render is already deploying +# from GitHub on its own. The hook only makes the timing explicit so the wait +# loop below knows what it is waiting for. +on: + push: + branches: [main] + workflow_dispatch: + inputs: + target_url: + description: Site to verify (skips the deploy when set to another host) + required: false + type: string + +permissions: + contents: read + +concurrency: + group: cd-production + cancel-in-progress: false + +env: + PIP_DISABLE_PIP_VERSION_CHECK: "1" + SITE_URL: ${{ inputs.target_url || 'https://muicharts.2plot.dev' }} + +jobs: + test: + name: ci + uses: ./.github/workflows/ci.yml + + deploy: + name: deploy to render + needs: [test] + runs-on: ubuntu-latest + # Long enough for the wait loop below (a 120s settle plus up to 40 x 15s) + # and no longer. Without it the job inherits GitHub's six-hour default, + # which is how a platform that never comes back healthy holds the + # `cd-production` concurrency group all day. + timeout-minutes: 20 + environment: + name: production + url: https://muicharts.2plot.dev + outputs: + deployed: ${{ steps.hook.outputs.deployed }} + steps: + - name: Trigger the Render deploy hook + id: hook + env: + HOOK: ${{ secrets.RENDER_DEPLOY_HOOK_URL }} + run: | + if [ -z "$HOOK" ]; then + echo "::notice::RENDER_DEPLOY_HOOK_URL is not set. Skipping the deploy trigger and verifying whatever is currently live." + echo "deployed=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + curl -fsS -X POST "$HOOK" > /dev/null + echo "deployed=true" >> "$GITHUB_OUTPUT" + + - name: Wait for the new build to serve traffic + if: steps.hook.outputs.deployed == 'true' + run: | + # Render swaps instances rather than restarting in place, so the + # old build answers /healthz throughout. Waiting for one 200 + # proves nothing (LESSONS §16); give the build time, then require + # sustained health. + sleep 120 + ok=0 + for _ in $(seq 1 40); do + if curl -fsS "$SITE_URL/healthz" > /dev/null; then + ok=$((ok + 1)) + [ "$ok" -ge 5 ] && break + else + ok=0 + fi + sleep 15 + done + if [ "$ok" -lt 5 ]; then + echo "::error::$SITE_URL never became reliably healthy" + exit 1 + fi + + verify: + name: verify the live site + needs: [deploy] + if: always() && needs.deploy.result != 'cancelled' + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + + # The network battery first: it is the same script, with the same + # check names, that CI ran against the container this deploy shipped. + # A name that passed in CI and fails here isolates the fault to the + # deploy. + - name: Network smoke battery + run: python scripts/network_smoke.py --base-url "$SITE_URL" + + # Then the satellite-specific checks the battery does not make: every + # canonical, every crawler body, the social card's real pixels, and + # every peer llms.txt in the directory actually resolving (peers WARN, + # this host FAILS — LESSONS §17). + - name: Smoke-test the deployment + run: python scripts/smoke_live.py "$SITE_URL" + + - name: Report + if: failure() + run: | + echo "::error::Live verification failed for $SITE_URL. Every failure these check for is silent in production: a site identity that fell back to a framework default, a stale dash-improve-my-llms artifact, a canonical on the wrong host, a page serving the JavaScript stub, a blank or reshaped social card, a missing network directory, and dead peer llms.txt links." diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..6eebb40 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,486 @@ +name: CI + +# Two things at once, because this repo is two things: a published component +# library AND the docs site at muicharts.2plot.dev. +# +# library the wheel build, the measured dash>=3.3 package floor, and the +# Python range setup.py claims (3.9-3.13); +# satellite the 2plot network baseline — a secretless pytest run (the 17 +# MUI Pro pages must degrade to their license banners: zero env +# in CI is the proof, LESSONS §18), the real Docker image booted +# and probed by the same battery that runs against production, +# and version fingerprints asserted INSIDE the artifact. +# +# TWO different Dash floors, and conflating them is the easy mistake: +# +# * the PACKAGE needs >= 3.3 — measured by the `package` job's floor venv. +# * the DOCS SITE needs >= 4.1 — dash-improve-my-llms pins `dash<5,>=4.1`, +# so the smoke matrix starts there. (Local dev may sit lower with a +# checked-out dimll; PyPI artifacts cannot.) +# +# Deliberately NOT `push: branches: [main]`. cd.yml runs on that push and its +# first job `uses:` this workflow, so a push to main would start two runs +# that contend for the concurrency group and cancel each other. Pull requests +# get their own CI; `main` is owned by CD. No coverage gap — CD cannot deploy +# without this workflow passing first. +on: + pull_request: + workflow_dispatch: + # Called by cd.yml so a deploy can never ship something the matrix rejected. + workflow_call: + +# Read-only. Nothing here publishes, comments or tags; the deploy lives in +# cd.yml behind a `production` environment and the PyPI release in release.yml. +permissions: + contents: read + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +env: + PIP_DISABLE_PIP_VERSION_CHECK: "1" + # Never let a CI run inherit production behaviour: require_owned_base_url() + # keys off RENDER / APP_ENV=production, and the traffic reporter keys off + # the webhook secret. Both must stay inert here. + APP_ENV: ci + +jobs: + lint: + name: lint + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: pip + - run: pip install flake8 + - name: flake8 + # Config in .flake8 — including the BUDGETED first-run debt ledger + # for pages/*.py. Tighten there, not here. + run: flake8 lib pages tests scripts app.py usage.py verify_traffic.py _validate_init.py + + # The workflows lint themselves. Not belt-and-braces: an invalid + # workflow file is the one defect CI structurally cannot report, + # because the run dies before a job exists to fail. A double-quoted + # string inside a ${{ }} expression is a LEX error that invalidates + # the whole file — it silently killed every CI and CD run on + # boilerplate.2plot.dev for four days (LESSONS §14). + - name: actionlint + run: | + bash <(curl -fsSL https://raw.githubusercontent.com/rhysd/actionlint/v1.7.7/scripts/download-actionlint.bash) 1.7.7 + ./actionlint -color + + docs-tests: + name: Docs site · pytest (zero secrets) + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: pip + + - name: Install the docs site + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install -e . + pip install pytest + + - name: Confirm the pinned dependency versions + run: | + python - <<'PY' + import dash, dash_improve_my_llms as pkg, gunicorn + + def parts(v): + return tuple(int(x) for x in v.split(".")[:3] if x.isdigit()) + + # The SITE floor: dash-improve-my-llms pins dash>=4.1, so this is + # what requirements.txt actually resolves to in production. + assert parts(dash.__version__)[:2] >= (4, 1), dash.__version__ + # 2.3.4 is the network standard: below it resolve_site_title does + # not exist and this site's published identity degrades to app.title. + assert parts(pkg.__version__) >= (2, 3, 4), pkg.__version__ + # 21.x carried two request-smuggling CVEs (CVE-2024-6827, + # CVE-2024-1135); the requirements floor is >=23. + assert parts(gunicorn.__version__)[:2] >= (23, 0), gunicorn.__version__ + print(f"dash {dash.__version__}, dash-improve-my-llms " + f"{pkg.__version__}, gunicorn {gunicorn.__version__}") + PY + + # No MUI_PRO_API_KEY, no CROSS_APP_WEBHOOK_SECRET, no + # NETWORK_BULLETIN_URL here ON PURPOSE. tests/conftest.py pins them + # empty, and the app's degraded postures (license banners on the 17 + # Pro pages, a dormant traffic reporter) are only provable when + # nothing is configured. + - name: Test suite (zero secrets) + run: pytest tests -q + + - name: Boot under a production server + run: | + gunicorn app:server -b 127.0.0.1:8550 --daemon --access-logfile - --error-logfile - + for _ in $(seq 1 30); do + curl -sf http://127.0.0.1:8550/healthz && break + sleep 1 + done + # A page that renders under the test client can still fail under a + # real WSGI worker — different import path, different working + # directory, no test-client conveniences. + curl -sf http://127.0.0.1:8550/ > /dev/null + curl -sf http://127.0.0.1:8550/sparkline > /dev/null + # The battery, against the same server this satellite deploys. + python3 scripts/network_smoke.py --base-url http://127.0.0.1:8550 + + docker: + name: docker image · boot · battery + runs-on: ubuntu-latest + timeout-minutes: 25 + needs: [docs-tests] + steps: + - uses: actions/checkout@v4 + + # The same build Render runs. This is where a dependency-resolution + # failure surfaces — at CI time, not deploy time — and where a missing + # COPY line dies loudly instead of at gunicorn boot (LESSONS §19). + - uses: docker/setup-buildx-action@v3 + - name: Build the production image + uses: docker/build-push-action@v6 + with: + context: . + tags: dash-mui-charts-docs:ci + load: true + cache-from: type=gha + cache-to: type=gha,mode=max + + # pip metadata is invisible from outside a running host, so the + # versions are asserted here, inside the artifact that actually ships. + - name: Version fingerprints inside the image + run: | + docker run --rm dash-mui-charts-docs:ci python -c " + from importlib.metadata import version + + def parts(v): + return tuple(int(x) for x in v.split('.')[:3] if x.isdigit()) + + v = version('dash') + print('dash', v) + assert parts(v)[:2] >= (4, 1), f'expected dash >=4.1, image has {v}' + + v = version('dash-improve-my-llms') + print('dash-improve-my-llms', v) + assert parts(v) >= (2, 3, 4), f'expected >=2.3.4 (resolve_site_title), image has {v}' + + v = version('gunicorn') + print('gunicorn', v) + assert parts(v)[:2] >= (23, 0), f'expected gunicorn>=23 (CVE-2024-6827/-1135), image has {v}' + + import dash_mui_charts + print('dash_mui_charts', dash_mui_charts.__version__, + len(dash_mui_charts.__all__), 'components') + assert len(dash_mui_charts.__all__) == 13 + " + + # Boot with no secrets: the Pro pages fall back to their license + # banners, the traffic reporter stays dormant. What this catches is + # any import-time or preload crash — the class of failure where the + # platform loops the worker and the deploy never goes live. + - name: Boot the container and wait for /healthz + run: | + docker run -d --name docs -p 8550:8550 dash-mui-charts-docs:ci + for i in $(seq 1 60); do + if curl -sf http://127.0.0.1:8550/healthz > /dev/null; then + echo "healthy after ~$((i*2))s" + exit 0 + fi + if [ "$(docker inspect -f '{{.State.Running}}' docs)" != "true" ]; then + echo "container exited during boot:" + docker logs docs + exit 1 + fi + sleep 2 + done + echo "never became healthy; last logs:" + docker logs --tail 100 docs + exit 1 + + # The SAME script CD runs against https://muicharts.2plot.dev, so a + # failure in CI and a failure in production read identically. + - name: Smoke battery against the booted container + run: python3 scripts/network_smoke.py --base-url http://127.0.0.1:8550 + + - name: Container logs (for the record) + if: always() + run: docker logs --tail 40 docs 2>/dev/null || true + + smoke: + name: Docs · Dash ${{ matrix.dash }} · Python ${{ matrix.python }} + runs-on: ubuntu-latest + timeout-minutes: 25 + strategy: + fail-fast: false + matrix: + # The SITE floor (dash-improve-my-llms pins dash>=4.1), the two + # intermediate minors, and the current release. The package's own + # dash>=3.3 floor is measured separately, in the `package` job. + dash: ["4.1.0", "4.2.0", "4.3.0", "4.4.1"] + python: ["3.12"] + include: + # The docs-site Python range, against the current Dash. A full + # cross-product would be 12 jobs for very little extra signal. + - dash: "4.4.1" + python: "3.10" + - dash: "4.4.1" + python: "3.13" + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + cache: pip + + # node is what makes the JS checks real: the matrix rebuilds the + # component bundle and wrappers from source, so a broken webpack + # config or a component that stopped generating fails HERE, per + # supported environment, not on the next release. + - uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Install Dash ${{ matrix.dash }} first + # The version under test goes in BEFORE the rest, so the other + # requirements resolve against it rather than dragging in a newer + # Dash. requirements.txt only floors dash, so pip leaves the pin be. + run: | + python -m pip install --upgrade pip + python -m pip install "dash==${{ matrix.dash }}" + + - name: Install documentation-site requirements + run: python -m pip install -r requirements.txt + + - name: Report the resolved Dash version + # A silent upgrade here would make the whole matrix meaningless. + run: | + RESOLVED=$(python -c "import dash; print(dash.__version__)") + echo "requested=${{ matrix.dash }} resolved=$RESOLVED" + if [ "$RESOLVED" != "${{ matrix.dash }}" ]; then + echo "::warning::Dash resolved to $RESOLVED, not ${{ matrix.dash }}" + fi + + - name: Rebuild the components from source + run: | + npm ci + npm run build + + - name: Validate the generated wrappers + run: npm run validate-init + + - name: Smoke test + run: python scripts/smoke_test.py --json smoke-${{ matrix.dash }}-py${{ matrix.python }}.json + + - uses: actions/upload-artifact@v4 + if: always() + with: + name: smoke-${{ matrix.dash }}-py${{ matrix.python }} + path: smoke-*.json + if-no-files-found: ignore + + package: + name: Build + verify the wheel + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + with: + # check_release.py compares the git commit times of the bundle and + # src/lib/components. A shallow clone can omit the commit that + # last touched one of them, turning the check into a false + # "no git history" skip. + fetch-depth: 0 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Release consistency + # Version drift between package.json and package-info.json, a stale + # bundle, packaging drift. None of these break a test run — this + # repo ran fine for a full cycle advertising five different versions. + run: python scripts/check_release.py + + - name: Build + run: | + python -m pip install --upgrade pip build twine + python -m build + + - name: Check metadata + run: python -m twine check dist/* + + - name: Install the wheel in a clean venv and import it + # The package must work with ONLY `dash` present — nothing from + # requirements.txt, which is the docs site's dependency set. + run: | + python -m venv /tmp/clean + /tmp/clean/bin/pip install --upgrade pip + /tmp/clean/bin/pip install dist/*.whl + /tmp/clean/bin/python - <<'PY' + import pathlib + + import dash_mui_charts as dmx + + print("version:", dmx.__version__) + + bundle = pathlib.Path(dmx.__file__).parent / "dash_mui_charts.min.js" + assert bundle.exists(), "JS bundle missing from the wheel" + print("bundle:", bundle.stat().st_size // 1024, "KB") + + expected = [ + "BarChart", "CandlestickChart", "CompositeChart", "Heatmap", + "LineChart", "LiveTradingChart", "PieChart", "ScatterChart", + "SimpleTreeView", "SparklineChart", "TimeClock", "TreeView", + "TreeViewPro", + ] + for name in expected: + assert hasattr(dmx, name), f"missing component: {name}" + assert sorted(dmx.__all__) == sorted(expected), ( + f"__all__ drift: {sorted(set(dmx.__all__) ^ set(expected))}" + ) + print(f"components OK ({len(expected)})") + + # The wheel must carry the library and nothing else. `lib`, + # `pages` and `assets` are docs-site directories that a careless + # packages= would happily install as top-level packages. + from importlib.metadata import distribution + + top = (distribution("dash_mui_charts").read_text("top_level.txt") or "").split() + assert top == ["dash_mui_charts"], f"wheel installs more than the library: {top}" + print("top_level.txt:", top) + PY + + - name: Measure the dash floor the wheel claims + # setup.py says dash>=3.3.0 — this is the measurement behind that + # number. The docs site cannot go this low (dimll pins >=4.1); the + # package can, and users on Dash 3.3 installs are real. + run: | + python -m venv /tmp/floor + /tmp/floor/bin/pip install --upgrade pip + /tmp/floor/bin/pip install "dash==3.3.0" dist/*.whl + /tmp/floor/bin/python - <<'PY' + import dash + import dash_mui_charts as dmx + + layout = dmx.LineChart( + id="lc", + series=[{"data": [1, 2, 3], "label": "a"}], + xAxis=[{"data": [0, 1, 2]}], + ).to_plotly_json() + for name in dmx.__all__: + cls = getattr(dmx, name) + assert callable(cls), name + print(f"dash={dash.__version__} dash_mui_charts={dmx.__version__} floor OK") + PY + + - name: Assert the wheel version matches package.json + run: | + PY_VER=$(python -c "import json;print(json.load(open('package.json'))['version'])") + WHEEL_VER=$(/tmp/clean/bin/python -c "import dash_mui_charts;print(dash_mui_charts.__version__)") + echo "package.json=$PY_VER installed=$WHEEL_VER" + test "$PY_VER" = "$WHEEL_VER" + + - uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/ + + package-python-range: + name: Package · Python ${{ matrix.python }} + needs: package + runs-on: ubuntu-latest + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + # Every interpreter python_requires in setup.py claims. This is what + # makes that claim measured rather than asserted — and it installs + # ONLY the wheel plus Dash, never the docs requirements, because the + # package's floor is not the docs site's. + python: ["3.9", "3.10", "3.11", "3.12", "3.13"] + steps: + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + - uses: actions/download-artifact@v4 + with: + name: dist + path: dist/ + + - name: Install the wheel (pulls in dash, nothing else) + run: | + python -m pip install --upgrade pip + python -m pip install dist/*.whl + + - name: Import and build a chart layout + run: | + python - <<'PY' + import dash + import dash_mui_charts as dmx + + layout = [ + dmx.LineChart(id="lc", series=[{"data": [1, 2, 3]}], + xAxis=[{"data": [0, 1, 2]}]), + dmx.BarChart(id="bc", series=[{"data": [4, 5, 6]}], + xAxis=[{"scaleType": "band", "data": ["a", "b", "c"]}]), + dmx.PieChart(id="pc", series=[{"data": [ + {"id": 0, "value": 10, "label": "A"}]}]), + dmx.SparklineChart(id="sc", data=[1, 3, 2]), + dmx.SimpleTreeView(id="tv", items=[ + {"itemId": "/", "label": "Home"}]), + dmx.TimeClock(id="tc", value="10:30"), + ] + for component in layout: + component.to_plotly_json() + print(f"dash={dash.__version__} dash_mui_charts={dmx.__version__} " + f"components={len(dmx.__all__)} OK") + PY + + lint-js: + name: JS sources parse + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: "20" + # The committed bundle is what users actually load, and it is a build + # artifact nobody reviews line by line. Parsing it here is the + # cheapest guard against committing a truncated or half-written build. + - name: Parse the committed component bundle + run: | + for f in dash_mui_charts/*.js; do node --check "$f"; done + - name: Parse assets/*.js individually + # These are load-bearing at runtime: muiChartsFunctions.js is the + # functions-as-props registry, 00-loading-theme.js wins the asset + # race by name, 01-nav-restore.js replays the sidebar state. They + # only ever fail in the browser console. + run: | + for f in assets/*.js; do node --check "$f"; done + + pip-audit: + name: pip-audit (advisory) + runs-on: ubuntu-latest + timeout-minutes: 10 + # Advisory on purpose. A CVE in a transitive dependency of a docs site + # is worth knowing about the day it lands, and worth nobody's broken + # build at 2am. The report is the value. + continue-on-error: true + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - run: pip install pip-audit + - run: pip-audit -r requirements.txt --skip-editable diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..c11d56c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,154 @@ +name: Release + +# Tag-driven publish. Push a v* tag and this builds, verifies, publishes to +# PyPI via OIDC trusted publishing, and opens a GitHub Release. +# +# NO API TOKEN IS STORED ANYWHERE. Trusted publishing has PyPI verify a +# short-lived OIDC token minted by GitHub for this specific repo + workflow + +# environment, so there is no long-lived secret to leak or rotate. One-time +# setup on PyPI (see .claude/PYPI_PUBLISH_PLAN.md): +# pypi.org -> dash-mui-charts -> Publishing -> Add a new pending publisher +# Owner: pip-install-python +# Repository: dash-mui-charts +# Workflow name: release.yml +# Environment name: pypi +# +# PyPI currently serves 1.2.3; 1.3.0 and 1.4.0 were built locally but never +# published. Cutting them is a release DECISION, made by pushing the tag — +# this workflow only makes the mechanics safe. +on: + push: + tags: ["v*"] + workflow_dispatch: + inputs: + dry_run: + description: "Build and verify, but publish to TestPyPI instead of PyPI" + type: boolean + default: true + +jobs: + verify: + name: Verify the tag + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + # check_release.py compares git commit times of the bundle and the + # React source; a shallow clone turns that into a false skip. + fetch-depth: 0 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Tag must match the version in package.json + # Catches the classic release mistake: bumping the code but tagging + # the old number (or the reverse). PyPI would happily accept the + # mismatch, and a PyPI filename can never be reused. + if: startsWith(github.ref, 'refs/tags/v') + run: | + TAG="${GITHUB_REF_NAME#v}" + PKG_VER=$(python -c "import json;print(json.load(open('package.json'))['version'])") + echo "tag=$TAG package.json=$PKG_VER" + if [ "$TAG" != "$PKG_VER" ]; then + echo "::error::Tag v$TAG does not match package.json version $PKG_VER" + exit 1 + fi + + - name: Release consistency check + run: python scripts/check_release.py + + build: + name: Build distributions + runs-on: ubuntu-latest + needs: verify + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + # node makes the smoke test's JS syntax checks real — the committed + # bundle is what ships in the wheel, and check_release has already + # proven it fresh; no rebuild happens here. + - uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Smoke test against the current Dash + run: | + python -m pip install --upgrade pip + python -m pip install -r requirements.txt + python scripts/smoke_test.py + + - name: Build + run: | + python -m pip install build twine + python -m build + python -m twine check dist/* + + - uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/ + + publish: + name: Publish to PyPI + needs: build + runs-on: ubuntu-latest + # The environment name must match the pending publisher configured on + # PyPI. Add a required reviewer on this environment in repo settings for + # a human approval gate between the tag and the upload. + environment: + name: pypi + url: https://pypi.org/p/dash-mui-charts + permissions: + # `id-token: write` is what lets GitHub mint the OIDC token PyPI + # checks. Without it trusted publishing fails with an opaque 403. + id-token: write + steps: + - uses: actions/download-artifact@v4 + with: + name: dist + path: dist/ + + - name: Publish to TestPyPI (manual dry run) + if: github.event_name == 'workflow_dispatch' && inputs.dry_run + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ + + - name: Publish to PyPI + if: startsWith(github.ref, 'refs/tags/v') + uses: pypa/gh-action-pypi-publish@release/v1 + + github-release: + name: GitHub Release + needs: publish + if: startsWith(github.ref, 'refs/tags/v') + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + name: dist + path: dist/ + + - name: Extract this version's CHANGELOG section + run: | + VERSION="${GITHUB_REF_NAME#v}" + awk -v v="$VERSION" ' + $0 ~ "^## \\[" v "\\]" {found=1; next} + found && /^## \[/ {exit} + found {print} + ' CHANGELOG.md > release-notes.md + if [ ! -s release-notes.md ]; then + echo "See CHANGELOG.md for details." > release-notes.md + fi + cat release-notes.md + + - uses: softprops/action-gh-release@v2 + with: + body_path: release-notes.md + files: dist/* + generate_release_notes: true diff --git a/CHANGELOG.md b/CHANGELOG.md index dbcba83..ee4ff15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,63 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Network-standard pass — Phase 3 (tests + CI/CD) + +- **tests/ populated (80 tests, ZERO secrets by design)** — the suite runs + exactly as CI's secretless container does, proving the degraded postures: + the 17 MUI Pro pages fall back to license banners instead of dying, the + traffic reporter stays dormant, the bulletin stays off. Files: site + identity (one brand, every surface), social card (per-page image_url + + description, template division rules, the placeholder-in-comment trap), + **version parity** (the fix for the five-way version drift: package.json ↔ + package-info.json ↔ header badge ↔ JSON-LD ↔ noscript, and no surface may + claim "9 components" again), route smoke + preservation invariants (the + `url` Location contract, the SimpleTreeView nav with every leaf routed, + the ad-slot fork, asset contracts), internal-traffic contract (both + halves), and the SPA/doc **counting rule** as executable arithmetic. +- **CI (`ci.yml`)** — lint (flake8 with a budgeted, documented pages/ debt + ledger in `.flake8`, plus actionlint first), secretless pytest + a real + gunicorn boot probed by the network battery, a **Docker job** that builds + the production image, asserts version fingerprints INSIDE it (dash ≥4.1, + dimll ≥2.3.4, gunicorn ≥23) and boots it against the same battery CD runs + (LESSONS §19), a Dash **matrix** (4.1.0/4.2.0/4.3.0/4.4.1 × py3.12 + + 4.4.1 × 3.10/3.13) that rebuilds the components with Node 20 (`npm ci` + + build + validate-init) before smoke-testing, wheel build + clean-venv + verification (13 components, `top_level == dash_mui_charts`, version == + package.json, and a **measured dash==3.3.0 floor install**), a package × + Python 3.9–3.13 range, JS parse checks on the committed bundle and every + asset script, and advisory pip-audit. +- **CD (`cd.yml`)** — main → full CI → Render deploy hook → 120s settle + + 5 consecutive healthz 200s (Render swaps instances; one 200 proves + nothing) → `network_smoke.py` + `smoke_live.py` against the live domain, + including the social card's real pixels. Peer checks warn; own-host + checks fail. +- **Release (`release.yml`)** — tag-gated PyPI publish via OIDC trusted + publishing (no stored token), gated on tag == package.json version and + `scripts/check_release.py`; GitHub Release cut from the CHANGELOG + section. Publishing 1.3.0/1.4.0 remains a decision, not a side effect. +- **Scripts** — `network_smoke.py` (boilerplate battery, per-site block: + this brand's H1, `/sparkline/llms.txt`, hidden-page canaries), + `smoke_live.py` (canonical copy with the LESSONS §21 wake loop), + `check_release.py` (versions, bundle freshness via git timestamps, a + Python class per React component, packaging/SEO/network invariants), + `smoke_test.py` (the matrix's structural gate — 40 routes, 200s, + healthz, ≥150 chart mounts, node parse of every JS artifact). +- **Two Dash floors made explicit and measured** — the DOCS SITE needs + dash ≥4.1 (dash-improve-my-llms pins `dash<5,>=4.1`; production already + resolves 4.4.x), while the PACKAGE needs only ≥3.3: `setup.py` now claims + `dash>=3.3.0` (raised from an unmeasured `>=3.0.0`) and + `python_requires>=3.9` (3.13 classifier added, untested 3.8 dropped) — + both now measured by CI rather than asserted. Verified locally: the full + route-parity gate is green under Dash 4.4.1, byte-identical to the 3.3.0 + baseline. +- **gunicorn floor raised to ≥23** in requirements.txt — closes + CVE-2024-6827 / CVE-2024-1135 (request smuggling); asserted inside the + Docker image by CI so it cannot silently regress. +- Housekeeping: `import dash` (unused) dropped from app.py; flake8 config + added with per-file ignores documenting why app.py's late imports and the + pages idiom are deliberate. + ### Network-standard pass — Phase 2 (card + traffic + app id + bulletin) - **Social card generated** — `scripts/make_social_card.py` (boilerplate diff --git a/app.py b/app.py index f7264f8..f1a43df 100644 --- a/app.py +++ b/app.py @@ -5,7 +5,6 @@ import os -import dash import dash_mantine_components as dmc from dash import (Dash, html, dcc, callback, Input, Output, State, no_update, page_container, clientside_callback) @@ -450,6 +449,7 @@ def track_page_view(pathname): Input("nav-tree", "expandedItems"), ) + # 3. Burger toggle for mobile navbar @callback( Output("appshell", "navbar"), @@ -461,6 +461,5 @@ def toggle_navbar(opened, navbar_config): return navbar_config - if __name__ == '__main__': app.run(debug=True, port=7666) diff --git a/lib/analytics.py b/lib/analytics.py index d59a459..c9447c9 100644 --- a/lib/analytics.py +++ b/lib/analytics.py @@ -63,8 +63,8 @@ _SKIP_SUFFIXES = ('.css', '.js', '.map', '.png', '.jpg', '.jpeg', '.gif', '.ico', '.svg', '.webp', '.woff', '.woff2', '.ttf', '.eot', '.txt', '.xml') -_write_lock = threading.Lock() # orders writes within a process; across - # processes O_APPEND does the ordering +# Orders writes within a process; across processes O_APPEND does the ordering. +_write_lock = threading.Lock() def analytics_dir() -> Path: diff --git a/requirements.txt b/requirements.txt index fde9d52..08587f6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,4 @@ dash-iconify>=0.1.2 dash-widgetbot>=0.1.0 requests>=2.27.1 # 2plot.dev ad-network client (lib/ad_client.py) dash-improve-my-llms>=2.3.4 # llms.txt/robots/sitemap/prerender (network standard) -gunicorn>=21.2.0,<23.0.0 +gunicorn>=23.0.0 # >=23 closes CVE-2024-6827/CVE-2024-1135 (network floor) diff --git a/scripts/check_release.py b/scripts/check_release.py new file mode 100644 index 0000000..070c61b --- /dev/null +++ b/scripts/check_release.py @@ -0,0 +1,289 @@ +#!/usr/bin/env python +"""Pre-release consistency check for dash-mui-charts. + +Run before cutting a tag (release.yml runs it on every tag, ci.yml's package +job on every push). It catches the release-shaped mistakes no functional test +can see, because the app runs perfectly with all of them — this repo shipped +FIVE conflicting version strings at once before the network-standard pass +(package.json 1.4.0, PyPI 1.2.3, header badge v1.3.0, JSON-LD 1.2.1, README +"9 components"): + +1. **Version drift across the two real sources.** setup.py reads the ROOT + package.json — that is what PyPI serves. `dash_mui_charts.__version__` + reads `dash_mui_charts/package-info.json`, a DIFFERENT file regenerated by + `npm run build`. Bump the root and skip the rebuild and the wheel's label + and its `__version__` disagree. (Every other surface — header badge, + JSON-LD, noscript — derives from these at boot; tests/test_version_parity + holds that side.) +2. **The committed bundle stale** relative to src/lib/components. +3. **CHANGELOG not mentioning the version being released.** +4. **Packaging drift** — the wheel picking up more than dash_mui_charts/, or + the Dash floor in setup.py disagreeing with what CI measures. + + python scripts/check_release.py # check + python scripts/check_release.py --version 1.4.0 # also assert the target + +Exit code 0 when clean, 1 otherwise. +""" +from __future__ import annotations + +import argparse +import json +import re +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent + +# The Dash floor the PACKAGE promises. CI's package jobs measure it (a wheel +# install against dash==3.3.0 and against the current release); setup.py must +# agree, or the promise and the measurement have quietly diverged. The DOCS +# SITE floor is separate and higher — dash-improve-my-llms pins dash>=4.1 — +# and is asserted by ci.yml's docs jobs, not here. +DASH_PACKAGE_FLOOR = "3.3" + +COMPONENT_COUNT = 13 + +problems: list[str] = [] +notes: list[str] = [] + + +def strip_html_comments(html: str) -> str: + """`` removed, so a check cannot match its own explanation — + templates/index.html documents the tags it must NOT contain.""" + return re.sub(r"", "", html, flags=re.S) + + +def check(label: str, ok: bool, detail: str = "") -> None: + print(f" {'PASS' if ok else 'FAIL'} {label:<52} {detail}") + if not ok: + problems.append(f"{label}: {detail}") + + +def check_bundle_freshness(bundle: Path) -> None: + """Is the committed JS bundle older than the React source it is built + from? Git commit timestamps, not filesystem mtimes — git does not record + mtimes, so a fresh clone stamps every file with checkout time and the + comparison decays to sub-second write ordering. Equal timestamps are the + healthy case (bundle and source committed together).""" + def last_commit(path: str) -> int | None: + try: + out = subprocess.run( + ["git", "log", "-1", "--format=%ct", "--", path], + cwd=ROOT, capture_output=True, text=True, timeout=15, + ) + return int(out.stdout.strip()) if out.stdout.strip() else None + except Exception: # noqa: BLE001 — not a git checkout, or no git + return None + + bundle_at = last_commit(str(bundle.relative_to(ROOT))) + src_at = last_commit("src/lib/components") + + if bundle_at is None or src_at is None: + notes.append( + "bundle freshness not checked — no git history here (a tarball " + "install, or a shallow clone without the relevant commits)." + ) + print(f" SKIP {'bundle newer than src/lib/components':<52} no git history") + return + + check("bundle newer than src/lib/components", bundle_at >= src_at, + "up to date" if bundle_at >= src_at else + f"STALE — src committed {src_at - bundle_at}s after the bundle; " + "run npm run build and commit the result") + + +def versions() -> dict[str, str]: + out: dict[str, str] = {} + out["package.json (setup.py reads this)"] = json.loads( + (ROOT / "package.json").read_text() + )["version"] + shipped = ROOT / "dash_mui_charts" / "package-info.json" + if shipped.exists(): + out["dash_mui_charts/package-info.json (__version__)"] = json.loads( + shipped.read_text() + )["version"] + return out + + +def main() -> int: + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument("--version", help="assert every source reports this version") + args = ap.parse_args() + + print("\ndash-mui-charts release check\n" + "=" * 68) + + print("\n[versions]") + vs = versions() + for name, v in vs.items(): + print(f" {name:<52} {v}") + unique = set(vs.values()) + check("all version sources agree", len(unique) == 1, + "consistent" if len(unique) == 1 else f"differ: {sorted(unique)}") + target = args.version or vs["package.json (setup.py reads this)"] + if args.version: + check(f"every source is {args.version}", unique == {args.version}, + "ok" if unique == {args.version} else f"found {sorted(unique)}") + + print("\n[build artifacts]") + bundle = ROOT / "dash_mui_charts" / "dash_mui_charts.min.js" + check("JS bundle committed", bundle.exists(), + f"{bundle.stat().st_size // 1024} KB" if bundle.exists() + else "MISSING — run npm run build") + if bundle.exists(): + check_bundle_freshness(bundle) + + react = sorted(p.name.replace(".react.js", "") + for p in (ROOT / "src" / "lib" / "components").glob("*.react.js")) + generated = sorted(p.stem for p in (ROOT / "dash_mui_charts").glob("*.py") + if p.stem in react or p.stem[:1].isupper()) + check("a Python class per React component", + set(generated) == set(react), + f"{len(generated)} classes" + if set(generated) == set(react) + else f"drift: {sorted(set(react) ^ set(generated))} — run npm run build") + check(f"component count is {COMPONENT_COUNT}", len(react) == COMPONENT_COUNT, + f"{len(react)} React sources") + + print("\n[changelog]") + changelog_path = ROOT / "CHANGELOG.md" + if changelog_path.exists(): + changelog = changelog_path.read_text() + check(f"CHANGELOG mentions {target}", target in changelog, + "found" if target in changelog else f"add a [{target}] section") + if "## [Unreleased]" in changelog: + body = changelog.split("## [Unreleased]", 1)[1].split("## [", 1)[0] + if body.strip() and "Nothing yet" not in body: + notes.append( + "CHANGELOG still has content under [Unreleased] — move it " + f"under [{target}] before tagging." + ) + else: + check("CHANGELOG.md present", False, "MISSING") + + print("\n[packaging]") + setup_py = (ROOT / "setup.py").read_text() + pkg_name = json.loads((ROOT / "package.json").read_text())["name"] + check("package.json name is the import name", pkg_name == "dash_mui_charts", + pkg_name) + check("only the package_name is packaged", + "packages=[package_name]" in setup_py.replace(" ", ""), + "lib/, pages/ and assets/ stay out of the wheel") + # Anchored to install_requires — a bare "dash>=" search would match the + # comment explaining the two floors before it matched the requirement. + floor = re.search(r"install_requires=\[\s*['\"]dash>=([\d.]+)['\"]", setup_py) + check(f"setup.py Dash floor is {DASH_PACKAGE_FLOOR}", + floor is not None and floor.group(1).startswith(DASH_PACKAGE_FLOOR), + f"dash>={floor.group(1)}" if floor else "no dash requirement found") + check("dash is the only hard runtime dependency", + re.search(r"install_requires=\[\s*'dash>=[\d.]+',?\s*\]", setup_py) + is not None + or re.search(r'install_requires=\[\s*"dash>=[\d.]+",?\s*\]', setup_py) + is not None, + "site deps live in requirements.txt") + check("LICENSE present", (ROOT / "LICENSE").exists()) + check("README present", (ROOT / "README.md").exists()) + check("MANIFEST.in present", (ROOT / "MANIFEST.in").exists()) + manifest = (ROOT / "MANIFEST.in").read_text() + check("MANIFEST ships the version source", + "include package.json" in manifest, + "setup.py reads package.json — an sdist without it cannot build") + + print("\n[seo]") + # templates/index.html cannot import lib/constants (it is a static file), + # so its origin and version are TOKENS substituted at boot. A literal + # origin or version left in the template is the exact drift Phase 1 + # removed — five conflicting version strings, og tags pinned to + # onrender.com. + tpl = (ROOT / "templates" / "index.html").read_text() + base = re.search( + r'^DEFAULT_BASE_URL\s*=\s*"([^"]+)"', + (ROOT / "lib" / "constants.py").read_text(), re.M, + ).group(1).rstrip("/") + check("template takes its origin from constants.py", + "__CANONICAL_ORIGIN__" in tpl, + f"{tpl.count('__CANONICAL_ORIGIN__')} tokens → {base}") + check("template takes its version from the package", + "__APP_VERSION__" in tpl, + f"{tpl.count('__APP_VERSION__')} tokens") + tpl_markup = strip_html_comments(tpl) + hard_coded = sorted(set(re.findall( + r"https://[a-z0-9.-]*(?:onrender\.com|2plot\.dev)", tpl_markup))) + check("no hard-coded origin left in the template", not hard_coded, + "all tokenised" if not hard_coded else "found: " + ", ".join(hard_coded)) + # dash-improve-my-llms >= 2.3.3 prerenders per + # route; a literal tag in the template would be a SECOND canonical on + # every page, and two canonicals is worse than none. The `<` is what + # distinguishes a real tag from the querySelector string the client-side + # sync script legitimately contains. + check("template hard-codes no canonical", + '")[0] + restated = [t for t in ('name="description"', 'property="og:title"', + 'property="og:description"', 'property="og:type"', + 'name="twitter:card"', 'name="twitter:title"', + 'name="twitter:description"') + if t in strip_html_comments(head)] + check("template does not restate per-page meta tags", not restated, + "only site-level tags" if not restated + else "duplicates Dash: " + ", ".join(restated)) + + print("\n[network]") + reqs = (ROOT / "requirements.txt").read_text() + floor = re.search(r"dash-improve-my-llms>=([\d.]+)", reqs) + ok_floor = floor is not None and tuple( + int(x) for x in floor.group(1).split(".") + ) >= (2, 3, 4) + check("dash-improve-my-llms floor >= 2.3.4", ok_floor, + f">={floor.group(1)}" if floor else "not pinned in requirements.txt") + gunicorn_floor = re.search(r"gunicorn>=([\d.]+)", reqs) + check("gunicorn floor >= 23 (CVE-2024-6827/-1135)", + gunicorn_floor is not None + and int(gunicorn_floor.group(1).split(".")[0]) >= 23, + f">={gunicorn_floor.group(1)}" if gunicorn_floor else "not pinned") + for mod in ("constants", "analytics", "traffic_report", "ad_client", + "bulletin", "network_directory"): + check(f"lib/{mod}.py present", (ROOT / "lib" / f"{mod}.py").exists()) + + render_yaml = (ROOT / "render.yaml").read_text() + host = base.split("://", 1)[-1] + if f"- {host}" in render_yaml: + check("render.yaml serves the canonical host", True, f"domains: {host}") + else: + # Phase 4 of the network-standard pass attaches the domain; until + # then this is informational, not a failed release. + notes.append( + f"render.yaml declares no `domains: [{host}]` yet — expected " + "until the Phase 4 cutover attaches the subdomain." + ) + print(f" NOTE {'render.yaml serves the canonical host':<52} pending Phase 4") + + print("\n[docs site]") + for f in ("Dockerfile", "render.yaml", "requirements.txt", "app.py", + "scripts/route_parity.py", "scripts/network_smoke.py", + "scripts/smoke_live.py"): + check(f"{f} present", (ROOT / f).exists()) + check("requirements use no absolute paths", "file:///" not in reqs, + "no absolute file:// URLs") + + print("\n[ci]") + for wf in ("ci.yml", "cd.yml", "release.yml"): + check(f".github/workflows/{wf}", (ROOT / ".github" / "workflows" / wf).exists()) + + print("\n" + "=" * 68) + for n in notes: + print(f"NOTE: {n}") + if problems: + print(f"\n{len(problems)} problem(s) — not ready to tag:") + for p in problems: + print(f" - {p}") + return 1 + print(f"\nClean. Ready to tag v{target} " + "(release.yml publishes on the tag push; see .claude/PYPI_PUBLISH_PLAN.md).") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/network_smoke.py b/scripts/network_smoke.py new file mode 100644 index 0000000..d30d273 --- /dev/null +++ b/scripts/network_smoke.py @@ -0,0 +1,291 @@ +#!/usr/bin/env python3 +"""Smoke battery for a 2plot satellite — CI container and production alike. + +One script, two seats, the SAME named checks either way, so a failure in CI +and a failure against production read identically: + + CI container python scripts/network_smoke.py --base-url http://localhost:8550 + Production python scripts/network_smoke.py --base-url https://boilerplate.2plot.dev + +Stdlib-only on purpose: CI runs it from the host against the booted container +with a bare `python3`, before anything is pip-installed. + +This is a TEMPLATE FILE. Every satellite forked from this repo copies it +verbatim and changes only the block marked "per-site" below — the expected +H1, the port, the paths that must 404. Everything else is the network +standard; if a check here is wrong, it is wrong on twenty hosts. + +What a satellite is to the network is what the battery proves: that it states +its identity, that its agent-facing document surfaces are real, that it runs +the intended dash-improve-my-llms artifact, and that no owner-only surface +leaks. A satellite holds no key material, so unlike the hub's copy of this +script there is no agent-key API to fail closed — the corresponding check +here is that this host's llms.txt points *back* at the hub that does. + +Every UA this script sends carries the internal-traffic token (the analytics +point of truth — https://2plot.ai/docs/satellite-analytics, "Internal +traffic"): a battery must never register as a visitor or a "bot" in any +network ledger. Even the deliberately crawler-shaped probe appends the token +— the target still exercises its bot path, but its analytics know the caller +is machinery. + +Exit code: 1 if any check fails, else 0. +""" +from __future__ import annotations + +import argparse +import json +import os +import sys +import time +import urllib.error +import urllib.request + +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +TIMEOUT = 30 +try: + from lib.constants import INTERNAL_UA as _INTERNAL_UA +except Exception: # running outside a repo checkout — keep the token intact + _INTERNAL_UA = "2plot-internal/1.0 (+https://2plot.ai/docs/satellite-analytics)" +UA = _INTERNAL_UA + " network-smoke" +CRAWLER_UA = "Mozilla/5.0 (compatible; Googlebot/2.1) " + _INTERNAL_UA + +# The body dash-improve-my-llms serves when a page has no prose registered. +# Matched in full, deliberately: this app's own