diff --git a/CHANGELOG.md b/CHANGELOG.md index 18f48dd9..417e5466 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,14 @@ All notable changes to this project will be documented in this file. -## [Unreleased] +## [0.3.0] - 2026-03-24 + +### Changed +- `Paint` widget redesigned: replaced MS Paint window chrome with a minimal toolbar (brush, marker, eraser, undo, clear, color picker). Dropped Tailwind CSS dependency in favor of scoped CSS variables with dark mode support. + +### Fixed +- `Paint` canvas now respects the `width` and `height` traitlets instead of expanding to fill the host container. +- `Paint` with `init_image` now resizes the image to match target dimensions upfront, so `get_pil()` returns the correct resolution before the first stroke. ## [0.2.40] - 2026-03-24 diff --git a/Makefile b/Makefile index 1d65e32e..52179f2d 100644 --- a/Makefile +++ b/Makefile @@ -46,7 +46,7 @@ js-driver-tour: ./esbuild --bundle --format=esm --loader:.css=text --outfile=wigglystuff/static/driver-tour.js js/driver-tour/widget.js js-paint: - ./node_modules/.bin/tailwindcss -i ./js/paint/styles.css -o ./wigglystuff/static/paint.css + cp js/paint/styles.css wigglystuff/static/paint.css ./node_modules/.bin/esbuild js/paint/widget.tsx --bundle --format=esm --outfile=wigglystuff/static/paint.js --minify js-pulsar-chart: diff --git a/demos/paint.py b/demos/paint.py index 4141aa96..c3392b39 100644 --- a/demos/paint.py +++ b/demos/paint.py @@ -3,41 +3,30 @@ # dependencies = [ # "marimo", # "mohtml", -# "wigglystuff==0.2.37", +# "wigglystuff==0.2.40", # ] # /// + import marimo -__generated_with = "0.17.8" -app = marimo.App(width="medium", sql_output="polars") +__generated_with = "0.21.1" +app = marimo.App(width="medium") @app.cell def _(): import marimo as mo - from mohtml import div, img, tailwind_css + from mohtml import div, img from wigglystuff import Paint - tailwind_css() return Paint, div, img, mo @app.cell def _(Paint, mo): - widget = mo.ui.anywidget(Paint(height=550)) - return (widget,) - - -@app.cell -def _(widget): + widget = mo.ui.anywidget(Paint(height=400, width=400)) widget - return - - -@app.cell -def _(div, img, widget): - div(img(src=widget.get_base64()), klass="bg-gray-200 p-4") - return + return (widget,) @app.cell @@ -48,31 +37,51 @@ def _(widget): @app.cell(hide_code=True) def _(mo): - mo.md(r""" - You can also draw over existing images with this library, this can be useful when interacting with multimodal LLMs. + mo.md(""" + You can also draw over existing images. This is handy when annotating images for multimodal LLMs. """) return @app.cell def _(Paint, mo): - redraw_widget = mo.ui.anywidget( + annotate = mo.ui.anywidget( Paint( - init_image="https://marimo.io/_next/image?url=%2Fimages%2Fblog%2F8%2Fthumbnail.png&w=1920&q=75" + init_image="https://picsum.photos/id/237/300/200", + height=300, ) ) - return (redraw_widget,) + annotate + return (annotate,) @app.cell -def _(redraw_widget): - redraw_widget +def _(annotate): + annotate.get_pil() + return + + +@app.cell(hide_code=True) +def _(mo): + mo.md(""" + Set `store_background=False` for transparent PNG output. The checkerboard in the canvas indicates transparency. + """) return @app.cell -def _(redraw_widget): - redraw_widget.get_pil() +def _(Paint, mo): + transparent = mo.ui.anywidget(Paint(height=250, width=300, store_background=False)) + transparent + return (transparent,) + + +@app.cell +def _(div, img, transparent): + div( + img(src=transparent.get_base64()), + style="background: repeating-conic-gradient(#d0d0d0 0% 25%, #f0f0f0 0% 50%) 0 0 / 16px 16px; padding: 16px; border-radius: 8px; display: inline-block;", + ) return diff --git a/examples/zooming.py b/examples/zooming.py new file mode 100644 index 00000000..e0a96eaf --- /dev/null +++ b/examples/zooming.py @@ -0,0 +1,160 @@ +# /// script +# dependencies = [ +# "marimo", +# "mohtml==0.1.11", +# "numpy==2.4.3", +# "pillow==12.1.1", +# "scipy==1.17.1", +# "wigglystuff==0.2.40", +# ] +# requires-python = ">=3.12" +# /// + +import marimo + +__generated_with = "0.21.1" +app = marimo.App(width="columns", sql_output="polars") + + +@app.cell +def _(): + import marimo as mo + import numpy as np + import io + from PIL import Image, ImageDraw + from scipy.ndimage import map_coordinates + + return Image, ImageDraw, io, map_coordinates, mo, np + + +@app.cell +def _(Image, ImageDraw, io): + def get_source_image(file_list): + # Check if a file was actually uploaded + if file_list: + try: + # upload.value is a list of marimo.ui.file.File objects + # .contents contains the raw bytes + return Image.open(io.BytesIO(file_list[0].contents)).convert("RGB") + except Exception as e: + return None + + # Fallback Placeholder: A "Frame" to make alignment obvious + img = Image.new("RGB", (600, 600), "#fdfcf0") + draw = ImageDraw.Draw(img) + # Outer black border + draw.rectangle([0, 0, 599, 599], outline="black", width=30) + # Inner red border (The "Target" for the loop) + draw.rectangle([200, 200, 400, 400], outline="#e74c3c", width=15) + draw.text((260, 40), "OUTER", fill="black") + draw.text((265, 220), "INNER", fill="#e74c3c") + return img + + return (get_source_image,) + + +@app.cell +def _(mo): + upload = mo.ui.file(kind="button", label="Upload Screenshot") + c_re = mo.ui.slider(-7, 7.0, step=0.01, value=1.0, label="Scale ($c_{re}$)") + c_im = mo.ui.slider(-70.0, 70.0, step=0.01, value=0.0, label="Twist ($c_{im}$)") + zoom = mo.ui.slider(0.0, 10.0, step=0.01, value=0.0, label="Zoom Depth") + view_mode = mo.ui.radio(["Spiral Space", "Log Space"], value="Spiral Space", label="View") + return c_im, c_re, upload, view_mode, zoom + + +@app.cell +def _(): + from wigglystuff import Paint + + return (Paint,) + + +@app.cell +def _(Image, map_coordinates, mo, np): + @mo.cache + def apply_droste(img, cr, ci, z_shift, mode): + # Convert image to numpy array for math + arr = np.array(img) + h, w, _ = arr.shape + + # Generate pixel grid in normalized coordinates [-1, 1] + y, x = np.indices((h, w)) + u, v = (x - w / 2) / (w / 2), (y - h / 2) / (h / 2) + + # 1. Map to Log-Polar Space (The Top-Middle Image in the video) + # r_log is ln(radius), theta is the angle + r_log = 0.5 * np.log(u**2 + v**2 + 1e-9) + theta = np.arctan2(v, u) + + # Add the Zoom Shift (traveling through the log-radius) + r_log += z_shift * 2.0 + + # 2. Apply Linear Transformation: f(z) = c * z + # This creates the spiral/scaling effect + z_real = cr * r_log - ci * theta + z_imag = ci * r_log + cr * theta + + if mode == "Log Space": + # Visualize the repeating grid + map_x = (z_real * (w / 4)) % w + map_y = (z_imag / (2 * np.pi) * h) % h + else: + # 3. Map back to Cartesian with Periodic Tiling + # Modulo on log-radius creates the infinite nesting + # We use % 1.0 to snap back to the outer frame once we hit the inner + r_final = np.exp(z_real % 1.0) + theta_final = z_imag + + map_x = (r_final * np.cos(theta_final) + 1) / 2 * w + map_y = (r_final * np.sin(theta_final) + 1) / 2 * h + + # 4. Resample pixels using interpolation for all 3 RGB channels + output_channels = [] + for i in range(3): + ch = map_coordinates(arr[..., i], [map_y % h, map_x % w], order=1) + output_channels.append(ch) + + return Image.fromarray(np.stack(output_channels, axis=-1)) + + return (apply_droste,) + + +@app.cell +def _(apply_droste, c_im, c_re, mo, paint, upload, view_mode, zoom): + src_img = paint.get_pil() + res_img = apply_droste(src_img, c_re.value, c_im.value, zoom.value, view_mode.value) + + mo.md(f""" + # 3Blue1Brown Droste Simulator + {upload}""") + return res_img, src_img + + +@app.cell +def _(Paint, get_source_image, mo, upload): + _src_img = get_source_image(upload.value) + paint = mo.ui.anywidget(Paint(init_image=_src_img)) + paint + return (paint,) + + +@app.cell +def _(c_im, c_re, mo, view_mode, zoom): + mo.hstack([c_re, c_im, zoom, view_mode], justify="start") + return + + +@app.cell +def _(mo, res_img, src_img): + mo.hstack([src_img, res_img], justify="start") + return + + +@app.cell +def _(): + return + + +if __name__ == "__main__": + app.run() diff --git a/js/paint/styles.css b/js/paint/styles.css index bd6213e1..1dd27e9f 100644 --- a/js/paint/styles.css +++ b/js/paint/styles.css @@ -1,3 +1,132 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; \ No newline at end of file +.paint-container { + color-scheme: light dark; + --paint-bg: #ffffff; + --paint-text: #111827; + --paint-border: #d1d5db; + --paint-toolbar-bg: #f9fafb; + --paint-btn-bg: #ffffff; + --paint-btn-hover: #f3f4f6; + --paint-btn-active: #e5e7eb; + --paint-focus-ring: 0 0 0 2px rgba(59, 130, 246, 0.5); + --paint-shadow: rgba(0, 0, 0, 0.1); +} + +:where(.dark, .dark-theme, [data-theme="dark"]) .paint-container { + --paint-bg: #1f2937; + --paint-text: #f9fafb; + --paint-border: #4b5563; + --paint-toolbar-bg: #111827; + --paint-btn-bg: #374151; + --paint-btn-hover: #4b5563; + --paint-btn-active: #6b7280; + --paint-focus-ring: 0 0 0 2px rgba(96, 165, 250, 0.6); + --paint-shadow: rgba(0, 0, 0, 0.5); +} + +.paint-container { + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + box-sizing: border-box; + border: 1px solid var(--paint-border); + border-radius: 0.5rem; + overflow: hidden; + background-color: var(--paint-bg); + color: var(--paint-text); + display: flex; + flex-direction: column; +} + +.paint-toolbar { + display: flex; + align-items: center; + gap: 0.25rem; + padding: 0.375rem 0.5rem; + background-color: var(--paint-toolbar-bg); + border-bottom: 1px solid var(--paint-border); + flex-shrink: 0; +} + +.paint-tool-group, +.paint-action-group { + display: flex; + align-items: center; + gap: 0.25rem; +} + +.paint-toolbar button { + display: inline-flex; + align-items: center; + justify-content: center; + width: 2rem; + height: 2rem; + padding: 0; + border: 1px solid transparent; + border-radius: 0.375rem; + background-color: transparent; + color: var(--paint-text); + cursor: pointer; + transition: background-color 0.15s ease, border-color 0.15s ease; +} + +.paint-toolbar button:hover { + background-color: var(--paint-btn-hover); + border-color: var(--paint-border); +} + +.paint-toolbar button:focus { + outline: none; + box-shadow: var(--paint-focus-ring); +} + +.paint-toolbar button:active { + background-color: var(--paint-btn-active); +} + +.paint-toolbar button.active { + background-color: var(--paint-btn-active); + border-color: var(--paint-border); + box-shadow: inset 0 1px 2px var(--paint-shadow); +} + +.paint-toolbar button:disabled { + opacity: 0.35; + pointer-events: none; +} + +.paint-toolbar button svg { + width: 18px; + height: 18px; +} + +.paint-divider { + width: 1px; + height: 1.5rem; + background-color: var(--paint-border); + margin: 0 0.25rem; + flex-shrink: 0; +} + +.paint-toolbar input[type="color"] { + width: 2rem; + height: 2rem; + padding: 0.125rem; + border: 1px solid var(--paint-border); + border-radius: 0.375rem; + background-color: var(--paint-btn-bg); + cursor: pointer; +} + +.paint-toolbar input[type="color"]:focus { + outline: none; + box-shadow: var(--paint-focus-ring); +} + +.paint-canvas-area { + overflow: hidden; + background-color: var(--paint-bg); +} + +.paint-canvas-area canvas { + display: block; + cursor: crosshair; + box-shadow: 0 0 0 1px var(--paint-border); +} diff --git a/js/paint/widget.tsx b/js/paint/widget.tsx index 490f5b73..439ac7d7 100644 --- a/js/paint/widget.tsx +++ b/js/paint/widget.tsx @@ -1,577 +1,309 @@ import { createRender, useModelState } from "@anywidget/react"; import React, { useRef, useState, useEffect } from 'react'; -const Button = React.forwardRef< - HTMLButtonElement, - React.ButtonHTMLAttributes & { - variant?: 'default' | 'ghost' - } ->(({ className = '', variant = 'default', ...props }, ref) => { - const baseStyles = 'inline-flex items-center justify-center rounded-md text-sm font-medium focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50'; - const variantStyles = { - default: 'bg-gray-200 active:bg-gray-300', - ghost: 'active:bg-gray-100/50' - }; - - return ( - + + - - )} -
- {/* Title bar */} -
- untitled - Paint -
- - - -
- {/* Menu bar */} -
- File - Edit - View - Image - Options - Help -
+
- {/* Main content area */} -
- {/* Left toolbar */} -
- - - -
- -
- -
- - {/* Canvas area */} -
- {/* Drawing canvas */} - -
+
+ +
- {/* Bottom color picker */} -
-
- {colors.map((c) => ( -
-
+
- {/* Status bar */} -
- For Help, click Help Topics on the Help Menu. -
+ setColor(e.target.value)} + title="Color" + /> +
+ +
+
); diff --git a/pyproject.toml b/pyproject.toml index de896650..95bf118b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "wigglystuff" -version = "0.2.40" +version = "0.3.0" description = "Collection of Anywidget Widgets" readme = "README.md" requires-python = ">=3.10" diff --git a/uv.lock b/uv.lock index 40e76bdc..49a0c269 100644 --- a/uv.lock +++ b/uv.lock @@ -4153,7 +4153,7 @@ wheels = [ [[package]] name = "wigglystuff" -version = "0.2.40" +version = "0.3.0" source = { editable = "." } dependencies = [ { name = "anywidget" }, diff --git a/wigglystuff/paint.py b/wigglystuff/paint.py index 3de8ef44..dd971e8f 100644 --- a/wigglystuff/paint.py +++ b/wigglystuff/paint.py @@ -1,4 +1,4 @@ -"""Paint widget ported from the mopaint project.""" +"""Minimal drawing canvas widget with PIL helpers.""" from __future__ import annotations @@ -8,6 +8,8 @@ from typing import Any, Optional, Union import urllib.request +import warnings + import anywidget import traitlets @@ -79,7 +81,7 @@ def input_to_pil(input_data: Union[str, Path, "Image.Image", bytes, None]): class Paint(anywidget.AnyWidget): - """Notebook-friendly paint widget with MS Paint style tools and PIL helpers. + """Notebook-friendly drawing canvas with brush, marker, eraser, undo, and PIL helpers. Examples: ```python @@ -112,35 +114,49 @@ def __init__(self, height: int = DEFAULT_HEIGHT, width: int = DEFAULT_WIDTH, sto user_provided_width = width != DEFAULT_WIDTH user_provided_height = height != DEFAULT_HEIGHT - if init_image is not None and user_provided_width: - raise ValueError( - "Cannot specify both init_image and explicit width parameter. " - "Canvas width is automatically calculated from the image aspect ratio." - ) - if init_image is not None: pil_image = input_to_pil(init_image) if pil_image is not None: image_width, image_height = pil_image.size aspect_ratio = image_width / image_height - if user_provided_height: + if user_provided_width and user_provided_height: + self.width = width + self.height = height + if abs(width / height - aspect_ratio) > 0.01: + warnings.warn( + f"Specified dimensions ({width}x{height}) have a different aspect ratio " + f"than the image ({image_width}x{image_height}). Image will be scaled to fit." + ) + elif user_provided_width: + self.width = width + self.height = int(width / aspect_ratio) + elif user_provided_height: self.height = height self.width = int(height * aspect_ratio) else: self.width = image_width self.height = image_height + if (self.width, self.height) != pil_image.size: + from PIL import Image as _PILImage + pil_image = pil_image.resize( + (self.width, self.height), _PILImage.LANCZOS + ) encoded = pil_to_base64(pil_image).split(",")[1] self.base64 = encoded else: self.width = width self.height = height - self.base64 = "" + self.base64 = pil_to_base64( + create_empty_image(width, height, (0, 0, 0, 0)) + ).split(",")[1] else: self.width = width self.height = height - self.base64 = "" + self.base64 = pil_to_base64( + create_empty_image(width, height, (0, 0, 0, 0)) + ).split(",")[1] self.store_background = store_background diff --git a/wigglystuff/static/paint.css b/wigglystuff/static/paint.css index a2dd2de6..1dd27e9f 100644 --- a/wigglystuff/static/paint.css +++ b/wigglystuff/static/paint.css @@ -1,1118 +1,132 @@ -*, ::before, ::after { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; +.paint-container { + color-scheme: light dark; + --paint-bg: #ffffff; + --paint-text: #111827; + --paint-border: #d1d5db; + --paint-toolbar-bg: #f9fafb; + --paint-btn-bg: #ffffff; + --paint-btn-hover: #f3f4f6; + --paint-btn-active: #e5e7eb; + --paint-focus-ring: 0 0 0 2px rgba(59, 130, 246, 0.5); + --paint-shadow: rgba(0, 0, 0, 0.1); +} + +:where(.dark, .dark-theme, [data-theme="dark"]) .paint-container { + --paint-bg: #1f2937; + --paint-text: #f9fafb; + --paint-border: #4b5563; + --paint-toolbar-bg: #111827; + --paint-btn-bg: #374151; + --paint-btn-hover: #4b5563; + --paint-btn-active: #6b7280; + --paint-focus-ring: 0 0 0 2px rgba(96, 165, 250, 0.6); + --paint-shadow: rgba(0, 0, 0, 0.5); +} + +.paint-container { + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + box-sizing: border-box; + border: 1px solid var(--paint-border); + border-radius: 0.5rem; + overflow: hidden; + background-color: var(--paint-bg); + color: var(--paint-text); + display: flex; + flex-direction: column; } -::backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; +.paint-toolbar { + display: flex; + align-items: center; + gap: 0.25rem; + padding: 0.375rem 0.5rem; + background-color: var(--paint-toolbar-bg); + border-bottom: 1px solid var(--paint-border); + flex-shrink: 0; } -/* -! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com -*/ - -/* -1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) -2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) -*/ - -*, -::before, -::after { - box-sizing: border-box; - /* 1 */ - border-width: 0; - /* 2 */ - border-style: solid; - /* 2 */ - border-color: #e5e7eb; - /* 2 */ -} - -::before, -::after { - --tw-content: ''; -} - -/* -1. Use a consistent sensible line-height in all browsers. -2. Prevent adjustments of font size after orientation changes in iOS. -3. Use a more readable tab size. -4. Use the user's configured `sans` font-family by default. -5. Use the user's configured `sans` font-feature-settings by default. -6. Use the user's configured `sans` font-variation-settings by default. -7. Disable tap highlights on iOS -*/ - -html, -:host { - line-height: 1.5; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - -moz-tab-size: 4; - /* 3 */ - -o-tab-size: 4; - tab-size: 4; - /* 3 */ - font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - /* 4 */ - font-feature-settings: normal; - /* 5 */ - font-variation-settings: normal; - /* 6 */ - -webkit-tap-highlight-color: transparent; - /* 7 */ -} - -/* -1. Remove the margin in all browsers. -2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. -*/ - -body { - margin: 0; - /* 1 */ - line-height: inherit; - /* 2 */ -} - -/* -1. Add the correct height in Firefox. -2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) -3. Ensure horizontal rules are visible by default. -*/ - -hr { - height: 0; - /* 1 */ - color: inherit; - /* 2 */ - border-top-width: 1px; - /* 3 */ -} - -/* -Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* -Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* -Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - text-decoration: inherit; -} - -/* -Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* -1. Use the user's configured `mono` font-family by default. -2. Use the user's configured `mono` font-feature-settings by default. -3. Use the user's configured `mono` font-variation-settings by default. -4. Correct the odd `em` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - /* 1 */ - font-feature-settings: normal; - /* 2 */ - font-variation-settings: normal; - /* 3 */ - font-size: 1em; - /* 4 */ -} - -/* -Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* -Prevent `sub` and `sup` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* -1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) -2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) -3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; - /* 1 */ - border-color: inherit; - /* 2 */ - border-collapse: collapse; - /* 3 */ -} - -/* -1. Change the font styles in all browsers. -2. Remove the margin in Firefox and Safari. -3. Remove default padding in all browsers. -*/ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-feature-settings: inherit; - /* 1 */ - font-variation-settings: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - font-weight: inherit; - /* 1 */ - line-height: inherit; - /* 1 */ - letter-spacing: inherit; - /* 1 */ - color: inherit; - /* 1 */ - margin: 0; - /* 2 */ - padding: 0; - /* 3 */ -} - -/* -Remove the inheritance of text transform in Edge and Firefox. -*/ - -button, -select { - text-transform: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Remove default button styles. -*/ - -button, -input:where([type='button']), -input:where([type='reset']), -input:where([type='submit']) { - -webkit-appearance: button; - /* 1 */ - background-color: transparent; - /* 2 */ - background-image: none; - /* 2 */ -} - -/* -Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* -Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* -Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* -Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -/* -1. Correct the odd appearance in Chrome and Safari. -2. Correct the outline style in Safari. -*/ - -[type='search'] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/* -Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Change font properties to `inherit` in Safari. -*/ - -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* -Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; +.paint-tool-group, +.paint-action-group { + display: flex; + align-items: center; + gap: 0.25rem; } -/* -Removes the default spacing and border for appropriate elements. -*/ - -blockquote, -dl, -dd, -h1, -h2, -h3, -h4, -h5, -h6, -hr, -figure, -p, -pre { - margin: 0; -} - -fieldset { - margin: 0; - padding: 0; -} - -legend { - padding: 0; -} - -ol, -ul, -menu { - list-style: none; - margin: 0; - padding: 0; -} - -/* -Reset default styling for dialogs. -*/ - -dialog { - padding: 0; -} - -/* -Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* -1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) -2. Set the default placeholder color to the user's configured gray 400 color. -*/ - -input::-moz-placeholder, textarea::-moz-placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -input::placeholder, -textarea::placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -/* -Set the default cursor for buttons. -*/ - -button, -[role="button"] { - cursor: pointer; -} - -/* -Make sure disabled buttons don't get the pointer cursor. -*/ - -:disabled { - cursor: default; -} - -/* -1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) -2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; - /* 1 */ - vertical-align: middle; - /* 2 */ -} - -/* -Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-width: 100%; - height: auto; -} - -/* Make elements with the HTML hidden attribute stay hidden by default */ - -[hidden]:where(:not([hidden="until-found"])) { - display: none; -} - -[type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - background-color: #fff; - border-color: #6b7280; - border-width: 1px; - border-radius: 0px; - padding-top: 0.5rem; - padding-right: 0.75rem; - padding-bottom: 0.5rem; - padding-left: 0.75rem; - font-size: 1rem; - line-height: 1.5rem; - --tw-shadow: 0 0 #0000; -} - -[type='text']:focus, input:where(:not([type])):focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus { - outline: 2px solid transparent; - outline-offset: 2px; - --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: #2563eb; - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - border-color: #2563eb; +.paint-toolbar button { + display: inline-flex; + align-items: center; + justify-content: center; + width: 2rem; + height: 2rem; + padding: 0; + border: 1px solid transparent; + border-radius: 0.375rem; + background-color: transparent; + color: var(--paint-text); + cursor: pointer; + transition: background-color 0.15s ease, border-color 0.15s ease; } -input::-moz-placeholder, textarea::-moz-placeholder { - color: #6b7280; - opacity: 1; +.paint-toolbar button:hover { + background-color: var(--paint-btn-hover); + border-color: var(--paint-border); } -input::placeholder,textarea::placeholder { - color: #6b7280; - opacity: 1; +.paint-toolbar button:focus { + outline: none; + box-shadow: var(--paint-focus-ring); } -::-webkit-datetime-edit-fields-wrapper { - padding: 0; +.paint-toolbar button:active { + background-color: var(--paint-btn-active); } -::-webkit-date-and-time-value { - min-height: 1.5em; - text-align: inherit; +.paint-toolbar button.active { + background-color: var(--paint-btn-active); + border-color: var(--paint-border); + box-shadow: inset 0 1px 2px var(--paint-shadow); } -::-webkit-datetime-edit { - display: inline-flex; +.paint-toolbar button:disabled { + opacity: 0.35; + pointer-events: none; } -::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field { - padding-top: 0; - padding-bottom: 0; +.paint-toolbar button svg { + width: 18px; + height: 18px; } -select { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e"); - background-position: right 0.5rem center; - background-repeat: no-repeat; - background-size: 1.5em 1.5em; - padding-right: 2.5rem; - -webkit-print-color-adjust: exact; - print-color-adjust: exact; +.paint-divider { + width: 1px; + height: 1.5rem; + background-color: var(--paint-border); + margin: 0 0.25rem; + flex-shrink: 0; } -[multiple],[size]:where(select:not([size="1"])) { - background-image: initial; - background-position: initial; - background-repeat: unset; - background-size: initial; - padding-right: 0.75rem; - -webkit-print-color-adjust: unset; - print-color-adjust: unset; +.paint-toolbar input[type="color"] { + width: 2rem; + height: 2rem; + padding: 0.125rem; + border: 1px solid var(--paint-border); + border-radius: 0.375rem; + background-color: var(--paint-btn-bg); + cursor: pointer; } -[type='checkbox'],[type='radio'] { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - padding: 0; - -webkit-print-color-adjust: exact; - print-color-adjust: exact; - display: inline-block; - vertical-align: middle; - background-origin: border-box; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - flex-shrink: 0; - height: 1rem; - width: 1rem; - color: #2563eb; - background-color: #fff; - border-color: #6b7280; - border-width: 1px; - --tw-shadow: 0 0 #0000; +.paint-toolbar input[type="color"]:focus { + outline: none; + box-shadow: var(--paint-focus-ring); } -[type='checkbox'] { - border-radius: 0px; +.paint-canvas-area { + overflow: hidden; + background-color: var(--paint-bg); } -[type='radio'] { - border-radius: 100%; -} - -[type='checkbox']:focus,[type='radio']:focus { - outline: 2px solid transparent; - outline-offset: 2px; - --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); - --tw-ring-offset-width: 2px; - --tw-ring-offset-color: #fff; - --tw-ring-color: #2563eb; - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); -} - -[type='checkbox']:checked,[type='radio']:checked { - border-color: transparent; - background-color: currentColor; - background-size: 100% 100%; - background-position: center; - background-repeat: no-repeat; -} - -[type='checkbox']:checked { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e"); -} - -@media (forced-colors: active) { - [type='checkbox']:checked { - -webkit-appearance: auto; - -moz-appearance: auto; - appearance: auto; - } -} - -[type='radio']:checked { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e"); -} - -@media (forced-colors: active) { - [type='radio']:checked { - -webkit-appearance: auto; - -moz-appearance: auto; - appearance: auto; - } -} - -[type='checkbox']:checked:hover,[type='checkbox']:checked:focus,[type='radio']:checked:hover,[type='radio']:checked:focus { - border-color: transparent; - background-color: currentColor; -} - -[type='checkbox']:indeterminate { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e"); - border-color: transparent; - background-color: currentColor; - background-size: 100% 100%; - background-position: center; - background-repeat: no-repeat; -} - -@media (forced-colors: active) { - [type='checkbox']:indeterminate { - -webkit-appearance: auto; - -moz-appearance: auto; - appearance: auto; - } -} - -[type='checkbox']:indeterminate:hover,[type='checkbox']:indeterminate:focus { - border-color: transparent; - background-color: currentColor; -} - -[type='file'] { - background: unset; - border-color: inherit; - border-width: 0; - border-radius: 0; - padding: 0; - font-size: unset; - line-height: inherit; -} - -[type='file']:focus { - outline: 1px solid ButtonText; - outline: 1px auto -webkit-focus-ring-color; -} - -.\!container { - width: 100% !important; -} - -.container { - width: 100%; -} - -@media (min-width: 640px) { - .\!container { - max-width: 640px !important; - } - - .container { - max-width: 640px; - } -} - -@media (min-width: 768px) { - .\!container { - max-width: 768px !important; - } - - .container { - max-width: 768px; - } -} - -@media (min-width: 1024px) { - .\!container { - max-width: 1024px !important; - } - - .container { - max-width: 1024px; - } +.paint-canvas-area canvas { + display: block; + cursor: crosshair; + box-shadow: 0 0 0 1px var(--paint-border); } - -@media (min-width: 1280px) { - .\!container { - max-width: 1280px !important; - } - - .container { - max-width: 1280px; - } -} - -@media (min-width: 1536px) { - .\!container { - max-width: 1536px !important; - } - - .container { - max-width: 1536px; - } -} - -.absolute { - position: absolute; -} - -.relative { - position: relative; -} - -.left-0 { - left: 0px; -} - -.right-0 { - right: 0px; -} - -.top-0 { - top: 0px; -} - -.my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; -} - -.mb-0\.5 { - margin-bottom: 0.125rem; -} - -.ml-2 { - margin-left: 0.5rem; -} - -.mr-4 { - margin-right: 1rem; -} - -.flex { - display: flex; -} - -.inline-flex { - display: inline-flex; -} - -.h-0\.5 { - height: 0.125rem; -} - -.h-5 { - height: 1.25rem; -} - -.h-6 { - height: 1.5rem; -} - -.h-7 { - height: 1.75rem; -} - -.min-h-0 { - min-height: 0px; -} - -.w-5 { - width: 1.25rem; -} - -.w-6 { - width: 1.5rem; -} - -.w-7 { - width: 1.75rem; -} - -.w-8 { - width: 2rem; -} - -.w-full { - width: 100%; -} - -.min-w-0 { - min-width: 0px; -} - -.flex-1 { - flex: 1 1 0%; -} - -.flex-grow { - flex-grow: 1; -} - -.transform { - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.cursor-move { - cursor: move; -} - -.resize { - resize: both; -} - -.flex-col { - flex-direction: column; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.items-center { - align-items: center; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.gap-1 { - gap: 0.25rem; -} - -.overflow-hidden { - overflow: hidden; -} - -.rounded-md { - border-radius: 0.375rem; -} - -.border { - border-width: 1px; -} - -.border-2 { - border-width: 2px; -} - -.border-r { - border-right-width: 1px; -} - -.border-t { - border-top-width: 1px; -} - -.border-gray-200 { - --tw-border-opacity: 1; - border-color: rgb(229 231 235 / var(--tw-border-opacity, 1)); -} - -.border-gray-400 { - --tw-border-opacity: 1; - border-color: rgb(156 163 175 / var(--tw-border-opacity, 1)); -} - -.bg-blue-900 { - --tw-bg-opacity: 1; - background-color: rgb(30 58 138 / var(--tw-bg-opacity, 1)); -} - -.bg-gray-200 { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); -} - -.bg-gray-300 { - --tw-bg-opacity: 1; - background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1)); -} - -.bg-gray-400 { - --tw-bg-opacity: 1; - background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1)); -} - -.bg-red-500 { - --tw-bg-opacity: 1; - background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1)); -} - -.bg-teal-600 { - --tw-bg-opacity: 1; - background-color: rgb(13 148 136 / var(--tw-bg-opacity, 1)); -} - -.bg-white { - --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); -} - -.p-0 { - padding: 0px; -} - -.p-0\.5 { - padding: 0.125rem; -} - -.p-1 { - padding: 0.25rem; -} - -.p-2 { - padding: 0.5rem; -} - -.px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; -} - -.text-center { - text-align: center; -} - -.text-sm { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.text-xs { - font-size: 0.75rem; - line-height: 1rem; -} - -.font-medium { - font-weight: 500; -} - -.text-black { - --tw-text-opacity: 1; - color: rgb(0 0 0 / var(--tw-text-opacity, 1)); -} - -.text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity, 1)); -} - -.underline { - text-decoration-line: underline; -} - -.shadow-inner { - --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); - --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-md { - --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.ring-1 { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.ring-gray-600 { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(75 85 99 / var(--tw-ring-opacity, 1)); -} - -.hover\:bg-blue-700:hover { - --tw-bg-opacity: 1; - background-color: rgb(29 78 216 / var(--tw-bg-opacity, 1)); -} - -.focus-visible\:outline-none:focus-visible { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.active\:bg-gray-100\/50:active { - background-color: rgb(243 244 246 / 0.5); -} - -.active\:bg-gray-300:active { - --tw-bg-opacity: 1; - background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1)); -} - -.disabled\:pointer-events-none:disabled { - pointer-events: none; -} - -.disabled\:opacity-50:disabled { - opacity: 0.5; -} \ No newline at end of file diff --git a/wigglystuff/static/paint.js b/wigglystuff/static/paint.js index 0a2020f1..31eb737f 100644 --- a/wigglystuff/static/paint.js +++ b/wigglystuff/static/paint.js @@ -1,12 +1,12 @@ -var yd=Object.create;var pf=Object.defineProperty;var rd=Object.getOwnPropertyDescriptor;var md=Object.getOwnPropertyNames;var gd=Object.getPrototypeOf,Sd=Object.prototype.hasOwnProperty;var Ut=(l,t)=>()=>(t||l((t={exports:{}}).exports,t),t.exports);var bd=(l,t,u,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of md(t))!Sd.call(l,e)&&e!==u&&pf(l,e,{get:()=>t[e],enumerable:!(a=rd(t,e))||a.enumerable});return l};var Fn=(l,t,u)=>(u=l!=null?yd(gd(l)):{},bd(t||!l||!l.__esModule?pf(u,"default",{value:l,enumerable:!0}):u,l));var jf=Ut(H=>{"use strict";var Pn=Symbol.for("react.transitional.element"),Ed=Symbol.for("react.portal"),Td=Symbol.for("react.fragment"),zd=Symbol.for("react.strict_mode"),Ad=Symbol.for("react.profiler"),Md=Symbol.for("react.consumer"),Od=Symbol.for("react.context"),Dd=Symbol.for("react.forward_ref"),_d=Symbol.for("react.suspense"),Ud=Symbol.for("react.memo"),Cf=Symbol.for("react.lazy"),Nf=Symbol.iterator;function Hd(l){return l===null||typeof l!="object"?null:(l=Nf&&l[Nf]||l["@@iterator"],typeof l=="function"?l:null)}var xf={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Xf=Object.assign,Gf={};function _u(l,t,u){this.props=l,this.context=t,this.refs=Gf,this.updater=u||xf}_u.prototype.isReactComponent={};_u.prototype.setState=function(l,t){if(typeof l!="object"&&typeof l!="function"&&l!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,l,t,"setState")};_u.prototype.forceUpdate=function(l){this.updater.enqueueForceUpdate(this,l,"forceUpdate")};function Qf(){}Qf.prototype=_u.prototype;function In(l,t,u){this.props=l,this.context=t,this.refs=Gf,this.updater=u||xf}var lc=In.prototype=new Qf;lc.constructor=In;Xf(lc,_u.prototype);lc.isPureReactComponent=!0;var Rf=Array.isArray,k={H:null,A:null,T:null,S:null},Zf=Object.prototype.hasOwnProperty;function tc(l,t,u,a,e,n){return u=n.ref,{$$typeof:Pn,type:l,key:t,ref:u!==void 0?u:null,props:n}}function pd(l,t){return tc(l.type,t,void 0,void 0,void 0,l.props)}function uc(l){return typeof l=="object"&&l!==null&&l.$$typeof===Pn}function Nd(l){var t={"=":"=0",":":"=2"};return"$"+l.replace(/[=:]/g,function(u){return t[u]})}var Bf=/\/+/g;function $n(l,t){return typeof l=="object"&&l!==null&&l.key!=null?Nd(""+l.key):t.toString(36)}function qf(){}function Rd(l){switch(l.status){case"fulfilled":return l.value;case"rejected":throw l.reason;default:switch(typeof l.status=="string"?l.then(qf,qf):(l.status="pending",l.then(function(t){l.status==="pending"&&(l.status="fulfilled",l.value=t)},function(t){l.status==="pending"&&(l.status="rejected",l.reason=t)})),l.status){case"fulfilled":return l.value;case"rejected":throw l.reason}}throw l}function Du(l,t,u,a,e){var n=typeof l;(n==="undefined"||n==="boolean")&&(l=null);var c=!1;if(l===null)c=!0;else switch(n){case"bigint":case"string":case"number":c=!0;break;case"object":switch(l.$$typeof){case Pn:case Ed:c=!0;break;case Cf:return c=l._init,Du(c(l._payload),t,u,a,e)}}if(c)return e=e(l),c=a===""?"."+$n(l,0):a,Rf(e)?(u="",c!=null&&(u=c.replace(Bf,"$&/")+"/"),Du(e,t,u,"",function(o){return o})):e!=null&&(uc(e)&&(e=pd(e,u+(e.key==null||l&&l.key===e.key?"":(""+e.key).replace(Bf,"$&/")+"/")+c)),t.push(e)),1;c=0;var i=a===""?".":a+":";if(Rf(l))for(var f=0;f{"use strict";Lf.exports=jf()});var If=Ut(G=>{"use strict";function cc(l,t){var u=l.length;l.push(t);l:for(;0>>1,e=l[a];if(0>>1;aze(i,u))fze(o,i)?(l[a]=o,l[f]=u,a=f):(l[a]=i,l[c]=u,a=c);else if(fze(o,u))l[a]=o,l[f]=u,a=f;else break l}}return t}function ze(l,t){var u=l.sortIndex-t.sortIndex;return u!==0?u:l.id-t.id}G.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Vf=performance,G.unstable_now=function(){return Vf.now()}):(ac=Date,Kf=ac.now(),G.unstable_now=function(){return ac.now()-Kf});var Vf,ac,Kf,lt=[],Ht=[],Yd=1,Yl=null,ml=3,Oe=!1,tu=!1,ma=!1,Wf=typeof setTimeout=="function"?setTimeout:null,kf=typeof clearTimeout=="function"?clearTimeout:null,wf=typeof setImmediate<"u"?setImmediate:null;function Ae(l){for(var t=kl(Ht);t!==null;){if(t.callback===null)Me(Ht);else if(t.startTime<=l)Me(Ht),t.sortIndex=t.expirationTime,cc(lt,t);else break;t=kl(Ht)}}function ic(l){if(ma=!1,Ae(l),!tu)if(kl(lt)!==null)tu=!0,fc();else{var t=kl(Ht);t!==null&&sc(ic,t.startTime-l)}}var De=!1,ga=-1,Ff=5,$f=-1;function Pf(){return!(G.unstable_now()-$fl&&Pf());){var a=Yl.callback;if(typeof a=="function"){Yl.callback=null,ml=Yl.priorityLevel;var e=a(Yl.expirationTime<=l);if(l=G.unstable_now(),typeof e=="function"){Yl.callback=e,Ae(l),t=!0;break t}Yl===kl(lt)&&Me(lt),Ae(l)}else Me(lt);Yl=kl(lt)}if(Yl!==null)t=!0;else{var n=kl(Ht);n!==null&&sc(ic,n.startTime-l),t=!1}}break l}finally{Yl=null,ml=u,Oe=!1}t=void 0}}finally{t?ra():De=!1}}}var ra;typeof wf=="function"?ra=function(){wf(ec)}:typeof MessageChannel<"u"?(nc=new MessageChannel,Jf=nc.port2,nc.port1.onmessage=ec,ra=function(){Jf.postMessage(null)}):ra=function(){Wf(ec,0)};var nc,Jf;function fc(){De||(De=!0,ra())}function sc(l,t){ga=Wf(function(){l(G.unstable_now())},t)}G.unstable_IdlePriority=5;G.unstable_ImmediatePriority=1;G.unstable_LowPriority=4;G.unstable_NormalPriority=3;G.unstable_Profiling=null;G.unstable_UserBlockingPriority=2;G.unstable_cancelCallback=function(l){l.callback=null};G.unstable_continueExecution=function(){tu||Oe||(tu=!0,fc())};G.unstable_forceFrameRate=function(l){0>l||125a?(l.sortIndex=u,cc(Ht,l),kl(lt)===null&&l===kl(Ht)&&(ma?(kf(ga),ga=-1):ma=!0,sc(ic,u-a))):(l.sortIndex=e,cc(lt,l),tu||Oe||(tu=!0,fc())),l};G.unstable_shouldYield=Pf;G.unstable_wrapCallback=function(l){var t=ml;return function(){var u=ml;ml=t;try{return l.apply(this,arguments)}finally{ml=u}}}});var t0=Ut((zy,l0)=>{"use strict";l0.exports=If()});var a0=Ut(Tl=>{"use strict";var Cd=ya();function u0(l){var t="https://react.dev/errors/"+l;if(1{"use strict";function e0(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e0)}catch(l){console.error(l)}}e0(),n0.exports=a0()});var ud=Ut(Jn=>{"use strict";var fl=t0(),Os=ya(),Gd=c0();function g(l){var t="https://react.dev/errors/"+l;if(1()=>(t||l((t={exports:{}}).exports,t),t.exports);var id=(l,t,u,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of nd(t))!fd.call(l,e)&&e!==u&&Oi(l,e,{get:()=>t[e],enumerable:!(a=ed(t,e))||a.enumerable});return l};var wn=(l,t,u)=>(u=l!=null?ad(cd(l)):{},id(t||!l||!l.__esModule?Oi(u,"default",{value:l,enumerable:!0}):u,l));var Xi=Mt(U=>{"use strict";var kn=Symbol.for("react.transitional.element"),sd=Symbol.for("react.portal"),vd=Symbol.for("react.fragment"),dd=Symbol.for("react.strict_mode"),hd=Symbol.for("react.profiler"),od=Symbol.for("react.consumer"),yd=Symbol.for("react.context"),md=Symbol.for("react.forward_ref"),gd=Symbol.for("react.suspense"),rd=Symbol.for("react.memo"),Ri=Symbol.for("react.lazy"),Mi=Symbol.iterator;function Sd(l){return l===null||typeof l!="object"?null:(l=Mi&&l[Mi]||l["@@iterator"],typeof l=="function"?l:null)}var pi={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Ni=Object.assign,qi={};function Au(l,t,u){this.props=l,this.context=t,this.refs=qi,this.updater=u||pi}Au.prototype.isReactComponent={};Au.prototype.setState=function(l,t){if(typeof l!="object"&&typeof l!="function"&&l!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,l,t,"setState")};Au.prototype.forceUpdate=function(l){this.updater.enqueueForceUpdate(this,l,"forceUpdate")};function Bi(){}Bi.prototype=Au.prototype;function $n(l,t,u){this.props=l,this.context=t,this.refs=qi,this.updater=u||pi}var Fn=$n.prototype=new Bi;Fn.constructor=$n;Ni(Fn,Au.prototype);Fn.isPureReactComponent=!0;var Di=Array.isArray,w={H:null,A:null,T:null,S:null},Yi=Object.prototype.hasOwnProperty;function Pn(l,t,u,a,e,n){return u=n.ref,{$$typeof:kn,type:l,key:t,ref:u!==void 0?u:null,props:n}}function bd(l,t){return Pn(l.type,t,void 0,void 0,void 0,l.props)}function In(l){return typeof l=="object"&&l!==null&&l.$$typeof===kn}function Ed(l){var t={"=":"=0",":":"=2"};return"$"+l.replace(/[=:]/g,function(u){return t[u]})}var _i=/\/+/g;function Wn(l,t){return typeof l=="object"&&l!==null&&l.key!=null?Ed(""+l.key):t.toString(36)}function Ui(){}function Td(l){switch(l.status){case"fulfilled":return l.value;case"rejected":throw l.reason;default:switch(typeof l.status=="string"?l.then(Ui,Ui):(l.status="pending",l.then(function(t){l.status==="pending"&&(l.status="fulfilled",l.value=t)},function(t){l.status==="pending"&&(l.status="rejected",l.reason=t)})),l.status){case"fulfilled":return l.value;case"rejected":throw l.reason}}throw l}function zu(l,t,u,a,e){var n=typeof l;(n==="undefined"||n==="boolean")&&(l=null);var c=!1;if(l===null)c=!0;else switch(n){case"bigint":case"string":case"number":c=!0;break;case"object":switch(l.$$typeof){case kn:case sd:c=!0;break;case Ri:return c=l._init,zu(c(l._payload),t,u,a,e)}}if(c)return e=e(l),c=a===""?"."+Wn(l,0):a,Di(e)?(u="",c!=null&&(u=c.replace(_i,"$&/")+"/"),zu(e,t,u,"",function(s){return s})):e!=null&&(In(e)&&(e=bd(e,u+(e.key==null||l&&l.key===e.key?"":(""+e.key).replace(_i,"$&/")+"/")+c)),t.push(e)),1;c=0;var f=a===""?".":a+":";if(Di(l))for(var i=0;i{"use strict";Ci.exports=Xi()});var wi=Mt(Z=>{"use strict";function ac(l,t){var u=l.length;l.push(t);l:for(;0>>1,e=l[a];if(0>>1;aEe(f,u))iEe(s,f)?(l[a]=s,l[i]=u,a=i):(l[a]=f,l[c]=u,a=c);else if(iEe(s,u))l[a]=s,l[i]=u,a=i;else break l}}return t}function Ee(l,t){var u=l.sortIndex-t.sortIndex;return u!==0?u:l.id-t.id}Z.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Gi=performance,Z.unstable_now=function(){return Gi.now()}):(lc=Date,Qi=lc.now(),Z.unstable_now=function(){return lc.now()-Qi});var Gi,lc,Qi,Fl=[],Dt=[],Od=1,Nl=null,ol=3,Ae=!1,Pt=!1,ya=!1,ji=typeof setTimeout=="function"?setTimeout:null,Vi=typeof clearTimeout=="function"?clearTimeout:null,Zi=typeof setImmediate<"u"?setImmediate:null;function Te(l){for(var t=Kl(Dt);t!==null;){if(t.callback===null)ze(Dt);else if(t.startTime<=l)ze(Dt),t.sortIndex=t.expirationTime,ac(Fl,t);else break;t=Kl(Dt)}}function ec(l){if(ya=!1,Te(l),!Pt)if(Kl(Fl)!==null)Pt=!0,nc();else{var t=Kl(Dt);t!==null&&cc(ec,t.startTime-l)}}var Oe=!1,ma=-1,Li=5,Ki=-1;function Ji(){return!(Z.unstable_now()-Kil&&Ji());){var a=Nl.callback;if(typeof a=="function"){Nl.callback=null,ol=Nl.priorityLevel;var e=a(Nl.expirationTime<=l);if(l=Z.unstable_now(),typeof e=="function"){Nl.callback=e,Te(l),t=!0;break t}Nl===Kl(Fl)&&ze(Fl),Te(l)}else ze(Fl);Nl=Kl(Fl)}if(Nl!==null)t=!0;else{var n=Kl(Dt);n!==null&&cc(ec,n.startTime-l),t=!1}}break l}finally{Nl=null,ol=u,Ae=!1}t=void 0}}finally{t?oa():Oe=!1}}}var oa;typeof Zi=="function"?oa=function(){Zi(tc)}:typeof MessageChannel<"u"?(uc=new MessageChannel,xi=uc.port2,uc.port1.onmessage=tc,oa=function(){xi.postMessage(null)}):oa=function(){ji(tc,0)};var uc,xi;function nc(){Oe||(Oe=!0,oa())}function cc(l,t){ma=ji(function(){l(Z.unstable_now())},t)}Z.unstable_IdlePriority=5;Z.unstable_ImmediatePriority=1;Z.unstable_LowPriority=4;Z.unstable_NormalPriority=3;Z.unstable_Profiling=null;Z.unstable_UserBlockingPriority=2;Z.unstable_cancelCallback=function(l){l.callback=null};Z.unstable_continueExecution=function(){Pt||Ae||(Pt=!0,nc())};Z.unstable_forceFrameRate=function(l){0>l||125a?(l.sortIndex=u,ac(Dt,l),Kl(Fl)===null&&l===Kl(Dt)&&(ya?(Vi(ma),ma=-1):ya=!0,cc(ec,u-a))):(l.sortIndex=e,ac(Fl,l),Pt||Ae||(Pt=!0,nc())),l};Z.unstable_shouldYield=Ji;Z.unstable_wrapCallback=function(l){var t=ol;return function(){var u=ol;ol=t;try{return l.apply(this,arguments)}finally{ol=u}}}});var ki=Mt((vy,Wi)=>{"use strict";Wi.exports=wi()});var Fi=Mt(rl=>{"use strict";var Md=ha();function $i(l){var t="https://react.dev/errors/"+l;if(1{"use strict";function Pi(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Pi)}catch(l){console.error(l)}}Pi(),Ii.exports=Fi()});var kv=Mt(Kn=>{"use strict";var nl=ki(),b1=ha(),Ud=l0();function r(l){var t="https://react.dev/errors/"+l;if(1)":-1e||f[a]!==o[e]){var r=` -`+f[a].replace(" at new "," at ");return l.displayName&&r.includes("")&&(r=r.replace("",l.displayName)),r}while(1<=a&&0<=e);break}}}finally{dc=!1,Error.prepareStackTrace=u}return(u=l?l.displayName||l.name:"")?Ua(u):""}function Vd(l){switch(l.tag){case 26:case 27:case 5:return Ua(l.type);case 16:return Ua("Lazy");case 13:return Ua("Suspense");case 19:return Ua("SuspenseList");case 0:case 15:return l=vc(l.type,!1),l;case 11:return l=vc(l.type.render,!1),l;case 1:return l=vc(l.type,!0),l;default:return""}}function s0(l){try{var t="";do t+=Vd(l),l=l.return;while(l);return t}catch(u){return` +`+fc+l+u0}var ic=!1;function sc(l,t){if(!l||ic)return"";ic=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var S=function(){throw Error()};if(Object.defineProperty(S.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(S,[])}catch(m){var o=m}Reflect.construct(l,[],S)}else{try{S.call()}catch(m){o=m}l.call(S.prototype)}}else{try{throw Error()}catch(m){o=m}(S=l())&&typeof S.catch=="function"&&S.catch(function(){})}}catch(m){if(m&&o&&typeof m.stack=="string")return[m.stack,o.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var e=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");e&&e.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var n=a.DetermineComponentFrameRoot(),c=n[0],f=n[1];if(c&&f){var i=c.split(` +`),s=f.split(` +`);for(e=a=0;ae||i[a]!==s[e]){var y=` +`+i[a].replace(" at new "," at ");return l.displayName&&y.includes("")&&(y=y.replace("",l.displayName)),y}while(1<=a&&0<=e);break}}}finally{ic=!1,Error.prepareStackTrace=u}return(u=l?l.displayName||l.name:"")?Da(u):""}function qd(l){switch(l.tag){case 26:case 27:case 5:return Da(l.type);case 16:return Da("Lazy");case 13:return Da("Suspense");case 19:return Da("SuspenseList");case 0:case 15:return l=sc(l.type,!1),l;case 11:return l=sc(l.type.render,!1),l;case 1:return l=sc(l.type,!0),l;default:return""}}function a0(l){try{var t="";do t+=qd(l),l=l.return;while(l);return t}catch(u){return` Error generating stack: `+u.message+` -`+u.stack}}function fa(l){var t=l,u=l;if(l.alternate)for(;t.return;)t=t.return;else{l=t;do t=l,(t.flags&4098)!==0&&(u=t.return),l=t.return;while(l)}return t.tag===3?u:null}function ps(l){if(l.tag===13){var t=l.memoizedState;if(t===null&&(l=l.alternate,l!==null&&(t=l.memoizedState)),t!==null)return t.dehydrated}return null}function o0(l){if(fa(l)!==l)throw Error(g(188))}function Kd(l){var t=l.alternate;if(!t){if(t=fa(l),t===null)throw Error(g(188));return t!==l?null:l}for(var u=l,a=t;;){var e=u.return;if(e===null)break;var n=e.alternate;if(n===null){if(a=e.return,a!==null){u=a;continue}break}if(e.child===n.child){for(n=e.child;n;){if(n===u)return o0(e),l;if(n===a)return o0(e),t;n=n.sibling}throw Error(g(188))}if(u.return!==a.return)u=e,a=n;else{for(var c=!1,i=e.child;i;){if(i===u){c=!0,u=e,a=n;break}if(i===a){c=!0,a=e,u=n;break}i=i.sibling}if(!c){for(i=n.child;i;){if(i===u){c=!0,u=n,a=e;break}if(i===a){c=!0,a=n,u=e;break}i=i.sibling}if(!c)throw Error(g(189))}}if(u.alternate!==a)throw Error(g(190))}if(u.tag!==3)throw Error(g(188));return u.stateNode.current===u?l:t}function Ns(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l;for(l=l.child;l!==null;){if(t=Ns(l),t!==null)return t;l=l.sibling}return null}var Ha=Array.isArray,K=Gd.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,fu={pending:!1,data:null,method:null,action:null},Kc=[],Yu=-1;function it(l){return{current:l}}function vl(l){0>Yu||(l.current=Kc[Yu],Kc[Yu]=null,Yu--)}function W(l,t){Yu++,Kc[Yu]=l.current,l.current=t}var at=it(null),Ja=it(null),Zt=it(null),en=it(null);function nn(l,t){switch(W(Zt,t),W(Ja,l),W(at,null),l=t.nodeType,l){case 9:case 11:t=(t=t.documentElement)&&(t=t.namespaceURI)?vs(t):0;break;default:if(l=l===8?t.parentNode:t,t=l.tagName,l=l.namespaceURI)l=vs(l),t=Vo(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}vl(at),W(at,t)}function Iu(){vl(at),vl(Ja),vl(Zt)}function wc(l){l.memoizedState!==null&&W(en,l);var t=at.current,u=Vo(t,l.type);t!==u&&(W(Ja,l),W(at,u))}function cn(l){Ja.current===l&&(vl(at),vl(Ja)),en.current===l&&(vl(en),ee._currentValue=fu)}var Jc=Object.prototype.hasOwnProperty,Ci=fl.unstable_scheduleCallback,hc=fl.unstable_cancelCallback,wd=fl.unstable_shouldYield,Jd=fl.unstable_requestPaint,et=fl.unstable_now,Wd=fl.unstable_getCurrentPriorityLevel,Rs=fl.unstable_ImmediatePriority,Bs=fl.unstable_UserBlockingPriority,fn=fl.unstable_NormalPriority,kd=fl.unstable_LowPriority,qs=fl.unstable_IdlePriority,Fd=fl.log,$d=fl.unstable_setDisableYieldValue,fe=null,Nl=null;function Pd(l){if(Nl&&typeof Nl.onCommitFiberRoot=="function")try{Nl.onCommitFiberRoot(fe,l,void 0,(l.current.flags&128)===128)}catch{}}function Gt(l){if(typeof Fd=="function"&&$d(l),Nl&&typeof Nl.setStrictMode=="function")try{Nl.setStrictMode(fe,l)}catch{}}var Rl=Math.clz32?Math.clz32:tv,Id=Math.log,lv=Math.LN2;function tv(l){return l>>>=0,l===0?32:31-(Id(l)/lv|0)|0}var He=128,pe=4194304;function au(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Bn(l,t){var u=l.pendingLanes;if(u===0)return 0;var a=0,e=l.suspendedLanes,n=l.pingedLanes,c=l.warmLanes;l=l.finishedLanes!==0;var i=u&134217727;return i!==0?(u=i&~e,u!==0?a=au(u):(n&=i,n!==0?a=au(n):l||(c=i&~c,c!==0&&(a=au(c))))):(i=u&~e,i!==0?a=au(i):n!==0?a=au(n):l||(c=u&~c,c!==0&&(a=au(c)))),a===0?0:t!==0&&t!==a&&(t&e)===0&&(e=a&-a,c=t&-t,e>=c||e===32&&(c&4194176)!==0)?t:a}function se(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function uv(l,t){switch(l){case 1:case 2:case 4:case 8:return t+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ys(){var l=He;return He<<=1,(He&4194176)===0&&(He=128),l}function Cs(){var l=pe;return pe<<=1,(pe&62914560)===0&&(pe=4194304),l}function yc(l){for(var t=[],u=0;31>u;u++)t.push(l);return t}function oe(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function av(l,t,u,a,e,n){var c=l.pendingLanes;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=u,l.entangledLanes&=u,l.errorRecoveryDisabledLanes&=u,l.shellSuspendCounter=0;var i=l.entanglements,f=l.expirationTimes,o=l.hiddenUpdates;for(u=c&~u;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),iv=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),v0={},h0={};function fv(l){return Jc.call(h0,l)?!0:Jc.call(v0,l)?!1:iv.test(l)?h0[l]=!0:(v0[l]=!0,!1)}function we(l,t,u){if(fv(t))if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":l.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){l.removeAttribute(t);return}}l.setAttribute(t,""+u)}}function Ne(l,t,u){if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(t);return}l.setAttribute(t,""+u)}}function ot(l,t,u,a){if(a===null)l.removeAttribute(u);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(u);return}l.setAttributeNS(t,u,""+a)}}function Gl(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function Ls(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function sv(l){var t=Ls(l)?"checked":"value",u=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),a=""+l[t];if(!l.hasOwnProperty(t)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var e=u.get,n=u.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(l,t,{enumerable:u.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function sn(l){l._valueTracker||(l._valueTracker=sv(l))}function Vs(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var u=t.getValue(),a="";return l&&(a=Ls(l)?l.checked?"true":"false":l.value),l=a,l!==u?(t.setValue(l),!0):!1}function on(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var ov=/[\n"\\]/g;function jl(l){return l.replace(ov,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function kc(l,t,u,a,e,n,c,i){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+Gl(t)):l.value!==""+Gl(t)&&(l.value=""+Gl(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?Fc(l,c,Gl(t)):u!=null?Fc(l,c,Gl(u)):a!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.name=""+Gl(i):l.removeAttribute("name")}function Ks(l,t,u,a,e,n,c,i){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||u!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;u=u!=null?""+Gl(u):"",t=t!=null?""+Gl(t):u,i||t===l.value||(l.value=t),l.defaultValue=t}a=a??e,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=i?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c)}function Fc(l,t,u){t==="number"&&on(l.ownerDocument)===l||l.defaultValue===""+u||(l.defaultValue=""+u)}function wu(l,t,u,a){if(l=l.options,t){t={};for(var e=0;e=Ra),E0=" ",T0=!1;function Ps(l,t){switch(l){case"keyup":return Xv.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Is(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var xu=!1;function Qv(l,t){switch(l){case"compositionend":return Is(t);case"keypress":return t.which!==32?null:(T0=!0,E0);case"textInput":return l=t.data,l===E0&&T0?null:l;default:return null}}function Zv(l,t){if(xu)return l==="compositionend"||!ji&&Ps(l,t)?(l=Fs(),We=Qi=Qt=null,xu=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:u,offset:t-l};l=a}l:{for(;u;){if(u.nextSibling){u=u.nextSibling;break l}u=u.parentNode}u=void 0}u=O0(u)}}function a1(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?a1(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function e1(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=on(l.document);t instanceof l.HTMLIFrameElement;){try{var u=typeof t.contentWindow.location.href=="string"}catch{u=!1}if(u)l=t.contentWindow;else break;t=on(l.document)}return t}function Li(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}function kv(l,t){var u=e1(t);t=l.focusedElem;var a=l.selectionRange;if(u!==t&&t&&t.ownerDocument&&a1(t.ownerDocument.documentElement,t)){if(a!==null&&Li(t)){if(l=a.start,u=a.end,u===void 0&&(u=l),"selectionStart"in t)t.selectionStart=l,t.selectionEnd=Math.min(u,t.value.length);else if(u=(l=t.ownerDocument||document)&&l.defaultView||window,u.getSelection){u=u.getSelection();var e=t.textContent.length,n=Math.min(a.start,e);a=a.end===void 0?n:Math.min(a.end,e),!u.extend&&n>a&&(e=a,a=n,n=e),e=D0(t,n);var c=D0(t,a);e&&c&&(u.rangeCount!==1||u.anchorNode!==e.node||u.anchorOffset!==e.offset||u.focusNode!==c.node||u.focusOffset!==c.offset)&&(l=l.createRange(),l.setStart(e.node,e.offset),u.removeAllRanges(),n>a?(u.addRange(l),u.extend(c.node,c.offset)):(l.setEnd(c.node,c.offset),u.addRange(l)))}}for(l=[],u=t;u=u.parentNode;)u.nodeType===1&&l.push({element:u,left:u.scrollLeft,top:u.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Xu=null,Ic=null,qa=null,li=!1;function _0(l,t,u){var a=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;li||Xu==null||Xu!==on(a)||(a=Xu,"selectionStart"in a&&Li(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),qa&&$a(qa,a)||(qa=a,a=Dn(Ic,"onSelect"),0>=c,e-=c,St=1<<32-Rl(t)+e|u<M?(Z=A,A=null):Z=A.sibling;var N=h(d,A,v[M],m);if(N===null){A===null&&(A=Z);break}l&&A&&N.alternate===null&&t(d,A),s=n(N,s,M),_===null?E=N:_.sibling=N,_=N,A=Z}if(M===v.length)return u(d,A),C&&eu(d,M),E;if(A===null){for(;MM?(Z=A,A=null):Z=A.sibling;var Wl=h(d,A,N.value,m);if(Wl===null){A===null&&(A=Z);break}l&&A&&Wl.alternate===null&&t(d,A),s=n(Wl,s,M),_===null?E=Wl:_.sibling=Wl,_=Wl,A=Z}if(N.done)return u(d,A),C&&eu(d,M),E;if(A===null){for(;!N.done;M++,N=v.next())N=S(d,N.value,m),N!==null&&(s=n(N,s,M),_===null?E=N:_.sibling=N,_=N);return C&&eu(d,M),E}for(A=a(A);!N.done;M++,N=v.next())N=y(A,d,M,N.value,m),N!==null&&(l&&N.alternate!==null&&A.delete(N.key===null?M:N.key),s=n(N,s,M),_===null?E=N:_.sibling=N,_=N);return l&&A.forEach(function(Ou){return t(d,Ou)}),C&&eu(d,M),E}function J(d,s,v,m){if(typeof v=="object"&&v!==null&&v.type===qu&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Ue:l:{for(var E=v.key;s!==null;){if(s.key===E){if(E=v.type,E===qu){if(s.tag===7){u(d,s.sibling),m=e(s,v.props.children),m.return=d,d=m;break l}}else if(s.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Bt&&q0(E)===s.type){u(d,s.sibling),m=e(s,v.props),za(m,v),m.return=d,d=m;break l}u(d,s);break}else t(d,s);s=s.sibling}v.type===qu?(m=du(v.props.children,d.mode,m,v.key),m.return=d,d=m):(m=ln(v.type,v.key,v.props,null,d.mode,m),za(m,v),m.return=d,d=m)}return c(d);case _a:l:{for(E=v.key;s!==null;){if(s.key===E)if(s.tag===4&&s.stateNode.containerInfo===v.containerInfo&&s.stateNode.implementation===v.implementation){u(d,s.sibling),m=e(s,v.children||[]),m.return=d,d=m;break l}else{u(d,s);break}else t(d,s);s=s.sibling}m=Bc(v,d.mode,m),m.return=d,d=m}return c(d);case Bt:return E=v._init,v=E(v._payload),J(d,s,v,m)}if(Ha(v))return T(d,s,v,m);if(ba(v)){if(E=ba(v),typeof E!="function")throw Error(g(150));return v=E.call(v),D(d,s,v,m)}if(typeof v.then=="function")return J(d,s,Ce(v),m);if(v.$$typeof===gt)return J(d,s,Xe(d,v),m);xe(d,v)}return typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint"?(v=""+v,s!==null&&s.tag===6?(u(d,s.sibling),m=e(s,v),m.return=d,d=m):(u(d,s),m=Rc(v,d.mode,m),m.return=d,d=m),c(d)):u(d,s)}return function(d,s,v,m){try{Ia=0;var E=J(d,s,v,m);return Wu=null,E}catch(A){if(A===Ya)throw A;var _=Vl(29,A,null,d.mode);return _.lanes=m,_.return=d,_}finally{}}}var ru=r1(!0),m1=r1(!1),ua=it(null),yn=it(0);function Y0(l,t){l=Dt,W(yn,l),W(ua,t),Dt=l|t.baseLanes}function ai(){W(yn,Dt),W(ua,ua.current)}function Wi(){Dt=yn.current,vl(ua),vl(yn)}var wl=it(null),nt=null;function Yt(l){var t=l.alternate;W(il,il.current&1),W(wl,l),nt===null&&(t===null||ua.current!==null||t.memoizedState!==null)&&(nt=l)}function g1(l){if(l.tag===22){if(W(il,il.current),W(wl,l),nt===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(nt=l)}}else Ct(l)}function Ct(){W(il,il.current),W(wl,wl.current)}function Et(l){vl(wl),nt===l&&(nt=null),vl(il)}var il=it(0);function rn(l){for(var t=l;t!==null;){if(t.tag===13){var u=t.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||u.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var lh=typeof AbortController<"u"?AbortController:function(){var l=[],t=this.signal={aborted:!1,addEventListener:function(u,a){l.push(a)}};this.abort=function(){t.aborted=!0,l.forEach(function(u){return u()})}},th=fl.unstable_scheduleCallback,uh=fl.unstable_NormalPriority,cl={$$typeof:gt,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function ki(){return{controller:new lh,data:new Map,refCount:0}}function he(l){l.refCount--,l.refCount===0&&th(uh,function(){l.controller.abort()})}var xa=null,ei=0,aa=0,ku=null;function ah(l,t){if(xa===null){var u=xa=[];ei=0,aa=bf(),ku={status:"pending",value:void 0,then:function(a){u.push(a)}}}return ei++,t.then(C0,C0),t}function C0(){if(--ei===0&&xa!==null){ku!==null&&(ku.status="fulfilled");var l=xa;xa=null,aa=0,ku=null;for(var t=0;tn?n:8;var c=U.T,i={};U.T=i,sf(l,!1,t,u);try{var f=e(),o=U.S;if(o!==null&&o(i,f),f!==null&&typeof f=="object"&&typeof f.then=="function"){var r=eh(f,a);Xa(l,t,r,Bl(l))}else Xa(l,t,a,Bl(l))}catch(S){Xa(l,t,{then:function(){},status:"rejected",reason:S},Bl())}finally{K.p=n,U.T=c}}function sh(){}function ii(l,t,u,a){if(l.tag!==5)throw Error(g(476));var e=V1(l).queue;L1(l,e,t,fu,u===null?sh:function(){return K1(l),u(a)})}function V1(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:fu,baseState:fu,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Mt,lastRenderedState:fu},next:null};var u={};return t.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Mt,lastRenderedState:u},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function K1(l){var t=V1(l).next.queue;Xa(l,t,{},Bl())}function ff(){return Sl(ee)}function w1(){return al().memoizedState}function J1(){return al().memoizedState}function oh(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var u=Bl();l=jt(u);var a=Lt(t,l,u);a!==null&&(Al(a,t,u),Qa(a,t,u)),t={cache:ki()},l.payload=t;return}t=t.return}}function dh(l,t,u){var a=Bl();u={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null},jn(l)?k1(t,u):(u=Ki(l,t,u,a),u!==null&&(Al(u,l,a),F1(u,t,a)))}function W1(l,t,u){var a=Bl();Xa(l,t,u,a)}function Xa(l,t,u,a){var e={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null};if(jn(l))k1(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,i=n(c,u);if(e.hasEagerState=!0,e.eagerState=i,ql(i,c))return Xn(l,t,e,0),L===null&&xn(),!1}catch{}finally{}if(u=Ki(l,t,e,a),u!==null)return Al(u,l,a),F1(u,t,a),!0}return!1}function sf(l,t,u,a){if(a={lane:2,revertLane:bf(),action:a,hasEagerState:!1,eagerState:null,next:null},jn(l)){if(t)throw Error(g(479))}else t=Ki(l,u,a,2),t!==null&&Al(t,l,2)}function jn(l){var t=l.alternate;return l===p||t!==null&&t===p}function k1(l,t){Fu=mn=!0;var u=l.pending;u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t}function F1(l,t,u){if((u&4194176)!==0){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,Xs(l,u)}}var ct={readContext:Sl,use:Qn,useCallback:ll,useContext:ll,useEffect:ll,useImperativeHandle:ll,useLayoutEffect:ll,useInsertionEffect:ll,useMemo:ll,useReducer:ll,useRef:ll,useState:ll,useDebugValue:ll,useDeferredValue:ll,useTransition:ll,useSyncExternalStore:ll,useId:ll};ct.useCacheRefresh=ll;ct.useMemoCache=ll;ct.useHostTransitionStatus=ll;ct.useFormState=ll;ct.useActionState=ll;ct.useOptimistic=ll;var zu={readContext:Sl,use:Qn,useCallback:function(l,t){return Ml().memoizedState=[l,t===void 0?null:t],l},useContext:Sl,useEffect:Q0,useImperativeHandle:function(l,t,u){u=u!=null?u.concat([l]):null,Pe(4194308,4,X1.bind(null,t,l),u)},useLayoutEffect:function(l,t){return Pe(4194308,4,l,t)},useInsertionEffect:function(l,t){Pe(4,2,l,t)},useMemo:function(l,t){var u=Ml();t=t===void 0?null:t;var a=l();if(mu){Gt(!0);try{l()}finally{Gt(!1)}}return u.memoizedState=[a,t],a},useReducer:function(l,t,u){var a=Ml();if(u!==void 0){var e=u(t);if(mu){Gt(!0);try{u(t)}finally{Gt(!1)}}}else e=t;return a.memoizedState=a.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},a.queue=l,l=l.dispatch=dh.bind(null,p,l),[a.memoizedState,l]},useRef:function(l){var t=Ml();return l={current:l},t.memoizedState=l},useState:function(l){l=ni(l);var t=l.queue,u=W1.bind(null,p,t);return t.dispatch=u,[l.memoizedState,u]},useDebugValue:nf,useDeferredValue:function(l,t){var u=Ml();return cf(u,l,t)},useTransition:function(){var l=ni(!1);return l=L1.bind(null,p,l.queue,!0,!1),Ml().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,u){var a=p,e=Ml();if(C){if(u===void 0)throw Error(g(407));u=u()}else{if(u=t(),L===null)throw Error(g(349));(Y&60)!==0||z1(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,Q0(M1.bind(null,a,n,l),[l]),a.flags|=2048,ea(9,A1.bind(null,a,n,u,t),{destroy:void 0},null),u},useId:function(){var l=Ml(),t=L.identifierPrefix;if(C){var u=bt,a=St;u=(a&~(1<<32-Rl(a)-1)).toString(32)+u,t=":"+t+"R"+u,u=gn++,0 title"))),rl(n,a,u),n[gl]=l,ol(n),a=n;break l;case"link":var c=Ss("link","href",e).get(a+(u.href||""));if(c){for(var i=0;i<\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?e.createElement("select",{is:a.is}):e.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?e.createElement(u,{is:a.is}):e.createElement(u)}}l[gl]=t,l[Ol]=a;l:for(e=t.child;e!==null;){if(e.tag===5||e.tag===6)l.appendChild(e.stateNode);else if(e.tag!==4&&e.tag!==27&&e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break l;for(;e.sibling===null;){if(e.return===null||e.return===t)break l;e=e.return}e.sibling.return=e.return,e=e.sibling}t.stateNode=l;l:switch(rl(l,u,a),u){case"button":case"input":case"select":case"textarea":l=!!a.autoFocus;break l;case"img":l=!0;break l;default:l=!1}l&&ht(t)}}return F(t),t.flags&=-16777217,null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&ht(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(g(166));if(l=Zt.current,Ta(t)){if(l=t.stateNode,u=t.memoizedProps,a=null,e=zl,e!==null)switch(e.tag){case 27:case 5:a=e.memoizedProps}l[gl]=t,l=!!(l.nodeValue===u||a!==null&&a.suppressHydrationWarning===!0||Lo(l.nodeValue,u)),l||yu(t)}else l=_n(l).createTextNode(a),l[gl]=t,t.stateNode=l}return F(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=Ta(t),a!==null&&a.dehydrated!==null){if(l===null){if(!e)throw Error(g(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(g(317));e[gl]=t}else ve(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;F(t),e=!1}else $l!==null&&(Ai($l),$l=null),e=!0;if(!e)return t.flags&256?(Et(t),t):(Et(t),null)}if(Et(t),(t.flags&128)!==0)return t.lanes=u,t;if(u=a!==null,l=l!==null&&l.memoizedState!==null,u){a=t.child,e=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(e=a.alternate.memoizedState.cachePool.pool);var n=null;a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==e&&(a.flags|=2048)}return u!==l&&u&&(t.child.flags|=8192),Ge(t,t.updateQueue),F(t),null;case 4:return Iu(),l===null&&Ef(t.stateNode.containerInfo),F(t),null;case 10:return zt(t.type),F(t),null;case 19:if(vl(il),e=t.memoizedState,e===null)return F(t),null;if(a=(t.flags&128)!==0,n=e.rendering,n===null)if(a)Ma(e,!1);else{if(I!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=rn(l),n!==null){for(t.flags|=128,Ma(e,!1),l=n.updateQueue,t.updateQueue=l,Ge(t,l),t.subtreeFlags=0,l=u,u=t.child;u!==null;)_o(u,l),u=u.sibling;return W(il,il.current&1|2),t.child}l=l.sibling}e.tail!==null&&et()>zn&&(t.flags|=128,a=!0,Ma(e,!1),t.lanes=4194304)}else{if(!a)if(l=rn(n),l!==null){if(t.flags|=128,a=!0,l=l.updateQueue,t.updateQueue=l,Ge(t,l),Ma(e,!0),e.tail===null&&e.tailMode==="hidden"&&!n.alternate&&!C)return F(t),null}else 2*et()-e.renderingStartTime>zn&&u!==536870912&&(t.flags|=128,a=!0,Ma(e,!1),t.lanes=4194304);e.isBackwards?(n.sibling=t.child,t.child=n):(l=e.last,l!==null?l.sibling=n:t.child=n,e.last=n)}return e.tail!==null?(t=e.tail,e.rendering=t,e.tail=t.sibling,e.renderingStartTime=et(),t.sibling=null,l=il.current,W(il,a?l&1|2:l&1),t):(F(t),null);case 22:case 23:return Et(t),Wi(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(u&536870912)!==0&&(t.flags&128)===0&&(F(t),t.subtreeFlags&6&&(t.flags|=8192)):F(t),u=t.updateQueue,u!==null&&Ge(t,u.retryQueue),u=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==u&&(t.flags|=2048),l!==null&&vl(ou),null;case 24:return u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),zt(cl),F(t),null;case 25:return null}throw Error(g(156,t.tag))}function Sh(l,t){switch(Ji(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return zt(cl),Iu(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return cn(t),null;case 13:if(Et(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(g(340));ve()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return vl(il),null;case 4:return Iu(),null;case 10:return zt(t.type),null;case 22:case 23:return Et(t),Wi(),l!==null&&vl(ou),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return zt(cl),null;case 25:return null;default:return null}}function Ho(l,t){switch(Ji(t),t.tag){case 3:zt(cl),Iu();break;case 26:case 27:case 5:cn(t);break;case 4:Iu();break;case 13:Et(t);break;case 19:vl(il);break;case 10:zt(t.type);break;case 22:case 23:Et(t),Wi(),l!==null&&vl(ou);break;case 24:zt(cl)}}var bh={getCacheForType:function(l){var t=Sl(cl),u=t.data.get(l);return u===void 0&&(u=l(),t.data.set(l,u)),u}},Eh=typeof WeakMap=="function"?WeakMap:Map,$=0,L=null,R=null,Y=0,j=0,Hl=null,rt=!1,da=!1,rf=!1,Dt=0,I=0,Pt=0,vu=0,mf=0,Kl=0,na=0,Va=null,ut=null,bi=!1,gf=0,zn=1/0,An=null,Kt=null,Qe=!1,nu=null,Ka=0,Ei=0,Ti=null,wa=0,zi=null;function Bl(){if(($&2)!==0&&Y!==0)return Y&-Y;if(U.T!==null){var l=aa;return l!==0?l:bf()}return Qs()}function po(){Kl===0&&(Kl=(Y&536870912)===0||C?Ys():536870912);var l=wl.current;return l!==null&&(l.flags|=32),Kl}function Al(l,t,u){(l===L&&j===2||l.cancelPendingCommit!==null)&&(ca(l,0),mt(l,Y,Kl,!1)),oe(l,u),(($&2)===0||l!==L)&&(l===L&&(($&2)===0&&(vu|=u),I===4&&mt(l,Y,Kl,!1)),ft(l))}function No(l,t,u){if(($&6)!==0)throw Error(g(327));var a=!u&&(t&60)===0&&(t&l.expiredLanes)===0||se(l,t),e=a?Ah(l,t):qc(l,t,!0),n=a;do{if(e===0){da&&!a&&mt(l,t,0,!1);break}else if(e===6)mt(l,t,0,!rt);else{if(u=l.current.alternate,n&&!Th(u)){e=qc(l,t,!1),n=!1;continue}if(e===2){if(n=t,l.errorRecoveryDisabledLanes&n)var c=0;else c=l.pendingLanes&-536870913,c=c!==0?c:c&536870912?536870912:0;if(c!==0){t=c;l:{var i=l;e=Va;var f=i.current.memoizedState.isDehydrated;if(f&&(ca(i,c).flags|=256),c=qc(i,c,!1),c!==2){if(rf&&!f){i.errorRecoveryDisabledLanes|=n,vu|=n,e=4;break l}n=ut,ut=e,n!==null&&Ai(n)}e=c}if(n=!1,e!==2)continue}}if(e===1){ca(l,0),mt(l,t,0,!0);break}l:{switch(a=l,e){case 0:case 1:throw Error(g(345));case 4:if((t&4194176)===t){mt(a,t,Kl,!rt);break l}break;case 2:ut=null;break;case 3:case 5:break;default:throw Error(g(329))}if(a.finishedWork=u,a.finishedLanes=t,(t&62914560)===t&&(n=gf+300-et(),10u?32:u,U.T=null,nu===null)var n=!1;else{u=Ti,Ti=null;var c=nu,i=Ka;if(nu=null,Ka=0,($&6)!==0)throw Error(g(331));var f=$;if($|=4,Oo(c.current),zo(c,c.current,i,u),$=f,ge(0,!1),Nl&&typeof Nl.onPostCommitFiberRoot=="function")try{Nl.onPostCommitFiberRoot(fe,c)}catch{}n=!0}return n}finally{K.p=e,U.T=a,xo(l,t)}}return!1}function es(l,t,u){t=Ll(u,t),t=si(l.stateNode,t,2),l=Lt(l,t,2),l!==null&&(oe(l,2),ft(l))}function Q(l,t,u){if(l.tag===3)es(l,l,u);else for(;t!==null;){if(t.tag===3){es(t,l,u);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Kt===null||!Kt.has(a))){l=Ll(u,l),u=lo(2),a=Lt(t,u,2),a!==null&&(to(u,a,t,l),oe(a,2),ft(a));break}}t=t.return}}function Yc(l,t,u){var a=l.pingCache;if(a===null){a=l.pingCache=new Eh;var e=new Set;a.set(t,e)}else e=a.get(t),e===void 0&&(e=new Set,a.set(t,e));e.has(u)||(rf=!0,e.add(u),l=Dh.bind(null,l,t,u),t.then(l,l))}function Dh(l,t,u){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&u,l.warmLanes&=~u,L===l&&(Y&u)===u&&(I===4||I===3&&(Y&62914560)===Y&&300>et()-gf?($&2)===0&&ca(l,0):mf|=u,na===Y&&(na=0)),ft(l)}function Xo(l,t){t===0&&(t=Cs()),l=kt(l,t),l!==null&&(oe(l,t),ft(l))}function _h(l){var t=l.memoizedState,u=0;t!==null&&(u=t.retryLane),Xo(l,u)}function Uh(l,t){var u=0;switch(l.tag){case 13:var a=l.stateNode,e=l.memoizedState;e!==null&&(u=e.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(g(314))}a!==null&&a.delete(t),Xo(l,u)}function Hh(l,t){return Ci(l,t)}var Mn=null,Bu=null,Oi=!1,On=!1,Cc=!1,hu=0;function ft(l){l!==Bu&&l.next===null&&(Bu===null?Mn=Bu=l:Bu=Bu.next=l),On=!0,Oi||(Oi=!0,Nh(ph))}function ge(l,t){if(!Cc&&On){Cc=!0;do for(var u=!1,a=Mn;a!==null;){if(!t)if(l!==0){var e=a.pendingLanes;if(e===0)var n=0;else{var c=a.suspendedLanes,i=a.pingedLanes;n=(1<<31-Rl(42|l)+1)-1,n&=e&~(c&~i),n=n&201326677?n&201326677|1:n?n|2:0}n!==0&&(u=!0,ns(a,n))}else n=Y,n=Bn(a,a===L?n:0),(n&3)===0||se(a,n)||(u=!0,ns(a,n));a=a.next}while(u);Cc=!1}}function ph(){On=Oi=!1;var l=0;hu!==0&&(xh()&&(l=hu),hu=0);for(var t=et(),u=null,a=Mn;a!==null;){var e=a.next,n=Go(a,t);n===0?(a.next=null,u===null?Mn=e:u.next=e,e===null&&(Bu=u)):(u=a,(l!==0||(n&3)!==0)&&(On=!0)),a=e}ge(l,!1)}function Go(l,t){for(var u=l.suspendedLanes,a=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0"u"?null:document;function Jo(l,t,u){var a=va;if(a&&typeof t=="string"&&t){var e=jl(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof u=="string"&&(e+='[crossorigin="'+u+'"]'),rs.has(e)||(rs.add(e),l={rel:l,crossOrigin:u,href:t},a.querySelector(e)===null&&(t=a.createElement("link"),rl(t,"link",l),ol(t),a.head.appendChild(t)))}}function Kh(l){_t.D(l),Jo("dns-prefetch",l,null)}function wh(l,t){_t.C(l,t),Jo("preconnect",l,t)}function Jh(l,t,u){_t.L(l,t,u);var a=va;if(a&&l&&t){var e='link[rel="preload"][as="'+jl(t)+'"]';t==="image"&&u&&u.imageSrcSet?(e+='[imagesrcset="'+jl(u.imageSrcSet)+'"]',typeof u.imageSizes=="string"&&(e+='[imagesizes="'+jl(u.imageSizes)+'"]')):e+='[href="'+jl(l)+'"]';var n=e;switch(t){case"style":n=ia(l);break;case"script":n=ha(l)}Jl.has(n)||(l=w({rel:"preload",href:t==="image"&&u&&u.imageSrcSet?void 0:l,as:t},u),Jl.set(n,l),a.querySelector(e)!==null||t==="style"&&a.querySelector(Se(n))||t==="script"&&a.querySelector(be(n))||(t=a.createElement("link"),rl(t,"link",l),ol(t),a.head.appendChild(t)))}}function Wh(l,t){_t.m(l,t);var u=va;if(u&&l){var a=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+jl(a)+'"][href="'+jl(l)+'"]',n=e;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=ha(l)}if(!Jl.has(n)&&(l=w({rel:"modulepreload",href:l},t),Jl.set(n,l),u.querySelector(e)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(u.querySelector(be(n)))return}a=u.createElement("link"),rl(a,"link",l),ol(a),u.head.appendChild(a)}}}function kh(l,t,u){_t.S(l,t,u);var a=va;if(a&&l){var e=Ku(a).hoistableStyles,n=ia(l);t=t||"default";var c=e.get(n);if(!c){var i={loading:0,preload:null};if(c=a.querySelector(Se(n)))i.loading=5;else{l=w({rel:"stylesheet",href:l,"data-precedence":t},u),(u=Jl.get(n))&&Tf(l,u);var f=c=a.createElement("link");ol(f),rl(f,"link",l),f._p=new Promise(function(o,r){f.onload=o,f.onerror=r}),f.addEventListener("load",function(){i.loading|=1}),f.addEventListener("error",function(){i.loading|=2}),i.loading|=4,tn(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:i},e.set(n,c)}}}function Fh(l,t){_t.X(l,t);var u=va;if(u&&l){var a=Ku(u).hoistableScripts,e=ha(l),n=a.get(e);n||(n=u.querySelector(be(e)),n||(l=w({src:l,async:!0},t),(t=Jl.get(e))&&zf(l,t),n=u.createElement("script"),ol(n),rl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function $h(l,t){_t.M(l,t);var u=va;if(u&&l){var a=Ku(u).hoistableScripts,e=ha(l),n=a.get(e);n||(n=u.querySelector(be(e)),n||(l=w({src:l,async:!0,type:"module"},t),(t=Jl.get(e))&&zf(l,t),n=u.createElement("script"),ol(n),rl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function ms(l,t,u,a){var e=(e=Zt.current)?Un(e):null;if(!e)throw Error(g(446));switch(l){case"meta":case"title":return null;case"style":return typeof u.precedence=="string"&&typeof u.href=="string"?(t=ia(u.href),u=Ku(e).hoistableStyles,a=u.get(t),a||(a={type:"style",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(u.rel==="stylesheet"&&typeof u.href=="string"&&typeof u.precedence=="string"){l=ia(u.href);var n=Ku(e).hoistableStyles,c=n.get(l);if(c||(e=e.ownerDocument||e,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=e.querySelector(Se(l)))&&!n._p&&(c.instance=n,c.state.loading=5),Jl.has(l)||(u={rel:"preload",as:"style",href:u.href,crossOrigin:u.crossOrigin,integrity:u.integrity,media:u.media,hrefLang:u.hrefLang,referrerPolicy:u.referrerPolicy},Jl.set(l,u),n||Ph(e,l,u,c.state))),t&&a===null)throw Error(g(528,""));return c}if(t&&a!==null)throw Error(g(529,""));return null;case"script":return t=u.async,u=u.src,typeof u=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ha(u),u=Ku(e).hoistableScripts,a=u.get(t),a||(a={type:"script",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(g(444,l))}}function ia(l){return'href="'+jl(l)+'"'}function Se(l){return'link[rel="stylesheet"]['+l+"]"}function Wo(l){return w({},l,{"data-precedence":l.precedence,precedence:null})}function Ph(l,t,u,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),rl(t,"link",u),ol(t),l.head.appendChild(t))}function ha(l){return'[src="'+jl(l)+'"]'}function be(l){return"script[async]"+l}function gs(l,t,u){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+jl(u.href)+'"]');if(a)return t.instance=a,ol(a),a;var e=w({},u,{"data-href":u.href,"data-precedence":u.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),ol(a),rl(a,"style",e),tn(a,u.precedence,l),t.instance=a;case"stylesheet":e=ia(u.href);var n=l.querySelector(Se(e));if(n)return t.state.loading|=4,t.instance=n,ol(n),n;a=Wo(u),(e=Jl.get(e))&&Tf(a,e),n=(l.ownerDocument||l).createElement("link"),ol(n);var c=n;return c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),rl(n,"link",a),t.state.loading|=4,tn(n,u.precedence,l),t.instance=n;case"script":return n=ha(u.src),(e=l.querySelector(be(n)))?(t.instance=e,ol(e),e):(a=u,(e=Jl.get(n))&&(a=w({},u),zf(a,e)),l=l.ownerDocument||l,e=l.createElement("script"),ol(e),rl(e,"link",a),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(g(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,tn(a,u.precedence,l));return t.instance}function tn(l,t,u){for(var a=u.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=a.length?a[a.length-1]:null,n=e,c=0;c title"):null)}function Ih(l,t,u){if(u===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function ko(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}var ae=null;function ly(){}function ty(l,t,u){if(ae===null)throw Error(g(475));var a=ae;if(t.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(t.state.loading&4)===0){if(t.instance===null){var e=ia(u.href),n=l.querySelector(Se(e));if(n){l=n._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(a.count++,a=Hn.bind(a),l.then(a,a)),t.state.loading|=4,t.instance=n,ol(n);return}n=l.ownerDocument||l,u=Wo(u),(e=Jl.get(e))&&Tf(u,e),n=n.createElement("link"),ol(n);var c=n;c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),rl(n,"link",u),t.instance=n}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(t,l),(l=t.state.preload)&&(t.state.loading&3)===0&&(a.count++,t=Hn.bind(a),l.addEventListener("load",t),l.addEventListener("error",t))}}function uy(){if(ae===null)throw Error(g(475));var l=ae;return l.stylesheets&&l.count===0&&Ni(l,l.stylesheets),0{"use strict";function ad(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ad)}catch(l){console.error(l)}}ad(),ed.exports=ud()});var _l=Fn(ya(),1),cd=Fn(nd(),1),id=_l.createContext(null);function dy(){let l=_l.useContext(id);if(!l)throw new Error("RenderContext not found");return l}function vy(){return dy().model}function Wn(l){let t=vy(),[u,a]=_l.useState(t.get(l));return _l.useEffect(()=>{let e=()=>a(t.get(l));return t.on(`change:${l}`,e),()=>t.off(`change:${l}`,e)},[t,l]),[u,e=>{t.set(l,e),t.save_changes()}]}function fd(l){return({el:t,model:u,experimental:a})=>{let e=cd.createRoot(t);return e.render(_l.createElement(_l.StrictMode,null,_l.createElement(id.Provider,{value:{model:u,experimental:a}},_l.createElement(l)))),()=>e.unmount()}}var b=Fn(ya()),st=b.default.forwardRef(({className:l="",variant:t="default",...u},a)=>b.default.createElement("button",{ref:a,className:`inline-flex items-center justify-center rounded-md text-sm font-medium focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 ${{default:"bg-gray-200 active:bg-gray-300",ghost:"active:bg-gray-100/50"}[t]} ${l}`,...u}));st.displayName="Button";var hy=["#000000","#FFFFFF","#C0C0C0","#FF0000","#FFFF00","#00FF00","#00FFFF","#0000FF","#FF00FF","#FFFF80","#00FF80","#80FFFF","#8080FF","#FF0080"],yy=4096;function ry(){let l=(0,b.useRef)(null),t=(0,b.useRef)(null),[u,a]=(0,b.useState)(!1),[e,n]=(0,b.useState)("#000000"),[c,i]=(0,b.useState)("brush"),[f,o]=(0,b.useState)({x:0,y:0}),[r,S]=(0,b.useState)(!1),[h,y]=(0,b.useState)(null),[T,D]=Wn("base64"),[J,d]=Wn("height"),[s,v]=Wn("store_background"),[m,E]=(0,b.useState)({width:0,height:0}),_=()=>l.current?.getContext("2d"),A=(z,B)=>{let O=_();if(!O)return!1;let V=Math.min(1,yy/Math.max(z,B)),el=Math.floor(z*V),bl=Math.floor(B*V);try{let nl=l.current?.toDataURL();if(l.current.width=el,l.current.height=bl,nl){let Ee=new Image;Ee.onload=()=>{O.drawImage(Ee,0,0)},Ee.src=nl}return!0}catch(nl){return console.error("Failed to resize canvases:",nl),y("Failed to resize canvas. Try reducing the window size."),!1}};(0,b.useEffect)(()=>{let z,B=()=>{let V=l.current?.parentElement;if(!V)return;let el=V.clientWidth,bl=V.clientHeight;if(N.current){let nl=new Image;nl.onload=()=>{let Ee=nl.width/nl.height,gy=el/bl;el=Math.min(el,nl.width),bl=nl.height,A(el,bl)&&E({width:el,height:bl})},nl.src=`data:image/png;base64,${N.current}`}else A(el,bl)&&E({width:el,height:bl})},O=()=>{clearTimeout(z),z=setTimeout(B,250)};return window.addEventListener("resize",O),B(),()=>{window.removeEventListener("resize",O),clearTimeout(z)}},[]),(0,b.useEffect)(()=>{let z=l.current;if(!z)return;let B=el=>{el.preventDefault();let bl=el.touches[0],nl=z.getBoundingClientRect();_f(bl.clientX-nl.left,bl.clientY-nl.top)},O=el=>{el.preventDefault();let bl=el.touches[0],nl=z.getBoundingClientRect();Uf(bl.clientX-nl.left,bl.clientY-nl.top)},V=el=>{el.preventDefault(),kn()};return z.addEventListener("touchstart",B),z.addEventListener("touchmove",O),z.addEventListener("touchend",V),()=>{z.removeEventListener("touchstart",B),z.removeEventListener("touchmove",O),z.removeEventListener("touchend",V)}},[]);let M=(0,b.useRef)(""),Z=(0,b.useRef)(!1),N=(0,b.useRef)(""),[Wl,Ou]=(0,b.useState)(0);(0,b.useEffect)(()=>{N.current=T},[]);let _f=(z,B)=>{let O=_();if(O)try{O.beginPath(),O.moveTo(z,B),a(!0)}catch(V){console.error("Failed to start drawing:",V),y("Failed to start drawing. Try refreshing the page.")}},Uf=(z,B)=>{if(!u)return;let O=_();if(O)try{O.lineTo(z,B),c==="eraser"?(O.save(),O.globalCompositeOperation="destination-out",O.strokeStyle="#000000",O.lineWidth=20,O.lineCap="round",O.stroke(),O.restore()):(O.strokeStyle=e,O.lineWidth=c==="marker"?8:2,O.lineCap="round",O.stroke())}catch(V){console.error("Failed to draw:",V),y("Failed to draw. Try refreshing the page."),a(!1)}},kn=()=>{if(u){try{Ou(z=>z+1)}catch(z){console.error("Failed to complete drawing:",z),y("Failed to complete drawing. Try refreshing the page.")}a(!1)}};(0,b.useEffect)(()=>{let z=_();if(!z||!l.current||!T)return;if(T===M.current){let V=l.current;if(V&&V.width>0&&V.height>0)try{if(z.getImageData(0,0,V.width,V.height).data.some(nl=>nl!==0))return}catch{}}let B=l.current;if(B.width===0||B.height===0)return;Z.current=!0;let O=new Image;O.onload=()=>{z.clearRect(0,0,B.width,B.height),z.drawImage(O,0,0,O.width,O.height),M.current=T,Z.current=!1},O.onerror=V=>{console.error("Failed to load image:",V),Z.current=!1},O.src=`data:image/png;base64,${T}`},[T,m.width,m.height]),(0,b.useEffect)(()=>{if(!l.current||Wl===0||Z.current)return;let z=document.createElement("canvas");z.width=l.current.width,z.height=l.current.height;let B=z.getContext("2d",{alpha:!0});if(B){B.clearRect(0,0,z.width,z.height),s&&(B.fillStyle="#FFFFFF",B.fillRect(0,0,z.width,z.height)),B.globalCompositeOperation="source-over",B.drawImage(l.current,0,0);try{let O=z.toDataURL("image/png");D(O.split(",")[1])}catch(O){console.error("Failed to export canvas:",O),y("Failed to export canvas. Try refreshing the page.")}}},[s,m,Wl]);let sd=z=>{let B=z.currentTarget.getBoundingClientRect();_f(z.clientX-B.left,z.clientY-B.top)},od=z=>{let B=z.currentTarget.getBoundingClientRect();Uf(z.clientX-B.left,z.clientY-B.top)},dd=z=>{S(!0),o({x:z.clientX-(t.current?.offsetLeft||0),y:z.clientY-(t.current?.offsetTop||0)})},vd=z=>{if(r){let B=z.clientX-f.x,O=z.clientY-f.y;t.current&&(t.current.style.left=`${B}px`,t.current.style.top=`${O}px`)}},Hf=()=>{S(!1)},hd=()=>b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},b.default.createElement("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),b.default.createElement("rect",{x:"7",y:"7",width:"10",height:"10",rx:"1",ry:"1",fill:"currentColor",fillOpacity:"0.2"}));return b.default.createElement("div",{className:"bg-teal-600 w-full overflow-hidden",style:{height:`${J}px`}},h&&b.default.createElement("div",{className:"absolute top-0 left-0 right-0 bg-red-500 text-white p-2 text-center"},h,b.default.createElement("button",{className:"ml-2 underline",onClick:()=>y(null)},"Dismiss")),b.default.createElement("div",{ref:t,className:"absolute bg-white border-2 border-gray-200 shadow-md flex flex-col",style:{width:"90%",height:"90%",left:"50%",top:"50%",transform:"translate(-50%, -50%)",minWidth:"400px",minHeight:"300px"}},b.default.createElement("div",{className:"bg-blue-900 text-white px-2 py-1 flex justify-between items-center cursor-move",onMouseDown:dd,onMouseMove:vd,onMouseUp:Hf,onMouseLeave:Hf},b.default.createElement("span",{className:"text-white"},"untitled - Paint"),b.default.createElement("div",{className:"flex gap-1"},b.default.createElement(st,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"_"),b.default.createElement(st,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"\u25A1"),b.default.createElement(st,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"\xD7"))),b.default.createElement("div",{className:"bg-gray-300 px-2 py-1 text-sm text-black"},b.default.createElement("span",{className:"mr-4 text-black"},"File"),b.default.createElement("span",{className:"mr-4 text-black"},"Edit"),b.default.createElement("span",{className:"mr-4 text-black"},"View"),b.default.createElement("span",{className:"mr-4 text-black"},"Image"),b.default.createElement("span",{className:"mr-4 text-black"},"Options"),b.default.createElement("span",{className:"text-black"},"Help")),b.default.createElement("div",{className:"flex flex-1 min-h-0"},b.default.createElement("div",{className:"w-8 bg-gray-300 p-0.5 border-r border-gray-400"},b.default.createElement(st,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="brush"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("brush"),title:"Brush"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}))),b.default.createElement(st,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="marker"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("marker"),title:"Thick Marker"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}))),b.default.createElement(st,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="eraser"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("eraser"),title:"Eraser"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-6 h-6 text-black"},b.default.createElement("path",{d:"M7 21h10"}),b.default.createElement("path",{d:"M5.5 13.5L13 6c.83-.83 2.17-.83 3 0l2 2c.83.83.83 2.17 0 3l-7.5 7.5c-.83.83-2.17.83-3 0l-2-2c-.83-.83-.83-2.17 0-3z"}))),b.default.createElement("div",{className:"w-7 h-0.5 bg-gray-400 my-1"}),b.default.createElement(st,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${s?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>v(!s),title:"Store White Background"},b.default.createElement(hd,null)),b.default.createElement("div",{className:"w-7 h-0.5 bg-gray-400 my-1"}),b.default.createElement(st,{variant:"ghost",className:"w-7 h-7 p-0 min-w-0 mb-0.5",onClick:()=>{let z=l.current;if(z){let B=z.getContext("2d");if(B)if(B.clearRect(0,0,z.width,z.height),N.current){Z.current=!0;let O=new Image;O.onload=()=>{B.drawImage(O,0,0,O.width,O.height),Z.current=!1,Ou(V=>V+1)},O.onerror=()=>{Z.current=!1,Ou(V=>V+1)},O.src=`data:image/png;base64,${N.current}`}else Ou(O=>O+1)}},title:"Clear Canvas"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}),b.default.createElement("path",{d:"M21 3v5h-5"}),b.default.createElement("path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}),b.default.createElement("path",{d:"M8 16H3v5"})))),b.default.createElement("div",{className:"flex-grow overflow-hidden border border-gray-400 relative"},b.default.createElement("canvas",{ref:l,width:m.width,height:m.height,style:{width:"100%",height:"100%",background:"transparent"},onMouseDown:sd,onMouseMove:od,onMouseUp:kn,onMouseLeave:kn}))),b.default.createElement("div",{className:"flex bg-gray-300 p-1 border-t border-gray-400"},b.default.createElement("div",{className:"flex flex-wrap gap-1"},hy.map(z=>b.default.createElement(st,{key:z,variant:"ghost",className:`w-6 h-6 p-0 min-w-0 ${e===z?"ring-1 ring-gray-600":""}`,style:{backgroundColor:z},onClick:()=>n(z)})))),b.default.createElement("div",{className:"bg-gray-300 px-2 py-1 text-xs border-t border-gray-400 text-black"},"For Help, click Help Topics on the Help Menu.")))}var my=fd(ry),Hy={render:my};export{Hy as default}; +`+u.stack}}function ea(l){var t=l,u=l;if(l.alternate)for(;t.return;)t=t.return;else{l=t;do t=l,(t.flags&4098)!==0&&(u=t.return),l=t.return;while(l)}return t.tag===3?u:null}function O1(l){if(l.tag===13){var t=l.memoizedState;if(t===null&&(l=l.alternate,l!==null&&(t=l.memoizedState)),t!==null)return t.dehydrated}return null}function e0(l){if(ea(l)!==l)throw Error(r(188))}function Bd(l){var t=l.alternate;if(!t){if(t=ea(l),t===null)throw Error(r(188));return t!==l?null:l}for(var u=l,a=t;;){var e=u.return;if(e===null)break;var n=e.alternate;if(n===null){if(a=e.return,a!==null){u=a;continue}break}if(e.child===n.child){for(n=e.child;n;){if(n===u)return e0(e),l;if(n===a)return e0(e),t;n=n.sibling}throw Error(r(188))}if(u.return!==a.return)u=e,a=n;else{for(var c=!1,f=e.child;f;){if(f===u){c=!0,u=e,a=n;break}if(f===a){c=!0,a=e,u=n;break}f=f.sibling}if(!c){for(f=n.child;f;){if(f===u){c=!0,u=n,a=e;break}if(f===a){c=!0,a=n,u=e;break}f=f.sibling}if(!c)throw Error(r(189))}}if(u.alternate!==a)throw Error(r(190))}if(u.tag!==3)throw Error(r(188));return u.stateNode.current===u?l:t}function M1(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l;for(l=l.child;l!==null;){if(t=M1(l),t!==null)return t;l=l.sibling}return null}var _a=Array.isArray,L=Ud.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,nu={pending:!1,data:null,method:null,action:null},jc=[],pu=-1;function et(l){return{current:l}}function sl(l){0>pu||(l.current=jc[pu],jc[pu]=null,pu--)}function J(l,t){pu++,jc[pu]=l.current,l.current=t}var lt=et(null),Ka=et(null),Gt=et(null),un=et(null);function an(l,t){switch(J(Gt,t),J(Ka,l),J(lt,null),l=t.nodeType,l){case 9:case 11:t=(t=t.documentElement)&&(t=t.namespaceURI)?c1(t):0;break;default:if(l=l===8?t.parentNode:t,t=l.tagName,l=l.namespaceURI)l=c1(l),t=Cv(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}sl(lt),J(lt,t)}function ku(){sl(lt),sl(Ka),sl(Gt)}function Vc(l){l.memoizedState!==null&&J(un,l);var t=lt.current,u=Cv(t,l.type);t!==u&&(J(Ka,l),J(lt,u))}function en(l){Ka.current===l&&(sl(lt),sl(Ka)),un.current===l&&(sl(un),ue._currentValue=nu)}var Lc=Object.prototype.hasOwnProperty,Bf=nl.unstable_scheduleCallback,vc=nl.unstable_cancelCallback,Yd=nl.unstable_shouldYield,Xd=nl.unstable_requestPaint,tt=nl.unstable_now,Cd=nl.unstable_getCurrentPriorityLevel,D1=nl.unstable_ImmediatePriority,_1=nl.unstable_UserBlockingPriority,nn=nl.unstable_NormalPriority,Gd=nl.unstable_LowPriority,U1=nl.unstable_IdlePriority,Qd=nl.log,Zd=nl.unstable_setDisableYieldValue,ce=null,Ul=null;function xd(l){if(Ul&&typeof Ul.onCommitFiberRoot=="function")try{Ul.onCommitFiberRoot(ce,l,void 0,(l.current.flags&128)===128)}catch{}}function Xt(l){if(typeof Qd=="function"&&Zd(l),Ul&&typeof Ul.setStrictMode=="function")try{Ul.setStrictMode(ce,l)}catch{}}var Hl=Math.clz32?Math.clz32:Ld,jd=Math.log,Vd=Math.LN2;function Ld(l){return l>>>=0,l===0?32:31-(jd(l)/Vd|0)|0}var _e=128,Ue=4194304;function lu(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function pn(l,t){var u=l.pendingLanes;if(u===0)return 0;var a=0,e=l.suspendedLanes,n=l.pingedLanes,c=l.warmLanes;l=l.finishedLanes!==0;var f=u&134217727;return f!==0?(u=f&~e,u!==0?a=lu(u):(n&=f,n!==0?a=lu(n):l||(c=f&~c,c!==0&&(a=lu(c))))):(f=u&~e,f!==0?a=lu(f):n!==0?a=lu(n):l||(c=u&~c,c!==0&&(a=lu(c)))),a===0?0:t!==0&&t!==a&&(t&e)===0&&(e=a&-a,c=t&-t,e>=c||e===32&&(c&4194176)!==0)?t:a}function fe(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function Kd(l,t){switch(l){case 1:case 2:case 4:case 8:return t+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function H1(){var l=_e;return _e<<=1,(_e&4194176)===0&&(_e=128),l}function R1(){var l=Ue;return Ue<<=1,(Ue&62914560)===0&&(Ue=4194304),l}function dc(l){for(var t=[],u=0;31>u;u++)t.push(l);return t}function ie(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Jd(l,t,u,a,e,n){var c=l.pendingLanes;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=u,l.entangledLanes&=u,l.errorRecoveryDisabledLanes&=u,l.shellSuspendCounter=0;var f=l.entanglements,i=l.expirationTimes,s=l.hiddenUpdates;for(u=c&~u;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),$d=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),c0={},f0={};function Fd(l){return Lc.call(f0,l)?!0:Lc.call(c0,l)?!1:$d.test(l)?f0[l]=!0:(c0[l]=!0,!1)}function Le(l,t,u){if(Fd(t))if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":l.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){l.removeAttribute(t);return}}l.setAttribute(t,""+u)}}function He(l,t,u){if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(t);return}l.setAttribute(t,""+u)}}function ft(l,t,u,a){if(a===null)l.removeAttribute(u);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(u);return}l.setAttributeNS(t,u,""+a)}}function Xl(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function C1(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Pd(l){var t=C1(l)?"checked":"value",u=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),a=""+l[t];if(!l.hasOwnProperty(t)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var e=u.get,n=u.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(l,t,{enumerable:u.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function cn(l){l._valueTracker||(l._valueTracker=Pd(l))}function G1(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var u=t.getValue(),a="";return l&&(a=C1(l)?l.checked?"true":"false":l.value),l=a,l!==u?(t.setValue(l),!0):!1}function fn(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var Id=/[\n"\\]/g;function Ql(l){return l.replace(Id,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Jc(l,t,u,a,e,n,c,f){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+Xl(t)):l.value!==""+Xl(t)&&(l.value=""+Xl(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?wc(l,c,Xl(t)):u!=null?wc(l,c,Xl(u)):a!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?l.name=""+Xl(f):l.removeAttribute("name")}function Q1(l,t,u,a,e,n,c,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||u!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;u=u!=null?""+Xl(u):"",t=t!=null?""+Xl(t):u,f||t===l.value||(l.value=t),l.defaultValue=t}a=a??e,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=f?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c)}function wc(l,t,u){t==="number"&&fn(l.ownerDocument)===l||l.defaultValue===""+u||(l.defaultValue=""+u)}function ju(l,t,u,a){if(l=l.options,t){t={};for(var e=0;e=Ra),y0=" ",m0=!1;function J1(l,t){switch(l){case"keyup":return _h.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function w1(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var qu=!1;function Hh(l,t){switch(l){case"compositionend":return w1(t);case"keypress":return t.which!==32?null:(m0=!0,y0);case"textInput":return l=t.data,l===y0&&m0?null:l;default:return null}}function Rh(l,t){if(qu)return l==="compositionend"||!Zf&&J1(l,t)?(l=L1(),Je=Gf=Ct=null,qu=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:u,offset:t-l};l=a}l:{for(;u;){if(u.nextSibling){u=u.nextSibling;break l}u=u.parentNode}u=void 0}u=b0(u)}}function F1(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?F1(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function P1(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=fn(l.document);t instanceof l.HTMLIFrameElement;){try{var u=typeof t.contentWindow.location.href=="string"}catch{u=!1}if(u)l=t.contentWindow;else break;t=fn(l.document)}return t}function xf(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}function Gh(l,t){var u=P1(t);t=l.focusedElem;var a=l.selectionRange;if(u!==t&&t&&t.ownerDocument&&F1(t.ownerDocument.documentElement,t)){if(a!==null&&xf(t)){if(l=a.start,u=a.end,u===void 0&&(u=l),"selectionStart"in t)t.selectionStart=l,t.selectionEnd=Math.min(u,t.value.length);else if(u=(l=t.ownerDocument||document)&&l.defaultView||window,u.getSelection){u=u.getSelection();var e=t.textContent.length,n=Math.min(a.start,e);a=a.end===void 0?n:Math.min(a.end,e),!u.extend&&n>a&&(e=a,a=n,n=e),e=E0(t,n);var c=E0(t,a);e&&c&&(u.rangeCount!==1||u.anchorNode!==e.node||u.anchorOffset!==e.offset||u.focusNode!==c.node||u.focusOffset!==c.offset)&&(l=l.createRange(),l.setStart(e.node,e.offset),u.removeAllRanges(),n>a?(u.addRange(l),u.extend(c.node,c.offset)):(l.setEnd(c.node,c.offset),u.addRange(l)))}}for(l=[],u=t;u=u.parentNode;)u.nodeType===1&&l.push({element:u,left:u.scrollLeft,top:u.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Bu=null,$c=null,Na=null,Fc=!1;function T0(l,t,u){var a=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;Fc||Bu==null||Bu!==fn(a)||(a=Bu,"selectionStart"in a&&xf(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Na&&ka(Na,a)||(Na=a,a=On($c,"onSelect"),0>=c,e-=c,mt=1<<32-Hl(t)+e|u<z?(P=T,T=null):P=T.sibling;var q=o(d,T,h[z],g);if(q===null){T===null&&(T=P);break}l&&T&&q.alternate===null&&t(d,T),v=n(q,v,z),_===null?E=q:_.sibling=q,_=q,T=P}if(z===h.length)return u(d,T),X&&tu(d,z),E;if(T===null){for(;zz?(P=T,T=null):P=T.sibling;var $l=o(d,T,q.value,g);if($l===null){T===null&&(T=P);break}l&&T&&$l.alternate===null&&t(d,T),v=n($l,v,z),_===null?E=$l:_.sibling=$l,_=$l,T=P}if(q.done)return u(d,T),X&&tu(d,z),E;if(T===null){for(;!q.done;z++,q=h.next())q=S(d,q.value,g),q!==null&&(v=n(q,v,z),_===null?E=q:_.sibling=q,_=q);return X&&tu(d,z),E}for(T=a(T);!q.done;z++,q=h.next())q=m(T,d,z,q.value,g),q!==null&&(l&&q.alternate!==null&&T.delete(q.key===null?z:q.key),v=n(q,v,z),_===null?E=q:_.sibling=q,_=q);return l&&T.forEach(function(Jn){return t(d,Jn)}),X&&tu(d,z),E}function C(d,v,h,g){if(typeof h=="object"&&h!==null&&h.type===Ru&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case De:l:{for(var E=h.key;v!==null;){if(v.key===E){if(E=h.type,E===Ru){if(v.tag===7){u(d,v.sibling),g=e(v,h.props.children),g.return=d,d=g;break l}}else if(v.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Rt&&U0(E)===v.type){u(d,v.sibling),g=e(v,h.props),Ea(g,h),g.return=d,d=g;break l}u(d,v);break}else t(d,v);v=v.sibling}h.type===Ru?(g=iu(h.props.children,d.mode,g,h.key),g.return=d,d=g):(g=Pe(h.type,h.key,h.props,null,d.mode,g),Ea(g,h),g.return=d,d=g)}return c(d);case Ma:l:{for(E=h.key;v!==null;){if(v.key===E)if(v.tag===4&&v.stateNode.containerInfo===h.containerInfo&&v.stateNode.implementation===h.implementation){u(d,v.sibling),g=e(v,h.children||[]),g.return=d,d=g;break l}else{u(d,v);break}else t(d,v);v=v.sibling}g=Rc(h,d.mode,g),g.return=d,d=g}return c(d);case Rt:return E=h._init,h=E(h._payload),C(d,v,h,g)}if(_a(h))return b(d,v,h,g);if(ra(h)){if(E=ra(h),typeof E!="function")throw Error(r(150));return h=E.call(h),M(d,v,h,g)}if(typeof h.then=="function")return C(d,v,Be(h),g);if(h.$$typeof===yt)return C(d,v,Xe(d,h),g);Ye(d,h)}return typeof h=="string"&&h!==""||typeof h=="number"||typeof h=="bigint"?(h=""+h,v!==null&&v.tag===6?(u(d,v.sibling),g=e(v,h),g.return=d,d=g):(u(d,v),g=Hc(h,d.mode,g),g.return=d,d=g),c(d)):u(d,v)}return function(d,v,h,g){try{Fa=0;var E=C(d,v,h,g);return Lu=null,E}catch(T){if(T===qa)throw T;var _=xl(29,T,null,d.mode);return _.lanes=g,_.return=d,_}finally{}}}var hu=ss(!0),vs=ss(!1),Pu=et(null),hn=et(0);function H0(l,t){l=At,J(hn,l),J(Pu,t),At=l|t.baseLanes}function lf(){J(hn,At),J(Pu,Pu.current)}function Jf(){At=hn.current,sl(Pu),sl(hn)}var Vl=et(null),ut=null;function Nt(l){var t=l.alternate;J(el,el.current&1),J(Vl,l),ut===null&&(t===null||Pu.current!==null||t.memoizedState!==null)&&(ut=l)}function ds(l){if(l.tag===22){if(J(el,el.current),J(Vl,l),ut===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(ut=l)}}else qt(l)}function qt(){J(el,el.current),J(Vl,Vl.current)}function rt(l){sl(Vl),ut===l&&(ut=null),sl(el)}var el=et(0);function on(l){for(var t=l;t!==null;){if(t.tag===13){var u=t.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||u.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Vh=typeof AbortController<"u"?AbortController:function(){var l=[],t=this.signal={aborted:!1,addEventListener:function(u,a){l.push(a)}};this.abort=function(){t.aborted=!0,l.forEach(function(u){return u()})}},Lh=nl.unstable_scheduleCallback,Kh=nl.unstable_NormalPriority,al={$$typeof:yt,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function wf(){return{controller:new Vh,data:new Map,refCount:0}}function de(l){l.refCount--,l.refCount===0&&Lh(Kh,function(){l.controller.abort()})}var Ya=null,tf=0,Iu=0,Ku=null;function Jh(l,t){if(Ya===null){var u=Ya=[];tf=0,Iu=gi(),Ku={status:"pending",value:void 0,then:function(a){u.push(a)}}}return tf++,t.then(R0,R0),t}function R0(){if(--tf===0&&Ya!==null){Ku!==null&&(Ku.status="fulfilled");var l=Ya;Ya=null,Iu=0,Ku=null;for(var t=0;tn?n:8;var c=D.T,f={};D.T=f,ci(l,!1,t,u);try{var i=e(),s=D.S;if(s!==null&&s(f,i),i!==null&&typeof i=="object"&&typeof i.then=="function"){var y=wh(i,a);Xa(l,t,y,Rl(l))}else Xa(l,t,a,Rl(l))}catch(S){Xa(l,t,{then:function(){},status:"rejected",reason:S},Rl())}finally{L.p=n,D.T=c}}function Ph(){}function ef(l,t,u,a){if(l.tag!==5)throw Error(r(476));var e=Gs(l).queue;Cs(l,e,t,nu,u===null?Ph:function(){return Qs(l),u(a)})}function Gs(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:nu,baseState:nu,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Tt,lastRenderedState:nu},next:null};var u={};return t.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Tt,lastRenderedState:u},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function Qs(l){var t=Gs(l).next.queue;Xa(l,t,{},Rl())}function ni(){return ml(ue)}function Zs(){return ul().memoizedState}function xs(){return ul().memoizedState}function Ih(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var u=Rl();l=Qt(u);var a=Zt(t,l,u);a!==null&&(bl(a,t,u),Ga(a,t,u)),t={cache:wf()},l.payload=t;return}t=t.return}}function lo(l,t,u){var a=Rl();u={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null},Zn(l)?Vs(t,u):(u=Vf(l,t,u,a),u!==null&&(bl(u,l,a),Ls(u,t,a)))}function js(l,t,u){var a=Rl();Xa(l,t,u,a)}function Xa(l,t,u,a){var e={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null};if(Zn(l))Vs(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,f=n(c,u);if(e.hasEagerState=!0,e.eagerState=f,pl(f,c))return Xn(l,t,e,0),V===null&&Yn(),!1}catch{}finally{}if(u=Vf(l,t,e,a),u!==null)return bl(u,l,a),Ls(u,t,a),!0}return!1}function ci(l,t,u,a){if(a={lane:2,revertLane:gi(),action:a,hasEagerState:!1,eagerState:null,next:null},Zn(l)){if(t)throw Error(r(479))}else t=Vf(l,u,a,2),t!==null&&bl(t,l,2)}function Zn(l){var t=l.alternate;return l===R||t!==null&&t===R}function Vs(l,t){Ju=yn=!0;var u=l.pending;u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t}function Ls(l,t,u){if((u&4194176)!==0){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,N1(l,u)}}var at={readContext:ml,use:Gn,useCallback:I,useContext:I,useEffect:I,useImperativeHandle:I,useLayoutEffect:I,useInsertionEffect:I,useMemo:I,useReducer:I,useRef:I,useState:I,useDebugValue:I,useDeferredValue:I,useTransition:I,useSyncExternalStore:I,useId:I};at.useCacheRefresh=I;at.useMemoCache=I;at.useHostTransitionStatus=I;at.useFormState=I;at.useActionState=I;at.useOptimistic=I;var bu={readContext:ml,use:Gn,useCallback:function(l,t){return Tl().memoizedState=[l,t===void 0?null:t],l},useContext:ml,useEffect:B0,useImperativeHandle:function(l,t,u){u=u!=null?u.concat([l]):null,$e(4194308,4,Ns.bind(null,t,l),u)},useLayoutEffect:function(l,t){return $e(4194308,4,l,t)},useInsertionEffect:function(l,t){$e(4,2,l,t)},useMemo:function(l,t){var u=Tl();t=t===void 0?null:t;var a=l();if(ou){Xt(!0);try{l()}finally{Xt(!1)}}return u.memoizedState=[a,t],a},useReducer:function(l,t,u){var a=Tl();if(u!==void 0){var e=u(t);if(ou){Xt(!0);try{u(t)}finally{Xt(!1)}}}else e=t;return a.memoizedState=a.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},a.queue=l,l=l.dispatch=lo.bind(null,R,l),[a.memoizedState,l]},useRef:function(l){var t=Tl();return l={current:l},t.memoizedState=l},useState:function(l){l=uf(l);var t=l.queue,u=js.bind(null,R,t);return t.dispatch=u,[l.memoizedState,u]},useDebugValue:ai,useDeferredValue:function(l,t){var u=Tl();return ei(u,l,t)},useTransition:function(){var l=uf(!1);return l=Cs.bind(null,R,l.queue,!0,!1),Tl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,u){var a=R,e=Tl();if(X){if(u===void 0)throw Error(r(407));u=u()}else{if(u=t(),V===null)throw Error(r(349));(Y&60)!==0||gs(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,B0(Ss.bind(null,a,n,l),[l]),a.flags|=2048,la(9,rs.bind(null,a,n,u,t),{destroy:void 0},null),u},useId:function(){var l=Tl(),t=V.identifierPrefix;if(X){var u=gt,a=mt;u=(a&~(1<<32-Hl(a)-1)).toString(32)+u,t=":"+t+"R"+u,u=mn++,0 title"))),hl(n,a,u),n[yl]=l,fl(n),a=n;break l;case"link":var c=h1("link","href",e).get(a+(u.href||""));if(c){for(var f=0;f<\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?e.createElement("select",{is:a.is}):e.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?e.createElement(u,{is:a.is}):e.createElement(u)}}l[yl]=t,l[zl]=a;l:for(e=t.child;e!==null;){if(e.tag===5||e.tag===6)l.appendChild(e.stateNode);else if(e.tag!==4&&e.tag!==27&&e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break l;for(;e.sibling===null;){if(e.return===null||e.return===t)break l;e=e.return}e.sibling.return=e.return,e=e.sibling}t.stateNode=l;l:switch(hl(l,u,a),u){case"button":case"input":case"select":case"textarea":l=!!a.autoFocus;break l;case"img":l=!0;break l;default:l=!1}l&&vt(t)}}return W(t),t.flags&=-16777217,null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&vt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(r(166));if(l=Gt.current,ba(t)){if(l=t.stateNode,u=t.memoizedProps,a=null,e=Sl,e!==null)switch(e.tag){case 27:case 5:a=e.memoizedProps}l[yl]=t,l=!!(l.nodeValue===u||a!==null&&a.suppressHydrationWarning===!0||Xv(l.nodeValue,u)),l||du(t)}else l=Mn(l).createTextNode(a),l[yl]=t,t.stateNode=l}return W(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=ba(t),a!==null&&a.dehydrated!==null){if(l===null){if(!e)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));e[yl]=t}else ve(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;W(t),e=!1}else wl!==null&&(Tf(wl),wl=null),e=!0;if(!e)return t.flags&256?(rt(t),t):(rt(t),null)}if(rt(t),(t.flags&128)!==0)return t.lanes=u,t;if(u=a!==null,l=l!==null&&l.memoizedState!==null,u){a=t.child,e=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(e=a.alternate.memoizedState.cachePool.pool);var n=null;a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==e&&(a.flags|=2048)}return u!==l&&u&&(t.child.flags|=8192),Ce(t,t.updateQueue),W(t),null;case 4:return ku(),l===null&&ri(t.stateNode.containerInfo),W(t),null;case 10:return bt(t.type),W(t),null;case 19:if(sl(el),e=t.memoizedState,e===null)return W(t),null;if(a=(t.flags&128)!==0,n=e.rendering,n===null)if(a)za(e,!1);else{if(F!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=on(l),n!==null){for(t.flags|=128,za(e,!1),l=n.updateQueue,t.updateQueue=l,Ce(t,l),t.subtreeFlags=0,l=u,u=t.child;u!==null;)Ev(u,l),u=u.sibling;return J(el,el.current&1|2),t.child}l=l.sibling}e.tail!==null&&tt()>En&&(t.flags|=128,a=!0,za(e,!1),t.lanes=4194304)}else{if(!a)if(l=on(n),l!==null){if(t.flags|=128,a=!0,l=l.updateQueue,t.updateQueue=l,Ce(t,l),za(e,!0),e.tail===null&&e.tailMode==="hidden"&&!n.alternate&&!X)return W(t),null}else 2*tt()-e.renderingStartTime>En&&u!==536870912&&(t.flags|=128,a=!0,za(e,!1),t.lanes=4194304);e.isBackwards?(n.sibling=t.child,t.child=n):(l=e.last,l!==null?l.sibling=n:t.child=n,e.last=n)}return e.tail!==null?(t=e.tail,e.rendering=t,e.tail=t.sibling,e.renderingStartTime=tt(),t.sibling=null,l=el.current,J(el,a?l&1|2:l&1),t):(W(t),null);case 22:case 23:return rt(t),Jf(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(u&536870912)!==0&&(t.flags&128)===0&&(W(t),t.subtreeFlags&6&&(t.flags|=8192)):W(t),u=t.updateQueue,u!==null&&Ce(t,u.retryQueue),u=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==u&&(t.flags|=2048),l!==null&&sl(fu),null;case 24:return u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),bt(al),W(t),null;case 25:return null}throw Error(r(156,t.tag))}function fo(l,t){switch(Kf(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return bt(al),ku(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return en(t),null;case 13:if(rt(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(r(340));ve()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return sl(el),null;case 4:return ku(),null;case 10:return bt(t.type),null;case 22:case 23:return rt(t),Jf(),l!==null&&sl(fu),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return bt(al),null;case 25:return null;default:return null}}function zv(l,t){switch(Kf(t),t.tag){case 3:bt(al),ku();break;case 26:case 27:case 5:en(t);break;case 4:ku();break;case 13:rt(t);break;case 19:sl(el);break;case 10:bt(t.type);break;case 22:case 23:rt(t),Jf(),l!==null&&sl(fu);break;case 24:bt(al)}}var io={getCacheForType:function(l){var t=ml(al),u=t.data.get(l);return u===void 0&&(u=l(),t.data.set(l,u)),u}},so=typeof WeakMap=="function"?WeakMap:Map,k=0,V=null,N=null,Y=0,j=0,Dl=null,ht=!1,fa=!1,hi=!1,At=0,F=0,kt=0,su=0,oi=0,jl=0,ta=0,ja=null,Il=null,rf=!1,yi=0,En=1/0,Tn=null,jt=null,Ge=!1,uu=null,Va=0,Sf=0,bf=null,La=0,Ef=null;function Rl(){if((k&2)!==0&&Y!==0)return Y&-Y;if(D.T!==null){var l=Iu;return l!==0?l:gi()}return B1()}function Av(){jl===0&&(jl=(Y&536870912)===0||X?H1():536870912);var l=Vl.current;return l!==null&&(l.flags|=32),jl}function bl(l,t,u){(l===V&&j===2||l.cancelPendingCommit!==null)&&(ua(l,0),ot(l,Y,jl,!1)),ie(l,u),((k&2)===0||l!==V)&&(l===V&&((k&2)===0&&(su|=u),F===4&&ot(l,Y,jl,!1)),nt(l))}function Ov(l,t,u){if((k&6)!==0)throw Error(r(327));var a=!u&&(t&60)===0&&(t&l.expiredLanes)===0||fe(l,t),e=a?oo(l,t):pc(l,t,!0),n=a;do{if(e===0){fa&&!a&&ot(l,t,0,!1);break}else if(e===6)ot(l,t,0,!ht);else{if(u=l.current.alternate,n&&!vo(u)){e=pc(l,t,!1),n=!1;continue}if(e===2){if(n=t,l.errorRecoveryDisabledLanes&n)var c=0;else c=l.pendingLanes&-536870913,c=c!==0?c:c&536870912?536870912:0;if(c!==0){t=c;l:{var f=l;e=ja;var i=f.current.memoizedState.isDehydrated;if(i&&(ua(f,c).flags|=256),c=pc(f,c,!1),c!==2){if(hi&&!i){f.errorRecoveryDisabledLanes|=n,su|=n,e=4;break l}n=Il,Il=e,n!==null&&Tf(n)}e=c}if(n=!1,e!==2)continue}}if(e===1){ua(l,0),ot(l,t,0,!0);break}l:{switch(a=l,e){case 0:case 1:throw Error(r(345));case 4:if((t&4194176)===t){ot(a,t,jl,!ht);break l}break;case 2:Il=null;break;case 3:case 5:break;default:throw Error(r(329))}if(a.finishedWork=u,a.finishedLanes=t,(t&62914560)===t&&(n=yi+300-tt(),10u?32:u,D.T=null,uu===null)var n=!1;else{u=bf,bf=null;var c=uu,f=Va;if(uu=null,Va=0,(k&6)!==0)throw Error(r(331));var i=k;if(k|=4,Sv(c.current),mv(c,c.current,f,u),k=i,me(0,!1),Ul&&typeof Ul.onPostCommitFiberRoot=="function")try{Ul.onPostCommitFiberRoot(ce,c)}catch{}n=!0}return n}finally{L.p=e,D.T=a,Rv(l,t)}}return!1}function P0(l,t,u){t=Zl(u,t),t=cf(l.stateNode,t,2),l=Zt(l,t,2),l!==null&&(ie(l,2),nt(l))}function x(l,t,u){if(l.tag===3)P0(l,l,u);else for(;t!==null;){if(t.tag===3){P0(t,l,u);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(jt===null||!jt.has(a))){l=Zl(u,l),u=Ws(2),a=Zt(t,u,2),a!==null&&(ks(u,a,t,l),ie(a,2),nt(a));break}}t=t.return}}function Nc(l,t,u){var a=l.pingCache;if(a===null){a=l.pingCache=new so;var e=new Set;a.set(t,e)}else e=a.get(t),e===void 0&&(e=new Set,a.set(t,e));e.has(u)||(hi=!0,e.add(u),l=go.bind(null,l,t,u),t.then(l,l))}function go(l,t,u){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&u,l.warmLanes&=~u,V===l&&(Y&u)===u&&(F===4||F===3&&(Y&62914560)===Y&&300>tt()-yi?(k&2)===0&&ua(l,0):oi|=u,ta===Y&&(ta=0)),nt(l)}function pv(l,t){t===0&&(t=R1()),l=Jt(l,t),l!==null&&(ie(l,t),nt(l))}function ro(l){var t=l.memoizedState,u=0;t!==null&&(u=t.retryLane),pv(l,u)}function So(l,t){var u=0;switch(l.tag){case 13:var a=l.stateNode,e=l.memoizedState;e!==null&&(u=e.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(r(314))}a!==null&&a.delete(t),pv(l,u)}function bo(l,t){return Bf(l,t)}var zn=null,Hu=null,Af=!1,An=!1,qc=!1,vu=0;function nt(l){l!==Hu&&l.next===null&&(Hu===null?zn=Hu=l:Hu=Hu.next=l),An=!0,Af||(Af=!0,To(Eo))}function me(l,t){if(!qc&&An){qc=!0;do for(var u=!1,a=zn;a!==null;){if(!t)if(l!==0){var e=a.pendingLanes;if(e===0)var n=0;else{var c=a.suspendedLanes,f=a.pingedLanes;n=(1<<31-Hl(42|l)+1)-1,n&=e&~(c&~f),n=n&201326677?n&201326677|1:n?n|2:0}n!==0&&(u=!0,I0(a,n))}else n=Y,n=pn(a,a===V?n:0),(n&3)===0||fe(a,n)||(u=!0,I0(a,n));a=a.next}while(u);qc=!1}}function Eo(){An=Af=!1;var l=0;vu!==0&&(_o()&&(l=vu),vu=0);for(var t=tt(),u=null,a=zn;a!==null;){var e=a.next,n=Nv(a,t);n===0?(a.next=null,u===null?zn=e:u.next=e,e===null&&(Hu=u)):(u=a,(l!==0||(n&3)!==0)&&(An=!0)),a=e}me(l,!1)}function Nv(l,t){for(var u=l.suspendedLanes,a=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0"u"?null:document;function Zv(l,t,u){var a=ia;if(a&&typeof t=="string"&&t){var e=Ql(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof u=="string"&&(e+='[crossorigin="'+u+'"]'),s1.has(e)||(s1.add(e),l={rel:l,crossOrigin:u,href:t},a.querySelector(e)===null&&(t=a.createElement("link"),hl(t,"link",l),fl(t),a.head.appendChild(t)))}}function Yo(l){Ot.D(l),Zv("dns-prefetch",l,null)}function Xo(l,t){Ot.C(l,t),Zv("preconnect",l,t)}function Co(l,t,u){Ot.L(l,t,u);var a=ia;if(a&&l&&t){var e='link[rel="preload"][as="'+Ql(t)+'"]';t==="image"&&u&&u.imageSrcSet?(e+='[imagesrcset="'+Ql(u.imageSrcSet)+'"]',typeof u.imageSizes=="string"&&(e+='[imagesizes="'+Ql(u.imageSizes)+'"]')):e+='[href="'+Ql(l)+'"]';var n=e;switch(t){case"style":n=aa(l);break;case"script":n=sa(l)}Ll.has(n)||(l=K({rel:"preload",href:t==="image"&&u&&u.imageSrcSet?void 0:l,as:t},u),Ll.set(n,l),a.querySelector(e)!==null||t==="style"&&a.querySelector(ge(n))||t==="script"&&a.querySelector(re(n))||(t=a.createElement("link"),hl(t,"link",l),fl(t),a.head.appendChild(t)))}}function Go(l,t){Ot.m(l,t);var u=ia;if(u&&l){var a=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+Ql(a)+'"][href="'+Ql(l)+'"]',n=e;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=sa(l)}if(!Ll.has(n)&&(l=K({rel:"modulepreload",href:l},t),Ll.set(n,l),u.querySelector(e)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(u.querySelector(re(n)))return}a=u.createElement("link"),hl(a,"link",l),fl(a),u.head.appendChild(a)}}}function Qo(l,t,u){Ot.S(l,t,u);var a=ia;if(a&&l){var e=xu(a).hoistableStyles,n=aa(l);t=t||"default";var c=e.get(n);if(!c){var f={loading:0,preload:null};if(c=a.querySelector(ge(n)))f.loading=5;else{l=K({rel:"stylesheet",href:l,"data-precedence":t},u),(u=Ll.get(n))&&Si(l,u);var i=c=a.createElement("link");fl(i),hl(i,"link",l),i._p=new Promise(function(s,y){i.onload=s,i.onerror=y}),i.addEventListener("load",function(){f.loading|=1}),i.addEventListener("error",function(){f.loading|=2}),f.loading|=4,Ie(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:f},e.set(n,c)}}}function Zo(l,t){Ot.X(l,t);var u=ia;if(u&&l){var a=xu(u).hoistableScripts,e=sa(l),n=a.get(e);n||(n=u.querySelector(re(e)),n||(l=K({src:l,async:!0},t),(t=Ll.get(e))&&bi(l,t),n=u.createElement("script"),fl(n),hl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function xo(l,t){Ot.M(l,t);var u=ia;if(u&&l){var a=xu(u).hoistableScripts,e=sa(l),n=a.get(e);n||(n=u.querySelector(re(e)),n||(l=K({src:l,async:!0,type:"module"},t),(t=Ll.get(e))&&bi(l,t),n=u.createElement("script"),fl(n),hl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function v1(l,t,u,a){var e=(e=Gt.current)?Dn(e):null;if(!e)throw Error(r(446));switch(l){case"meta":case"title":return null;case"style":return typeof u.precedence=="string"&&typeof u.href=="string"?(t=aa(u.href),u=xu(e).hoistableStyles,a=u.get(t),a||(a={type:"style",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(u.rel==="stylesheet"&&typeof u.href=="string"&&typeof u.precedence=="string"){l=aa(u.href);var n=xu(e).hoistableStyles,c=n.get(l);if(c||(e=e.ownerDocument||e,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=e.querySelector(ge(l)))&&!n._p&&(c.instance=n,c.state.loading=5),Ll.has(l)||(u={rel:"preload",as:"style",href:u.href,crossOrigin:u.crossOrigin,integrity:u.integrity,media:u.media,hrefLang:u.hrefLang,referrerPolicy:u.referrerPolicy},Ll.set(l,u),n||jo(e,l,u,c.state))),t&&a===null)throw Error(r(528,""));return c}if(t&&a!==null)throw Error(r(529,""));return null;case"script":return t=u.async,u=u.src,typeof u=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=sa(u),u=xu(e).hoistableScripts,a=u.get(t),a||(a={type:"script",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,l))}}function aa(l){return'href="'+Ql(l)+'"'}function ge(l){return'link[rel="stylesheet"]['+l+"]"}function xv(l){return K({},l,{"data-precedence":l.precedence,precedence:null})}function jo(l,t,u,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),hl(t,"link",u),fl(t),l.head.appendChild(t))}function sa(l){return'[src="'+Ql(l)+'"]'}function re(l){return"script[async]"+l}function d1(l,t,u){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+Ql(u.href)+'"]');if(a)return t.instance=a,fl(a),a;var e=K({},u,{"data-href":u.href,"data-precedence":u.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),fl(a),hl(a,"style",e),Ie(a,u.precedence,l),t.instance=a;case"stylesheet":e=aa(u.href);var n=l.querySelector(ge(e));if(n)return t.state.loading|=4,t.instance=n,fl(n),n;a=xv(u),(e=Ll.get(e))&&Si(a,e),n=(l.ownerDocument||l).createElement("link"),fl(n);var c=n;return c._p=new Promise(function(f,i){c.onload=f,c.onerror=i}),hl(n,"link",a),t.state.loading|=4,Ie(n,u.precedence,l),t.instance=n;case"script":return n=sa(u.src),(e=l.querySelector(re(n)))?(t.instance=e,fl(e),e):(a=u,(e=Ll.get(n))&&(a=K({},u),bi(a,e)),l=l.ownerDocument||l,e=l.createElement("script"),fl(e),hl(e,"link",a),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Ie(a,u.precedence,l));return t.instance}function Ie(l,t,u){for(var a=u.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=a.length?a[a.length-1]:null,n=e,c=0;c title"):null)}function Vo(l,t,u){if(u===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function jv(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}var te=null;function Lo(){}function Ko(l,t,u){if(te===null)throw Error(r(475));var a=te;if(t.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(t.state.loading&4)===0){if(t.instance===null){var e=aa(u.href),n=l.querySelector(ge(e));if(n){l=n._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(a.count++,a=_n.bind(a),l.then(a,a)),t.state.loading|=4,t.instance=n,fl(n);return}n=l.ownerDocument||l,u=xv(u),(e=Ll.get(e))&&Si(u,e),n=n.createElement("link"),fl(n);var c=n;c._p=new Promise(function(f,i){c.onload=f,c.onerror=i}),hl(n,"link",u),t.instance=n}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(t,l),(l=t.state.preload)&&(t.state.loading&3)===0&&(a.count++,t=_n.bind(a),l.addEventListener("load",t),l.addEventListener("error",t))}}function Jo(){if(te===null)throw Error(r(475));var l=te;return l.stylesheets&&l.count===0&&Hf(l,l.stylesheets),0{"use strict";function $v(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE($v)}catch(l){console.error(l)}}$v(),Fv.exports=kv()});var Ol=wn(ha(),1),Iv=wn(Pv(),1),ld=Ol.createContext(null);function ty(){let l=Ol.useContext(ld);if(!l)throw new Error("RenderContext not found");return l}function uy(){return ty().model}function Se(l){let t=uy(),[u,a]=Ol.useState(t.get(l));return Ol.useEffect(()=>{let e=()=>a(t.get(l));return t.on(`change:${l}`,e),()=>t.off(`change:${l}`,e)},[t,l]),[u,e=>{t.set(l,e),t.save_changes()}]}function td(l){return({el:t,model:u,experimental:a})=>{let e=Iv.createRoot(t);return e.render(Ol.createElement(Ol.StrictMode,null,Ol.createElement(ld.Provider,{value:{model:u,experimental:a}},Ol.createElement(l)))),()=>e.unmount()}}var A=wn(ha()),ay=20;function ey(){let l=(0,A.useRef)(null),[t,u]=(0,A.useState)(!1),[a,e]=(0,A.useState)("#000000"),[n,c]=(0,A.useState)("brush"),[f,i]=Se("base64"),[s]=Se("height"),[y]=Se("width"),[S]=Se("store_background"),o=(0,A.useRef)(""),m=(0,A.useRef)(""),b=(0,A.useRef)(!1),[M,C]=(0,A.useState)(0),d=(0,A.useRef)([]),[v,h]=(0,A.useState)(0);(0,A.useEffect)(()=>{o.current=f},[]);let g=()=>l.current?.getContext("2d")??null;(0,A.useEffect)(()=>{d.current=[],h(0)},[y,s]),(0,A.useEffect)(()=>{let O=l.current;if(!O)return;let p=ct=>{ct.preventDefault();let va=ct.touches[0],da=O.getBoundingClientRect();z(va.clientX-da.left,va.clientY-da.top)},H=ct=>{ct.preventDefault();let va=ct.touches[0],da=O.getBoundingClientRect();P(va.clientX-da.left,va.clientY-da.top)},El=ct=>{ct.preventDefault(),q()};return O.addEventListener("touchstart",p,{passive:!1}),O.addEventListener("touchmove",H,{passive:!1}),O.addEventListener("touchend",El,{passive:!1}),()=>{O.removeEventListener("touchstart",p),O.removeEventListener("touchmove",H),O.removeEventListener("touchend",El)}},[]),(0,A.useEffect)(()=>{let O=g();if(!O||!l.current||!f||y===0||s===0)return;if(f===m.current){let H=l.current;if(H.width>0&&H.height>0)try{if(O.getImageData(0,0,H.width,H.height).data.some(ct=>ct!==0))return}catch{}}b.current=!0;let p=new Image;p.onload=()=>{O.clearRect(0,0,l.current.width,l.current.height),O.drawImage(p,0,0,l.current.width,l.current.height),m.current=f,b.current=!1},p.onerror=()=>{b.current=!1},p.src=`data:image/png;base64,${f}`},[f,y,s]),(0,A.useEffect)(()=>{if(!l.current||M===0||b.current)return;let O=document.createElement("canvas");O.width=l.current.width,O.height=l.current.height;let p=O.getContext("2d",{alpha:!0});if(p){p.clearRect(0,0,O.width,O.height),S&&(p.fillStyle="#FFFFFF",p.fillRect(0,0,O.width,O.height)),p.globalCompositeOperation="source-over",p.drawImage(l.current,0,0);try{let H=O.toDataURL("image/png");i(H.split(",")[1])}catch{}}},[S,y,s,M]);let E=()=>{let O=g(),p=l.current;if(!O||!p||p.width===0||p.height===0)return;let H=O.getImageData(0,0,p.width,p.height),El=d.current;El.length>=ay&&El.shift(),El.push(H),h(El.length)},_=()=>{let O=g(),p=l.current;if(!O||!p)return;let H=d.current.pop();H&&(O.putImageData(H,0,0),h(d.current.length),C(El=>El+1))},T=()=>{let O=g(),p=l.current;if(!(!O||!p))if(E(),O.clearRect(0,0,p.width,p.height),o.current){b.current=!0;let H=new Image;H.onload=()=>{O.drawImage(H,0,0,p.width,p.height),b.current=!1,C(El=>El+1)},H.onerror=()=>{b.current=!1,C(El=>El+1)},H.src=`data:image/png;base64,${o.current}`}else C(H=>H+1)},z=(O,p)=>{let H=g();H&&(E(),H.beginPath(),H.moveTo(O,p),u(!0))},P=(O,p)=>{if(!t)return;let H=g();H&&(H.lineTo(O,p),n==="eraser"?(H.save(),H.globalCompositeOperation="destination-out",H.strokeStyle="#000000",H.lineWidth=20,H.lineCap="round",H.stroke(),H.restore()):(H.strokeStyle=a,H.lineWidth=n==="marker"?8:2,H.lineCap="round",H.stroke()))},q=()=>{t&&(C(O=>O+1),u(!1))},$l=O=>{let p=O.currentTarget.getBoundingClientRect();z(O.clientX-p.left,O.clientY-p.top)},Jn=O=>{let p=O.currentTarget.getBoundingClientRect();P(O.clientX-p.left,O.clientY-p.top)},ud=S?"#ffffff":"repeating-conic-gradient(#d0d0d0 0% 25%, #f0f0f0 0% 50%) 0 0 / 16px 16px";return A.default.createElement("div",{className:"paint-container",style:{width:`${y}px`}},A.default.createElement("div",{className:"paint-toolbar"},A.default.createElement("div",{className:"paint-tool-group"},A.default.createElement("button",{className:n==="brush"?"active":"",onClick:()=>c("brush"),title:"Brush (thin)"},A.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},A.default.createElement("path",{d:"m21.174 6.812-3.524-3.524-2.197 2.197 3.524 3.524z"}),A.default.createElement("path",{d:"m14.264 6.674-8.884 8.886a1.5 1.5 0 0 0-.398.725L3.5 22.5l6.215-1.482a1.5 1.5 0 0 0 .725-.398l8.884-8.886"}))),A.default.createElement("button",{className:n==="marker"?"active":"",onClick:()=>c("marker"),title:"Marker (thick)"},A.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},A.default.createElement("path",{d:"M15.707 4.293a1 1 0 0 1 1.414 0l2.586 2.586a1 1 0 0 1 0 1.414L8.414 19.586a2 2 0 0 1-.829.525l-5.085 1.695 1.695-5.085a2 2 0 0 1 .525-.829z"}),A.default.createElement("path",{d:"m13 6 5 5"}))),A.default.createElement("button",{className:n==="eraser"?"active":"",onClick:()=>c("eraser"),title:"Eraser"},A.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},A.default.createElement("path",{d:"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21"}),A.default.createElement("path",{d:"M22 21H7"}),A.default.createElement("path",{d:"m5 11 9 9"})))),A.default.createElement("div",{className:"paint-divider"}),A.default.createElement("div",{className:"paint-action-group"},A.default.createElement("button",{onClick:_,disabled:v===0,title:"Undo"},A.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},A.default.createElement("path",{d:"M3 7v6h6"}),A.default.createElement("path",{d:"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"}))),A.default.createElement("button",{onClick:T,title:"Clear"},A.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},A.default.createElement("path",{d:"M3 6h18"}),A.default.createElement("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),A.default.createElement("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"})))),A.default.createElement("div",{className:"paint-divider"}),A.default.createElement("input",{type:"color",value:a,onChange:O=>e(O.target.value),title:"Color"})),A.default.createElement("div",{className:"paint-canvas-area",style:{background:ud}},A.default.createElement("canvas",{ref:l,width:y,height:s,onMouseDown:$l,onMouseMove:Jn,onMouseUp:q,onMouseLeave:q})))}var ny=td(ey),ry={render:ny};export{ry as default}; /*! Bundled license information: react/cjs/react.production.js: